forked from Imagelibrary/binutils-gdb
* layout.cc (Layout::get_output_section): Add is_interp and
is_dynamic_linker_section parameters. Change all callers. (Layout::choose_output_section): Likewise. (Layout::make_output_section): Likewise. (Layout::add_output_section_data): Add is_dynamic_linker_section parameter. Change all callers. * layout.h (class Layout): Update declarations. * output.h (class Output_section): Add is_interp, set_is_interp, is_dynamic_linker_section, set_is_dynamic_linker_section methods. Add is_interp_, is_dynamic_linker_section_ fields. Change generate_code_fills_at_write_ to a bitfield. * output.cc (Output_section::Output_sections): Initialize new fields. (Output_segment::add_output_section): Add do_sort parameter. Change all callers.
This commit is contained in:
13
gold/arm.cc
13
gold/arm.cc
@@ -2166,7 +2166,7 @@ Target_arm<big_endian>::got_section(Symbol_table* symtab, Layout* layout)
|
||||
os = layout->add_output_section_data(".got", elfcpp::SHT_PROGBITS,
|
||||
(elfcpp::SHF_ALLOC
|
||||
| elfcpp::SHF_WRITE),
|
||||
this->got_);
|
||||
this->got_, false);
|
||||
os->set_is_relro();
|
||||
|
||||
// The old GNU linker creates a .got.plt section. We just
|
||||
@@ -2177,7 +2177,7 @@ Target_arm<big_endian>::got_section(Symbol_table* symtab, Layout* layout)
|
||||
os = layout->add_output_section_data(".got", elfcpp::SHT_PROGBITS,
|
||||
(elfcpp::SHF_ALLOC
|
||||
| elfcpp::SHF_WRITE),
|
||||
this->got_plt_);
|
||||
this->got_plt_, false);
|
||||
os->set_is_relro();
|
||||
|
||||
// The first three entries are reserved.
|
||||
@@ -2205,7 +2205,7 @@ Target_arm<big_endian>::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_);
|
||||
elfcpp::SHF_ALLOC, this->rel_dyn_, true);
|
||||
}
|
||||
return this->rel_dyn_;
|
||||
}
|
||||
@@ -3588,7 +3588,7 @@ Output_data_plt_arm<big_endian>::Output_data_plt_arm(Layout* layout,
|
||||
{
|
||||
this->rel_ = new Reloc_section(false);
|
||||
layout->add_output_section_data(".rel.plt", elfcpp::SHT_REL,
|
||||
elfcpp::SHF_ALLOC, this->rel_);
|
||||
elfcpp::SHF_ALLOC, this->rel_, true);
|
||||
}
|
||||
|
||||
template<bool big_endian>
|
||||
@@ -3750,7 +3750,7 @@ Target_arm<big_endian>::make_plt_entry(Symbol_table* symtab, Layout* layout,
|
||||
layout->add_output_section_data(".plt", elfcpp::SHT_PROGBITS,
|
||||
(elfcpp::SHF_ALLOC
|
||||
| elfcpp::SHF_EXECINSTR),
|
||||
this->plt_);
|
||||
this->plt_, false);
|
||||
}
|
||||
this->plt_->add_entry(gsym);
|
||||
}
|
||||
@@ -4300,7 +4300,8 @@ Target_arm<big_endian>::do_finalize_sections(
|
||||
== NULL);
|
||||
Output_segment* exidx_segment =
|
||||
layout->make_output_segment(elfcpp::PT_ARM_EXIDX, elfcpp::PF_R);
|
||||
exidx_segment->add_output_section(exidx_section, elfcpp::PF_R);
|
||||
exidx_segment->add_output_section(exidx_section, elfcpp::PF_R,
|
||||
false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user