[binutils-gdb] x86: default to not accepting MPX insns

Jan Beulich jbeulich@sourceware.org
Mon Dec 2 08:40:10 GMT 2024


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

commit 57c526470bbf03220f928f0894a85c76a9659d35
Author: Jan Beulich <jbeulich@suse.com>
Date:   Mon Dec 2 09:39:23 2024 +0100

    x86: default to not accepting MPX insns
    
    Gcc9 had MPX support removed. While we don't want to remove support,
    require these deprecated insns (and registers) to be enabled explicitly.

Diff:
---
 gas/testsuite/gas/i386/bnd.l                         | 14 ++++++--------
 gas/testsuite/gas/i386/bnd.s                         |  1 -
 gas/testsuite/gas/i386/got-no-relax.d                |  2 +-
 gas/testsuite/gas/i386/got.d                         |  2 +-
 gas/testsuite/gas/i386/i386.exp                      |  6 +++---
 gas/testsuite/gas/i386/lfence-load.d                 |  2 +-
 gas/testsuite/gas/i386/mpx-16bit.d                   |  2 +-
 gas/testsuite/gas/i386/mpx-add-bnd-prefix.d          |  2 +-
 gas/testsuite/gas/i386/mpx.d                         |  1 +
 gas/testsuite/gas/i386/notrack-intel.d               |  1 +
 gas/testsuite/gas/i386/notrack.d                     |  1 +
 gas/testsuite/gas/i386/opts-intel.d                  |  1 +
 gas/testsuite/gas/i386/opts.d                        |  1 +
 gas/testsuite/gas/i386/pseudos.d                     |  2 +-
 gas/testsuite/gas/i386/solaris/x86-64-mpx-branch-1.d |  2 +-
 gas/testsuite/gas/i386/solaris/x86-64-mpx-branch-2.d |  2 +-
 gas/testsuite/gas/i386/sse2avx-opts-intel.d          |  2 +-
 gas/testsuite/gas/i386/sse2avx-opts.d                |  2 +-
 gas/testsuite/gas/i386/x86-64-lfence-load.d          |  2 +-
 gas/testsuite/gas/i386/x86-64-mpx-add-bnd-prefix.d   |  2 +-
 gas/testsuite/gas/i386/x86-64-mpx-addr32.d           |  1 +
 gas/testsuite/gas/i386/x86-64-mpx-branch-1.d         |  2 +-
 gas/testsuite/gas/i386/x86-64-mpx-branch-2.d         |  2 +-
 gas/testsuite/gas/i386/x86-64-mpx.d                  |  1 +
 gas/testsuite/gas/i386/x86-64-notrack-intel.d        |  1 +
 gas/testsuite/gas/i386/x86-64-notrack.d              |  1 +
 gas/testsuite/gas/i386/x86-64-pseudos.d              |  2 +-
 gas/testsuite/gas/i386/x86-64.exp                    |  6 +++---
 opcodes/i386-gen.c                                   |  2 +-
 opcodes/i386-init.h                                  |  2 +-
 30 files changed, 38 insertions(+), 32 deletions(-)

diff --git a/gas/testsuite/gas/i386/bnd.l b/gas/testsuite/gas/i386/bnd.l
index c9377d8c4b2..b70fe9c1522 100644
--- a/gas/testsuite/gas/i386/bnd.l
+++ b/gas/testsuite/gas/i386/bnd.l
@@ -1,14 +1,12 @@
 .*: Assembler messages:
-.*:6: Error: .*`bndmov'.*
+.*:5: Error: .*`bndmov'.*
 GAS LISTING .*
 
 
 [ 	]*1[ 	]+\.text
 [ 	]*2[ 	]+\.intel_syntax noprefix
-[ 	]*3[ 	]+\.arch generic32
-[ 	]*4[ 	]+bnd:
-[ 	]*5[ 	]+\?\?\?\? A1000000[ 	]+mov	eax, bnd0
-[ 	]*5[ 	]+00
-[ 	]*6[ 	]+bndmov	bnd0, bnd0
-[ 	]*7[ 	]+\?\?\?\? 00000000 		\.p2align 4,0
-#...
+[ 	]*3[ 	]+bnd:
+[ 	]*4[ 	]+\?\?\?\? A1000000[ 	]+mov	eax, bnd0
+[ 	]*4[ 	]+00
+[ 	]*5[ 	]+bndmov	bnd0, bnd0
+#pass
diff --git a/gas/testsuite/gas/i386/bnd.s b/gas/testsuite/gas/i386/bnd.s
index e2c61bf4ed0..63d3aed1282 100644
--- a/gas/testsuite/gas/i386/bnd.s
+++ b/gas/testsuite/gas/i386/bnd.s
@@ -1,6 +1,5 @@
 	.text
 	.intel_syntax noprefix
