From 8bbdd3f4631f74565ffa27111d5c19c56cd87926 Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Sun, 12 Jun 2011 18:21:55 +0000 Subject: [PATCH] * i386-tdep.c (i386_match_insn_block): Use length of the proper instruction when walking back through the instruction stream. --- gdb/ChangeLog | 5 +++++ gdb/i386-tdep.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c72fda47fc..ab49a3fb58 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2011-06-12 Mark Kettenis + + * 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 * symtab.c (output_partial_symbol_filename): Exchange the filename and diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index b2b74121a6..8355508136 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;