[PATCH] RISC-V: Correct as --dump-config output for --target=rv64*
Xiao Zeng
zengxiao@eswincomputing.com
Mon Jan 6 08:22:33 GMT 2025
gas/ChangeLog:
* config/tc-riscv.c (riscv_target_format): Correct as
--dump-config output for --target=rv64*.
* testsuite/gas/riscv/elf32-bigriscv_dump.d: New test.
* testsuite/gas/riscv/elf32-littleriscv_dump.d: New test.
* testsuite/gas/riscv/elf64-bigriscv_dump.d: New test.
* testsuite/gas/riscv/elf64-littleriscv_dump.d: New test.
* testsuite/gas/riscv/linux32-bigriscv_dump.d: New test.
* testsuite/gas/riscv/linux32-littleriscv_dump.d: New test.
* testsuite/gas/riscv/linux64-bigriscv_dump.d: New test.
* testsuite/gas/riscv/linux64-littleriscv_dump.d: New test.
Signed-off-by: Xiao Zeng <zengxiao@eswincomputing.com>
---
gas/config/tc-riscv.c | 12 ++++++++++++
gas/testsuite/gas/riscv/elf32-bigriscv_dump.d | 6 ++++++
gas/testsuite/gas/riscv/elf32-littleriscv_dump.d | 6 ++++++
gas/testsuite/gas/riscv/elf64-bigriscv_dump.d | 6 ++++++
gas/testsuite/gas/riscv/elf64-littleriscv_dump.d | 6 ++++++
gas/testsuite/gas/riscv/linux32-bigriscv_dump.d | 6 ++++++
gas/testsuite/gas/riscv/linux32-littleriscv_dump.d | 6 ++++++
gas/testsuite/gas/riscv/linux64-bigriscv_dump.d | 6 ++++++
gas/testsuite/gas/riscv/linux64-littleriscv_dump.d | 6 ++++++
9 files changed, 60 insertions(+)
create mode 100644 gas/testsuite/gas/riscv/elf32-bigriscv_dump.d
create mode 100644 gas/testsuite/gas/riscv/elf32-littleriscv_dump.d
create mode 100644 gas/testsuite/gas/riscv/elf64-bigriscv_dump.d
create mode 100644 gas/testsuite/gas/riscv/elf64-littleriscv_dump.d
create mode 100644 gas/testsuite/gas/riscv/linux32-bigriscv_dump.d
create mode 100644 gas/testsuite/gas/riscv/linux32-littleriscv_dump.d
create mode 100644 gas/testsuite/gas/riscv/linux64-bigriscv_dump.d
create mode 100644 gas/testsuite/gas/riscv/linux64-littleriscv_dump.d
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index a915c8b4995..35d19ac4e5d 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -734,6 +734,18 @@ riscv_check_mapping_symbols (bfd *abfd ATTRIBUTE_UNUSED,
const char *
riscv_target_format (void)
{
+ /* When as --dump-config is used, xlen is not initialized, resulting in
+ bfd-target being set to elf32-*riscv even with --target=rv64*. */
+ if (xlen == 0)
+ {
+ if (strcmp (default_arch, "riscv32") == 0)
+ xlen = 32;
+ else if (strcmp (default_arch, "riscv64") == 0)
+ xlen = 64;
+ else
+ as_bad ("unknown default architecture `%s'", default_arch);
+ }
+
if (target_big_endian)
return xlen == 64 ? "elf64-bigriscv" : "elf32-bigriscv";
else
diff --git a/gas/testsuite/gas/riscv/elf32-bigriscv_dump.d b/gas/testsuite/gas/riscv/elf32-bigriscv_dump.d
new file mode 100644
index 00000000000..28cbef31666
--- /dev/null
+++ b/gas/testsuite/gas/riscv/elf32-bigriscv_dump.d
@@ -0,0 +1,6 @@
+#as: -mbig-endian -dump
+
+alias = riscv32-unknown-elf
+canonical = riscv32-unknown-elf
+cpu-type = riscv32
+bfd-target = elf32-bigriscv
diff --git a/gas/testsuite/gas/riscv/elf32-littleriscv_dump.d b/gas/testsuite/gas/riscv/elf32-littleriscv_dump.d
new file mode 100644
index 00000000000..8b05a89c22c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/elf32-littleriscv_dump.d
@@ -0,0 +1,6 @@
+#as: -mlittle-endian -dump
+
+alias = riscv32-unknown-elf
+canonical = riscv32-unknown-elf
+cpu-type = riscv32
+bfd-target = elf32-littleriscv
diff --git a/gas/testsuite/gas/riscv/elf64-bigriscv_dump.d b/gas/testsuite/gas/riscv/elf64-bigriscv_dump.d
new file mode 100644
index 00000000000..9942545af0f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/elf64-bigriscv_dump.d
@@ -0,0 +1,6 @@
+#as: -mbig-endian -dump
+
+alias = riscv64-unknown-elf
+canonical = riscv64-unknown-elf
+cpu-type = riscv64
+bfd-target = elf64-bigriscv
diff --git a/gas/testsuite/gas/riscv/elf64-littleriscv_dump.d b/gas/testsuite/gas/riscv/elf64-littleriscv_dump.d
new file mode 100644
index 00000000000..7bf1b380cb4
--- /dev/null
+++ b/gas/testsuite/gas/riscv/elf64-littleriscv_dump.d
@@ -0,0 +1,6 @@
+#as: -mlittle-endian -dump
+
+alias = riscv64-unknown-elf
+canonical = riscv64-unknown-elf
+cpu-type = riscv64
+bfd-target = elf64-littleriscv
diff --git a/gas/testsuite/gas/riscv/linux32-bigriscv_dump.d b/gas/testsuite/gas/riscv/linux32-bigriscv_dump.d
new file mode 100644
index 00000000000..edf0d2fc4ea
--- /dev/null
+++ b/gas/testsuite/gas/riscv/linux32-bigriscv_dump.d
@@ -0,0 +1,6 @@
+#as: -mbig-endian -dump
+
+alias = riscv32-unknown-linux-gnu
+canonical = riscv32-unknown-linux-gnu
+cpu-type = riscv32
+bfd-target = elf32-bigriscv
diff --git a/gas/testsuite/gas/riscv/linux32-littleriscv_dump.d b/gas/testsuite/gas/riscv/linux32-littleriscv_dump.d
new file mode 100644
index 00000000000..49fcad0f343
--- /dev/null
+++ b/gas/testsuite/gas/riscv/linux32-littleriscv_dump.d
@@ -0,0 +1,6 @@
+#as: -mlittle-endian -dump
+
+alias = riscv32-unknown-linux-gnu
+canonical = riscv32-unknown-linux-gnu
+cpu-type = riscv32
+bfd-target = elf32-littleriscv
diff --git a/gas/testsuite/gas/riscv/linux64-bigriscv_dump.d b/gas/testsuite/gas/riscv/linux64-bigriscv_dump.d
new file mode 100644
index 00000000000..3aedd1d1d97
--- /dev/null
+++ b/gas/testsuite/gas/riscv/linux64-bigriscv_dump.d
@@ -0,0 +1,6 @@
+#as: -mbig-endian -dump
+
+alias = riscv64-unknown-linux-gnu
+canonical = riscv64-unknown-linux-gnu
+cpu-type = riscv64
+bfd-target = elf64-bigriscv
diff --git a/gas/testsuite/gas/riscv/linux64-littleriscv_dump.d b/gas/testsuite/gas/riscv/linux64-littleriscv_dump.d
new file mode 100644
index 00000000000..2b2deac6fcf
--- /dev/null
+++ b/gas/testsuite/gas/riscv/linux64-littleriscv_dump.d
@@ -0,0 +1,6 @@
+#as: -mlittle-endian -dump
+
+alias = riscv64-unknown-linux-gnu
+canonical = riscv64-unknown-linux-gnu
+cpu-type = riscv64
+bfd-target = elf64-littleriscv
--
2.17.1
More information about the Binutils
mailing list