• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

GNU Binutils with patches for OS216


Commit MetaInfo

Revisão16526e42c26b00e2424a0d0b5a73c04f010f7a9e (tree)
Hora2016-04-28 22:38:41
AutorH.J. Lu <hjl.tools@gmai...>
CommiterH.J. Lu

Mensagem de Log

Add _bfd_elf_record_start_stop

Mudança Sumário

Diff

--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -2339,6 +2339,9 @@ extern bfd_boolean bfd_elf_gc_common_final_link
23392339 extern asection *_bfd_elf_is_start_stop
23402340 (const struct bfd_link_info *, struct elf_link_hash_entry *);
23412341
2342+extern void _bfd_elf_record_start_stop
2343+ (const struct bfd_link_info *);
2344+
23422345 extern bfd_boolean bfd_elf_reloc_symbol_deleted_p
23432346 (bfd_vma, void *);
23442347
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -13791,3 +13791,24 @@ elf_append_rel (bfd *abfd, asection *s, Elf_Internal_Rela *rel)
1379113791 BFD_ASSERT (loc + bed->s->sizeof_rel <= s->contents + s->size);
1379213792 bed->s->swap_reloc_out (abfd, rel, loc);
1379313793 }
13794+
13795+/* For undefined __start_<name> and __stop_<name> symbols, set
13796+ def_regular to 1. This is called via elf_link_hash_traverse. */
13797+
13798+static bfd_boolean
13799+elf_link_record_start_stop (struct elf_link_hash_entry *h, void *data)
13800+{
13801+ const struct bfd_link_info * info
13802+ = (const struct bfd_link_info *) data;
13803+ if (_bfd_elf_is_start_stop (info, h) != NULL)
13804+ h->def_regular = 1;
13805+ return TRUE;
13806+}
13807+
13808+void
13809+_bfd_elf_record_start_stop (const struct bfd_link_info * info)
13810+{
13811+ elf_link_hash_traverse (elf_hash_table (info),
13812+ elf_link_record_start_stop,
13813+ (void *) info);
13814+}
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -1445,6 +1445,8 @@ gld${EMULATION_NAME}_record_link_assignments (lang_phase_type phase)
14451445 let the ELF backend know about them in case the variables are
14461446 referred to by dynamic objects. */
14471447 lang_for_each_statement (gld${EMULATION_NAME}_find_statement_assignment);
1448+
1449+ _bfd_elf_record_start_stop (&link_info);
14481450 }
14491451 }
14501452