diff options
author | Alan Modra <amodra@gmail.com> | 2021-08-28 14:45:53 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2021-09-18 08:20:11 +0930 |
commit | 54721a930e80a635d3cb47c0ad3899ed9680bd78 (patch) | |
tree | 88b5cd53e547a5a37273303eabeac5bbcc868499 /gold/output.cc | |
parent | 973b2b402ebf660e2bbbac60e85469164d76ecfc (diff) | |
download | gdb-54721a930e80a635d3cb47c0ad3899ed9680bd78.zip gdb-54721a930e80a635d3cb47c0ad3899ed9680bd78.tar.gz gdb-54721a930e80a635d3cb47c0ad3899ed9680bd78.tar.bz2 |
[GOLD] Output_data_got tidy
Some Output_data_got methods already have support for addends, but
were implemented as separate methods. This removes unnecessary code
duplication.
Relobj::local_has_got_offset and others there get a similar treatment.
Comments are removed since it should be obvious without a comment, and
the existing comments are not precisely what the code does. For
example, a local_has_got_offset call without an addend does not return
whether the local symbol has *a* GOT offset of type GOT_TYPE, it
returns whether there is a GOT entry of type GOT_TYPE for the symbol
with addend of zero.
PR 28192
* output.h (Output_data_got::add_local): Make addend optional.
(Output_data_got::add_local_with_rel): Likewise.
(Output_data_got::add_local_pair_with_rel): Likewise.
* output.cc (Output_data_got::add_local): Delete overload
without addend.
(Output_data_got::add_local_with_rel): Likewise.
(Output_data_got::add_local_pair_with_rel): Likewise.
* object.h (Relobj::local_has_got_offset): Make addend optional.
Delete overload without addend later. Update comment.
(Relobj::local_got_offset): Likewise.
(Relobj::set_local_got_offset): Likewise.
Diffstat (limited to 'gold/output.cc')
-rw-r--r-- | gold/output.cc | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/gold/output.cc b/gold/output.cc index afdba06..75f54f0 100644 --- a/gold/output.cc +++ b/gold/output.cc @@ -1531,26 +1531,6 @@ Output_data_got<got_size, big_endian>::add_global_pair_with_rel( got_offset + got_size / 8, 0); } -// Add an entry for a local symbol to the GOT. This returns true if -// this is a new GOT entry, false if the symbol already has a GOT -// entry. - -template<int got_size, bool big_endian> -bool -Output_data_got<got_size, big_endian>::add_local( - Relobj* object, - unsigned int symndx, - unsigned int got_type) -{ - if (object->local_has_got_offset(symndx, got_type)) - return false; - - unsigned int got_offset = this->add_got_entry(Got_entry(object, symndx, - false)); - object->set_local_got_offset(symndx, got_type, got_offset); - return true; -} - // Add an entry for a local symbol plus ADDEND to the GOT. This returns // true if this is a new GOT entry, false if the symbol already has a GOT // entry. @@ -1590,26 +1570,6 @@ Output_data_got<got_size, big_endian>::add_local_plt( return true; } -// Add an entry for a local symbol to the GOT, and add a dynamic -// relocation of type R_TYPE for the GOT entry. - -template<int got_size, bool big_endian> -void -Output_data_got<got_size, big_endian>::add_local_with_rel( - Relobj* object, - unsigned int symndx, - unsigned int got_type, - Output_data_reloc_generic* rel_dyn, - unsigned int r_type) -{ - if (object->local_has_got_offset(symndx, got_type)) - return; - - unsigned int got_offset = this->add_got_entry(Got_entry()); - object->set_local_got_offset(symndx, got_type, got_offset); - rel_dyn->add_local_generic(object, symndx, r_type, this, got_offset, 0); -} - // Add an entry for a local symbol plus ADDEND to the GOT, and add a dynamic // relocation of type R_TYPE for the GOT entry. @@ -1631,32 +1591,6 @@ Output_data_got<got_size, big_endian>::add_local_with_rel( addend); } -// Add a pair of entries for a local symbol to the GOT, and add -// a dynamic relocation of type R_TYPE using the section symbol of -// the output section to which input section SHNDX maps, on the first. -// The first got entry will have a value of zero, the second the -// value of the local symbol. -template<int got_size, bool big_endian> -void -Output_data_got<got_size, big_endian>::add_local_pair_with_rel( - Relobj* object, - unsigned int symndx, - unsigned int shndx, - unsigned int got_type, - Output_data_reloc_generic* rel_dyn, - unsigned int r_type) -{ - if (object->local_has_got_offset(symndx, got_type)) - return; - - unsigned int got_offset = - this->add_got_entry_pair(Got_entry(), - Got_entry(object, symndx, false)); - object->set_local_got_offset(symndx, got_type, got_offset); - Output_section* os = object->output_section(shndx); - rel_dyn->add_output_section_generic(os, r_type, this, got_offset, 0); -} - // Add a pair of entries for a local symbol plus ADDEND to the GOT, and add // a dynamic relocation of type R_TYPE using the section symbol of // the output section to which input section SHNDX maps, on the first. |