From a6a4679fc0ad12e99e0d8374752ecce9ef097ec2 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 27 Apr 2016 12:53:05 +0930 Subject: Cache result of scan for __start_* and __stop_* sections include/ * bfdlink.h (struct bfd_link_hash_entry): Add "section" field to undef. Formatting. bfd/ * elflink.c (_bfd_elf_is_start_stop): New function. (_bfd_elf_gc_mark_rsec): Use it. * elf-bfd.h (_bfd_elf_is_start_stop): Declare. --- include/bfdlink.h | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'include/bfdlink.h') diff --git a/include/bfdlink.h b/include/bfdlink.h index 728fbe7..56ab038 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -135,21 +135,29 @@ struct bfd_link_hash_entry automatically be non-NULL since the symbol will have been on the undefined symbol list. */ struct bfd_link_hash_entry *next; - bfd *abfd; /* BFD symbol was found in. */ + /* BFD symbol was found in. */ + bfd *abfd; + /* For __start_ and __stop_ symbols, the first + input section matching the name. */ + asection *section; } undef; /* bfd_link_hash_defined, bfd_link_hash_defweak. */ struct { struct bfd_link_hash_entry *next; - asection *section; /* Symbol section. */ - bfd_vma value; /* Symbol value. */ + /* Symbol section. */ + asection *section; + /* Symbol value. */ + bfd_vma value; } def; /* bfd_link_hash_indirect, bfd_link_hash_warning. */ struct { struct bfd_link_hash_entry *next; - struct bfd_link_hash_entry *link; /* Real symbol. */ - const char *warning; /* Warning (bfd_link_hash_warning only). */ + /* Real symbol. */ + struct bfd_link_hash_entry *link; + /* Warning message (bfd_link_hash_warning only). */ + const char *warning; } i; /* bfd_link_hash_common. */ struct @@ -165,7 +173,8 @@ struct bfd_link_hash_entry the union; this structure is a major space user in the linker. */ struct bfd_link_hash_common_entry *p; - bfd_size_type size; /* Common symbol size. */ + /* Common symbol size. */ + bfd_size_type size; } c; } u; }; -- cgit v1.1