From: Jeremy Drake Date: Mon, 7 Apr 2025 11:18:46 +0000 (+0200) Subject: bfd: properly use bfd_get_symbol_leading_char() in peXXigen X-Git-Tag: binutils-2_45~956 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5de418ba70260e34d9246224805b958767d99482;p=thirdparty%2Fbinutils-gdb.git bfd: properly use bfd_get_symbol_leading_char() in peXXigen This function returns the leading char to use, so we cannot just assume it will always be '_' or '\0'. Signed-off-by: Jeremy Drake --- diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c index 29012688adf..561f8585766 100644 --- a/bfd/peXXigen.c +++ b/bfd/peXXigen.c @@ -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