From f7dd0ed7deb69614c40719a0c37985b3ec26503b Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Fri, 27 Apr 2007 13:20:59 +0000 Subject: [PATCH] * inf-ptrace.c: Include "gdb_stdint.h". (inf_ptrace_xfer_partial): Use "uintptr_t" instead of "long" as intermediate type when casting CORE_ADDR to PTRACE_TYPE_ARG3. (inf_ptrace_fetch_register): Add intermediate cast to "uintptr_t" before casting CORE_ADDR to PTRACE_TYPE_ARG3. (inf_ptrace_store_register): Likewise. * Makefile.in (inf-ptrace.o): Update dependencies. --- gdb/ChangeLog | 10 ++++++++++ gdb/Makefile.in | 2 +- gdb/inf-ptrace.c | 17 +++++++++++------ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7cc195fcac..9d8b79f3f5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2007-04-27 Ulrich Weigand + + * inf-ptrace.c: Include "gdb_stdint.h". + (inf_ptrace_xfer_partial): Use "uintptr_t" instead of "long" as + intermediate type when casting CORE_ADDR to PTRACE_TYPE_ARG3. + (inf_ptrace_fetch_register): Add intermediate cast to "uintptr_t" + before casting CORE_ADDR to PTRACE_TYPE_ARG3. + (inf_ptrace_store_register): Likewise. + * Makefile.in (inf-ptrace.o): Update dependencies. + 2007-04-27 Ulrich Weigand * configure.host (rs6000-*-*): Merge with powerpc-*-aix* rules. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 7cabd60fa6..2551ea1f8c 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -2170,7 +2170,7 @@ inflow.o: inflow.c $(defs_h) $(frame_h) $(inferior_h) $(command_h) \ $(serial_h) $(terminal_h) $(target_h) $(gdbthread_h) $(gdb_string_h) \ $(inflow_h) $(gdb_select_h) inf-ptrace.o: inf-ptrace.c $(defs_h) $(command_h) $(inferior_h) $(inflow_h) \ - $(gdbcore_h) $(regcache_h) $(gdb_assert_h) \ + $(gdbcore_h) $(regcache_h) $(gdb_stdint_h) $(gdb_assert_h) \ $(gdb_string_h) $(gdb_ptrace_h) $(gdb_wait_h) $(inf_child_h) infptrace.o: infptrace.c $(defs_h) $(command_h) $(frame_h) $(gdbcore_h) \ $(inferior_h) $(regcache_h) $(target_h) $(gdb_assert_h) \ diff --git a/gdb/inf-ptrace.c b/gdb/inf-ptrace.c index 16524ad83e..bef45b58ca 100644 --- a/gdb/inf-ptrace.c +++ b/gdb/inf-ptrace.c @@ -28,6 +28,7 @@ #include "gdbcore.h" #include "regcache.h" +#include "gdb_stdint.h" #include "gdb_assert.h" #include "gdb_string.h" #include "gdb_ptrace.h" @@ -504,7 +505,8 @@ inf_ptrace_xfer_partial (struct target_ops *ops, enum target_object object, < rounded_offset + sizeof (PTRACE_TYPE_RET))) /* Need part of initial word -- fetch it. */ buffer.word = ptrace (PT_READ_I, pid, - (PTRACE_TYPE_ARG3)(long)rounded_offset, 0); + (PTRACE_TYPE_ARG3)(uintptr_t) + rounded_offset, 0); /* Copy data to be written over corresponding part of buffer. */ @@ -513,14 +515,16 @@ inf_ptrace_xfer_partial (struct target_ops *ops, enum target_object object, errno = 0; ptrace (PT_WRITE_D, pid, - (PTRACE_TYPE_ARG3)(long)rounded_offset, buffer.word); + (PTRACE_TYPE_ARG3)(uintptr_t)rounded_offset, + buffer.word); if (errno) { /* Using the appropriate one (I or D) is necessary for Gould NP1, at least. */ errno = 0; ptrace (PT_WRITE_I, pid, - (PTRACE_TYPE_ARG3)(long)rounded_offset, buffer.word); + (PTRACE_TYPE_ARG3)(uintptr_t)rounded_offset, + buffer.word); if (errno) return 0; } @@ -530,7 +534,8 @@ inf_ptrace_xfer_partial (struct target_ops *ops, enum target_object object, { errno = 0; buffer.word = ptrace (PT_READ_I, pid, - (PTRACE_TYPE_ARG3)(long)rounded_offset, 0); + (PTRACE_TYPE_ARG3)(uintptr_t)rounded_offset, + 0); if (errno) return 0; /* Copy appropriate bytes out of the buffer. */ @@ -642,7 +647,7 @@ inf_ptrace_fetch_register (int regnum) for (i = 0; i < size / sizeof (PTRACE_TYPE_RET); i++) { errno = 0; - buf[i] = ptrace (PT_READ_U, pid, (PTRACE_TYPE_ARG3)addr, 0); + buf[i] = ptrace (PT_READ_U, pid, (PTRACE_TYPE_ARG3)(uintptr_t)addr, 0); if (errno != 0) error (_("Couldn't read register %s (#%d): %s."), REGISTER_NAME (regnum), regnum, safe_strerror (errno)); @@ -696,7 +701,7 @@ inf_ptrace_store_register (int regnum) for (i = 0; i < size / sizeof (PTRACE_TYPE_RET); i++) { errno = 0; - ptrace (PT_WRITE_U, pid, (PTRACE_TYPE_ARG3)addr, buf[i]); + ptrace (PT_WRITE_U, pid, (PTRACE_TYPE_ARG3)(uintptr_t)addr, buf[i]); if (errno != 0) error (_("Couldn't write register %s (#%d): %s."), REGISTER_NAME (regnum), regnum, safe_strerror (errno)); -- 2.34.1