diff options
author | Nelson Chu <nelson.chu@sifive.com> | 2021-12-09 11:52:16 +0800 |
---|---|---|
committer | Nelson Chu <nelson.chu@sifive.com> | 2021-12-09 15:55:04 +0800 |
commit | de3a913df6e0af6d6d88ecd308407971a44eae9e (patch) | |
tree | 14e77968337e32f78b93c63059b89c461037b5aa /gas | |
parent | de8a2781a57ecb4a852fb5b734bc7ce71bad34c9 (diff) | |
download | binutils-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.s | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/riscv/option-arch-01a.d | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/riscv/option-arch-01b.d | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/riscv/option-arch-02.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/riscv/option-arch-02.s | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/riscv/option-arch-03.s | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/riscv/option-arch-fail.l | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/riscv/option-arch-fail.s | 2 |
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, + |