LLVM=1 LLVM_IAS=1 ARCH=arm (32b) state of the union

Nick Desaulniers ndesaulniers at google.com
Mon Nov 9 19:02:05 EST 2020


Hey Jian,
I was able to get 32b ARM allyesconfig kernel to assemble with Clang's
integrated assembler (IAS).  Here's the list of bugs I hit:

1. LLD doesn't support BE. Patch exists, not immediately related to
LLVM_IAS=1 but hurts testing `LLVM=1 LLVM_IAS=1`, patch sent:
https://github.com/ClangBuiltLinux/linux/issues/965,
https://lore.kernel.org/lkml/20201109224713.16308-1-ndesaulniers@google.com/T/#u.

2. LLVM_IAS doesn't support IWMMXT, patch sent (needs BE testing/revision):
https://github.com/ClangBuiltLinux/linux/issues/975,
https://lore.kernel.org/lkml/20201107001056.225807-1-jiancai@google.com/

3. STB_GLOBAL/STB_WEAK rebinding failure. patch sent:
https://lore.kernel.org/linux-arm-kernel/20201105181542.854788-1-maskray@google.com/,
https://www.armlinux.org.uk/developer/patches/viewpatch.php?id=9022/1

4. -z relro, again like #1 LLD specific, hinted at:
https://lore.kernel.org/linux-arm-kernel/20201030013228.GA2519055@ubuntu-m3-large-x86/

5. one last adrl in arch/arm/boot/compressed/head.S. Doesn't exist in
today's linux-next, should appear tomorrow as per:
https://lore.kernel.org/linux-arm-kernel/CAMj1kXEC6TvkYScMPk0++6atLZe1yrkrUwMRkat33WEwym9t0g@mail.gmail.com/T/#t

6. .march/-Wa,-march= cases which can be fixed in kernel sources,
https://github.com/ClangBuiltLinux/linux/issues/1195,
https://github.com/ClangBuiltLinux/linux/issues/957

7. IAS not accepting multiple strings in .ascii directive.  This one
looks like an IAS bug to me.
https://github.com/ClangBuiltLinux/linux/issues/1196 probably going to
need to fix this as KGDB selects KPROBES, so Doug won't be able to use
KGDB without this being fixed.

Note I'm testing moving Android over to use LLVM_IAS=1 in
https://android-review.googlesource.com/c/kernel/common/+/1493456, so
the above are blockers for Android.
-- 
Thanks,
~Nick Desaulniers



More information about the linux-arm-kernel mailing list