RISC-V: PR27584, surpress local and empty name symbols for nm.
authorNelson Chu <nelson.chu@sifive.com>
Wed, 14 Apr 2021 02:00:05 +0000 (10:00 +0800)
committerNelson Chu <nelson.chu@sifive.com>
Thu, 15 Apr 2021 02:32:36 +0000 (10:32 +0800)
The local ".L0" symbol are usually generated to mark where the
auipc instruction is, and clang also uses ".LBB" to do the same
thing.  Besides, clang also uses the empty name symbols for label
differences.  Arm surpress their mapping symbols by regarding them
as special symbols, and MIPS surpress all local symbols.  Therefore,
RISC-V probably need to surpress the local and empty name symbols
for nm and related tools.  User can use "--special-syms" to show
these surpressed symbols.

bfd/
    PR27584
    * elfnn-riscv.c (riscv_elf_is_target_special_symbol): Added to
    omit local and empty symbols since they usually generated to
    mark the auipc instructions.

bfd/ChangeLog
bfd/elfnn-riscv.c

index 4884aaba38451b0571d5dda8ad8bb23c7b96a92e..702d4026ee88af567d2cd8f2d446f7abb08991a1 100644 (file)
@@ -1,3 +1,10 @@
+2021-04-15  Nelson Chu  <nelson.chu@sifive.com>
+
+       PR27584
+       * elfnn-riscv.c (riscv_elf_is_target_special_symbol): Added to
+       omit local and empty symbols since they usually generated to
+       mark the auipc instructions.
+
 2021-04-15  Lifang Xia<lifang_xia@c-sky.com>
 
        * elf32-csky.c (csky_elf_howto_table)
index 5e292785e9fc7a6bf11a23f301a79a1c095531b3..a944b3302274700791a303187ab8083745741a3f 100644 (file)
@@ -5094,6 +5094,16 @@ riscv_elf_obj_attrs_arg_type (int tag)
   return (tag & 1) != 0 ? ATTR_TYPE_FLAG_STR_VAL : ATTR_TYPE_FLAG_INT_VAL;
 }
 
+/* PR27584, Omit local and empty symbols since they usually generated
+   for pcrel relocations.  */
+
+static bool
+riscv_elf_is_target_special_symbol (bfd *abfd, asymbol *sym)
+{
+  return (!strcmp (sym->name, "")
+         || _bfd_elf_is_local_label_name (abfd, sym->name));
+}
+
 #define TARGET_LITTLE_SYM                      riscv_elfNN_vec
 #define TARGET_LITTLE_NAME                     "elfNN-littleriscv"
 #define TARGET_BIG_SYM                         riscv_elfNN_be_vec
@@ -5106,6 +5116,7 @@ riscv_elf_obj_attrs_arg_type (int tag)
 #define bfd_elfNN_bfd_reloc_type_lookup                riscv_reloc_type_lookup
 #define bfd_elfNN_bfd_merge_private_bfd_data \
   _bfd_riscv_elf_merge_private_bfd_data
+#define bfd_elfNN_bfd_is_target_special_symbol riscv_elf_is_target_special_symbol
 
 #define elf_backend_copy_indirect_symbol       riscv_elf_copy_indirect_symbol
 #define elf_backend_create_dynamic_sections    riscv_elf_create_dynamic_sections