gold, ld: Implement -z start-stop-visibility=... option.
gold/ Implement -z start-stop-visibility=... option. * options.h (class General_options): Handle -z start-stop-visibility=. (General_options::start_stop_visibility_enum): New public method. (General_options::set_start_stop_visibility_enum): New private method. (General_options::start_stop_visibility_enum_): New private member. * options.cc (General_options::General_options): Add initializer. (General_options::finalize): Set this->start_stop_visibility_enum_ from string value. * layout.cc (Layout::define_section_symbols): Use option setting. bfd/ * elflink.c (bfd_elf_define_start_stop): Use start_stop_visibility field of bfd_link_info. include/ * bfdlink.h (struct bfd_link_info): New field start_stop_visibility. ld/ * NEWS: Mention -z start-stop-visibility=... option for ELF. * ld.texi (Options): Document -z start-stop-visibility=... option. * ldmain.c (main): Initialize link_info.start_stop_visibility. * emultempl/elf.em (gld${EMULATION_NAME}_handle_option): Parse -z start-stop-visibility=... option.
This commit is contained in:
parent
6692031743
commit
cae64165f4
13 changed files with 103 additions and 7 deletions
|
@ -2474,6 +2474,7 @@ Layout::create_initial_dynamic_sections(Symbol_table* symtab)
|
|||
void
|
||||
Layout::define_section_symbols(Symbol_table* symtab)
|
||||
{
|
||||
const elfcpp::STV visibility = parameters->options().start_stop_visibility_enum();
|
||||
for (Section_list::const_iterator p = this->section_list_.begin();
|
||||
p != this->section_list_.end();
|
||||
++p)
|
||||
|
@ -2495,7 +2496,7 @@ Layout::define_section_symbols(Symbol_table* symtab)
|
|||
0, // symsize
|
||||
elfcpp::STT_NOTYPE,
|
||||
elfcpp::STB_GLOBAL,
|
||||
elfcpp::STV_PROTECTED,
|
||||
visibility,
|
||||
0, // nonvis
|
||||
false, // offset_is_from_end
|
||||
true); // only_if_ref
|
||||
|
@ -2508,7 +2509,7 @@ Layout::define_section_symbols(Symbol_table* symtab)
|
|||
0, // symsize
|
||||
elfcpp::STT_NOTYPE,
|
||||
elfcpp::STB_GLOBAL,
|
||||
elfcpp::STV_PROTECTED,
|
||||
visibility,
|
||||
0, // nonvis
|
||||
true, // offset_is_from_end
|
||||
true); // only_if_ref
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue