diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-06-06 20:45:52 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-06-06 20:45:52 -0400 |
commit | 08f70a30c00c587856a95d5951fb486269e4f651 (patch) | |
tree | 65ea4de54f8f71af8d181ed13664cb00a124dcc3 | |
parent | 6e0ad2277ae28ba55c4c73bbfd0898d90ececd33 (diff) | |
download | musl-08f70a30c00c587856a95d5951fb486269e4f651.tar.gz musl-08f70a30c00c587856a95d5951fb486269e4f651.tar.bz2 musl-08f70a30c00c587856a95d5951fb486269e4f651.tar.xz musl-08f70a30c00c587856a95d5951fb486269e4f651.zip |
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...
-rwxr-xr-x | configure | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -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 =" |