diff options
author | Ian Lance Taylor <ian@airs.com> | 2010-08-03 14:07:13 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2010-08-03 14:07:13 +0000 |
commit | 22f0da72ea2fc99e409548ce883b751aa822c2c3 (patch) | |
tree | 29f8b535bf96223cf9150606e977ff8ef924a8c6 /gold/i386.cc | |
parent | e4d9f07834de9797e18e4810d985764a23c00dcc (diff) | |
download | binutils-gdb-22f0da72ea2fc99e409548ce883b751aa822c2c3.tar.gz |
2010-08-03 Ian Lance Taylor <iant@google.com>
PR 11805
* layout.h (enum Output_section_order): Define.
(class Layout): Update declarations.
* layout.cc (Layout::get_output_section): Add order parameter.
Remove is_interp, is_dynamic_linker_section, is_last_relro, and
is_first_non_relro parameters. Change all callers.
(Layout::choose_output_section): Likewise.
(Layout::add_output_section_data): Likewise.
(Layout::make_output_section): Likewise. Set order.
(Layout::default_section_order): New function.
(Layout::layout_eh_frame): Call add_output_section_to_nonload.
* output.cc (Output_section::Output_section): Initialize order_.
Don't initialize deleted fields.
(Output_segment::Output_segment): Don't initialize deleted
fields.
(Output_segment::add_output_section_to_load): New function
replacing add_output_section. Change all callers to call this or
add_output_section_to_nonload.
(Output_segment::add_output_section_to_nonload): New function.
(Output_segment::remove_output_section): Rewrite.
(Output_segment::add_initial_output_data): Likewise.
(Output_segment::has_any_data_sections): Likewise.
(Output_segment::is_first_section_relro): Likewise.
(Output_segment::maximum_alignment): Likewise.
(Output_segment::has_dynamic_reloc): New function replacing
dynamic_reloc_count. Change all callers.
(Output_segment::has_dynamic_reloc_list): New function replacing
dynamic_reloc_count_list. Change all callers.
(Output_segment::set_section_addresses): Rewrite.
(Output_segment::set_offset): Rewrite.
(Output_segment::find_first_and_last_list): Remove.
(Output_segment::set_tls_offsets): Rewrite.
(Output_segment::first_section_load_address): Likewise.
(Output_segment::output_section_count): Likewise.
(Output_segment::section_with_lowest_load_address): Likewise.
(Output_segment::write_section_headers): Likewise.
(Output_segment::print_sections_to_map): Likewise.
* output.h (class Output_data): Remove dynamic_reloc_count_
field. Add has_dynamic_reloc_ field. Make bools into bitfields.
(Output_data::add_dynamic_reloc): Rewrite.
(Output_data::has_dynamic_reloc): New function.
(Output_data::dynamic_reloc_count): Remove.
(class Output_section): Add order_ field. Remvoe is_relro_local_,
is_last_relro_, is_first_non_relro_, is_interp_,
is_dynamic_linker_section_ fields. Add order and set_order
functions. Remove is_relro_local, set_is_relro_local,
is_last_relro, set_is_last_relro, is_first_non_relro,
set_is_first_non_relro functions, is_interp, set_is_interp,
is_dynamic_linker_section, and set_is_dynamic_linker_section
functions.
(class Output_segment): Change Output_data_list from std::list to
std:;vector. Add output_lists_ field. Remove output_data_ and
output_bss_ fields. Update declarations.
Diffstat (limited to 'gold/i386.cc')
-rw-r--r-- | gold/i386.cc | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/gold/i386.cc b/gold/i386.cc index ce07588f088..b4040c198cd 100644 --- a/gold/i386.cc +++ b/gold/i386.cc @@ -508,14 +508,14 @@ Target_i386::got_section(Symbol_table* symtab, Layout* layout) layout->add_output_section_data(".got", elfcpp::SHT_PROGBITS, (elfcpp::SHF_ALLOC | elfcpp::SHF_WRITE), - this->got_, false, true, true, false); + this->got_, ORDER_RELRO_LAST, true); this->got_plt_ = new Output_data_space(4, "** GOT PLT"); layout->add_output_section_data(".got.plt", elfcpp::SHT_PROGBITS, (elfcpp::SHF_ALLOC | elfcpp::SHF_WRITE), - this->got_plt_, false, false, false, - true); + this->got_plt_, ORDER_NON_RELRO_FIRST, + false); // The first three entries are reserved. this->got_plt_->set_current_data_size(3 * 4); @@ -539,8 +539,8 @@ Target_i386::got_section(Symbol_table* symtab, Layout* layout) layout->add_output_section_data(".got.plt", elfcpp::SHT_PROGBITS, (elfcpp::SHF_ALLOC | elfcpp::SHF_WRITE), - this->got_tlsdesc_, false, false, false, - true); + this->got_tlsdesc_, + ORDER_NON_RELRO_FIRST, false); } return this->got_; @@ -556,8 +556,8 @@ Target_i386::rel_dyn_section(Layout* layout) gold_assert(layout != NULL); this->rel_dyn_ = new Reloc_section(parameters->options().combreloc()); layout->add_output_section_data(".rel.dyn", elfcpp::SHT_REL, - elfcpp::SHF_ALLOC, this->rel_dyn_, true, - false, false, false); + elfcpp::SHF_ALLOC, this->rel_dyn_, + ORDER_DYNAMIC_RELOCS, false); } return this->rel_dyn_; } @@ -639,8 +639,8 @@ Output_data_plt_i386::Output_data_plt_i386(Layout* layout, { this->rel_ = new Reloc_section(false); layout->add_output_section_data(".rel.plt", elfcpp::SHT_REL, - elfcpp::SHF_ALLOC, this->rel_, true, - false, false, false); + elfcpp::SHF_ALLOC, this->rel_, + ORDER_DYNAMIC_PLT_RELOCS, false); } void @@ -692,7 +692,7 @@ Output_data_plt_i386::rel_tls_desc(Layout* layout) this->tls_desc_rel_ = new Reloc_section(false); layout->add_output_section_data(".rel.plt", elfcpp::SHT_REL, elfcpp::SHF_ALLOC, this->tls_desc_rel_, - true, false, false, false); + ORDER_DYNAMIC_PLT_RELOCS, false); gold_assert(this->tls_desc_rel_->output_section() == this->rel_->output_section()); } @@ -843,7 +843,7 @@ Target_i386::make_plt_entry(Symbol_table* symtab, Layout* layout, Symbol* gsym) layout->add_output_section_data(".plt", elfcpp::SHT_PROGBITS, (elfcpp::SHF_ALLOC | elfcpp::SHF_EXECINSTR), - this->plt_, false, false, false, false); + this->plt_, ORDER_PLT, false); } this->plt_->add_entry(gsym); |