add configure check for gnu linker hash style setting

some broken distro-provided toolchains have modified gcc to produce
only "gnu hash" dynamic hash table by default. as this is unsupported
by musl, that results in a non-working libc.so. we detect and switch
this on in configure rather than hard-coding it in the Makefile
because it's not supported by old binutils versions, but that might
not even be relevant since old binutils versions already fail from
-Bsymbolic-functions being missing. at some point I may review whether
this should just go in the Makefile...
This commit is contained in:
Rich Felker 2012-06-06 20:45:52 -04:00
parent 6e0ad2277a
commit 08f70a30c0
1 changed files with 20 additions and 1 deletions

21
configure vendored
View File

@ -67,10 +67,27 @@ return 1
fi
}
tryldflag () {
printf "checking whether linker accepts %s... " "$2"
echo "int main() { return 0; }" > "$tmpc"
if "$CC" "$2" -o /dev/null "$tmpc" 2>/dev/null ; then
printf "yes\n"
eval "$1=\"\${$1} \$2\""
eval "$1=\${$1# }"
return 0
else
printf "no\n"
return 1
fi
}
# Beginning of actual script
CFLAGS_C99FSE=
CFLAGS_AUTO=
LDFLAGS_AUTO=
prefix=
exec_prefix=
bindir=
@ -246,6 +263,8 @@ tryflag CFLAGS_AUTO -Wno-unused-but-set-variable
tryflag CFLAGS_AUTO -Wno-unknown-pragmas
fi
tryldflag LDFLAGS_AUTO -Wl,--hash-style=sysv
printf "creating config.mak... "
@ -266,7 +285,7 @@ CC = $CC
CFLAGS= $CFLAGS_AUTO $CFLAGS
CFLAGS_C99FSE = $CFLAGS_C99FSE
CPPFLAGS = $CPPFLAGS
LDFLAGS = $LDFLAGS
LDFLAGS = $LDFLAGS_AUTO $LDFLAGS
EOF
test "x$static" = xno && echo "STATIC_LIBS ="
test "x$shared" = xno && echo "SHARED_LIBS ="