summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2017-09-10 10:45:39 +0100
committerSergei Trofimovich <slyfox@gentoo.org>2017-09-10 11:12:18 +0100
commit604495b43aa4a5b7aed2044b84ca0d88e600d1df (patch)
treea063e151d13077baa0e0cffd81b6417b4668d744
parentsys-libs/glibc: Fix part of the test build system, bug 623548 (diff)
downloadgentoo-604495b43aa4a5b7aed2044b84ca0d88e600d1df.tar.gz
gentoo-604495b43aa4a5b7aed2044b84ca0d88e600d1df.tar.bz2
gentoo-604495b43aa4a5b7aed2044b84ca0d88e600d1df.zip
glibc: disable stack protector on ARCH=ppc
Currently gcc on powerpc32 generates invalid code for __builtin_return_address(0) calls. Normally programs don't do that but malloc() hooks in glibc do: Bug: https://gcc.gnu.org/PR81996 Bug: https://bugs.gentoo.org/629054 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
-rw-r--r--eclass/toolchain-glibc.eclass14
-rw-r--r--sys-libs/glibc/glibc-2.26-r1.ebuild14
2 files changed, 26 insertions, 2 deletions
diff --git a/eclass/toolchain-glibc.eclass b/eclass/toolchain-glibc.eclass
index 33f27ccf46eb..98e394659cf8 100644
--- a/eclass/toolchain-glibc.eclass
+++ b/eclass/toolchain-glibc.eclass
@@ -795,7 +795,19 @@ glibc_do_configure() {
fi
if version_is_at_least 2.25 ; then
- myconf+=( --enable-stack-protector=all )
+ case ${CTARGET} in
+ powerpc-*)
+ # Currently gcc on powerpc32 generates invalid code for
+ # __builtin_return_address(0) calls. Normally programs
+ # don't do that but malloc hooks in glibc do:
+ # https://gcc.gnu.org/PR81996
+ # https://bugs.gentoo.org/629054
+ myconf+=( --enable-stack-protector=no )
+ ;;
+ *)
+ myconf+=( --enable-stack-protector=all )
+ ;;
+ esac
fi
if version_is_at_least 2.25 ; then
diff --git a/sys-libs/glibc/glibc-2.26-r1.ebuild b/sys-libs/glibc/glibc-2.26-r1.ebuild
index fbe7444f9488..b852aba96bc6 100644
--- a/sys-libs/glibc/glibc-2.26-r1.ebuild
+++ b/sys-libs/glibc/glibc-2.26-r1.ebuild
@@ -315,7 +315,19 @@ glibc_do_configure() {
[[ -d ports ]] && addons+=",ports"
popd > /dev/null
- myconf+=( --enable-stack-protector=all )
+ case ${CTARGET} in
+ powerpc-*)
+ # Currently gcc on powerpc32 generates invalid code for
+ # __builtin_return_address(0) calls. Normally programs
+ # don't do that but malloc hooks in glibc do:
+ # https://gcc.gnu.org/PR81996
+ # https://bugs.gentoo.org/629054
+ myconf+=( --enable-stack-protector=no )
+ ;;
+ *)
+ myconf+=( --enable-stack-protector=all )
+ ;;
+ esac
myconf+=( --enable-stackguard-randomization )
[[ $(tc-is-softfloat) == "yes" ]] && myconf+=( --without-fp )