diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/i386-tdep.c | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c72fda4..ab49a3f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2011-06-12 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_match_insn_block): Use length of the proper + instruction when walking back through the instruction stream. + 2011-06-10 Jan Kratochvil <jan.kratochvil@redhat.com> * symtab.c (output_partial_symbol_filename): Exchange the filename and diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index b2b7412..8355508 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -1191,14 +1191,14 @@ i386_match_insn_block (CORE_ADDR pc, struct i386_insn *insn_patterns) if (insn == NULL) return 0; - current_pc = pc - insn->len; + current_pc = pc; ix = insn - insn_patterns; for (i = ix - 1; i >= 0; i--) { + current_pc -= insn_patterns[i].len; + if (!i386_match_pattern (current_pc, insn_patterns[i])) return 0; - - current_pc -= insn_patterns[i].len; } current_pc = pc + insn->len; |