[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