summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2022-03-12 15:16:44 -0800
committerKhem Raj <raj.khem@gmail.com>2022-03-13 00:07:45 -0800
commit321edad13fd9275fb08700252d58a38b2b400670 (patch)
tree55c8eeb3d87c467cf10d8a497e91e24b0e0bd3cc /classes
parent8efb230dd73cfd19e575ff42fea979d977b05c97 (diff)
downloadmeta-clang-321edad13fd9275fb08700252d58a38b2b400670.tar.gz
clang: Use -mno-altivec for ppc 7400
Workaround qemuppc illegal instruction trap on vxor instruction emulation this instruction is emitted by clang with -mcpu=7400 on ppc32 when compiling musl/strspn.c file The crash shows up running qemu-ppc via gobject-introspection, so a long unwieldy path but we know whats happening Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'classes')
-rw-r--r--classes/clang.bbclass18
1 files changed, 11 insertions, 7 deletions
diff --git a/classes/clang.bbclass b/classes/clang.bbclass
index 71f2513..1c7184d 100644
--- a/classes/clang.bbclass
+++ b/classes/clang.bbclass
@@ -39,6 +39,10 @@ LDFLAGS:append:toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}"
39TUNE_CCARGS:remove:toolchain-clang = "-meb" 39TUNE_CCARGS:remove:toolchain-clang = "-meb"
40TUNE_CCARGS:remove:toolchain-clang = "-mel" 40TUNE_CCARGS:remove:toolchain-clang = "-mel"
41TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}" 41TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}"
42# Qemu uses 7400 but fails to emulate VSX/altivec instrs e.g. xor and fails with illegal instructions especially on musl/strspn.c
43# Workaround the qemu limitation by disable altivec in code generation, gcc does not use altivec, so code generated with clang is
44# superior but sadly qemu starts to puke :(, maybe it will work ok on real hardware !!
45TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "ppc7400", " -mno-altivec", "", d)}"
42 46
43# Clang does not yet support big.LITTLE performance tunes, so use the LITTLE for tunes 47# Clang does not yet support big.LITTLE performance tunes, so use the LITTLE for tunes
44TUNE_CCARGS:remove:toolchain-clang = "-mcpu=cortex-a57.cortex-a53 -mcpu=cortex-a72.cortex-a53 -mcpu=cortex-a15.cortex-a7 -mcpu=cortex-a17.cortex-a7 -mcpu=cortex-a72.cortex-a35 -mcpu=cortex-a73.cortex-a53 -mcpu=cortex-a75.cortex-a55 -mcpu=cortex-a76.cortex-a55" 48TUNE_CCARGS:remove:toolchain-clang = "-mcpu=cortex-a57.cortex-a53 -mcpu=cortex-a72.cortex-a53 -mcpu=cortex-a15.cortex-a7 -mcpu=cortex-a17.cortex-a7 -mcpu=cortex-a72.cortex-a35 -mcpu=cortex-a73.cortex-a53 -mcpu=cortex-a75.cortex-a55 -mcpu=cortex-a76.cortex-a55"
@@ -54,16 +58,16 @@ TUNE_CCARGS:remove:toolchain-clang = "-mcpu=octeontx2"
54TUNE_CCARGS:append:toolchain-clang:riscv32 = " -mno-relax" 58TUNE_CCARGS:append:toolchain-clang:riscv32 = " -mno-relax"
55TUNE_CCARGS:append:toolchain-clang:riscv64 = " -mno-relax" 59TUNE_CCARGS:append:toolchain-clang:riscv64 = " -mno-relax"
56 60
57TUNE_CCARGS:remove:toolchain-clang:powerpc = "-mhard-float" 61# Reconcile some ppc anamolies
58TUNE_CCARGS:remove:toolchain-clang:powerpc = "-mno-spe" 62TUNE_CCARGS:remove:toolchain-clang:powerpc = "-mhard-float -mno-spe"
59 63TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc64 = " -mlong-double-64"
60TUNE_CCARGS:append:toolchain-clang = " -Qunused-arguments" 64TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc64le = " -mlong-double-64"
61TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc64 = " -mlong-double-64 -fno-force-enable-int128" 65TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc = " -mlong-double-64"
62TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc64le = " -mlong-double-64 -fno-force-enable-int128"
63TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc = " -mlong-double-64 -fno-force-enable-int128"
64# usrmerge workaround 66# usrmerge workaround
65TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("DISTRO_FEATURES", "usrmerge", " --dyld-prefix=/usr", "", d)}" 67TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("DISTRO_FEATURES", "usrmerge", " --dyld-prefix=/usr", "", d)}"
66 68
69TUNE_CCARGS:append:toolchain-clang = " -Qunused-arguments"
70
67LDFLAGS:append:toolchain-clang:class-nativesdk:x86-64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-x86-64.so.2" 71LDFLAGS:append:toolchain-clang:class-nativesdk:x86-64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-x86-64.so.2"
68LDFLAGS:append:toolchain-clang:class-nativesdk:x86 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux.so.2" 72LDFLAGS:append:toolchain-clang:class-nativesdk:x86 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux.so.2"
69LDFLAGS:append:toolchain-clang:class-nativesdk:aarch64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-aarch64.so.1" 73LDFLAGS:append:toolchain-clang:class-nativesdk:aarch64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-aarch64.so.1"