aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-07-14 06:52:05 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2013-07-14 10:41:09 +0000
commit7a60b0357ec90abd767ebe9b301aeaa795288864 (patch)
treee58d7cdd119438be25a89287537a92934dfa1706
parent47c71fbe7583fa29f604f5010bc6218d3f5856e3 (diff)
downloadaports-7a60b0357ec90abd767ebe9b301aeaa795288864.tar.bz2
aports-7a60b0357ec90abd767ebe9b301aeaa795288864.tar.xz
main/gcc: disable ifunc attrs, dont disable symvers for uclibc
Seems gcc 4.8.1 started using ifunc attributes in libatomic which go uses heavily. This requires ldso support which is not done in uclibc nor musl. Only in glibc at the time. GCC configure does not detect it properly. Also, do not disable symvers for uClibc - otherwise we break ABI for libstdc++
-rw-r--r--main/gcc/APKBUILD16
1 files changed, 12 insertions, 4 deletions
diff --git a/main/gcc/APKBUILD b/main/gcc/APKBUILD
index 0e64642594..9275ad514c 100644
--- a/main/gcc/APKBUILD
+++ b/main/gcc/APKBUILD
@@ -7,7 +7,7 @@ _specs_gcc_ver=4.4.3
_uclibc_abiver=0.9.32
-pkgrel=0
+pkgrel=1
pkgdesc="The GNU Compiler Collection"
url="http://gcc.gnu.org"
arch="all"
@@ -147,7 +147,7 @@ prepare() {
build() {
local _dynamic_linker=
local _arch_configure=
- local _symvers="--disable-symvers"
+ local _symvers=
cd "$_gccdir"
export CFLAGS="-fno-stack-protector $CFLAGS"
[ -z "$CBUILD" ] && CBUILD="$CHOST"
@@ -162,13 +162,21 @@ build() {
;;
x86_64-*-gnu)
_dynamic_linker="--with-dynamic-linker=ld-linux-x86-64.so.2"
- _symvers=
;;
*-gnu)
_dynamic_linker="--with-dynamic-linker=ld-linux.so.2"
- _symvers=
;;
*) _dynamic_linker=
+ _symvers="--disable-symvers"
+ ;;
+ esac
+
+ # disable symvers for non-glibc (uclibc/musl)
+ # ifunc attributes detection is broke in configure script so force
+ # disable it for non-glibc. It is used heavily by Go lang.
+ case "$CHOST" in
+ *-gnu) ;;
+ *) export libat_cv_have_ifunc=no
;;
esac