]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
Fix printing of rex prefix in x86-64 disassembler.
authorUlrich Drepper <drepper@redhat.com>
Wed, 31 Dec 2008 18:21:51 +0000 (10:21 -0800)
committerUlrich Drepper <drepper@redhat.com>
Wed, 31 Dec 2008 18:21:51 +0000 (10:21 -0800)
libcpu/ChangeLog
libcpu/i386_disasm.c

index 041123e13752be1d70db63fd705a3d88f5e60a0e..c562ff548d8c74cc8ec14a719cd49e757fad0f71 100644 (file)
@@ -1,5 +1,8 @@
 2008-12-31  Ulrich Drepper  <drepper@redhat.com>
 
+       * i386_disasm.c [X86_64] (i386_disasm): Handle rex prefix when
+       printing only prefix.
+
        * i386_disasm.c (i386_disasm): Minor optimizations.
 
        * i386_parse.y (instrtable_out): No need to emit index, the reader can
index 9961e4d9fd2abd26ca02674f0a0a861036e1a2b2..b99748b60ccf5bea8b054a6139d38af8ce5598ce 100644 (file)
@@ -520,6 +520,23 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr,
                case prefix_lock:
                  ADD_STRING ("lock");
                  break;
+#ifdef X86_64
+               case 0x40 ... 0x4f:
+                 ADD_STRING ("rex");
+                 if (byte != 0x40)
+                   {
+                     ADD_CHAR ('.');
+                     if (byte & 0x8)
+                       ADD_CHAR ('w');
+                     if (byte & 0x4)
+                       ADD_CHAR ('r');
+                     if (byte & 0x3)
+                       ADD_CHAR ('x');
+                     if (byte & 0x1)
+                       ADD_CHAR ('b');
+                   }
+                 break;
+#endif
                default:
                  /* Cannot happen.  */
                  puts ("unknown prefix");