summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2022-03-12 15:16:44 -0800
committerKhem Raj <raj.khem@gmail.com>2023-09-08 09:08:54 -0700
commit6db7a60554bc4f828c6776ac6ea3c1d587a9c7e0 (patch)
tree741b0addec61d0a1e117defa977d6c8688e1664f
parent7b64db0047976abfbeab7dadfe8b4fd28ea695f2 (diff)
downloadmeta-clang-6db7a60554bc4f828c6776ac6ea3c1d587a9c7e0.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> (cherry picked from commit 321edad13fd9275fb08700252d58a38b2b400670)
-rw-r--r--classes/clang.bbclass18
1 files changed, 11 insertions, 7 deletions
diff --git a/classes/clang.bbclass b/classes/clang.bbclass
index b696f62..5517ca6 100644
--- a/classes/clang.bbclass
+++ b/classes/clang.bbclass
@@ -42,6 +42,10 @@ LDFLAGS:append:toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}"
42TUNE_CCARGS:remove:toolchain-clang = "-meb" 42TUNE_CCARGS:remove:toolchain-clang = "-meb"
43TUNE_CCARGS:remove:toolchain-clang = "-mel" 43TUNE_CCARGS:remove:toolchain-clang = "-mel"
44TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}" 44TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}"
45# Qemu uses 7400 but fails to emulate VSX/altivec instrs e.g. xor and fails with illegal instructions especially on musl/strspn.c
46# Workaround the qemu limitation by disable altivec in code generation, gcc does not use altivec, so code generated with clang is
47# superior but sadly qemu starts to puke :(, maybe it will work ok on real hardware !!
48TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "ppc7400", " -mno-altivec", "", d)}"
45 49
46# Clang does not yet support big.LITTLE performance tunes, so use the LITTLE for tunes 50# Clang does not yet support big.LITTLE performance tunes, so use the LITTLE for tunes
47TUNE_CCARGS:remove:toolchain-clang = "-mtune=cortex-a57.cortex-a53 -mtune=cortex-a72.cortex-a53 -mtune=cortex-a15.cortex-a7 -mtune=cortex-a17.cortex-a7 -mtune=cortex-a72.cortex-a35 -mtune=cortex-a73.cortex-a53 -mtune=cortex-a75.cortex-a55 -mtune=cortex-a76.cortex-a55" 51TUNE_CCARGS:remove:toolchain-clang = "-mtune=cortex-a57.cortex-a53 -mtune=cortex-a72.cortex-a53 -mtune=cortex-a15.cortex-a7 -mtune=cortex-a17.cortex-a7 -mtune=cortex-a72.cortex-a35 -mtune=cortex-a73.cortex-a53 -mtune=cortex-a75.cortex-a55 -mtune=cortex-a76.cortex-a55"
@@ -57,16 +61,16 @@ TUNE_CCARGS:remove:toolchain-clang = "-mcpu=octeontx2"
57TUNE_CCARGS:append:toolchain-clang:riscv32 = " -mno-relax" 61TUNE_CCARGS:append:toolchain-clang:riscv32 = " -mno-relax"
58TUNE_CCARGS:append:toolchain-clang:riscv64 = " -mno-relax" 62TUNE_CCARGS:append:toolchain-clang:riscv64 = " -mno-relax"
59 63
60TUNE_CCARGS:remove:toolchain-clang:powerpc = "-mhard-float" 64# Reconcile some ppc anamolies
61TUNE_CCARGS:remove:toolchain-clang:powerpc = "-mno-spe" 65TUNE_CCARGS:remove:toolchain-clang:powerpc = "-mhard-float -mno-spe"
62 66TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc64 = " -mlong-double-64"
63TUNE_CCARGS:append:toolchain-clang = " -Qunused-arguments" 67TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc64le = " -mlong-double-64"
64TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc64 = " -mlong-double-64 -fno-force-enable-int128" 68TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc = " -mlong-double-64"
65TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc64le = " -mlong-double-64 -fno-force-enable-int128"
66TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc = " -mlong-double-64 -fno-force-enable-int128"
67# usrmerge workaround 69# usrmerge workaround
68TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("DISTRO_FEATURES", "usrmerge", " --dyld-prefix=/usr", "", d)}" 70TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("DISTRO_FEATURES", "usrmerge", " --dyld-prefix=/usr", "", d)}"
69 71
72TUNE_CCARGS:append:toolchain-clang = " -Qunused-arguments"
73
70LDFLAGS:append:toolchain-clang:class-nativesdk:x86-64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-x86-64.so.2" 74LDFLAGS: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 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux.so.2" 75LDFLAGS:append:toolchain-clang:class-nativesdk:x86 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux.so.2"
72LDFLAGS:append:toolchain-clang:class-nativesdk:aarch64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-aarch64.so.1" 76LDFLAGS:append:toolchain-clang:class-nativesdk:aarch64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-aarch64.so.1"