]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
x86: Use hehdr_start for __ehdr_start
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 3 Feb 2025 22:16:28 +0000 (06:16 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 6 Feb 2025 04:15:15 +0000 (12:15 +0800)
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>
bfd/elfxx-x86.c

index 832a5495eb1f4f4952814f950795b576ad13fc7c..f4bf58ec088368785e218fbe2ccf99bbbea6e46b 100644 (file)
@@ -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))
            {