[llvm-dev] Linking Linux kernel with LLD

Sean Silva via llvm-dev llvm-dev at lists.llvm.org
Fri Jan 20 12:58:12 PST 2017


On Fri, Jan 20, 2017 at 12:44 PM, Sean Silva <chisophugis at gmail.com> wrote:

>
>
> On Fri, Jan 20, 2017 at 8:35 AM, George Rimar via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> Hi Dmitry,
>>
>> thanls for sharing. Few comments/questions below:
>>
>> >Here is the list of modifications I had to do in order to link the
>> kernel (I have used llvmlinux with clang and mainline with gcc, the
>> >results are similar):
>> >
>> >1. LLD patches:
>>  > - D28094 (Implemented support for R_386_PC8/R_386_8 relocations)
>>
>> Do you remember where it was used ?
>>
>> >5. In arch/x86/kernel/vmlinux.lds.S commented out the "CONSTRUCTORS",
>> because LLD doesn't support it.
>>
>> It is https://reviews.llvm.org/D28951. CONSTRUCTORS can be just removed,
>> they do nothing for ELF.
>>
>> >6. In arch/x86/boot/setup.ld replaced 5*512 with precalculated value of
>> 2560 because it doesn't seem that LLD supports math inside >ASSERT in
>> linker scripts.
>>
>> It is actually not relative with ASSERT. LLD does not support "symbol =
>> 5*6", but accepts "symbol = 5 * 6" currently.
>> Not sure what is easy fix here.
>>
>
> I'm not sure if it is easy, but I think that it's clear that the
> linkerscript lexer needs to be improved. I think that is the source of the
> problems with `*(.apicdrivers);` as well.
>

Actually, quickly staring at the code, the `*(.apicdrivers);` seems like it
will be lexed  correctly.

-- Sean Silva


> This is not the first bug related to lexing that we have run into (e.g.
> lexing `.=` as a single token is the cause of https://llvm.org/bugs/show_
> bug.cgi?id=31128 ).
>
> -- Sean Silva
>
>
>>
>> >Finally the kernel was built and it obviously didn't run (only printed
>> out "No setup signature found..." but this is some result as well).
>> >Probably, the result could be better if the --emit-relocs option didn't
>> fail and CONSTRUCTORS were supported. I really don't know what >to do about
>> the assertion that I have commented out.
>>
>> I updated patch for --emit-relocs, now they do not fail:
>> https://reviews.llvm.org/D28612
>> It looks to be important feature for self relocations, so it is not
>> surprising it did not run without :)
>>
>> George.
>> _______________________________________________
>> 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/20170120/b6d545a9/attachment.html>


More information about the llvm-dev mailing list