This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH obv/c++] Add/adjust casts in gdbserver's proc-service


On 15-10-30 11:05 AM, Pedro Alves wrote:
> The original fix could have been just:
>
> -  if (write_inferior_memory ((unsigned long) addr, buf, size) != 0)
> -  if (write_inferior_memory ((unsigned long) addr, (const gdb_byte *) buf, size)
>
> As it was the pointer type difference that really was causing an issue.

Yeah I know, I didn't even need to touch that.

>
> So this:
>
>   if (write_inferior_memory ((uintptr_pt) addr, (const gdb_byte *) buf, size)
>
> would also be fine, as then you get an implicit cast to CORE_ADDR anyway.
>
> Patch is OK, with or without double-cast.

I pushed without the double cast, because it's less code.


>From 7ea45d72f91e22cf6c9dfa23c79ec24a5118c6d3 Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@ericsson.com>
Date: Fri, 30 Oct 2015 11:50:00 -0400
Subject: [PATCH] gdbserver/proc-service.c: Change CORE_ADDR cast to uintptr_t

Fixes on i386:

../../../binutils-gdb/gdb/gdbserver/proc-service.c: In function ps_pdread:
../../../binutils-gdb/gdb/gdbserver/proc-service.c:83:25: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
../../../binutils-gdb/gdb/gdbserver/proc-service.c: In function ps_pdwrite:
../../../binutils-gdb/gdb/gdbserver/proc-service.c:93:30: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]

I could have kept both casts:

  (CORE_ADDR) (uintptr_t) addr

but it's cleaner this way.  The uintptr_t implicitely gets promoted to a
CORE_ADDR, which is at least as long as uintptr_t.

gdb/gdbserver/ChangeLog:

	* proc-service.c (ps_pdread): Change CORE_ADDR cast to uintptr_t.
	(ps_pdwrite): Likewise.
---
 gdb/gdbserver/ChangeLog      | 5 +++++
 gdb/gdbserver/proc-service.c | 4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 52d6b50..dda226e 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,8 @@
+2015-10-30  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* proc-service.c (ps_pdread): Change CORE_ADDR cast to uintptr_t.
+	(ps_pdwrite): Likewise.
+
 2015-10-29 Henrik Wallin <henrik.wallin@windriver.com>

 	* linux-arm-low.c (arm_new_thread): Move pointer dereference
diff --git a/gdb/gdbserver/proc-service.c b/gdb/gdbserver/proc-service.c
index ae00086..f86a2c3 100644
--- a/gdb/gdbserver/proc-service.c
+++ b/gdb/gdbserver/proc-service.c
@@ -80,7 +80,7 @@ ps_err_e
 ps_pdread (gdb_ps_prochandle_t ph, psaddr_t addr,
 	   gdb_ps_read_buf_t buf, gdb_ps_size_t size)
 {
-  read_inferior_memory ((CORE_ADDR) addr, (gdb_byte *) buf, size);
+  read_inferior_memory ((uintptr_t) addr, (gdb_byte *) buf, size);
   return PS_OK;
 }

@@ -90,7 +90,7 @@ ps_err_e
 ps_pdwrite (gdb_ps_prochandle_t ph, psaddr_t addr,
 	    gdb_ps_write_buf_t buf, gdb_ps_size_t size)
 {
-  if (write_inferior_memory ((CORE_ADDR) addr, (const gdb_byte *) buf, size)
+  if (write_inferior_memory ((uintptr_t) addr, (const gdb_byte *) buf, size)
       != 0)
     return PS_ERR;
   return PS_OK;
-- 
2.5.1




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]