From 1adf7f5604558489bca6e3f8e6ee5e12089f06ef Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 26 Apr 2018 08:46:39 +0200 Subject: [PATCH] x86: don't recognize bnd as registers without CpuMPX This is just like for all other extended/optional register sets. --- gas/ChangeLog | 7 +++++++ gas/config/tc-i386.c | 3 +++ gas/testsuite/gas/i386/bnd.l | 12 ++++++++++++ gas/testsuite/gas/i386/bnd.s | 6 ++++++ gas/testsuite/gas/i386/i386.exp | 1 + 5 files changed, 29 insertions(+) create mode 100644 gas/testsuite/gas/i386/bnd.l create mode 100644 gas/testsuite/gas/i386/bnd.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 3131982ae98..a13f86f3966 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2018-04-26 Jan Beulich + + * config/tc-i386.c (parse_real_register): Check bnd + registers. + * testsuite/gas/i386/bnd.s, testsuite/gas/i386/bnd.l: New. + * testsuite/gas/i386/i386.exp: Run new test. + 2018-04-26 Jan Beulich * config/tc-i386.c (parse_real_register): Check FPU register diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index fcd40e2db38..ccecddaa16b 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -10170,6 +10170,9 @@ parse_real_register (char *reg_string, char **end_op) && !cpu_arch_flags.bitfield.cpuregmask) return (const reg_entry *) NULL; + if (r->reg_type.bitfield.regbnd && !cpu_arch_flags.bitfield.cpumpx) + return (const reg_entry *) NULL; + /* Don't allow fake index register unless allow_index_reg isn't 0. */ if (!allow_index_reg && (r->reg_num == RegEiz || r->reg_num == RegRiz)) diff --git a/gas/testsuite/gas/i386/bnd.l b/gas/testsuite/gas/i386/bnd.l new file mode 100644 index 00000000000..422289660df --- /dev/null +++ b/gas/testsuite/gas/i386/bnd.l @@ -0,0 +1,12 @@ +.*: Assembler messages: +.*:6: 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 diff --git a/gas/testsuite/gas/i386/bnd.s b/gas/testsuite/gas/i386/bnd.s new file mode 100644 index 00000000000..9ca4ce7322e --- /dev/null +++ b/gas/testsuite/gas/i386/bnd.s @@ -0,0 +1,6 @@ + .text + .intel_syntax noprefix + .arch generic32 +bnd: + mov eax, bnd0 + bndmov bnd0, bnd0 diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 95e3469e96f..62c03d815af 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -294,6 +294,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] run_list_test "mpx-inval-1" "-al" run_list_test "mpx-inval-2" "-al" run_dump_test "mpx-add-bnd-prefix" + run_list_test "bnd" "-al" run_dump_test "sha" run_dump_test "clflushopt" run_dump_test "clflushopt-intel" -- 2.30.2