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]

PATCH: Fix RIP handling for Intel mode


intel_e04 may be called recursively. We may see the end of input inside
the loop. I am checking in this patch to fix it.


H.J.
----
gas/

2007-09-15  H.J. Lu  <hongjiu.lu@intel.com>

	PR gas/5034
	* config/tc-i386.c (intel_e04): Return 1 if cur_token.code is
	T_NIL.

gas/testsuite/

2007-09-15  H.J. Lu  <hongjiu.lu@intel.com>

	PR gas/5034
	* gas/i386/x86-64-rip.s: Add Intel mode testcases.
	* gas/i386/x86-64-rip-intel.d: Updated.
	* gas/i386/x86-64-rip.d: Likewise.

--- gas/config/tc-i386.c.rip	2007-09-14 18:58:16.000000000 -0700
+++ gas/config/tc-i386.c	2007-09-15 14:24:28.000000000 -0700
@@ -7913,6 +7913,9 @@ intel_e04 (void)
       if (!intel_e05())
 	return 0;
 
+      if (cur_token.code == T_NIL)
+	return 1;
+
       if (nregs >= 0 && NUM_ADDRESS_REGS > nregs)
 	i.base_reg = i386_regtab + REGNAM_AL; /* al is invalid as base */
 
--- gas/testsuite/gas/i386/x86-64-rip-intel.d.rip	2007-04-26 11:15:47.000000000 -0700
+++ gas/testsuite/gas/i386/x86-64-rip-intel.d	2007-09-15 14:50:59.000000000 -0700
@@ -7,9 +7,13 @@
 
 Disassembly of section .text:
 
