x86: don't use operand size override with NOP in 16-bit code
authorJan Beulich <jbeulich@suse.com>
Mon, 23 Oct 2023 08:30:55 +0000 (10:30 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 23 Oct 2023 08:30:55 +0000 (10:30 +0200)
Since we don't key the NOP selection to user-controlled properties, we
may not use i386 features; otherwise we would violate a possible .arch
directive restricting ISA to pre-386.

gas/config/tc-i386.c
gas/testsuite/gas/i386/nop-2.d
gas/testsuite/gas/i386/nops16-1.d
gas/testsuite/gas/i386/x86-64-nop-2.d

index bec6304999200b216c8fa9dc505be3a5a15f8770..b8df4e949a4fe39fd6624c4db74569e8c1969679 100644 (file)
@@ -1291,6 +1291,7 @@ static const unsigned char f64_7[] =
 #define f64_8 (f64_9 + 1)              /* lea 0L(%rsi,%riz),%rsi */
 static const unsigned char f64_9[] =
   {0x2e,0x48,0x8d,0xb4,0x26,0x00,0x00,0x00,0x00}; /* lea %cs:0L(%rsi,%riz),%rsi */
+#define f16_2 (f64_3 + 1)              /* mov %si,%si  */
 static const unsigned char f16_3[] =
   {0x8d,0x74,0x00};                    /* lea 0(%si),%si       */
 static const unsigned char f16_4[] =
@@ -1311,7 +1312,7 @@ static const unsigned char *const f64_patt[] = {
 };
 /* 16-bit NOPs patterns.  */
 static const unsigned char *const f16_patt[] = {
-  f32_1, f32_2, f16_3, f16_4
+  f32_1, f16_2, f16_3, f16_4
 };
 /* nopl (%[re]ax) */
 static const unsigned char alt_3[] =
index e8df5ed8a22d6cf350a9bb20442a6e0b08c5570e..265fc358d49be9416be767abf606b944a1648e7b 100644 (file)
@@ -26,7 +26,7 @@ Disassembly of section .text:
  +[a-f0-9]+:   8d b4 00 00             lea    0x0\(%si\),%si
  +[a-f0-9]+:   8d b4 00 00             lea    0x0\(%si\),%si
  +[a-f0-9]+:   8d b4 00 00             lea    0x0\(%si\),%si
- +[a-f0-9]+:   66 90                   xchg   %eax,%eax
+ +[a-f0-9]+:   89 f6                   mov    %si,%si
 
 0+26 <pseudo_30>:
  +[a-f0-9]+:   eb 1c                   jmp    44 <pseudo_129>
index 0f302c96b8438040340a0bd454c172488ce3aec4..d5fdbcac22c33df3d24b09eb5b7a90f900cd6508 100644 (file)
@@ -55,7 +55,7 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
-[      ]*[a-f0-9]+:    66 90                   xchg   %eax,%eax
+[      ]*[a-f0-9]+:    89 f6                   mov    %si,%si
 
 0+80 <nop27>:
 [      ]*[a-f0-9]+:    90                      nop
@@ -118,7 +118,7 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
-[      ]*[a-f0-9]+:    66 90                   xchg   %eax,%eax
+[      ]*[a-f0-9]+:    89 f6                   mov    %si,%si
 
 0+100 <nop23>:
 [      ]*[a-f0-9]+:    90                      nop
@@ -193,7 +193,7 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
-[      ]*[a-f0-9]+:    66 90                   xchg   %eax,%eax
+[      ]*[a-f0-9]+:    89 f6                   mov    %si,%si
 
 0+180 <nop19>:
 [      ]*[a-f0-9]+:    90                      nop
@@ -280,7 +280,7 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
-[      ]*[a-f0-9]+:    66 90                   xchg   %eax,%eax
+[      ]*[a-f0-9]+:    89 f6                   mov    %si,%si
 
 0+200 <nop15>:
 [      ]*[a-f0-9]+:    90                      nop
@@ -315,7 +315,7 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    eb 0a                   jmp    240 <nop11>
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
-[      ]*[a-f0-9]+:    66 90                   xchg   %eax,%eax
+[      ]*[a-f0-9]+:    89 f6                   mov    %si,%si
 
 0+240 <nop11>:
 [      ]*[a-f0-9]+:    90                      nop
@@ -336,7 +336,7 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    90                      nop
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
-[      ]*[a-f0-9]+:    66 90                   xchg   %eax,%eax
+[      ]*[a-f0-9]+:    89 f6                   mov    %si,%si
 
 0+260 <nop9>:
 [      ]*[a-f0-9]+:    90                      nop
@@ -387,7 +387,7 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    90                      nop
 [      ]*[a-f0-9]+:    90                      nop
 [      ]*[a-f0-9]+:    8d b4 00 00             lea    0x0\(%si\),%si
-[      ]*[a-f0-9]+:    66 90                   xchg   %eax,%eax
+[      ]*[a-f0-9]+:    89 f6                   mov    %si,%si
 
 0+2a0 <nop5>:
 [      ]*[a-f0-9]+:    90                      nop
@@ -450,5 +450,5 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    90                      nop
 [      ]*[a-f0-9]+:    90                      nop
 [      ]*[a-f0-9]+:    90                      nop
-[      ]*[a-f0-9]+:    66 90                   xchg   %eax,%eax
+[      ]*[a-f0-9]+:    89 f6                   mov    %si,%si
 #pass
index 4e38b73729a0d76bf6f68cf6547d13aebc8d74cf..159454168f203eba9c62169fad552b9bd2b3ccae 100644 (file)
@@ -27,7 +27,7 @@ Disassembly of section .text:
  +[a-f0-9]+:   8d b4 00 00             lea    0x0\(%si\),%si
  +[a-f0-9]+:   8d b4 00 00             lea    0x0\(%si\),%si
  +[a-f0-9]+:   8d b4 00 00             lea    0x0\(%si\),%si
- +[a-f0-9]+:   66 90                   xchg   %eax,%eax
+ +[a-f0-9]+:   89 f6                   mov    %si,%si
 
 0+26 <pseudo_30>:
  +[a-f0-9]+:   eb 1c                   jmp    44 <pseudo_129>