* 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

@@ -360,11 +360,13 @@ class Layout
layout_gnu_stack(bool seen_gnu_stack, uint64_t gnu_stack_flags);
// Add an Output_section_data to the layout. This is used for
// special sections like the GOT section.
// special sections like the GOT section. IS_DYNAMIC_LINKER_SECTION
// is true for sections which are used by the dynamic linker, such
// as dynamic reloc sections.
Output_section*
add_output_section_data(const char* name, elfcpp::Elf_Word type,
elfcpp::Elf_Xword flags,
Output_section_data*);
Output_section_data*, bool is_dynamic_linker_section);
// Create dynamic sections if necessary.
void
@@ -745,18 +747,21 @@ class Layout
// Return the output section for NAME, TYPE and FLAGS.
Output_section*
get_output_section(const char* name, Stringpool::Key name_key,
elfcpp::Elf_Word type, elfcpp::Elf_Xword flags);
elfcpp::Elf_Word type, elfcpp::Elf_Xword flags,
bool is_interp, bool is_dynamic_linker_section);
// Choose the output section for NAME in RELOBJ.
Output_section*
choose_output_section(const Relobj* relobj, const char* name,
elfcpp::Elf_Word type, elfcpp::Elf_Xword flags,
bool is_input_section);
bool is_input_section, bool is_interp,
bool is_dynamic_linker_section);
// Create a new Output_section.
Output_section*
make_output_section(const char* name, elfcpp::Elf_Word type,
elfcpp::Elf_Xword flags);
elfcpp::Elf_Xword flags, bool is_interp,
bool is_dynamic_linker_section);
// Attach a section to a segment.
void