aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2025-02-04 06:16:28 +0800
committerH.J. Lu <hjl.tools@gmail.com>2025-02-06 12:15:15 +0800
commit15014e9b31adca41bc1bd27ad6b2031d8c51f79e (patch)
tree98ba009c2951ac323e3c77cce045bce1a98336df
parent023dd0649ebcb7f82ba13aead02ed9200b6b5372 (diff)
downloadbinutils-15014e9b31adca41bc1bd27ad6b2031d8c51f79e.zip
binutils-15014e9b31adca41bc1bd27ad6b2031d8c51f79e.tar.gz
binutils-15014e9b31adca41bc1bd27ad6b2031d8c51f79e.tar.bz2
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>
-rw-r--r--bfd/elfxx-x86.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index 832a549..f4bf58e 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))
{