This is the mail archive of the binutils-cvs@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]

[binutils-gdb] Revert "x86: Update segment register check in Intel syntax"


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e21440ba622e17a2f12a858a87a6a75ef90654ca

commit e21440ba622e17a2f12a858a87a6a75ef90654ca
Author: Jan Beulich <jbeulich@novell.com>
Date:   Thu Nov 30 11:44:27 2017 +0100

    Revert "x86: Update segment register check in Intel syntax"
    
    This reverts commit 4d36230d59903b92fbe2b53b31ed64a884860f0e.
    I was committed without maintainer ack and regresses intended
    functionality. A replacement will be committed shortly.

Diff:
---
 gas/ChangeLog                             | 13 -------------
 gas/config/tc-i386-intel.c                |  8 +++++++-
 gas/testsuite/gas/i386/intelok.s          |  2 +-
 gas/testsuite/gas/i386/inval-seg.l        | 18 ++++--------------
 gas/testsuite/gas/i386/inval-seg.s        |  6 ------
 gas/testsuite/gas/i386/x86-64-inval-seg.l | 22 ++++++----------------
 gas/testsuite/gas/i386/x86-64-inval-seg.s |  6 ------
 7 files changed, 18 insertions(+), 57 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index ab979a3..1b6401f 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1394,19 +1394,6 @@
 	* testsuite/gas/elf/dwarf2-6.d: Likewise.
 	* testsuite/gas/elf/dwarf2-7.d: Likewise.
 
