diff options
author | Ian Lance Taylor <ian@airs.com> | 2008-05-05 19:16:43 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2008-05-05 19:16:43 +0000 |
commit | 8825ac63ef01c08e4668e652d461f94e6761a312 (patch) | |
tree | 535e0e766b8a0a6473bd103a911c07f6c80fff9b /gold/layout.cc | |
parent | b3dc826bc7308d6e556424dd369d57fe8acc8a96 (diff) | |
download | gdb-8825ac63ef01c08e4668e652d461f94e6761a312.zip gdb-8825ac63ef01c08e4668e652d461f94e6761a312.tar.gz 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.cc | 18 |
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 |