On Tue, Aug 06, 2024 at 05:54:44AM GMT, Jia He wrote: Hi Jia, > When objtool gains support for ARM in the future, it may encounter issues > disassembling the following data in the .text section: > > .Lzeros: > > .long 0,0,0,0,0,0,0,0 > > .asciz "Poly1305 for ARMv8, CRYPTOGAMS by \@dot-asm" > > .align 2 > > Move it to .rodata which is a more appropriate section for read-only data. > > There is a limit on how far the label can be from the instruction, hence > use "adrp" and low 12bits offset of the label to avoid the compilation > error. > > Signed-off-by: Jia He <justin.he@xxxxxxx> > --- > v2: > - use adrp+offset to avoid compilation error(kernel test bot and Andy) > v1: https://lkml.org/lkml/2024/8/2/616 > > arch/arm64/crypto/poly1305-armv8.pl | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/crypto/poly1305-armv8.pl b/arch/arm64/crypto/poly1305-armv8.pl > index cbc980fb02e3..22c9069c0650 100644 > --- a/arch/arm64/crypto/poly1305-armv8.pl > +++ b/arch/arm64/crypto/poly1305-armv8.pl > @@ -473,7 +473,8 @@ poly1305_blocks_neon: > subs $len,$len,#64 > ldp x9,x13,[$inp,#48] > add $in2,$inp,#96 > - adr $zeros,.Lzeros > + adrp $zeros,.Lzeros > + add $zeros,$zeros,#:lo12:.Lzeros > > lsl $padbit,$padbit,#24 > add x15,$ctx,#48 > @@ -885,10 +886,13 @@ poly1305_blocks_neon: > ret > .size poly1305_blocks_neon,.-poly1305_blocks_neon > > +.pushsection .rodata > .align 5 > .Lzeros: > .long 0,0,0,0,0,0,0,0 > .asciz "Poly1305 for ARMv8, CRYPTOGAMS by \@dot-asm" > +.popsection > + I'm getting the following error with next-20240806 make LLVM=1 ARCH=arm64 allyesconfig make LLVM=1 ARCH=arm64 -j$(nproc) ld.lld: error: vmlinux.a(arch/arm64/crypto/poly1305-core.o):(function poly1305_blocks_neon: .text+0x3d4): relocation R_AARCH64_ADR_PREL_LO21 out of range: 269166444 is not in [-1048576, 1048575] Full debug error with log context: ... + grep -q ^CONFIG_DEBUG_INFO_BTF=y include/config/auto.conf + strip_debug=1 + vmlinux_link .tmp_vmlinux1 + local output=.tmp_vmlinux1 + local objs + local libs + local ld + local ldflags + local ldlibs + info LD .tmp_vmlinux1 + printf %-7s %s\n LD .tmp_vmlinux1 LD .tmp_vmlinux1 + shift + is_enabled CONFIG_LTO_CLANG + grep -q ^CONFIG_LTO_CLANG=y include/config/auto.conf + is_enabled CONFIG_X86_KERNEL_IBT + grep -q ^CONFIG_X86_KERNEL_IBT=y include/config/auto.conf + objs=vmlinux.a + libs=./drivers/firmware/efi/libstub/lib.a + is_enabled CONFIG_MODULES + grep -q ^CONFIG_MODULES=y include/config/auto.conf + objs=vmlinux.a .vmlinux.export.o + objs=vmlinux.a .vmlinux.export.o init/version-timestamp.o + [ arm64 = um ] + wl= + ld=ld.lld + ldflags=-EL -maarch64elf -z norelro -z noexecstack --no-undefined -X -shared -Bsymbolic -z notext --no-apply-dynamic-relocs --fix-cortex-a53-843419 --build-id=sha1 -X --pack-dyn-relocs=relr --orphan-handling=error + ldlibs= + ldflags=-EL -maarch64elf -z norelro -z noexecstack --no-undefined -X -shared -Bsymbolic -z notext --no-apply-dynamic-relocs --fix-cortex-a53-843419 --build-id=sha1 -X --pack-dyn-relocs=relr --orphan-handling=error --script=./arch/arm64/kernel/vmlinux.lds + [ -n 1 ] + ldflags=-EL -maarch64elf -z norelro -z noexecstack --no-undefined -X -shared -Bsymbolic -z notext --no-apply-dynamic-relocs --fix-cortex-a53-843419 --build-id=sha1 -X --pack-dyn-relocs=relr --orphan-handling=error --script=./arch/arm64/kernel/vmlinux.lds --strip-debug + is_enabled CONFIG_VMLINUX_MAP + grep -q ^CONFIG_VMLINUX_MAP=y include/config/auto.conf + ldflags=-EL -maarch64elf -z norelro -z noexecstack --no-undefined -X -shared -Bsymbolic -z notext --no-apply-dynamic-relocs --fix-cortex-a53-843419 --build-id=sha1 -X --pack-dyn-relocs=relr --orphan-handling=error --script=./arch/arm64/kernel/vmlinux.lds --strip-debug -Map=.tmp_vmlinux1.map + ld.lld -EL -maarch64elf -z norelro -z noexecstack --no-undefined -X -shared -Bsymbolic -z notext --no-apply-dynamic-relocs --fix-cortex-a53-843419 --build-id=sha1 -X --pack-dyn-relocs=relr --orphan-handling=error --script=./arch/arm64/kernel/vmlinux.lds --strip-debug -Map=.tmp_vmlinux1.map -o .tmp_vmlinux1 --whole-archive vmlinux.a .vmlinux.export.o init/version-timestamp.o --no-whole-archive --start-group ./drivers/firmware/efi/libstub/lib.a --end-group .tmp_vmlinux0.kallsyms.o ld.lld: error: vmlinux.a(arch/arm64/crypto/poly1305-core.o):(function poly1305_blocks_neon: .text+0x3d4): relocation R_AARCH64_ADR_PREL_LO21 out of range: 269166444 is not in [-1048576, 1048575] make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1 make[1]: *** [/home/dagomez/src/linux-next/Makefile:1156: vmlinux] Error 2 make: *** [Makefile:224: __sub-make] Error 2 Any suggestion how to fix this? Daniel > .align 2 > #if !defined(__KERNEL__) && !defined(_WIN64) > .comm OPENSSL_armcap_P,4,4 > -- > 2.34.1 >