[binutils-gdb] RISC-V: Don't allow any uppercase letter in the arch string.
Nelson Chu
nelsonc1225@sourceware.org
Tue Dec 1 07:33:49 GMT 2020
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e8d4709e6a5f4e3fad8479b8069c52294be54488
commit e8d4709e6a5f4e3fad8479b8069c52294be54488
Author: Nelson Chu <nelson.chu@sifive.com>
Date: Sat Nov 21 11:19:58 2020 +0800
RISC-V: Don't allow any uppercase letter in the arch string.
Although I cannot find any RISC-V specs said that uppercases are not
allowed in the arhc string, but seems like it is an established fact
both for GNU and LLVM. Therefore, we shouldn't allow the uppercases
for the non-standard x extensions, too.
bfd/
* elfxx-riscv.c (riscv_parse_subset): ISA string cannot contain
any uppercase letter.
gas/
* testsuite/gas/riscv/march-fail-uppercase-base.d: Updated.
* testsuite/gas/riscv/march-fail-uppercase.l: Updated.
* testsuite/gas/riscv/march-fail-uppercase-x.d: New testcase.
Diff:
---
bfd/ChangeLog | 5 +++++
bfd/elfxx-riscv.c | 14 +++++++++++++-
gas/ChangeLog | 6 ++++++
gas/testsuite/gas/riscv/march-fail-uppercase-base.d | 2 +-
gas/testsuite/gas/riscv/march-fail-uppercase-x.d | 3 +++
gas/testsuite/gas/riscv/march-fail-uppercase.l | 2 +-
6 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 4c6c6941591..3ac27196bdc 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2020-12-01 Nelson Chu <nelson.chu@sifive.com>
+
+ * elfxx-riscv.c (riscv_parse_subset): ISA string cannot contain
+ any uppercase letter.
+
2020-12-01 Nelson Chu <nelson.chu@sifive.com>
* elfxx-riscv.c: Re-indent codes, unify and improve the error
diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 5ed8aa088a2..69f3a4353b9 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1510,9 +1510,21 @@ bfd_boolean
riscv_parse_subset (riscv_parse_subset_t *rps,
const char *arch)
{
- const char *p = arch;
+ const char *p;
size_t i;
+ for (p = arch; *p != '\0'; p++)
+ {
+ if (ISUPPER (*p))
+ {
+ rps->error_handler
+ (_("-march=%s: ISA string cannot contain uppercase letters"),
+ arch);
+ return FALSE;
+ }
+ }
+
+ p = arch;
if (strncmp (p, "rv32", 4) == 0)
{
*rps->xlen = 32;
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 6ab777eb82d..2a2b593a13f 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2020-12-01 Nelson Chu <nelson.chu@sifive.com>
+
+ * testsuite/gas/riscv/march-fail-uppercase-base.d: Updated.
+ * testsuite/gas/riscv/march-fail-uppercase.l: Updated.
+ * testsuite/gas/riscv/march-fail-uppercase-x.d: New testcase.
+
2020-12-01 Nelson Chu <nelson.chu@sifive.com>
(These are new testcases that cover more cases)
diff --git a/gas/testsuite/gas/riscv/march-fail-uppercase-base.d b/gas/testsuite/gas/riscv/march-fail-uppercase-base.d
index 74b55ea165e..8b595856b4c 100644
--- a/gas/testsuite/gas/riscv/march-fail-uppercase-base.d
+++ b/gas/testsuite/gas/riscv/march-fail-uppercase-base.d
@@ -1,3 +1,3 @@
#as: -march=rv32I
#source: empty.s
-#error_output: march-fail-base-01.l
+#error_output: march-fail-uppercase.l
diff --git a/gas/testsuite/gas/riscv/march-fail-uppercase-x.d b/gas/testsuite/gas/riscv/march-fail-uppercase-x.d
new file mode 100644
index 00000000000..316351fce8f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/march-fail-uppercase-x.d
@@ -0,0 +1,3 @@
+#as: -march=rv32ic_zicsr_xARGLE
+#source: empty.s
+#error_output: march-fail-uppercase.l
diff --git a/gas/testsuite/gas/riscv/march-fail-uppercase.l b/gas/testsuite/gas/riscv/march-fail-uppercase.l
index 20531359228..292c18adcc6 100644
--- a/gas/testsuite/gas/riscv/march-fail-uppercase.l
+++ b/gas/testsuite/gas/riscv/march-fail-uppercase.l
@@ -1,2 +1,2 @@
.*Assembler messages:
-.*Fatal error: .*unknown (standard|z) ISA extension.*
+.*Fatal error: .*ISA string cannot contain uppercase letters
More information about the Binutils-cvs
mailing list