[PATCH] RISC-V: Make riscv_is_mapping_symbol stricter
Patrick O'Neill
patrick@rivosinc.com
Fri Dec 1 02:47:39 GMT 2023
riscv_is_mapping_symbol currently accepts any symbol that starts with $x
or $d. This patch makes the check more strict, requiring exactly $x, $d,
or $xrv. It also makes use of this stricter mapping in
riscv_is_valid_mapping_symbol.
ChangeLog:
* bfd/cpu-riscv.c (riscv_elf_is_mapping_symbols): Match only
strings that are exactly $x, $d, or $xrv.
* opcodes/riscv-dis.c (riscv_is_valid_mapping_symbol): Use
riscv_elf_is_mapping_symbols.
Signed-off-by: Patrick O'Neill <patrick@rivosinc.com>
---
Tested using rv64gcv make report-linux and make report-binutils-linux.
---
bfd/cpu-riscv.c | 5 +++--
opcodes/riscv-dis.c | 4 +---
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/bfd/cpu-riscv.c b/bfd/cpu-riscv.c
index a478797da69..79a82a599e2 100644
--- a/bfd/cpu-riscv.c
+++ b/bfd/cpu-riscv.c
@@ -147,6 +147,7 @@ riscv_get_priv_spec_class_from_numbers (unsigned int major,
bool
riscv_elf_is_mapping_symbols (const char *name)
{
- return (!strncmp (name, "$d", 2)
- || !strncmp (name, "$x", 2));
+ return (!strcmp (name, "$x")
+ || !strcmp (name, "$d")
+ || !strncmp (name, "$xrv", 4));
}
diff --git a/opcodes/riscv-dis.c b/opcodes/riscv-dis.c
index f7f4c0750ed..829070d809d 100644
--- a/opcodes/riscv-dis.c
+++ b/opcodes/riscv-dis.c
@@ -930,9 +930,7 @@ riscv_is_valid_mapping_symbol (int n,
return false;
name = bfd_asymbol_name(info->symtab[n]);
- return (strcmp (name, "$x") == 0
- || strcmp (name, "$d") == 0
- || strncmp (name, "$xrv", 4) == 0);
+ return riscv_elf_is_mapping_symbols (name);
}
/* Check the sorted symbol table (sorted by the symbol value), find the
--
2.34.1
More information about the Binutils
mailing list