-	.arch generic32
 bnd:
 	mov	eax, bnd0
 	bndmov	bnd0, bnd0
diff --git a/gas/testsuite/gas/i386/got-no-relax.d b/gas/testsuite/gas/i386/got-no-relax.d
index 41b4adfc431..acc8055e880 100644
--- a/gas/testsuite/gas/i386/got-no-relax.d
+++ b/gas/testsuite/gas/i386/got-no-relax.d
@@ -1,5 +1,5 @@
 #source: got.s
-#as: -mrelax-relocations=no
+#as: -mrelax-relocations=no -march=+mpx
 #objdump: -dwr
 
 .*: +file format .*
diff --git a/gas/testsuite/gas/i386/got.d b/gas/testsuite/gas/i386/got.d
index 351da27e046..9610e2cf2c0 100644
--- a/gas/testsuite/gas/i386/got.d
+++ b/gas/testsuite/gas/i386/got.d
@@ -1,4 +1,4 @@
-#as: -mrelax-relocations=yes
+#as: -mrelax-relocations=yes -march=+mpx
 #objdump: -dwr
 
 .*: +file format .*
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 0a48b4eb0f1..34352026ccc 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -68,7 +68,7 @@ if [gas_32_check] then {
     run_dump_test "intelok"
     run_dump_test "intelok2"
     run_dump_test "prefix"
-    run_list_test "prefix32" "-al"
+    run_list_test "prefix32" "-al -march=+mpx"
     run_dump_test "insn-32"
     run_dump_test "lea"
     run_dump_test "lea16"
@@ -374,8 +374,8 @@ if [gas_32_check] then {
     run_dump_test "prefetch-intel"
     run_dump_test "smap"
     run_dump_test "mpx"
-    run_list_test "mpx-inval-1" "-al"
-    run_list_test "mpx-inval-2" "-al"
+    run_list_test "mpx-inval-1" "-al -march=+mpx"
+    run_list_test "mpx-inval-2" "-al -march=+mpx"
     run_dump_test "mpx-add-bnd-prefix"
     run_dump_test "mpx-16bit"
     run_list_test "bnd" "-al"
diff --git a/gas/testsuite/gas/i386/lfence-load.d b/gas/testsuite/gas/i386/lfence-load.d
index eb94bdcbb68..a315be75254 100644
--- a/gas/testsuite/gas/i386/lfence-load.d
+++ b/gas/testsuite/gas/i386/lfence-load.d
@@ -1,4 +1,4 @@
-#as: -mlfence-after-load=yes
+#as: -mlfence-after-load=yes -march=+mpx
 #objdump: -dw
 #warning_output: lfence-load.e
 #name: -mlfence-after-load=yes
diff --git a/gas/testsuite/gas/i386/mpx-16bit.d b/gas/testsuite/gas/i386/mpx-16bit.d
index b26bc1ae1df..a38e46ec8c5 100644
--- a/gas/testsuite/gas/i386/mpx-16bit.d
+++ b/gas/testsuite/gas/i386/mpx-16bit.d
@@ -1,4 +1,4 @@
-#as: -I${srcdir}/$subdir
+#as: -I${srcdir}/$subdir -march=+mpx
 #objdump: -drw -Mi8086
 #name: i386 MPX (16-bit)
 
diff --git a/gas/testsuite/gas/i386/mpx-add-bnd-prefix.d b/gas/testsuite/gas/i386/mpx-add-bnd-prefix.d
index 5ba3ca56816..6e18f61ba05 100644
--- a/gas/testsuite/gas/i386/mpx-add-bnd-prefix.d
+++ b/gas/testsuite/gas/i386/mpx-add-bnd-prefix.d
@@ -1,4 +1,4 @@
-#as: -madd-bnd-prefix
+#as: -madd-bnd-prefix -march=+mpx
 #warning_output: mpx-add-bnd-prefix.e
 #objdump: -drw
 #name: Check -madd-bnd-prefix
diff --git a/gas/testsuite/gas/i386/mpx.d b/gas/testsuite/gas/i386/mpx.d
index a12081c6358..a1e2f8f85a9 100644
--- a/gas/testsuite/gas/i386/mpx.d
+++ b/gas/testsuite/gas/i386/mpx.d
@@ -1,3 +1,4 @@
+#as: -march=+mpx
 #objdump: -drw
 #name: i386 MPX
 
diff --git a/gas/testsuite/gas/i386/notrack-intel.d b/gas/testsuite/gas/i386/notrack-intel.d
index 7b72a39fd73..611e846b4ab 100644
--- a/gas/testsuite/gas/i386/notrack-intel.d
+++ b/gas/testsuite/gas/i386/notrack-intel.d
@@ -1,5 +1,6 @@
 #source: notrack.s
 #objdump: -dw -Mintel
+#as: -march=+mpx
 #name: i386 NOTRACK prefix (Intel disassembly)
 
 .*: +file format .*
diff --git a/gas/testsuite/gas/i386/notrack.d b/gas/testsuite/gas/i386/notrack.d
index 1208c922e6b..b220d05af11 100644
--- a/gas/testsuite/gas/i386/notrack.d
+++ b/gas/testsuite/gas/i386/notrack.d
@@ -1,4 +1,5 @@
 #objdump: -dw
+#as: -march=+mpx
 #name: i386 NOTRACK prefix
 
 .*: +file format .*
diff --git a/gas/testsuite/gas/i386/opts-intel.d b/gas/testsuite/gas/i386/opts-intel.d
index 4172e93c39e..281f7097d8d 100644
--- a/gas/testsuite/gas/i386/opts-intel.d
+++ b/gas/testsuite/gas/i386/opts-intel.d
@@ -1,4 +1,5 @@
 #objdump: -drwMintel,suffix
+#as: -march=+mpx
 #name: encoding option (Intel mode)
 #source: opts.s
 
diff --git a/gas/testsuite/gas/i386/opts.d b/gas/testsuite/gas/i386/opts.d
index 73d2a6ef544..ac9becac2c1 100644
--- a/gas/testsuite/gas/i386/opts.d
+++ b/gas/testsuite/gas/i386/opts.d
@@ -1,4 +1,5 @@
 #objdump: -drwMsuffix
+#as: -march=+mpx
 #name: encoding option
 
 .*: +file format .*
diff --git a/gas/testsuite/gas/i386/pseudos.d b/gas/testsuite/gas/i386/pseudos.d
index 98e1149c19b..47dca19e9a2 100644
--- a/gas/testsuite/gas/i386/pseudos.d
+++ b/gas/testsuite/gas/i386/pseudos.d
@@ -1,4 +1,4 @@
-#as: -O0
+#as: -O0 -march=+mpx
 #objdump: -drw
 #name: pseudo prefixes
 
diff --git a/gas/testsuite/gas/i386/solaris/x86-64-mpx-branch-1.d b/gas/testsuite/gas/i386/solaris/x86-64-mpx-branch-1.d
index 0db4c04a1f8..cdd46f91748 100644
--- a/gas/testsuite/gas/i386/solaris/x86-64-mpx-branch-1.d
+++ b/gas/testsuite/gas/i386/solaris/x86-64-mpx-branch-1.d
@@ -1,4 +1,4 @@
-#as: -J
+#as: -J -march=+mpx
 #source: ../x86-64-mpx-branch-1.s
 #objdump: -dwr
 #name: x86-64 MPX branch
diff --git a/gas/testsuite/gas/i386/solaris/x86-64-mpx-branch-2.d b/gas/testsuite/gas/i386/solaris/x86-64-mpx-branch-2.d
index b6ff92c1700..4bcb00ea11f 100644
--- a/gas/testsuite/gas/i386/solaris/x86-64-mpx-branch-2.d
+++ b/gas/testsuite/gas/i386/solaris/x86-64-mpx-branch-2.d
@@ -1,4 +1,4 @@
-#as: -J -madd-bnd-prefix
+#as: -J -madd-bnd-prefix -march=+mpx
 #source: ../x86-64-mpx-branch-1.s
 #objdump: -dwr
 #name: x86-64 branch with BND prefix
diff --git a/gas/testsuite/gas/i386/sse2avx-opts-intel.d b/gas/testsuite/gas/i386/sse2avx-opts-intel.d
index 6f9d30dabe9..6dc8b2f0240 100644
--- a/gas/testsuite/gas/i386/sse2avx-opts-intel.d
+++ b/gas/testsuite/gas/i386/sse2avx-opts-intel.d
@@ -1,4 +1,4 @@
-#as: -msse2avx
+#as: -msse2avx -march=+mpx
 #objdump: -drwMintel,suffix
 #name: encoding option with -msse2avx (Intel mode)
 #source: opts.s
diff --git a/gas/testsuite/gas/i386/sse2avx-opts.d b/gas/testsuite/gas/i386/sse2avx-opts.d
index 48e0933474b..e1306de54dd 100644
--- a/gas/testsuite/gas/i386/sse2avx-opts.d
+++ b/gas/testsuite/gas/i386/sse2avx-opts.d
@@ -1,4 +1,4 @@
-#as: -msse2avx
+#as: -msse2avx -march=+mpx
 #objdump: -drwMsuffix
 #name: encoding option with -msse2avx
 #source: opts.s
diff --git a/gas/testsuite/gas/i386/x86-64-lfence-load.d b/gas/testsuite/gas/i386/x86-64-lfence-load.d
index 726236826e8..dcfa810a513 100644
--- a/gas/testsuite/gas/i386/x86-64-lfence-load.d
+++ b/gas/testsuite/gas/i386/x86-64-lfence-load.d
@@ -1,4 +1,4 @@
-#as: -mlfence-after-load=yes
+#as: -mlfence-after-load=yes -march=+mpx
 #objdump: -dw
 #warning_output: lfence-load.e
 #name: x86-64 -mlfence-after-load=yes
diff --git a/gas/testsuite/gas/i386/x86-64-mpx-add-bnd-prefix.d b/gas/testsuite/gas/i386/x86-64-mpx-add-bnd-prefix.d
index 1bbec106e00..7f3458cf200 100644
--- a/gas/testsuite/gas/i386/x86-64-mpx-add-bnd-prefix.d
+++ b/gas/testsuite/gas/i386/x86-64-mpx-add-bnd-prefix.d
@@ -1,4 +1,4 @@
-#as: -madd-bnd-prefix
+#as: -madd-bnd-prefix -march=+mpx
 #warning_output: x86-64-mpx-add-bnd-prefix.e
 #objdump: -drw
 #name: Check -madd-bnd-prefix (x86-64)
diff --git a/gas/testsuite/gas/i386/x86-64-mpx-addr32.d b/gas/testsuite/gas/i386/x86-64-mpx-addr32.d
index cb53535eb0a..593029709f0 100644
--- a/gas/testsuite/gas/i386/x86-64-mpx-addr32.d
+++ b/gas/testsuite/gas/i386/x86-64-mpx-addr32.d
@@ -1,3 +1,4 @@
+#as: -march=+mpx
 #objdump: -drw
 #name: x86-64 MPX addr32 tests
 
diff --git a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d
index 795f3fdacc4..2ae13ca64c6 100644
--- a/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d
+++ b/gas/testsuite/gas/i386/x86-64-mpx-branch-1.d
@@ -1,4 +1,4 @@
-#as: -J
+#as: -J -march=+mpx
 #objdump: -dwr
 #name: x86-64 MPX branch
 #notarget: *-*-solaris*
diff --git a/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d b/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d
index c61b3af69e8..f5fdb4fa985 100644
--- a/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d
+++ b/gas/testsuite/gas/i386/x86-64-mpx-branch-2.d
@@ -1,4 +1,4 @@
-#as: -J -madd-bnd-prefix
+#as: -J -madd-bnd-prefix -march=+mpx
 #objdump: -dwr
 #name: x86-64 branch with BND prefix
 #dump: x86-64-mpx-branch-1.d
diff --git a/gas/testsuite/gas/i386/x86-64-mpx.d b/gas/testsuite/gas/i386/x86-64-mpx.d
index 0794e7ec9be..67c2d837ac1 100644
--- a/gas/testsuite/gas/i386/x86-64-mpx.d
+++ b/gas/testsuite/gas/i386/x86-64-mpx.d
@@ -1,3 +1,4 @@
+#as: -march=+mpx
 #objdump: -drw
 #name: x86-64 MPX
 
diff --git a/gas/testsuite/gas/i386/x86-64-notrack-intel.d b/gas/testsuite/gas/i386/x86-64-notrack-intel.d
index b9967908324..628669f2ddf 100644
--- a/gas/testsuite/gas/i386/x86-64-notrack-intel.d
+++ b/gas/testsuite/gas/i386/x86-64-notrack-intel.d
@@ -1,4 +1,5 @@
 #source: x86-64-notrack.s
+#as: -march=+mpx
 #objdump: -dw -Mintel
 #name: x86-64 NOTRACK prefix (Intel disassembly)
 
diff --git a/gas/testsuite/gas/i386/x86-64-notrack.d b/gas/testsuite/gas/i386/x86-64-notrack.d
index 4c258ded2da..76108b6114f 100644
--- a/gas/testsuite/gas/i386/x86-64-notrack.d
+++ b/gas/testsuite/gas/i386/x86-64-notrack.d
@@ -1,3 +1,4 @@
+#as: -march=+mpx
 #objdump: -dw
 #name: x86-64 NOTRACK prefix
 
diff --git a/gas/testsuite/gas/i386/x86-64-pseudos.d b/gas/testsuite/gas/i386/x86-64-pseudos.d
index c55e6f4b7aa..ea5a3585c37 100644
--- a/gas/testsuite/gas/i386/x86-64-pseudos.d
+++ b/gas/testsuite/gas/i386/x86-64-pseudos.d
@@ -1,4 +1,4 @@
-#as: -O0
+#as: -O0 -march=+mpx
 #objdump: -drw
 #name: x86-64 pseudo prefixes
 
diff --git a/gas/testsuite/gas/i386/x86-64.exp b/gas/testsuite/gas/i386/x86-64.exp
index e59daec5514..fee227d2a4d 100644
--- a/gas/testsuite/gas/i386/x86-64.exp
+++ b/gas/testsuite/gas/i386/x86-64.exp
@@ -172,7 +172,7 @@ run_list_test "x86-64-specific-reg"
 run_list_test "suffix-bad"
 run_list_test "x86-64-suffix-bad"
 run_list_test "unspec64" ""
-run_list_test "prefix64" "-al"
+run_list_test "prefix64" "-al -march=+mpx"
 run_list_test "oversized64" "-al --divide"
 run_dump_test "x86-64-fxsave"
 run_dump_test "x86-64-fxsave-intel"
@@ -307,8 +307,8 @@ run_dump_test "x86-64-prefetch"
 run_dump_test "x86-64-prefetch-intel"
 run_dump_test "x86-64-smap"
 run_dump_test "x86-64-mpx"
-run_list_test "x86-64-mpx-inval-1" "-al"
-run_list_test "x86-64-mpx-inval-2" "-al"
+run_list_test "x86-64-mpx-inval-1" "-al -march=+mpx"
+run_list_test "x86-64-mpx-inval-2" "-al -march=+mpx"
 run_dump_test "x86-64-mpx-addr32"
 run_dump_test "x86-64-mpx-add-bnd-prefix"
 run_dump_test "x86-64-sha"
diff --git a/opcodes/i386-gen.c b/opcodes/i386-gen.c
index 5a3b1566e98..bb10ae8b621 100644
--- a/opcodes/i386-gen.c
+++ b/opcodes/i386-gen.c
@@ -47,7 +47,7 @@ typedef struct dependency
 static const dependency isa_dependencies[] =
 {
   { "UNKNOWN",
-    "~IAMCU" },
+    "~(IAMCU|MPX)" },
   { "GENERIC32",
     "386" },
   { "GENERIC64",
diff --git a/opcodes/i386-init.h b/opcodes/i386-init.h
index 8b54d17266c..3d12c6bd012 100644
--- a/opcodes/i386-init.h
+++ b/opcodes/i386-init.h
@@ -1481,7 +1481,7 @@
 #define CPU_UNKNOWN_FLAGS \
   { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, \
-      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
+      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, \
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \


More information about the Binutils-cvs mailing list