diff options
author | Georgy Yakovlev <gyakovlev@gentoo.org> | 2020-01-04 01:07:30 -0800 |
---|---|---|
committer | Georgy Yakovlev <gyakovlev@gentoo.org> | 2020-01-04 10:45:09 -0800 |
commit | 5136179f9356f0bcb34fa5b8c5d0d0817f316ec9 (patch) | |
tree | 59613bf3d74b34435025a8d89abab00800bc313b /eclass/toolchain.eclass | |
parent | media-sound/musescore: removed 3.3.3 (overshadowed by 3.3.4) (diff) | |
download | gentoo-5136179f9356f0bcb34fa5b8c5d0d0817f316ec9.tar.gz gentoo-5136179f9356f0bcb34fa5b8c5d0d0817f316ec9.tar.bz2 gentoo-5136179f9356f0bcb34fa5b8c5d0d0817f316ec9.zip |
toolchain.eclass: enable elfv2 abi on powerpc64-*-musl unconditionally
on ppc64 gcc assumes the following:
from gcc ppc64 manual:
-mabi=elfv1
Change the current ABI to use the ELFv1 ABI. This is the default ABI
for big-endian PowerPC 64-bit Linux. Overriding the default ABI
requires special system support and is likely to fail in spectacular
ways.
-mabi=elfv2
Change the current ABI to use the ELFv2 ABI. This is the default
ABI for little-endian PowerPC 64-bit Linux. Overriding the
default ABI requires special system support and is likely to
fail in spectacular ways.
Since we are taking gcc defaults, let's pass --with-abi=elfv2 on musl
targets
without it it will fail, since musl does not support elfv1 at all.
from musl INSTALL file:
* PowerPC64
* Both little and big endian variants are supported
* Compiler toolchain must provide 64-bit long double, not IBM
double-double or IEEE quad
* Compiler toolchain must use the new (ELFv2) ABI regardless of
whether it is for little or big endian
https://git.musl-libc.org/cgit/musl/tree/INSTALL
Closes: https://github.com/gentoo/gentoo/pull/14234
Closes: https://bugs.gentoo.org/704784
Revieved-by: Sergei Trofimovich <slyfox@gentoo.org>
Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>
Diffstat (limited to 'eclass/toolchain.eclass')
-rw-r--r-- | eclass/toolchain.eclass | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass index 6d469564fa5c..ada2e4496fcb 100644 --- a/eclass/toolchain.eclass +++ b/eclass/toolchain.eclass @@ -1207,6 +1207,14 @@ toolchain_src_configure() { is-flagq -mfloat-gprs=double && confgcc+=( --enable-e500-double ) [[ ${CTARGET//_/-} == *-e500v2-* ]] && confgcc+=( --enable-e500-double ) ;; + ppc64) + # On ppc64 big endian target gcc assumes elfv1 by default, + # and elfv2 on little endian + # but musl does not support elfv1 at all on any endian ppc64 + # see https://git.musl-libc.org/cgit/musl/tree/INSTALL + # https://bugs.gentoo.org/704784 + [[ ${CTARGET} == powerpc64-*-musl ]] && confgcc+=( --with-abi=elfv2 ) + ;; riscv) # Add --with-abi flags to set default ABI confgcc+=( --with-abi=$(gcc-abi-map ${TARGET_DEFAULT_ABI}) ) |