https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115937
--- Comment #6 from Ellery <ellery1016 at 163 dot com> --- (In reply to Andrew Pinski from comment #5) > So according to the linux kernel modules linker script, it should have > combined the .plt sections. > > So I am thinking this is a linux kernel issue with an older version of the > kernel. > > Can you show exact commands that are executed? to build the module when you > invoke `make modules`? You might need to add `V=1` to get them. Thx for reply. So I tried compiling module using just 'make V=1'. My Makefile is as written above. ``` [root@localhost ko_test]# make V=1 make -C /lib/modules/4.19.90.rc0.ctl2.aarch64/build M=/root/tmp/ko_test modules make[1]: Entering directory '/usr/src/kernels/4.19.90.rc0.ctl2.aarch64' test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \ echo >&2; \ echo >&2 " ERROR: Kernel configuration is invalid."; \ echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\ echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ echo >&2 ; \ /bin/false) mkdir -p /root/tmp/ko_test/.tmp_versions ; rm -f /root/tmp/ko_test/.tmp_versions/* make -f ./scripts/Makefile.build obj=/root/tmp/ko_test (cat /dev/null; echo kernel//root/tmp/ko_test/test_plt.ko;) > /root/tmp/ko_test/modules.order gcc -Wp,-MD,/root/tmp/ko_test/.test_plt.o.d -nostdinc -isystem /usr/lib/gcc/aarch64-linux-gnu/10.3.1/include -I./arch/arm64/include -I./arch/arm64/include/generated -I./include -I./arch/arm64/include/uapi -I./arch/arm64/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mgeneral-regs-only -DCONFIG_AS_LSE=1 -fno-asynchronous-unwind-tables -Wno-psabi -mabi=lp64 -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -Wno-address-of-packed-member -O2 -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -fno-inline-functions-called-once -Wdeclaration-after-statement -Wno-pointer-sign -Wno-stringop-truncation -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=./= -Wno-packed-not-aligned -DMODULE -DKBUILD_BASENAME='"test_plt"' -DKBUILD_MODNAME='"test_plt"' -c -o /root/tmp/ko_test/.tmp_test_plt.o /root/tmp/ko_test/test_plt.c if [ "-pg" = "-pg" ]; then if [ /root/tmp/ko_test/test_plt.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount "/root/tmp/ko_test/test_plt.o"; fi; fi; make -f ./scripts/Makefile.modpost find /root/tmp/ko_test/.tmp_versions -name '*.mod' | xargs -r grep -h '\.ko$' | sort -u | sed 's/\.ko$/.o/' | scripts/mod/modpost -m -a -i ./Module.symvers -I /root/tmp/ko_test/Module.symvers -o /root/tmp/ko_test/Module.symvers -w -s -T - gcc -Wp,-MD,/root/tmp/ko_test/.test_plt.mod.o.d -nostdinc -isystem /usr/lib/gcc/aarch64-linux-gnu/10.3.1/include -I./arch/arm64/include -I./arch/arm64/include/generated -I./include -I./arch/arm64/include/uapi -I./arch/arm64/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mgeneral-regs-only -DCONFIG_AS_LSE=1 -fno-asynchronous-unwind-tables -Wno-psabi -mabi=lp64 -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -Wno-address-of-packed-member -O2 -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -gdwarf-4 -pg -fno-inline-functions-called-once -Wdeclaration-after-statement -Wno-pointer-sign -Wno-stringop-truncation -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=./= -Wno-packed-not-aligned -DKBUILD_BASENAME='"test_plt.mod"' -DKBUILD_MODNAME='"test_plt"' -DMODULE -c -o /root/tmp/ko_test/test_plt.mod.o /root/tmp/ko_test/test_plt.mod.c ld -r -EL -maarch64linux -T ./scripts/module-common.lds -T ./arch/arm64/kernel/module.lds --build-id=sha1 -o /root/tmp/ko_test/test_plt.ko /root/tmp/ko_test/test_plt.o /root/tmp/ko_test/test_plt.mod.o ; true make[1]: Leaving directory '/usr/src/kernels/4.19.90.rc0.ctl2.aarch64' ```