about summary refs log tree commit diff
path: root/configure
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-06-06 20:45:52 -0400
committerRich Felker <dalias@aerifal.cx>2012-06-06 20:45:52 -0400
commit08f70a30c00c587856a95d5951fb486269e4f651 (patch)
tree65ea4de54f8f71af8d181ed13664cb00a124dcc3 /configure
parent6e0ad2277ae28ba55c4c73bbfd0898d90ececd33 (diff)
downloadmusl-08f70a30c00c587856a95d5951fb486269e4f651.tar.gz
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...
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure21
1 files changed, 20 insertions, 1 deletions
diff --git a/configure b/configure
index e3d97c2c..25b2d805 100755
--- a/configure
+++ b/configure
@@ -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 ="