diff options
author | Ian Lance Taylor <iant@google.com> | 2008-02-06 08:13:50 +0000 |
---|---|---|
committer | Ian Lance Taylor <iant@google.com> | 2008-02-06 08:13:50 +0000 |
commit | 6a74a71947df73c828f073af0dcad0c323dcd8c4 (patch) | |
tree | 19103071382f3c094d30ea8fa6e8d8bbc0af1031 /gold/target.h | |
parent | 0797561a54769f4d8217c1f141858380025b0094 (diff) | |
download | binutils-6a74a71947df73c828f073af0dcad0c323dcd8c4.zip binutils-6a74a71947df73c828f073af0dcad0c323dcd8c4.tar.gz binutils-6a74a71947df73c828f073af0dcad0c323dcd8c4.tar.bz2 |
Initial -r support.
Diffstat (limited to 'gold/target.h')
-rw-r--r-- | gold/target.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gold/target.h b/gold/target.h index 218d9f7..c05c821 100644 --- a/gold/target.h +++ b/gold/target.h @@ -42,6 +42,7 @@ class General_options; class Object; template<int size, bool big_endian> class Sized_relobj; +class Relocatable_relocs; template<int size, bool big_endian> class Relocate_info; class Symbol; @@ -281,6 +282,42 @@ class Sized_target : public Target typename elfcpp::Elf_types<size>::Elf_Addr view_address, section_size_type view_size) = 0; + // Scan the relocs during a relocatable link. The parameters are + // like scan_relocs, with an additional Relocatable_relocs + // parameter, used to record the disposition of the relocs. + virtual void + scan_relocatable_relocs(const General_options& options, + Symbol_table* symtab, + Layout* layout, + Sized_relobj<size, big_endian>* object, + unsigned int data_shndx, + unsigned int sh_type, + const unsigned char* prelocs, + size_t reloc_count, + Output_section* output_section, + bool needs_special_offset_handling, + size_t local_symbol_count, + const unsigned char* plocal_symbols, + Relocatable_relocs*) = 0; + + // Relocate a section during a relocatable link. The parameters are + // like relocate_section, with additional parameters for the view of + // the output reloc section. + virtual void + relocate_for_relocatable(const Relocate_info<size, big_endian>*, + unsigned int sh_type, + const unsigned char* prelocs, + size_t reloc_count, + Output_section* output_section, + off_t offset_in_output_section, + const Relocatable_relocs*, + unsigned char* view, + typename elfcpp::Elf_types<size>::Elf_Addr + view_address, + section_size_type view_size, + unsigned char* reloc_view, + section_size_type reloc_view_size) = 0; + protected: Sized_target(const Target::Target_info* pti) : Target(pti) |