-0+000 <.text>:
-[	 ]*0:[	 ]+8d 05 00 00 00 00[	 ]+lea[	 ]+eax,\[rip\+0x0\][ 	]*(#.*)?
-[	 ]*6:[	 ]+8d 05 11 11 11 11[	 ]+lea[	 ]+eax,\[rip\+0x11111111\][ 	]*(#.*)?
-[	 ]*c:[	 ]+8d 05 01 00 00 00[	 ]+lea[	 ]+eax,\[rip\+0x1\][ 	]*(#.*)?
-[	 ]*12:[	 ]+8d 05 00 00 00 00[	 ]+lea[	 ]+eax,\[rip\+0x0\][ 	]*(#.*)?
+0+ <.text>:
+[ 	]*[a-f0-9]+:	8d 05 00 00 00 00    	lea    eax,\[rip\+0x0\][ 	]*#[ 	]*0x[a-f0-9]+[ 	]+[a-f0-9]+: R_X86_64_PC32	symbol-0x4
+[ 	]*[a-f0-9]+:	8d 05 11 11 11 11    	lea    eax,\[rip\+0x11111111\]        # 0x1111111d
+[ 	]*[a-f0-9]+:	8d 05 01 00 00 00    	lea    eax,\[rip\+0x1\]        # 0x13
+[ 	]*[a-f0-9]+:	8d 05 00 00 00 00    	lea    eax,\[rip\+0x0\]        # 0x18
+[ 	]*[a-f0-9]+:	48 8b 05 00 00 00 00 	mov    rax,QWORD PTR \[rip\+0x0\][ 	]*#[ 	]*0x[a-f0-9]+[ 	]+[a-f0-9]+: R_X86_64_PC32	__CTOR_END__-0xc
+[ 	]*[a-f0-9]+:	48 8b 05 00 00 00 00 	mov    rax,QWORD PTR \[rip\+0x0\][ 	]*#[ 	]*0x[a-f0-9]+[ 	]+[a-f0-9]+: R_X86_64_PC32	__CTOR_END__-0xc
+[ 	]*[a-f0-9]+:	48 8b 05 00 00 00 00 	mov    rax,QWORD PTR \[rip\+0x0\][ 	]*#[ 	]*0x[a-f0-9]+[ 	]+[a-f0-9]+: R_X86_64_PC32	__CTOR_END__-0xc
+[ 	]*[a-f0-9]+:	48 8b 05 00 00 00 00 	mov    rax,QWORD PTR \[rip\+0x0\][ 	]*#[ 	]*0x[a-f0-9]+[ 	]+[a-f0-9]+: R_X86_64_PC32	__CTOR_END__-0xc
 #pass
--- gas/testsuite/gas/i386/x86-64-rip.d.rip	2007-04-26 22:54:10.000000000 -0700
+++ gas/testsuite/gas/i386/x86-64-rip.d	2007-09-15 14:51:12.000000000 -0700
@@ -6,9 +6,13 @@
 
 Disassembly of section .text:
 
-0+000 <.text>:
-[	 ]*0:[	 ]+8d 05 00 00 00 00[	 ]+lea[	 ]+0x0\(%rip\),%eax[ 	]*(#.*)?
-[	 ]*6:[	 ]+8d 05 11 11 11 11[	 ]+lea[	 ]+0x11111111\(%rip\),%eax[ 	]*(#.*)?
-[	 ]*c:[	 ]+8d 05 01 00 00 00[	 ]+lea[	 ]+0x1\(%rip\),%eax[ 	]*(#.*)?
-[	 ]*12:[	 ]+8d 05 00 00 00 00[	 ]+lea[	 ]+0x0\(%rip\),%eax[ 	]*(#.*)?
+0+ <.text>:
+[ 	]*[a-f0-9]+:	8d 05 00 00 00 00    	lea    0x0\(%rip\),%eax[ 	]*#[ 	]*0x[a-f0-9]+[ 	]+[a-f0-9]+: R_X86_64_PC32	symbol-0x4
+[ 	]*[a-f0-9]+:	8d 05 11 11 11 11    	lea    0x11111111\(%rip\),%eax        # 0x1111111d
+[ 	]*[a-f0-9]+:	8d 05 01 00 00 00    	lea    0x1\(%rip\),%eax        # 0x13
+[ 	]*[a-f0-9]+:	8d 05 00 00 00 00    	lea    0x0\(%rip\),%eax        # 0x18
+[ 	]*[a-f0-9]+:	48 8b 05 00 00 00 00 	mov    0x0\(%rip\),%rax[ 	]*#[ 	]*0x[a-f0-9]+[ 	]+[a-f0-9]+: R_X86_64_PC32	__CTOR_END__-0xc
+[ 	]*[a-f0-9]+:	48 8b 05 00 00 00 00 	mov    0x0\(%rip\),%rax[ 	]*#[ 	]*0x[a-f0-9]+[ 	]+[a-f0-9]+: R_X86_64_PC32	__CTOR_END__-0xc
+[ 	]*[a-f0-9]+:	48 8b 05 00 00 00 00 	mov    0x0\(%rip\),%rax[ 	]*#[ 	]*0x[a-f0-9]+[ 	]+[a-f0-9]+: R_X86_64_PC32	__CTOR_END__-0xc
+[ 	]*[a-f0-9]+:	48 8b 05 00 00 00 00 	mov    0x0\(%rip\),%rax[ 	]*#[ 	]*0x[a-f0-9]+[ 	]+[a-f0-9]+: R_X86_64_PC32	__CTOR_END__-0xc
 #pass
--- gas/testsuite/gas/i386/x86-64-rip.s.rip	2004-07-21 09:09:43.000000000 -0700
+++ gas/testsuite/gas/i386/x86-64-rip.s	2007-09-15 14:26:28.000000000 -0700
@@ -3,3 +3,8 @@
 	leal	0x11111111(%rip), %eax
 	leal	1(%rip), %eax
 	leal	(%rip), %eax
+.intel_syntax noprefix
+mov     rax, QWORD PTR __CTOR_END__-8[rip]
+mov     rax, QWORD PTR __CTOR_END__+-8[rip]
+mov     rax, QWORD PTR -8+__CTOR_END__[rip]
+mov     rax, QWORD PTR __CTOR_END__[rip-8]


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