Re: arch/arm/probes/kprobes/core.c:409:30: error: .fnstart must precede .save or .vsave directives

From: Nathan Chancellor
Date: Mon Sep 26 2022 - 12:50:57 EST


Hi Naresh,

On Mon, Sep 26, 2022 at 06:57:00PM +0530, Naresh Kamboju wrote:
> Following build warnings / errors noticed on arm with clang-13 / 14
> on Linux next-20220923.
>
> Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
>
> Regressions found on arm:
>
> - build-clang-13-bcm2835_defconfig
> - build-clang-nightly-imx_v6_v7_defconfig
> - build-clang-nightly-orion5x_defconfig
> - build-clang-13-keystone_defconfig
> - build-clang-13-omap2plus_defconfig
> - build-clang-14-imx_v6_v7_defconfig
> - build-clang-nightly-omap2plus_defconfig
> - build-clang-nightly-multi_v5_defconfig
> - build-clang-nightly-bcm2835_defconfig
> - build-clang-13-imx_v6_v7_defconfig
> - build-clang-13-imx_v4_v5_defconfig
> - build-clang-14-imx_v4_v5_defconfig
> - build-clang-13-orion5x_defconfig
> - build-clang-14-multi_v5_defconfig-65236a87
> - build-clang-14-lkftconfig
> - build-clang-nightly-imx_v4_v5_defconfig
> - build-clang-13-multi_v5_defconfig
> - build-clang-13-lkftconfig
> - build-clang-nightly-keystone_defconfig
> - build-clang-14-multi_v5_defconfig
> - build-clang-14-orion5x_defconfig
> - build-clang-14-omap2plus_defconfig
> - build-clang-nightly-multi_v5_defconfig-65236a87
> - build-clang-14-bcm2835_defconfig
> - build-clang-14-keystone_defconfig
> - build-clang-nightly-lkftconfig
>
> arch/arm/probes/kprobes/core.c:409:30: error: .fnstart must precede
> .save or .vsave directives
> "stmdb sp, {sp, lr, pc} \n\t"
> ^
> <inline asm>:3:2: note: instantiated into assembly here
> .save {sp, lr, pc}
> ^
> /builds/linux/arch/arm/probes/kprobes/core.c:412:29: error: .fnstart
> must precede .pad directive
> "stmdb sp!, {r0 - r11} \n\t"
> ^
> <inline asm>:6:2: note: instantiated into assembly here
> .pad #52
> ^
> 2 errors generated.
> make[5]: *** [/builds/linux/scripts/Makefile.build:250:
> arch/arm/probes/kprobes/core.o] Error 1
>
> build log:
> https://builds.tuxbuild.com/2FAyD1qcTlzjIYE7mjrugjCsxu1/

Thank you for the testing and report! I brought this up on GitHub on
Friday as I noticed this as well:

https://github.com/ClangBuiltLinux/linux/issues/1718

It sounds like we can avoid this by rewriting __kretprobe_trampoline()
in out of line assembly but I have not had a chance to sit down and try
it.

Cheers,
Nathan