* i386-tdep.c (i386_analyze_frame_setup): Add missing encodings
authorMark Kettenis <kettenis@gnu.org>
Sun, 14 Dec 2003 10:59:08 +0000 (10:59 +0000)
committerMark Kettenis <kettenis@gnu.org>
Sun, 14 Dec 2003 10:59:08 +0000 (10:59 +0000)
for `subl' and `xorl' instructions.

gdb/ChangeLog
gdb/i386-tdep.c

index 179bffb3c1f46f1b138b8756f99a152971f332da..c164aa1e0c6632cb375dff8fac6f7e215340ddf7 100644 (file)
@@ -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):
index 973fa63e43e18bcbec5ca49827cc9b48b81d67dc..4ee9fa46f1929dafc8dbd39b658b380342d94793 100644 (file)
@@ -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)