This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] Revert "x86: Update segment register check in Intel syntax"
- From: Jan Beulich <jbeulich at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 30 Nov 2017 10:48:34 -0000
- Subject: [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