This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH][GOLD] Handle target specific relocatable relocation.
- From: Ian Lance Taylor <iant at google dot com>
- To: Doug Kwan (éæå) <dougkwan at google dot com>
- Cc: binutils <binutils at sourceware dot org>
- Date: Tue, 25 May 2010 17:42:10 -0700
- Subject: Re: [PATCH][GOLD] Handle target specific relocatable relocation.
- References: <AANLkTinH38DlbPaGR5b66NcbySdfJMSAQjniRaHJH5ej@mail.gmail.com>
"Doug Kwan (éæå)" <dougkwan@google.com> writes:
> 2010-05-25 Doug Kwan <dougkwan@google.com>
>
> * arm.cc (Arm_scan_relocatable_relocs): New class.
> (Target_arm::relocate_special_relocatable): New method.
> (Arm_relocate_functions::arm_branch_common): Handle relocatable link.
> (Arm_relocate_functions::thumb_branch_common): Same.
> (Target_arm::scan_relocatable_relocs): Use Arm_scan_relocatable_relocs
> instead of Default_scan_relocatable_relocs.
> * i386.cc (Target_i386::relocate_special_relocatable): New method.
> * powerpc.cc (Target_powerpc::relocate_special_relocatable): Same.
> * sparc.cc (Target_sparc::relocate_speical_relocatable): Same.
> * target-reloc.h (relocate_for_relocatable): Let target handle
> relocation strategy Relocatable_relocs::RELOC_SPECIAL.
> * target.h (Sized_target::relocate_special_relocatable): New method.
> * x86_64.cc (Target_x86_64::relocate_special_relocatable): Same.
> * testsuite/testfile.cc (Target_test::relocate_special_relocatable):
> Same.
> + // Perform target-specific processing in a relocatable link. This is
> + // only used if we use the relocation strategy RELOC_SPECIAL.
>
> + virtual void
> + relocate_special_relocatable(const Relocate_info<size, big_endian>* relinfo,
> + unsigned int sh_type,
> + const unsigned char* preloc_in,
> + size_t relnum,
> + Output_section* output_section,
> + off_t offset_in_output_section,
> + unsigned char* view,
> + typename elfcpp::Elf_types<size>::Elf_Addr
> + view_address,
> + section_size_type view_size,
> + unsigned char* preloc_out) = 0;
It's OK to make this simply { gold_unreachable(); } rather than making
it pure virtual. That will make it the same as make_symbol and
resolve. Then you don't have to change the other targets.
This is OK with that change.
Thanks.
Ian