* 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:
Ian Lance Taylor
2009-11-04 15:56:03 +00:00
parent c7cbc7a8c2
commit f5c870d25d
13 changed files with 248 additions and 102 deletions

View File

@ -3094,7 +3094,7 @@ Script_sections::create_segments(Layout* layout)
is_current_seg_readonly = true;
}
current_seg->add_output_section(*p, seg_flags);
current_seg->add_output_section(*p, seg_flags, false);
if (((*p)->flags() & elfcpp::SHF_WRITE) != 0)
is_current_seg_readonly = false;
@ -3173,7 +3173,7 @@ Script_sections::create_note_and_tls_segments(
Layout::section_flags_to_segment((*p)->flags());
Output_segment* oseg = layout->make_output_segment(elfcpp::PT_NOTE,
seg_flags);
oseg->add_output_section(*p, seg_flags);
oseg->add_output_section(*p, seg_flags, false);
// Incorporate any subsequent SHT_NOTE sections, in the
// hopes that the script is sensible.
@ -3182,7 +3182,7 @@ Script_sections::create_note_and_tls_segments(
&& (*pnext)->type() == elfcpp::SHT_NOTE)
{
seg_flags = Layout::section_flags_to_segment((*pnext)->flags());
oseg->add_output_section(*pnext, seg_flags);
oseg->add_output_section(*pnext, seg_flags, false);
p = pnext;
++pnext;
}
@ -3197,14 +3197,14 @@ Script_sections::create_note_and_tls_segments(
Layout::section_flags_to_segment((*p)->flags());
Output_segment* oseg = layout->make_output_segment(elfcpp::PT_TLS,
seg_flags);
oseg->add_output_section(*p, seg_flags);
oseg->add_output_section(*p, seg_flags, false);
Layout::Section_list::const_iterator pnext = p + 1;
while (pnext != sections->end()
&& ((*pnext)->flags() & elfcpp::SHF_TLS) != 0)
{
seg_flags = Layout::section_flags_to_segment((*pnext)->flags());
oseg->add_output_section(*pnext, seg_flags);
oseg->add_output_section(*pnext, seg_flags, false);
p = pnext;
++pnext;
}
@ -3358,7 +3358,7 @@ Script_sections::attach_sections_using_phdrs_clause(Layout* layout)
elfcpp::Elf_Word seg_flags =
Layout::section_flags_to_segment(os->flags());
r->second->add_output_section(os, seg_flags);
r->second->add_output_section(os, seg_flags, false);
if (r->second->type() == elfcpp::PT_LOAD)
{