This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] RISC-V: Raise error on unexpected ISA string at end.
- From: Maxim Blinov <maxim dot blinov at embecosm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Maxim Blinov <maxim dot blinov at embecosm dot com>
- Date: Wed, 31 Jul 2019 12:19:00 +0100
- Subject: [PATCH] RISC-V: Raise error on unexpected ISA string at end.
This patch adds the same check that is present in binutils/bfd/elfxx-riscv.c.
Checks that we have reached the end of the string after all the
parsing routines have been run. Without this check, GCC silently
succeeds on erroneous input, and produces an assembly with a truncated
arch attribute.
tested with RUNTESTFLAGS="riscv.exp"
Thanks,
Maxim
gcc/ChangeLog:
2019-07-31 Maxim Blinov <maxim.blinov@embecosm.com>
* common/config/riscv/riscv-common.c: Check -march string ends
with null.
gcc/testsuite/ChangeLog:
2019-07-31 Maxim Blinov <maxim.blinov@embecosm.com>
* gcc.target/riscv/attribute-10.c: New test.
---
gcc/common/config/riscv/riscv-common.c | 7 +++++++
gcc/testsuite/gcc.target/riscv/attribute-10.c | 6 ++++++
2 files changed, 13 insertions(+)
create mode 100644 gcc/testsuite/gcc.target/riscv/attribute-10.c
diff --git a/gcc/common/config/riscv/riscv-common.c b/gcc/common/config/riscv/riscv-common.c
index eeb75717db0..64a309241da 100644
--- a/gcc/common/config/riscv/riscv-common.c
+++ b/gcc/common/config/riscv/riscv-common.c
@@ -513,6 +513,13 @@ riscv_subset_list::parse (const char *arch, location_t loc)
if (p == NULL)
goto fail;
+ if (*p != '\0')
+ {
+ error_at (loc, "-march=%s: unexpected ISA string at end: %<%s%>",
+ arch, p);
+ goto fail;
+ }
+
return subset_list;
fail:
diff --git a/gcc/testsuite/gcc.target/riscv/attribute-10.c b/gcc/testsuite/gcc.target/riscv/attribute-10.c
new file mode 100644
index 00000000000..dd817879a67
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/attribute-10.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=rv32im_s_sx_unexpectedstring -mabi=ilp32" } */
+int foo()
+{
+}
+/* { dg-error "unexpected ISA string at end:" "" { target { "riscv*-*-*" } } 0 } */
--
2.20.1