On Wed, 16 Sep 2020 at 22:53, Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > On Tue, Sep 15, 2020 at 10:55 PM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > > > > On Wed, 16 Sep 2020 at 02:31, Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > > > > > On Tue, Sep 15, 2020 at 2:30 PM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > > > > > > > > Excellent, thanks for testing. Do you have any coverage for Thumb2 > > > > builds as well? (CONFIG_THUMB2_KERNEL=y) > > > > > > Ah, right, manually testing ARCH=arm defconfig with > > > CONFIG_THUMB2_KERNEL enabled via menuconfig: > > > > > > Builds and boots for clang. > > > > > > (Also needed https://lore.kernel.org/lkml/20200915225751.274531-1-ndesaulniers@xxxxxxxxxx/T/#u > > > for an unrelated issue). > > > > > > For GCC, I observe: > > > > > > arch/arm/vfp/vfphw.o: in function `vfp_support_entry': > > > (.text+0xa): relocation truncated to fit: R_ARM_THM_JUMP19 against > > > symbol `vfp_kmode_exception' defined in .text.unlikely section in > > > arch/arm/vfp/vfpmodule.o > > > > > > > Interesting. And this is using ld.bfd ? > > $ arm-linux-gnueabihf-ld --version > GNU ld (GNU Binutils for Debian) 2.34 > > .text.unlikely reminds me of the sections created when profiling data > is present. That's obviously not the case here, so maybe there's > other ways this section can be created by GCC? I may have added a > patch recently for placing this section explicitly, which was a > prerequisite for Kees' series explicitly placing all sections. > https://lore.kernel.org/lkml/159896087937.20229.4955362311782724603.tip-bot2@tip-bot2/ > Maybe that can be improved? > > IIRC, LLD is able to emit range extension thunks for these cases, but > BFD does not. ld.bfd will usually emit veneers for branches that turn out to be out of range in the final link stage. Does the following help? diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S index 4fcff9f59947..f1468702fbc9 100644 --- a/arch/arm/vfp/vfphw.S +++ b/arch/arm/vfp/vfphw.S @@ -82,6 +82,7 @@ ENTRY(vfp_support_entry) ldr r3, [sp, #S_PSR] @ Neither lazy restore nor FP exceptions and r3, r3, #MODE_MASK @ are supported in kernel mode teq r3, #USR_MODE +THUMB( it ne ) bne vfp_kmode_exception @ Returns through lr VFPFMRX r1, FPEXC @ Is the VFP enabled?