aboutsummaryrefslogtreecommitdiff
path: root/gold/object.cc
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2011-05-26 18:44:27 +0000
committerCary Coutant <ccoutant@google.com>2011-05-26 18:44:27 +0000
commit89d8a36b24e188ccbb032c55e302425b94516e74 (patch)
treed2f12e016f2502c4a2a088ab09891d197565de9b /gold/object.cc
parentd8b344530cba74a754ec101ccdd8869b3a48ec90 (diff)
downloadfsf-binutils-gdb-89d8a36b24e188ccbb032c55e302425b94516e74.zip
fsf-binutils-gdb-89d8a36b24e188ccbb032c55e302425b94516e74.tar.gz
fsf-binutils-gdb-89d8a36b24e188ccbb032c55e302425b94516e74.tar.bz2
* incremental-dump.cc (dump_incremental_inputs): Print COMDAT groups.
* incremental.cc (Incremental_inputs::report_input_section): Fix comment, indentation. (Incremental_inputs::report_comdat_group): New function. (Output_section_incremental_inputs::set_final_data_size): Adjust size of data for incremental input file entry. (Output_section_incremental_inputs::write_info_blocks): Write COMDAT group count, COMDAT group signatures. (Sized_incr_relobj::do_layout): Record kept COMDAT group info from an unchanged input file. * incremental.h (Incremental_object_entry::Incremental_object_entry): Initialize new data member. (Incremental_object_entry::add_comdat_group): New function. (Incremental_object_entry::get_comdat_group_count): New function. (Incremental_object_entry::get_comdat_signature_key): New function. (Incremental_object_entry::groups_): New data member. (Incremental_inputs::report_comdat_group): New function. (Incremental_input_entry_reader::get_symbol_offset): Adjust size of data for incremental input file entry. (Incremental_input_entry_reader::get_comdat_group_count): New function. (Incremental_input_entry_reader::get_input_section): Adjust size of data for incremental input file entry. (Incremental_input_entry_reader::get_global_symbol_reader): Likewise. (Incremental_input_entry_reader::get_comdat_group_signature): New function. * object.cc (Sized_relobj::include_section_group): Report kept COMDAT groups for incremental links.
Diffstat (limited to 'gold/object.cc')
-rw-r--r--gold/object.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/gold/object.cc b/gold/object.cc
index 1160f0c..b14c85d 100644
--- a/gold/object.cc
+++ b/gold/object.cc
@@ -825,6 +825,13 @@ Sized_relobj_file<size, big_endian>::include_section_group(
is_comdat = true;
}
+ if (is_comdat && include_group)
+ {
+ Incremental_inputs* incremental_inputs = layout->incremental_inputs();
+ if (incremental_inputs != NULL)
+ incremental_inputs->report_comdat_group(this, signature.c_str());
+ }
+
size_t count = shdr.get_sh_size() / sizeof(elfcpp::Elf_Word);
std::vector<unsigned int> shndxes;