aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorNelson Chu <nelson.chu@sifive.com>2021-12-09 11:52:16 +0800
committerNelson Chu <nelson.chu@sifive.com>2021-12-09 15:55:04 +0800
commitde3a913df6e0af6d6d88ecd308407971a44eae9e (patch)
tree14e77968337e32f78b93c63059b89c461037b5aa /gas
parentde8a2781a57ecb4a852fb5b734bc7ce71bad34c9 (diff)
downloadbinutils-de3a913df6e0af6d6d88ecd308407971a44eae9e.zip
binutils-de3a913df6e0af6d6d88ecd308407971a44eae9e.tar.gz
binutils-de3a913df6e0af6d6d88ecd308407971a44eae9e.tar.bz2
RISC-V: Clarify the behavior of .option arch directive.
* To be consistent with -march option, removed the "=" operator when user want to reset the whole architecture string. So the formats are, .option arch, +<extension><version>, ... .option arch, -<extension> .option arch, <ISA string> * Don't allow to add or remove the base extensions in the .option arch directive. Instead, users should reset the whole architecture string while they want to change the base extension. * The operator "+" won't update the version of extension, if the extension is already in the subset list. bfd/ * elfxx-riscv.c (riscv_add_subset): Don't update the version if the extension is already in the subset list. (riscv_update_subset): To be consistent with -march option, removed the "=" operator when user want to reset the whole architecture string. Besides, Don't allow to add or remove the base extensions in the .option arch directive. gas/ * testsuite/gas/riscv/option-arch-01.s: Updated since we cannot add or remove the base extensions in the .option arch directive. * testsuite/gas/riscv/option-arch-02.s: Likewise. * testsuite/gas/riscv/option-arch-fail.l: Likewise. * testsuite/gas/riscv/option-arch-fail.s: Likewise. * testsuite/gas/riscv/option-arch-01a.d: Set -misa-spec=2.2. * testsuite/gas/riscv/option-arch-01b.d: Likewise. * testsuite/gas/riscv/option-arch-02.d: Updated since the .option arch, + won't change the version of extension, if the extension is already in the subset list. * testsuite/gas/riscv/option-arch-03.s: Removed the "=" operator when resetting the whole architecture string.
Diffstat (limited to 'gas')
-rw-r--r--gas/testsuite/gas/riscv/option-arch-01.s2
-rw-r--r--gas/testsuite/gas/riscv/option-arch-01a.d2
-rw-r--r--gas/testsuite/gas/riscv/option-arch-01b.d2
-rw-r--r--gas/testsuite/gas/riscv/option-arch-02.d4
-rw-r--r--gas/testsuite/gas/riscv/option-arch-02.s2
-rw-r--r--gas/testsuite/gas/riscv/option-arch-03.s2
-rw-r--r--gas/testsuite/gas/riscv/option-arch-fail.l6
-rw-r--r--gas/testsuite/gas/riscv/option-arch-fail.s2
8 files changed, 13 insertions, 9 deletions
diff --git a/gas/testsuite/gas/riscv/option-arch-01.s b/gas/testsuite/gas/riscv/option-arch-01.s
index 201f9b3..50285fc 100644
--- a/gas/testsuite/gas/riscv/option-arch-01.s
+++ b/gas/testsuite/gas/riscv/option-arch-01.s
@@ -5,6 +5,6 @@ add a0, a0, a1
add a0, a0, a1
frcsr a0 # Should add mapping symbol with ISA here, and then dump it to frcsr.
.option push
-.option arch, +i3p0, +m3p0, +d3p0
+.option arch, +m3p0, +d3p0
.option pop
.option pop
diff --git a/gas/testsuite/gas/riscv/option-arch-01a.d b/gas/testsuite/gas/riscv/option-arch-01a.d
index 59bc1d2..aed4ca8 100644
--- a/gas/testsuite/gas/riscv/option-arch-01a.d
+++ b/gas/testsuite/gas/riscv/option-arch-01a.d
@@ -1,4 +1,4 @@
-#as:
+#as: -misa-spec=2.2
#source: option-arch-01.s
#objdump: -d
diff --git a/gas/testsuite/gas/riscv/option-arch-01b.d b/gas/testsuite/gas/riscv/option-arch-01b.d
index 9a6c2c5..8f4284d 100644
--- a/gas/testsuite/gas/riscv/option-arch-01b.d
+++ b/gas/testsuite/gas/riscv/option-arch-01b.d
@@ -1,4 +1,4 @@
-#as:
+#as: -misa-spec=2.2
#readelf: -A
#source: option-arch-01.s
diff --git a/gas/testsuite/gas/riscv/option-arch-02.d b/gas/testsuite/gas/riscv/option-arch-02.d
index 0fe89ec..9ca013e 100644
--- a/gas/testsuite/gas/riscv/option-arch-02.d
+++ b/gas/testsuite/gas/riscv/option-arch-02.d
@@ -1,8 +1,8 @@
-#as:
+#as: -misa-spec=2.2
#readelf: -A
#source: option-arch-02.s
Attribute Section: riscv
File Attributes
- Tag_RISCV_arch: "rv64i3p0_m3p0_f2p0_d3p0_c2p0_xvendor32x3p0"
+ Tag_RISCV_arch: "rv64i2p0_m3p0_f2p0_d3p0_c2p0_xvendor32x3p0"
#...
diff --git a/gas/testsuite/gas/riscv/option-arch-02.s b/gas/testsuite/gas/riscv/option-arch-02.s
index f4ceee84..e0f5de3 100644
--- a/gas/testsuite/gas/riscv/option-arch-02.s
+++ b/gas/testsuite/gas/riscv/option-arch-02.s
@@ -5,4 +5,4 @@ add a0, a0, a1
add a0, a0, a1
frcsr a0
.option pop
-.option arch, +i3p0, +m3p0, +d3p0, +xvendor32x3p0
+.option arch, +m3p0, +d3p0, +xvendor32x3p0
diff --git a/gas/testsuite/gas/riscv/option-arch-03.s b/gas/testsuite/gas/riscv/option-arch-03.s
index 7183140..d982a0b 100644
--- a/gas/testsuite/gas/riscv/option-arch-03.s
+++ b/gas/testsuite/gas/riscv/option-arch-03.s
@@ -1,3 +1,3 @@
.attribute arch, "rv64ic"
.option arch, +d2p0, -c
-.option arch, =rv32ic
+.option arch, rv32ic
diff --git a/gas/testsuite/gas/riscv/option-arch-fail.l b/gas/testsuite/gas/riscv/option-arch-fail.l
index 3e0599e..b9979a4 100644
--- a/gas/testsuite/gas/riscv/option-arch-fail.l
+++ b/gas/testsuite/gas/riscv/option-arch-fail.l
@@ -1,6 +1,8 @@
.*Assembler messages:
-.*Error: extensions must begin with \+/\-/\= in .option arch `m2p0'
-.*Error: cannot remove extension `i' in .option arch `\-i'
+.*Error: m2p0: ISA string must begin with rv32 or rv64
+.*Error: cannot \+ or \- base extension `i' in .option arch `\-i'
+.*Error: cannot \+ or \- base extension `e' in .option arch `\+e'
+.*Error: cannot \+ or \- base extension `g' in .option arch `\-g'
.*Error: unknown ISA extension `zsubset' in .option arch `\+zsubset2p0'
.*Error: unknown ISA extension `f2p0_d' in .option arch `\+f2p0_d2p0'
.*Error: unknown ISA extension `' in .option arch `\+'
diff --git a/gas/testsuite/gas/riscv/option-arch-fail.s b/gas/testsuite/gas/riscv/option-arch-fail.s
index a0b1bde..101587a 100644
--- a/gas/testsuite/gas/riscv/option-arch-fail.s
+++ b/gas/testsuite/gas/riscv/option-arch-fail.s
@@ -2,6 +2,8 @@
.option push
.option arch, m2p0
.option arch, -i
+.option arch, +e
+.option arch, -g
.option arch, +zsubset2p0
.option arch, +f2p0_d2p0
.option arch, +