From: Richard Purdie <[email protected]>
Currently systemtap fails to operate correctly on armv7 systems such as
beaglebone and
soon, qemuarm.
root@qemuarm:/usr/src/kernel# env -uARCH -uKBUILD_EXTMOD -uCROSS_COMPILE
-uKBUILD_IMAGE -uKCONFIG_CONFIG -uINSTALL_PATH -uLD_LIBRARY_PATH
PATH=/usr/bin:/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
make -C /lib/modules/4.19.19-yocto-standard/build M=/tmp/staptcNU6M modules
CONFIG_DEBUG_INFO= CONFIG_STACK_VALIDATION= ARCH=arm stap_4321_src.i
--no-print-directory -j2 V=1
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 /tmp/staptcNU6M/.tmp_versions ; rm -f /tmp/staptcNU6M/.tmp_versions/*
make -f ./scripts/Makefile.build obj=/tmp/staptcNU6M
(cat /dev/null; echo kernel//tmp/staptcNU6M/stap_4321.ko;) >
/tmp/staptcNU6M/modules.order
gcc -Wp,-MD,/tmp/staptcNU6M/.stap_4321_src.o.d -nostdinc -isystem
/usr/lib/gcc/arm-poky-linux-gnueabi/8.3.0/include -I./arch/arm/include
-I./arch/arm/include/generated -I./include -I./arch/arm/include/uapi
-I./arch/arm/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
-DCC_HAVE_ASM_GOTO -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs
-mno-sched-prolog -fno-ipa-sra -mabi=aapcs-linux -mfpu=vfp -funwind-tables
-marm -Wa,-mno-warn-deprecated -D__LINUX_ARM_ARCH__=7 -march=armv5t
-Wa,-march=armv7-a -msoft-float -Uarm -fno-delete-null-pointer-checks
-Wno-frame-address -Wno-format-truncation -Wno-format-overflow
-Wno-int-in-bool-context -Os -Wno-maybe-uninitialized --param=allow-store
-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong
-Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer
-fno-optimize-sibling-calls -fno-var-tracking-assignments -pg
-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
-Iinclude2/asm/mach-default -I/lib/modules/4.19.19-yocto-standard/build
-include /tmp/staptcNU6M/stapconf_4321.h -D "STP_NO_VELREL_CHECK"
-freorder-blocks -fasynchronous-unwind-tables -Wframe-larger-than=512
-fno-ipa-icf -Wno-unused -Wno-tautological-compare -Werror
-I/usr/share/systemtap/runtime -DMODULE -DKBUILD_BASENAME='"stap_4321_src"'
-DKBUILD_MODNAME='"stap_4321"' -c -o /tmp/staptcNU6M/stap_4321_src.o
/tmp/staptcNU6M/stap_4321_s
rc.c
/tmp/ccaE9CMG.s: Assembler messages:
/tmp/ccaE9CMG.s:49: Error: selected processor does not support `dmb ish' in ARM
mode
/tmp/ccaE9CMG.s:52: Error: architectural extension `mp' is not allowed for the
current b
(which was from running the stap command with -v -v -v -k and then being able
to run the command individually)
Note that it says armv5t above.
That comes from the code this patch changes
root@qemuarm:/usr/src/kernel# gcc -march=armv7-a
/tmp/staptcNU6M/stap_4321_aux_0.c
cc1: error: -mfloat-abi=hard: selected processor lacks an FPU
which makes me wonder if cc-option fails unless -mfpu-vfp is on the commandline
too.
Since we have a gcc which accepts the armv7-a arch, just remove the cc-option
wrapper unconditionally here.
Signed-off-by: Richard Purdie <[email protected]>
Signed-off-by: Bruce Ashfield <[email protected]>
---
Backport a kernel patch from v5.0 to v4.14&v4.18 kernel in order to fix
the same issue on Yocto 2.6.
arch/arm/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 1f95ede8063f..9253b7533cb1 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -64,7 +64,7 @@ KBUILD_CFLAGS += $(call cc-option,-fno-ipa-sra)
# macro, but instead defines a whole series of macros which makes
# testing for a specific architecture or later rather impossible.
arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m
-Wa,-march=armv7-m
-arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 $(call
cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
+arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 -march=armv7-a
-Wa$(comma)-march=armv7-a
arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 $(call
cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
# Only override the compiler option if ARMv6. The ARMv6K extensions are
# always available in ARMv7
--
2.14.4
--
_______________________________________________
linux-yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/linux-yocto