diff options
author | 2024-10-05 10:56:20 +0930 | |
---|---|---|
committer | 2024-10-05 10:58:37 +0930 | |
commit | ef166f451fbc2c7b251a251ab23cd35b36c5ee23 (patch) | |
tree | 6b277a3dfb2d1f7f3b19c51f4fee841a94cb29ab /binutils | |
parent | elf.c and elflink.c fixes for commit 68bbe1183379 (diff) | |
download | binutils-gdb-ef166f451fbc2c7b251a251ab23cd35b36c5ee23.tar.gz binutils-gdb-ef166f451fbc2c7b251a251ab23cd35b36c5ee23.tar.bz2 binutils-gdb-ef166f451fbc2c7b251a251ab23cd35b36c5ee23.zip |
objcopy fixes for commit 68bbe1183379
* objcopy.c (is_specified_symbol): Handle NULL name.
(filter_symbols): Drop syms with a NULL name.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/objcopy.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 24e31cc5805..2ed1afbb8cb 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -1251,6 +1251,9 @@ is_specified_symbol_predicate (void **slot, void *data) static bool is_specified_symbol (const char *name, htab_t htab) { + if (name == NULL) + return false; + if (wildcard) { struct is_specified_symbol_predicate_data data; @@ -1576,6 +1579,9 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms, bool rem_leading_char; bool add_leading_char; + if (name == NULL) + continue; + undefined = bfd_is_und_section (bfd_asymbol_section (sym)); if (add_sym_list) @@ -1590,14 +1596,14 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms, { char *new_name; - if (name != NULL - && name[0] == '_' + if (name[0] == '_' && name[1] == '_' && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0) { - fatal (_("redefining symbols does not work on LTO-compiled object files")); + fatal (_("redefining symbols does not work" + " on LTO-compiled object files")); } - + new_name = (char *) lookup_sym_redefinition (name); if (new_name == name && (flags & BSF_SECTION_SYM) != 0) @@ -2956,7 +2962,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch) pset = find_section_list (padd->name, false, SECTION_CONTEXT_SET_FLAGS); if (pset != NULL) - { + { flags = pset->flags | SEC_HAS_CONTENTS; flags = check_new_section_flags (flags, obfd, padd->name); } |