aboutsummaryrefslogtreecommitdiff
path: root/gold/layout.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>2008-05-05 19:16:43 +0000
committerIan Lance Taylor <ian@airs.com>2008-05-05 19:16:43 +0000
commit8825ac63ef01c08e4668e652d461f94e6761a312 (patch)
tree535e0e766b8a0a6473bd103a911c07f6c80fff9b /gold/layout.cc
parentb3dc826bc7308d6e556424dd369d57fe8acc8a96 (diff)
downloadfsf-binutils-gdb-8825ac63ef01c08e4668e652d461f94e6761a312.zip
fsf-binutils-gdb-8825ac63ef01c08e4668e652d461f94e6761a312.tar.gz
fsf-binutils-gdb-8825ac63ef01c08e4668e652d461f94e6761a312.tar.bz2
* object.cc (Sized_relobj::include_section_group): Adjust section
indexes read from group data. Build vector to pass to layout_group. * layout.cc (Layout::layout_group): Add flags and shndxes parameters. Remove contents parameter. Change caller. Update explicit instantiations. * layout.h (class Layout): Update layout_group declaration. * output.cc (Output_data_group::Output_data_group): Add flags and input_shndxes parameters. Remove contents parameter. Change caller. (Output_data_group::do_write): Change input_sections_ to input_shndxes_. * output.h (class Output_data_group): Update constructor declaration. Rename input_sections_ to input_shndxes_. * testsuite/many_sections_test.cc: Add template.
Diffstat (limited to 'gold/layout.cc')
-rw-r--r--gold/layout.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/gold/layout.cc b/gold/layout.cc
index 8d0d5f7..85648d3 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
@@ -503,7 +503,8 @@ Layout::layout_group(Symbol_table* symtab,
const char* group_section_name,
const char* signature,
const elfcpp::Shdr<size, big_endian>& shdr,
- const elfcpp::Elf_Word* contents)
+ elfcpp::Elf_Word flags,
+ std::vector<unsigned int>* shndxes)
{
gold_assert(parameters->options().relocatable());
gold_assert(shdr.get_sh_type() == elfcpp::SHT_GROUP);
@@ -531,7 +532,8 @@ Layout::layout_group(Symbol_table* symtab,
section_size_type entry_count =
convert_to_section_size_type(shdr.get_sh_size() / 4);
Output_section_data* posd =
- new Output_data_group<size, big_endian>(object, entry_count, contents);
+ new Output_data_group<size, big_endian>(object, entry_count, flags,
+ shndxes);
os->add_output_section_data(posd);
}
@@ -3258,7 +3260,8 @@ Layout::layout_group<32, false>(Symbol_table* symtab,
const char* group_section_name,
const char* signature,
const elfcpp::Shdr<32, false>& shdr,
- const elfcpp::Elf_Word* contents);
+ elfcpp::Elf_Word flags,
+ std::vector<unsigned int>* shndxes);
#endif
#ifdef HAVE_TARGET_32_BIG
@@ -3270,7 +3273,8 @@ Layout::layout_group<32, true>(Symbol_table* symtab,
const char* group_section_name,
const char* signature,
const elfcpp::Shdr<32, true>& shdr,
- const elfcpp::Elf_Word* contents);
+ elfcpp::Elf_Word flags,
+ std::vector<unsigned int>* shndxes);
#endif
#ifdef HAVE_TARGET_64_LITTLE
@@ -3282,7 +3286,8 @@ Layout::layout_group<64, false>(Symbol_table* symtab,
const char* group_section_name,
const char* signature,
const elfcpp::Shdr<64, false>& shdr,
- const elfcpp::Elf_Word* contents);
+ elfcpp::Elf_Word flags,
+ std::vector<unsigned int>* shndxes);
#endif
#ifdef HAVE_TARGET_64_BIG
@@ -3294,7 +3299,8 @@ Layout::layout_group<64, true>(Symbol_table* symtab,
const char* group_section_name,
const char* signature,
const elfcpp::Shdr<64, true>& shdr,
- const elfcpp::Elf_Word* contents);
+ elfcpp::Elf_Word flags,
+ std::vector<unsigned int>* shndxes);
#endif
#ifdef HAVE_TARGET_32_LITTLE