On Mon, Sep 14, 2020 at 2:57 AM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > > This is a respin of the adr_l/ldr_l code I wrote some years ago in the > context of my KASLR proof of concept for 32-bit ARM. > > A new use case came up, in the form of Clang, which does not implement > the 'adrl' pseudo-instruction in its assembler, and so for PC-relative > references that don't fit into a ARM adr instruction, we need something > else. Patch #2 addresses an actual Clang build issue of this nature, by > replacing an occurrence of adrl with adr_l. > > I have included my existing cleanup patches that were built on top of the > adr_l macro, which replace several occurrences of open coded arithmetic to > calculate runtime addresses based on link time virtual addresses stored > in literals. > > Note that all of these patches with the exception of #2 were reviewed or > acked by Nico before, but given that this was a while ago (and the fact > that neither of us work for Linaro anymore), I have dropped these. Note > that only patch #1 deviates significantly from the last version that I > sent out, the remaining ones were just freshened up (and their commit > logs slightly expanded). Tested-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> Thanks for the series, Ard. I was able to compile and boot the following with this series (and the fixup to 01/12 applied): $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make defconfig $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make LLVM=1 defconfig $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make LLVM=1 aspeed_g5_defconfig $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make LLVM=1 multi_v5_defconfig (So ARM v7/GCC, ARM v5,6,7/LLVM). (Technically, the v6 is not booting, but it's not related to this series and fails to boot without the series as well. Our CI on -next is red for an unrelated issue which is masking the regression). I was also able to build+boot the defconfig with v5 and v7 with some configs disabled and a few hacks with LLVM_IAS=1. This series allowed me to get further in the build/testing, and I have a few new bugs to go chase. If anyone's interested: https://github.com/ClangBuiltLinux/linux/issues/1154 https://github.com/ClangBuiltLinux/linux/issues/1155 so we're still a handful of bugs away from LLVM_IAS=1 with ARCH=arm, but we're steadily chipping away at it, and this series is a big help. Lest it look like there's only kernel fixes in this area, Jian's https://reviews.llvm.org/D69411 recently was a big help, specifically for ARCH=arm LLVM_IAS=1. -- Thanks, ~Nick Desaulniers