[llvm-dev] [lld] Hiding original type of GOT related relocations
Igor Kudrin via llvm-dev
llvm-dev at lists.llvm.org
Mon Nov 23 03:43:24 PST 2015
Hi,
On 21.11.2015 12:31, Rui Ueyama via llvm-dev wrote:
> On Fri, Nov 20, 2015 at 10:13 PM, Simon Atanasyan <simon at atanasyan.com
> <mailto:simon at atanasyan.com>> wrote:
>
> Hi,
>
> There are more than one MIPS relocations which need GOT entry
> creation. Let's consider two of them R_MIPS_GOT16 and R_MIPS_CALL16
> [1]. R_MIPS_GOT16 is applicable to local and external symbols and
> performs a different calculation in each cases [2]. R_MIPS_CALL16 is
> applicable to external symbols only and a linker should show an error
> if it finds R_MIPS_CALL16 with a local target. Now LLD in the
> `InputSectionBase<ELFT>::relocate` methods hides original type of GOT
> relocations and always use the result of `Target->getGotRefReloc()`
> call. In case of MIPS it is R_MIPS_GOT16. It makes impossible to
> perform target symbol type checking and the error generation in the
> `MipsTargetInfo<ELFT>::relocateOne` method.
>
>
> I guess there's no need to hide the type. It's just that because it
> works for x86, x86-64 or aarch64. If mips requires more info, it
> should be ok to change that.
>
There was no support for GOT relocations for the AArch64 target. I'm
adding it with http://reviews.llvm.org/D14917.
I faced the similar problem, so I extended the getGotRefReloc() method
in this patch.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151123/2cb83c08/attachment.html>
More information about the llvm-dev
mailing list