Fix relocation of jump and call instructions (used when inserting fast

tracepoints).

2011-03-18  Kwok Cheung Yeung  <kcy@codesourcery.com>

        * 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.
This commit is contained in:
Kwok Yeung 2011-03-18 00:27:48 +00:00
parent 6935e6051c
commit f4a1794a6c
3 changed files with 29 additions and 8 deletions

View File

@ -1,3 +1,10 @@
2011-03-18 Kwok Cheung Yeung <kcy@codesourcery.com>
* 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-17 Joel Brobecker <brobecker@gnat.com>
* target.h (struct target_ops): Remove to_lookup_symbol field.

View File

@ -1575,7 +1575,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);
@ -1598,11 +1605,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));
}

View File

@ -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));
}