+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
if (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;
- }
+ expP = symbol_get_value_expression (intel_state.seg);
if (expP->X_op != O_register)
{
as_bad (_("segment register name expected"));
mov eax, [eax[ecx]]
mov eax, [[eax][ecx]]
mov eax, es:[eax]
- mov eax, fs:gs:[eax]
+ mov eax, fs:[eax]
# expressions
.*: 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
+[ ]*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
# 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
.*: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
+[ ]*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
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