This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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)




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]