This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][GOLD] Handle target specific relocatable relocation.


"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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]