[U-Boot] [RFC] kbuild.h: workaround for llvm IAS

Jeroen Hofstee jeroen at myspectrum.nl
Sat Jun 28 14:53:03 CEST 2014


Hello Masahiro,

On 27-06-14 08:38, Masahiro Yamada wrote:
> KBuild (ab)uses the asm statement to write to a file and
> llvm integrated as chokes about these invalid asm statements.
> Workaround it by making it look like valid asm code.
>
> Signed-off-by: Jeroen Hofstee <jeroen at myspectrum.nl>
>>> I think Linux has the same problem.
>>>
>>> Are you willing to this patch to linux-kbuild ML?
>>> Or fixing U-Boot only?
>> I don't mind in general, but it is just noise for them (cc-ing them to
>> create some).  For u-boot (ARM) you actually get a valid binary with
>> this patch after clang support has landed, for linux you just get other
>> errors as far as I tried (native only), patch below.
>>
>> However in linux there seem more spots relying on the format, e.g.
>>       arch/ia64/kvm/Makefile
>>       arch/ia64/kernel/Makefile
>>       arch/um/Makefile
>>
>> So if anything, I think this should be made a general rules first
>> in the makefiles. It seems stupid to potentially break something
>> while it gains nothing.
>>
>> So yes, u-boot only afaic, or does that make your syncing more difficult?
> I don't think syncing would be difficult.
>
> BTW, do you know how they resolve this build error in other projects,
> for example, in llvmlinux ?
> http://llvm.linuxfoundation.org/index.php/Main_Page
>
> Linux folks merged Clang support into the top Makefile, but not into ./Kbuild.
> I don't know why.
I don't know how the llvmlinux people do it, but the alternative is to
add -no-integrated-as for clang when compiling such files (or use an
older clang version, since that used to be the default). Since gcc's LTO
dislikes the asm-offset.c technique as well, I think it is better to 
actually
create valid asm, so it no longer depends on compiler features at all.
I will leave it up to the llvmlinux folks to come up with a solution for
linux though...

Regards,
Jeroen







More information about the U-Boot mailing list