From: Kwok Yeung Date: Fri, 18 Mar 2011 00:32:13 +0000 (+0000) Subject: Fix relocation of jump and call instructions (used when inserting fast X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=15e8ab3b1b9e6c6dbbea3257d056c678e97b6448;p=thirdparty%2Fbinutils-gdb.git Fix relocation of jump and call instructions (used when inserting fast tracepoints). 2011-03-18 Kwok Cheung Yeung * amd64-tdep.c (amd64_relocate_instruction): Fix ordering of arguments to store_signed_integer. Add debug message when relocating CALL instructions. Fix formatting of debug message. * i386-tdep.c (i386_relocate_instruction): Ditto. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ea27ff3d597..a6895fd98e2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2011-03-18 Kwok Cheung Yeung + + * amd64-tdep.c (amd64_relocate_instruction): Fix ordering of arguments + to store_signed_integer. Add debug message when relocating CALL + instructions. Fix formatting of debug message. + * i386-tdep.c (i386_relocate_instruction): Ditto. + 2011-03-14 Tom Tromey PR gdb/12576: diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index 9feed905a65..dcfa9657713 100644 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -1588,7 +1588,14 @@ amd64_relocate_instruction (struct gdbarch *gdbarch, /* Adjust the destination offset. */ rel32 = extract_signed_integer (insn + 1, 4, byte_order); newrel = (oldloc - *to) + rel32; - store_signed_integer (insn + 1, 4, newrel, byte_order); + store_signed_integer (insn + 1, 4, byte_order, newrel); + + if (debug_displaced) + fprintf_unfiltered (gdb_stdlog, + "Adjusted insn rel32=%s at %s to" + " rel32=%s at %s\n", + hex_string (rel32), paddress (gdbarch, oldloc), + hex_string (newrel), paddress (gdbarch, *to)); /* Write the adjusted jump into its displaced location. */ append_insns (to, 5, insn); @@ -1611,11 +1618,11 @@ amd64_relocate_instruction (struct gdbarch *gdbarch, { rel32 = extract_signed_integer (insn + offset, 4, byte_order); newrel = (oldloc - *to) + rel32; - store_signed_integer (insn + offset, 4, newrel, byte_order); + store_signed_integer (insn + offset, 4, byte_order, newrel); if (debug_displaced) fprintf_unfiltered (gdb_stdlog, - "Adjusted insn rel32=0x%s at 0x%s to" - " rel32=0x%s at 0x%s\n", + "Adjusted insn rel32=%s at %s to" + " rel32=%s at %s\n", hex_string (rel32), paddress (gdbarch, oldloc), hex_string (newrel), paddress (gdbarch, *to)); } diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 435b623151a..81024265210 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -747,7 +747,14 @@ i386_relocate_instruction (struct gdbarch *gdbarch, /* Adjust the destination offset. */ rel32 = extract_signed_integer (insn + 1, 4, byte_order); newrel = (oldloc - *to) + rel32; - store_signed_integer (insn + 1, 4, newrel, byte_order); + store_signed_integer (insn + 1, 4, byte_order, newrel); + + if (debug_displaced) + fprintf_unfiltered (gdb_stdlog, + "Adjusted insn rel32=%s at %s to" + " rel32=%s at %s\n", + hex_string (rel32), paddress (gdbarch, oldloc), + hex_string (newrel), paddress (gdbarch, *to)); /* Write the adjusted jump into its displaced location. */ append_insns (to, 5, insn); @@ -766,11 +773,11 @@ i386_relocate_instruction (struct gdbarch *gdbarch, { rel32 = extract_signed_integer (insn + offset, 4, byte_order); newrel = (oldloc - *to) + rel32; - store_signed_integer (insn + offset, 4, newrel, byte_order); + store_signed_integer (insn + offset, 4, byte_order, newrel); if (debug_displaced) fprintf_unfiltered (gdb_stdlog, - "Adjusted insn rel32=0x%s at 0x%s to" - " rel32=0x%s at 0x%s\n", + "Adjusted insn rel32=%s at %s to" + " rel32=%s at %s\n", hex_string (rel32), paddress (gdbarch, oldloc), hex_string (newrel), paddress (gdbarch, *to)); }