Re: [PATCH 00/12] ARM: use adr_l/ldr_l macros for PC-relative references
From: Nick Desaulniers <hidden>
Date: 2020-09-15 19:34:29
Also in:
linux-efi
On Mon, Sep 14, 2020 at 2:57 AM Ard Biesheuvel [off-list ref] 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 <redacted> 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 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel