]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
bfd: properly use bfd_get_symbol_leading_char() in peXXigen
authorJeremy Drake <sourceware-bugzilla@jdrake.com>
Mon, 7 Apr 2025 11:18:46 +0000 (13:18 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 7 Apr 2025 11:18:46 +0000 (13:18 +0200)
This function returns the leading char to use, so we cannot just assume
it will always be '_' or '\0'.

Signed-off-by: Jeremy Drake <sourceware-bugzilla@jdrake.com>
bfd/peXXigen.c

index 29012688adfb02ee0e8431abe568f9a13caf422d..561f8585766d56c1482f2cfdf46790028fed4bee 100644 (file)
@@ -4403,6 +4403,7 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo)
   struct coff_link_hash_entry *h1;
   struct bfd_link_info *info = pfinfo->info;
   bool result = true;
+  char name[20];
 
   /* There are a few fields that need to be filled in now while we
      have symbol table access.
@@ -4540,10 +4541,9 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo)
        }
     }
 
-  h1 = coff_link_hash_lookup (coff_hash_table (info),
-                             (bfd_get_symbol_leading_char (abfd) != 0
-                              ? "__tls_used" : "_tls_used"),
-                             false, false, true);
+  name[0] = bfd_get_symbol_leading_char (abfd);
+  strcpy (name + !!name[0], "_tls_used");
+  h1 = coff_link_hash_lookup (coff_hash_table (info), name, false, false, true);
   if (h1 != NULL)
     {
       if ((h1->root.type == bfd_link_hash_defined
@@ -4558,8 +4558,8 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo)
       else
        {
          _bfd_error_handler
-           (_("%pB: unable to fill in DataDictionary[9] because __tls_used is missing"),
-            abfd);
+           (_("%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"),
+            abfd, PE_TLS_TABLE, name);
          result = false;
        }
      /* According to PECOFF sepcifications by Microsoft version 8.2