-2017-08-01  H.J. Lu  <hongjiu.lu@intel.com>
-
-	PR gas/21874
-	* config/tc-i386-intel.c (i386_intel_operand): Update segment
-	register check.
-	* testsuite/gas/i386/intelok.s: Replace "fs:gs:[eax]" with
-	"fs:[eax]".
-	* testsuite/gas/i386/inval-seg.s: Add tests for invalid segment
-	register.
-	* testsuite/gas/i386/x86-64-inval-seg.s: Likewise.
-	* testsuite/gas/i386/inval-seg.l: Updated.
-	* testsuite/gas/i386/x86-64-inval-seg.l: Likewise.
-
 2017-07-31  John David Anglin  <danglin@gcc.gnu.org>
 
 	* config/tc-hppa.c (pa_ip): Clear `d' bit in branch on bit instructions
diff --git a/gas/config/tc-i386-intel.c b/gas/config/tc-i386-intel.c
index 79fe0b4..74aae24 100644
--- a/gas/config/tc-i386-intel.c
+++ b/gas/config/tc-i386-intel.c
@@ -956,7 +956,13 @@ i386_intel_operand (char *operand_string, int got_a_float)
 
       if (intel_state.seg)
 	{
-	  expP = symbol_get_value_expression (intel_state.seg);
+	  for (;;)
+	    {
+	      expP = symbol_get_value_expression (intel_state.seg);
+	      if (expP->X_op != O_full_ptr)
+		break;
+	      intel_state.seg = expP->X_add_symbol;
+	    }
 	  if (expP->X_op != O_register)
 	    {
 	      as_bad (_("segment register name expected"));
diff --git a/gas/testsuite/gas/i386/intelok.s b/gas/testsuite/gas/i386/intelok.s
index 4c16613..eae9c2d 100644
--- a/gas/testsuite/gas/i386/intelok.s
+++ b/gas/testsuite/gas/i386/intelok.s
@@ -150,7 +150,7 @@ start:
 	mov	eax, [eax[ecx]]
 	mov	eax, [[eax][ecx]]
 	mov	eax, es:[eax]
-	mov	eax, fs:[eax]
+	mov	eax, fs:gs:[eax]
 
 	# expressions
 
diff --git a/gas/testsuite/gas/i386/inval-seg.l b/gas/testsuite/gas/i386/inval-seg.l
index c1bbef9..efe190e 100644
--- a/gas/testsuite/gas/i386/inval-seg.l
+++ b/gas/testsuite/gas/i386/inval-seg.l
@@ -1,20 +1,10 @@
 .*: Assembler messages:
 .*:3: Error: .*
 .*:4: Error: .*
-.*:7: Error: .*
-.*:8: Error: .*
-.*:9: Error: .*
-.*:10: Error: .*
 GAS LISTING .*
 
 
-[ 	]*1[ 	]+\.text
-[ 	]*2[ 	]+\# All the following should be illegal
-[ 	]*3[ 	]+movl	%ds,\(%eax\)
-[ 	]*4[ 	]+movl	\(%eax\),%ds
-[ 	]*5[ 	]+
-[ 	]*6[ 	]+\.intel_syntax noprefix
-[ 	]*7[ 	]+mov	eax, DWORD PTR fs:foobar:16
-[ 	]*8[ 	]+mov	eax, DWORD PTR fs:foobar:barfoo:16
-[ 	]*9[ 	]+mov	eax, DWORD PTR fs:ds:16
-[ 	]*10[ 	]+mov	eax, DWORD PTR fs:ds:cs:16
+   1 [ 	]*	.text
+   2 [ 	]*# All the following should be illegal
+   3 [ 	]*	movl	%ds,\(%eax\)
+   4 [ 	]*	movl	\(%eax\),%ds
diff --git a/gas/testsuite/gas/i386/inval-seg.s b/gas/testsuite/gas/i386/inval-seg.s
index b23d87d..4cc2221 100644
--- a/gas/testsuite/gas/i386/inval-seg.s
+++ b/gas/testsuite/gas/i386/inval-seg.s
@@ -2,9 +2,3 @@
 # All the following should be illegal
 	movl	%ds,(%eax)
 	movl	(%eax),%ds
-
-	.intel_syntax noprefix
-	mov	eax, DWORD PTR fs:foobar:16
-	mov	eax, DWORD PTR fs:foobar:barfoo:16
-	mov	eax, DWORD PTR fs:ds:16
-	mov	eax, DWORD PTR fs:ds:cs:16
diff --git a/gas/testsuite/gas/i386/x86-64-inval-seg.l b/gas/testsuite/gas/i386/x86-64-inval-seg.l
index 51deb15..adef5d4 100644
--- a/gas/testsuite/gas/i386/x86-64-inval-seg.l
+++ b/gas/testsuite/gas/i386/x86-64-inval-seg.l
@@ -3,22 +3,12 @@
 .*:4: Error: .*
 .*:5: Error: .*
 .*:6: Error: .*
-.*:9: Error: .*
-.*:10: Error: .*
-.*:11: Error: .*
-.*:12: Error: .*
 GAS LISTING .*
 
 
-[ 	]*1[ 	]+\.text
-[ 	]*2[ 	]+\# All the following should be illegal
-[ 	]*3[ 	]+movq	%ds,\(%rax\)
-[ 	]*4[ 	]+movl	%ds,\(%rax\)
-[ 	]*5[ 	]+movq	\(%rax\),%ds
-[ 	]*6[ 	]+movl	\(%rax\),%ds
-[ 	]*7[ 	]+
-[ 	]*8[ 	]+\.intel_syntax noprefix
-[ 	]*9[ 	]+mov	eax, DWORD PTR fs:foobar:16
-[ 	]*10[ 	]+mov	eax, DWORD PTR fs:foobar:barfoo:16
-[ 	]*11[ 	]+mov	eax, DWORD PTR fs:ds:16
-[ 	]*12[ 	]+mov	eax, DWORD PTR fs:ds:cs:16
+   1 [ 	]*	.text
+   2 [ 	]*# All the following should be illegal
+   3 [ 	]*	movq	%ds,\(%rax\)
+   4 [ 	]*	movl	%ds,\(%rax\)
+   5 [ 	]*	movq	\(%rax\),%ds
+   6 [ 	]*	movl	\(%rax\),%ds
diff --git a/gas/testsuite/gas/i386/x86-64-inval-seg.s b/gas/testsuite/gas/i386/x86-64-inval-seg.s
index cfe46cf..bb54742 100644
--- a/gas/testsuite/gas/i386/x86-64-inval-seg.s
+++ b/gas/testsuite/gas/i386/x86-64-inval-seg.s
@@ -4,9 +4,3 @@
 	movl	%ds,(%rax)
 	movq	(%rax),%ds
 	movl	(%rax),%ds
-
-	.intel_syntax noprefix
-	mov	eax, DWORD PTR fs:foobar:16
-	mov	eax, DWORD PTR fs:foobar:barfoo:16
-	mov	eax, DWORD PTR fs:ds:16
-	mov	eax, DWORD PTR fs:ds:cs:16


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