objcopy fixes for commit 68bbe1183379

Message ID ZwCnuIyy9MkmKqve@squeak.grove.modra.org
State New
Headers
Series objcopy fixes for commit 68bbe1183379 |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm warning Patch is already merged
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 warning Patch is already merged

Commit Message

Alan Modra Oct. 5, 2024, 2:43 a.m. UTC
  We might see NULL names here for targets other than ELF too.

	* objcopy.c (is_specified_symbol): Handle NULL name.
	(filter_symbols): Drop syms with a NULL name.
  

Patch

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);
 	    }