[binutils-gdb] Fix RELOC_FOR_GLOBAL_SYMBOLS macro so that it can cope with user defined symbols that start with __w

Nick Clifton nickc@sourceware.org
Wed May 8 12:43:34 GMT 2024


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=43bb6c0e087b6fd46c0b347d2b5678acb5c68c85

commit 43bb6c0e087b6fd46c0b347d2b5678acb5c68c85
Author: Nick Clifton <nickc@redhat.com>
Date:   Wed May 8 13:42:22 2024 +0100

    Fix RELOC_FOR_GLOBAL_SYMBOLS macro so that it can cope with user defined symbols that start with __wrap_.
    
      PR 31710

Diff:
---
 bfd/elf-bfd.h | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 92a0287d40e..15a7156b3da 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -3192,8 +3192,14 @@ extern asection _bfd_elf_large_com_section;
 									\
       if (info->wrap_hash != NULL					\
 	  && (input_section->flags & SEC_DEBUGGING) != 0)		\
-	h = ((struct elf_link_hash_entry *)				\
-	     unwrap_hash_lookup (info, input_bfd, &h->root));		\
+	{								\
+	  struct bfd_link_hash_entry * new_h;				\
+	  new_h = unwrap_hash_lookup (info, input_bfd, &h->root);	\
+	  /* PR 31710: This lookup can fail if the input source has a	\
+	     symbol that starts with __wrap_.  */			\
+	  if (new_h != NULL)						\
+	    h = (struct elf_link_hash_entry *) new_h;			\
+	}								\
 									\
       while (h->root.type == bfd_link_hash_indirect			\
 	     || h->root.type == bfd_link_hash_warning)			\


More information about the Binutils-cvs mailing list