[llvm-dev] Linking android with lld: aarch64 target

Sean Silva via llvm-dev llvm-dev at lists.llvm.org
Fri Mar 31 15:04:33 PDT 2017


On Fri, Mar 24, 2017 at 12:18 AM, Minseong Kim via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> On 23 March 2017 at 21:35, Peter Smith <peter.smith at linaro.org> wrote:
>
>> Hello Min,
>>
>> This error message occurs when the linker would have to create a
>> dynamic relocation in a read-only part of the program, which isn't
>> usually allowed when making a position independent shared-library or
>> position independent executable. In practice this usually means that
>> one or more of the objects hasn't been compiled to be position
>> independent -fPIC.
>>
>
> OK~ I will check the objects to be linked, if they are compiled (with
> -fPIC or not).
>
> It is difficult to tell much more without knowing the compiler and
>> linker options. The R_AARCH64_PREL64 relocation is a relative
>> relocation, this can require a dynamic relocation if the symbol it
>> refers to is preemptible (i.e another definition of the symbol could
>> potentially override it at load-time).
>>
>> Given that the file sha1-armv8.S is an assembler file, and I assume
>> that the link with the same inputs works on ld.bfd and ld.gold, I can
>> only think that it will either be lld is selecting a different object,
>> or ld.bfd and ld.gold are resolving the R_AARCH64_PREL64 relocation in
>> this case and lld is not.
>>
>
> Yes, both ld.bfd and ld.gold works with the same inputs. I will keep
> looking for the cause with your suggestions in mind.
>

If you can run the LLD link with `--reproduce repro.tar` and then uploading
repro.tar somewhere, it will be easier for us to take a look at it (e.g.
file a bug in llvm's bugzilla).

-- Sean Silva


>
> Thanks again, Peter.
>
> cheers,
> -- Min
>
>
>> Peter
>>
>> On 23 March 2017 at 04:29, Minseong Kim via llvm-dev
>> <llvm-dev at lists.llvm.org> wrote:
>> > It would be great if anyone can share your thoughts about the cause and
>> > possibly fix of the error below ?
>> >
>> > I would like to know why it is caused and how it can be fixed (if
>> possible)
>> > ?
>> >
>> > The error message is:
>> >
>> > ~/llvm/build/install_android/linux-x86/clang-3688880/bin/ld.lld: error:
>> > external/boringssl/linux-aarch64/crypto/sha/sha1-armv8.S:1202: can't
>> create
>> > dynamic relocation R_AARCH64_PREL64 against symbol 'OPENSSL_armcap_P'
>> > defined in
>> > out/target/product/hikey/obj/STATIC_LIBRARIES/libcrypto_inte
>> rmediates/libcrypto.a(sha1-armv8.o)
>> > clang-5.0: error: linker command failed with exit code 1 (use -v to see
>> > invocation)
>> >
>> > cheers,
>> > -- Min
>> >
>> >
>> > _______________________________________________
>> > LLVM Developers mailing list
>> > llvm-dev at lists.llvm.org
>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> >
>>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170331/a76baee0/attachment.html>


More information about the llvm-dev mailing list