diff options
Diffstat (limited to 'gold/object.cc')
-rw-r--r-- | gold/object.cc | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/gold/object.cc b/gold/object.cc index cbe73ca..f28305b 100644 --- a/gold/object.cc +++ b/gold/object.cc @@ -285,13 +285,8 @@ Relobj::add_merge_mapping(Output_section_data *output_data, unsigned int shndx, section_offset_type offset, section_size_type length, section_offset_type output_offset) { - if (this->object_merge_map_ == NULL) - { - this->object_merge_map_ = new Object_merge_map(); - } - - this->object_merge_map_->add_mapping(output_data, shndx, offset, length, - output_offset); + Object_merge_map* object_merge_map = this->get_or_create_merge_map(); + object_merge_map->add_mapping(output_data, shndx, offset, length, output_offset); } bool @@ -411,6 +406,14 @@ Relobj::finalize_incremental_relocs(Layout* layout, bool clear_counts) layout->incremental_inputs()->set_reloc_count(rindex); } +Object_merge_map* +Relobj::get_or_create_merge_map() +{ + if (!this->object_merge_map_) + this->object_merge_map_ = new Object_merge_map(); + return this->object_merge_map_; +} + // Class Sized_relobj. // Iterate over local symbols, calling a visitor class V for each GOT offset |