[binutils-gdb] x86: Use hehdr_start for __ehdr_start

H.J. Lu hjl@sourceware.org
Thu Feb 6 04:17:29 GMT 2025


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

commit 15014e9b31adca41bc1bd27ad6b2031d8c51f79e
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Tue Feb 4 06:16:28 2025 +0800

    x86: Use hehdr_start for __ehdr_start
    
    Use hehdr_start for __ehdr_start instead of elf_link_hash_lookup.
    
            * elfxx-x86.c (elf_x86_linker_defined): Use hehdr_start if name
            is NULL.
            (_bfd_x86_elf_link_check_relocs): Pass NULL as __ehdr_start to
            elf_x86_linker_defined.
    
    Signed-off-by: H.J. Lu <hjl.tools@gmail.com>

Diff:
---
 bfd/elfxx-x86.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index 832a5495eb1..f4bf58ec088 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -826,8 +826,12 @@ elf_x86_linker_defined (struct bfd_link_info *info, const char *name)
 {
   struct elf_link_hash_entry *h;
 
-  h = elf_link_hash_lookup (elf_hash_table (info), name,
-			    false, false, false);
+  /* NULL indicates __ehdr_start.  */
+  if (name == NULL)
+    h = elf_hash_table (info)->hehdr_start;
+  else
+    h = elf_link_hash_lookup (elf_hash_table (info), name,
+			      false, false, false);
   if (h == NULL)
     return;
 
@@ -894,9 +898,10 @@ _bfd_x86_elf_link_check_relocs (bfd *abfd, struct bfd_link_info *info)
 		}
 	    }
 
-	  /* "__ehdr_start" will be defined by linker as a hidden symbol
-	     later if it is referenced and not defined.  */
-	  elf_x86_linker_defined (info, "__ehdr_start");
+	  /* Pass NULL for __ehdr_start which will be defined by
+	     linker as a hidden symbol later if it is referenced and
+	     not defined.  */
+	  elf_x86_linker_defined (info, NULL);
 
 	  if (bfd_link_executable (info))
 	    {


More information about the Binutils-cvs mailing list