diff options
author | Cary Coutant <ccoutant@google.com> | 2014-04-15 11:19:18 -0700 |
---|---|---|
committer | Cary Coutant <ccoutant@google.com> | 2014-04-15 11:56:18 -0700 |
commit | 91f43acd5d692518f95a901e92dec7dbb6347564 (patch) | |
tree | 1c3e0df494d2caf8ef5967085f742ad6264c03f8 /gold/copy-relocs.cc | |
parent | 5da151d470a6c99ae6cbd5efa01f2a3b97261e59 (diff) | |
download | fsf-binutils-gdb-91f43acd5d692518f95a901e92dec7dbb6347564.zip fsf-binutils-gdb-91f43acd5d692518f95a901e92dec7dbb6347564.tar.gz fsf-binutils-gdb-91f43acd5d692518f95a901e92dec7dbb6347564.tar.bz2 |
Allow target to derive from Copy_relocs class.
2014-04-15 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
gold/
* copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Remove and
inline into ...
(Copy_relocs::emit): ... here.
* copy-relocs.h (Copy_reloc_entry): Change from class to struct.
(Copy_reloc_entry::make_copy_reloc): Change from private to protected.
(Copy_reloc_entry::entries_): Change from private to protected.
Diffstat (limited to 'gold/copy-relocs.cc')
-rw-r--r-- | gold/copy-relocs.cc | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/gold/copy-relocs.cc b/gold/copy-relocs.cc index 651bd1f..41b6563 100644 --- a/gold/copy-relocs.cc +++ b/gold/copy-relocs.cc @@ -28,25 +28,6 @@ namespace gold { -// Copy_relocs::Copy_reloc_entry methods. - -// Emit the reloc if appropriate. - -template<int sh_type, int size, bool big_endian> -void -Copy_relocs<sh_type, size, big_endian>::Copy_reloc_entry::emit( - Output_data_reloc<sh_type, true, size, big_endian>* reloc_section) -{ - // If the symbol is no longer defined in a dynamic object, then we - // emitted a COPY relocation, and we do not want to emit this - // dynamic relocation. - if (this->sym_->is_from_dynobj()) - reloc_section->add_global_generic(this->sym_, this->reloc_type_, - this->output_section_, this->relobj_, - this->shndx_, this->address_, - this->addend_); -} - // Copy_relocs methods. // Handle a relocation against a symbol which may force us to generate @@ -215,7 +196,18 @@ Copy_relocs<sh_type, size, big_endian>::emit( for (typename Copy_reloc_entries::iterator p = this->entries_.begin(); p != this->entries_.end(); ++p) - p->emit(reloc_section); + { + Copy_reloc_entry& entry = *p; + + // If the symbol is no longer defined in a dynamic object, then we + // emitted a COPY relocation, and we do not want to emit this + // dynamic relocation. + if (entry.sym_->is_from_dynobj()) + reloc_section->add_global_generic(entry.sym_, entry.reloc_type_, + entry.output_section_, entry.relobj_, + entry.shndx_, entry.address_, + entry.addend_); + } // We no longer need the saved information. this->entries_.clear(); |