On Tue, 15 Sep 2020 at 22:32, Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > 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). > Excellent, thanks for testing. Do you have any coverage for Thumb2 builds as well? (CONFIG_THUMB2_KERNEL=y) > 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