
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@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