From e21440ba622e17a2f12a858a87a6a75ef90654ca Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 30 Nov 2017 11:44:27 +0100 Subject: [PATCH] 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. --- 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 ab979a31edb..1b6401fe17f 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 - - 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 * 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 79fe0b47d45..74aae24c41b 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 4c16613e54d..eae9c2d5092 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 c1bbef93ab1..efe190e9998 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 b23d87de33e..4cc222145e8 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 51deb15e55f..adef5d41d44 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 cfe46cf639f..bb547422364 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 -- 2.30.2