This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] x86: fix handling of %eip/%rip
>One more thing. Can you update disassemble to use %eip?
Built and tested on x86_64-unknown-linux-gnu.
gas/testsuite/
2007-09-26 Jan Beulich <jbeulich@novell.com>
* gas/i386/x86-64-addr32.d: Adjust expectations.
opcodes/
2007-09-26 Jan Beulich <jbeulich@novell.com>
* i386-dis.c (OP_E_extended): Distinguish rip- and eip-
relative addressing. Update used_prefixes based on whether any
base or index register was printed.
--- 2007-09-25/gas/testsuite/gas/i386/x86-64-addr32.d 2007-05-02 11:04:08.000000000 +0200
+++ 2007-09-25/gas/testsuite/gas/i386/x86-64-addr32.d 2007-09-26 10:17:14.000000000 +0200
@@ -7,9 +7,9 @@
Disassembly of section .text:
0+000 <.text>:
-[ ]*0:[ ]+67 48 8d 80 00 00 00 00[ ]+addr32[ ]+lea[ ]+0x0\(%[re]ax\),%rax.*
-[ ]*8:[ ]+67 49 8d 80 00 00 00 00[ ]+addr32[ ]+lea[ ]+0x0\(%r8d?\),%rax.*
-[ ]*10:[ ]+67 48 8d 05 00 00 00 00[ ]+addr32[ ]+lea[ ]+0x0\(%[re]ip\),%rax.*
+[ ]*0:[ ]+67 48 8d 80 00 00 00 00[ ]+(addr32[ ]+)?lea[ ]+0x0\(%eax\),%rax.*
+[ ]*8:[ ]+67 49 8d 80 00 00 00 00[ ]+(addr32[ ]+)?lea[ ]+0x0\(%r8d\),%rax.*
+[ ]*10:[ ]+67 48 8d 05 00 00 00 00[ ]+(addr32[ ]+)?lea[ ]+0x0\(%eip\),%rax.*
[ ]*18:[ ]+67 48 8d 04 25 00 00 00 00[ ]+addr32[ ]+lea[ ]+0x0,%rax.*
[ ]*21:[ ]+67 a0 98 08 60 00[ ]+addr32[ ]+mov[ ]+0x600898,%al
[ ]*27:[ ]+67 66 a1 98 08 60 00[ ]+addr32[ ]+mov[ ]+0x600898,%ax
--- 2007-09-25/opcodes/i386-dis.c 2007-09-25 16:27:55.000000000 +0200
+++ 2007-09-25/opcodes/i386-dis.c 2007-09-26 10:28:50.000000000 +0200
@@ -6390,17 +6390,20 @@ OP_E_extended (int bytemode, int sizefla
if (riprel)
{
set_op (disp, 1);
- oappend ("(%rip)");
+ oappend (sizeflag & AFLAG ? "(%rip)" : "(%eip)");
}
}
+ if (havebase || haveindex || riprel)
+ used_prefixes |= PREFIX_ADDR;
+
if (havedisp || (intel_syntax && riprel))
{
*obufp++ = open_char;
if (intel_syntax && riprel)
{
set_op (disp, 1);
- oappend ("rip");
+ oappend (sizeflag & AFLAG ? "rip" : "eip");
}
*obufp = '\0';
if (havebase)