[gas][arm] Set context table for '.arch_extension'
authorAndre Vieira <andre.simoesdiasvieira@arm.com>
Tue, 10 Dec 2019 16:10:17 +0000 (16:10 +0000)
committerAndre Vieira <andre.simoesdiasvieira@arm.com>
Tue, 10 Dec 2019 16:10:17 +0000 (16:10 +0000)
This patch fixes .arch_extension behaviour.

Currently, context table for '.arch_extension' is only set while
"-march" processing, but it is not set while .arch processing,
so following code is rejected

  .syntax unified
  .thumb
  .arch armv8.1-m.main
  .arch_extension mve.fp

  unless -march=armv8.1-m.main is given.

Committing on behalf of Vladimir Murzin

gas/ChangeLog:
2019-12-10  Vladimir Murzin  <vladimir.murzin@arm.com>

* config/tc-arm.c (s_arm_arch): Set selected_ctx_ext_table.
* testsuite/gas/arm/mve-arch-ext.s: New.
* testsuite/gas/arm/mve-arch-ext.d: New.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/gas/arm/mve-arch-ext.d [new file with mode: 0644]
gas/testsuite/gas/arm/mve-arch-ext.s [new file with mode: 0644]

index 4d2b7384ec80260834e6e484fd1dde20ec84c2d1..093219747e901f24883f139fc0e7f8f5d4fcae4b 100644 (file)
@@ -1,3 +1,9 @@
+2019-12-10  Vladimir Murzin  <vladimir.murzin@arm.com>
+
+       * config/tc-arm.c (s_arm_arch): Set selected_ctx_ext_table.
+       * testsuite/gas/arm/mve-arch-ext.s: New.
+       * testsuite/gas/arm/mve-arch-ext.d: New.
+
 2019-12-09  Jan Beulich  <jbeulich@suse.com>
 
        * config/tc-i386-intel.c (O_oword_ptr): Move.
index 28dc6244510f66f456f036ec3b66b77db7cb61b0..c4ffeeec3a4f28bfa3becc958e0ad0fd9a90b2d8 100644 (file)
@@ -32633,6 +32633,7 @@ s_arm_arch (int ignored ATTRIBUTE_UNUSED)
     if (streq (opt->name, name))
       {
        selected_arch = opt->value;
+       selected_ctx_ext_table = opt->ext_table;
        selected_ext = arm_arch_none;
        selected_cpu = selected_arch;
        strcpy (selected_cpu_name, opt->name);
diff --git a/gas/testsuite/gas/arm/mve-arch-ext.d b/gas/testsuite/gas/arm/mve-arch-ext.d
new file mode 100644 (file)
index 0000000..0c55b38
--- /dev/null
@@ -0,0 +1,7 @@
+# name: MVE context sensitive .arch_extension under no -march
+# objdump: -dr --prefix-addresses --show-raw-insn -marmv8.1-m.main
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+0[0-9a-f]+ <[^>]+> ea52 136f   asrl    r2, r3, #5
diff --git a/gas/testsuite/gas/arm/mve-arch-ext.s b/gas/testsuite/gas/arm/mve-arch-ext.s
new file mode 100644 (file)
index 0000000..bbbb9ee
--- /dev/null
@@ -0,0 +1,6 @@
+.syntax unified
+.thumb
+.arch armv8.1-m.main
+.arch_extension mve
+
+asrl   r2, r3, #5