From 73a684473dcce81a3bd79a8be994e9b8dba8199e Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 17 Nov 1995 15:05:44 +0000 Subject: [PATCH] * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Only create DT_INIT and DT_FINI entries if the _init or _fini symbol is defined or mentioned in a regular file. PR 8462. --- bfd/ChangeLog | 6 ++++++ bfd/elflink.h | 15 +++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ffadb6d07de..b71d6a52786 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +Fri Nov 17 10:02:58 1995 Ian Lance Taylor + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Only create + DT_INIT and DT_FINI entries if the _init or _fini symbol is + defined or mentioned in a regular file. + Thu Nov 16 15:16:42 1995 Kim Knuttila * coff-ppc.c (ppc_record_data_in_toc_entry): new function diff --git a/bfd/elflink.h b/bfd/elflink.h index 725aa930b13..37dd4439d98 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -1345,6 +1345,7 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath, if (elf_hash_table (info)->dynamic_sections_created) { struct elf_info_failed eif; + struct elf_link_hash_entry *h; bfd_size_type strsize; *sinterpptr = bfd_get_section_by_name (dynobj, ".interp"); @@ -1391,14 +1392,20 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath, /* Add some entries to the .dynamic section. We fill in some of the values later, in elf_bfd_final_link, but we must add the entries now so that we know the final size of the .dynamic section. */ - if (elf_link_hash_lookup (elf_hash_table (info), "_init", false, - false, false) != NULL) + h = elf_link_hash_lookup (elf_hash_table (info), "_init", false, + false, false); + if (h != NULL + && (h->elf_link_hash_flags & (ELF_LINK_HASH_REF_REGULAR + | ELF_LINK_HASH_DEF_REGULAR)) != 0) { if (! elf_add_dynamic_entry (info, DT_INIT, 0)) return false; } - if (elf_link_hash_lookup (elf_hash_table (info), "_fini", false, - false, false) != NULL) + h = elf_link_hash_lookup (elf_hash_table (info), "_fini", false, + false, false); + if (h != NULL + && (h->elf_link_hash_flags & (ELF_LINK_HASH_REF_REGULAR + | ELF_LINK_HASH_DEF_REGULAR)) != 0) { if (! elf_add_dynamic_entry (info, DT_FINI, 0)) return false; -- 2.30.2