diff options
author | Mark Kettenis <kettenis@gnu.org> | 2003-12-14 10:59:08 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2003-12-14 10:59:08 +0000 |
commit | 5daa5b4ecc8e4dd8532538fedcdaeeec25244c15 (patch) | |
tree | d2d211c3b9795ed58e80a69427fcfe98f25a45d0 | |
parent | 1eb4d9af741c85cffd483959ef08354e1d553273 (diff) | |
download | gdb-5daa5b4ecc8e4dd8532538fedcdaeeec25244c15.zip gdb-5daa5b4ecc8e4dd8532538fedcdaeeec25244c15.tar.gz gdb-5daa5b4ecc8e4dd8532538fedcdaeeec25244c15.tar.bz2 |
* i386-tdep.c (i386_analyze_frame_setup): Add missing encodings
for `subl' and `xorl' instructions.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/i386-tdep.c | 6 |
2 files changed, 10 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 179bffb..c164aa1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2003-12-14 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_analyze_frame_setup): Add missing encodings + for `subl' and `xorl' instructions. + 2003-12-13 Jim Blandy <jimb@redhat.com> * dwarf2read.c (dwarf2_add_member_fn, read_structure_scope): diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 973fa63..4ee9fa4 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -508,9 +508,13 @@ i386_analyze_frame_setup (CORE_ADDR pc, CORE_ADDR current_pc, subl %edx, %edx subl %eax, %eax + Because of the symmetry, there are actually two ways to + encode these instructions; with opcode bytes 0x29 and 0x2b + for `subl' and opcode bytes 0x31 and 0x33 for `xorl'. + Make sure we only skip these instructions if we later see the `movl %esp, %ebp' that actually sets up the frame. */ - while (op == 0x29 || op == 0x31) + while (op == 0x29 || op == 0x2b || op == 0x31 || op == 0x33) { op = read_memory_unsigned_integer (pc + skip + 2, 1); switch (op) |