diff options
Diffstat (limited to 'gold/object.h')
-rw-r--r-- | gold/object.h | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/gold/object.h b/gold/object.h index cce6c8c..126bff5 100644 --- a/gold/object.h +++ b/gold/object.h @@ -41,6 +41,7 @@ class Cref; class Layout; class Output_data; class Output_section; +class Output_section_data; class Output_file; class Output_symtab_xindex; class Pluginobj; @@ -1200,18 +1201,26 @@ class Relobj : public Object relocs_must_follow_section_writes() const { return this->relocs_must_follow_section_writes_; } - // Return the object merge map. - Object_merge_map* - merge_map() const - { return this->object_merge_map_; } + template<int size> + void + initialize_input_to_output_map(unsigned int shndx, + typename elfcpp::Elf_types<size>::Elf_Addr starting_address, + Unordered_map<section_offset_type, + typename elfcpp::Elf_types<size>::Elf_Addr>* output_address) const; - // Set the object merge map. void - set_merge_map(Object_merge_map* object_merge_map) - { - gold_assert(this->object_merge_map_ == NULL); - this->object_merge_map_ = object_merge_map; - } + add_merge_mapping(Output_section_data *output_data, + unsigned int shndx, section_offset_type offset, + section_size_type length, + section_offset_type output_offset); + + bool + merge_output_offset(unsigned int shndx, section_offset_type offset, + section_offset_type *poutput) const; + + bool + is_merge_section_for(const Output_section_data* output_data, + unsigned int shndx) const; // Record the relocatable reloc info for an input reloc section. void |