From: Ulrich Drepper Date: Wed, 31 Dec 2008 18:21:51 +0000 (-0800) Subject: Fix printing of rex prefix in x86-64 disassembler. X-Git-Tag: elfutils-0.138~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=54a6d4b1b6828519ea707f2ce4d8c1829c9fe595;p=thirdparty%2Felfutils.git Fix printing of rex prefix in x86-64 disassembler. --- diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 041123e13..c562ff548 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,5 +1,8 @@ 2008-12-31 Ulrich Drepper + * 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 diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c index 9961e4d9f..b99748b60 100644 --- a/libcpu/i386_disasm.c +++ b/libcpu/i386_disasm.c @@ -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");