From 6a74a71947df73c828f073af0dcad0c323dcd8c4 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 6 Feb 2008 08:13:50 +0000 Subject: Initial -r support. --- gold/target.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'gold/target.h') 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 class Sized_relobj; +class Relocatable_relocs; template class Relocate_info; class Symbol; @@ -281,6 +282,42 @@ class Sized_target : public Target typename elfcpp::Elf_types::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* 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*, + 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::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) -- cgit v1.1