don't suppress shared libc when linker lacks -Bsymbolic-functions
authorRich Felker <dalias@aerifal.cx>
Sun, 31 Jan 2016 05:40:33 +0000 (00:40 -0500)
committerRich Felker <dalias@aerifal.cx>
Sun, 31 Jan 2016 05:40:33 +0000 (00:40 -0500)
previous work overhauling the dynamic linker made it so that linking
libc with -Bsymbolic-functions was no longer mandatory, but the
configure logic that forced --disable-shared when ld failed to accept
the option was left in place.

this commit removes the hard-coded -Bsymbolic-functions from the
Makefile and changes the configure test to one that simply adds it to
the auto-detected LDFLAGS on success.

Makefile
configure

index 7c3dda4b5a69b79a06e2401dd9d6bf2641b15e53..b2a719db1fa0d300957d77a73fb5dd14fd3a8695 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -159,8 +159,7 @@ obj/%.lo: $(srcdir)/%.c $(GENH) $(IMPH)
 
 lib/libc.so: $(LOBJS) $(LDSO_OBJS)
        $(CC) $(CFLAGS_ALL) $(LDFLAGS_ALL) -nostdlib -shared \
-       -Wl,-e,_dlstart -Wl,-Bsymbolic-functions \
-       -o $@ $(LOBJS) $(LDSO_OBJS) $(LIBCC)
+       -Wl,-e,_dlstart -o $@ $(LOBJS) $(LDSO_OBJS) $(LIBCC)
 
 lib/libc.a: $(AOBJS)
        rm -f $@
index a296f8ab0a10e3b9fdb831a112668ed0d94e5e3e..58f496e0f5f07a3057e8b50a7fcc6676da36e47a 100755 (executable)
--- a/configure
+++ b/configure
@@ -565,15 +565,10 @@ tryldflag LDFLAGS_AUTO -Wl,--no-undefined
 # versions built without shared library support and pcc are broken.
 tryldflag LDFLAGS_AUTO -Wl,--exclude-libs=ALL
 
-test "$shared" = "no" || {
-# Disable dynamic linking if ld is broken and can't do -Bsymbolic-functions
-LDFLAGS_DUMMY=
-tryldflag LDFLAGS_DUMMY -Wl,-Bsymbolic-functions || {
-test "$shared" = "yes" && fail "$0: error: linker cannot build shared library"
-printf "warning: disabling dynamic linking support\n"
-shared=no
-}
-}
+# Linking with -Bsymbolic-functions is no longer mandatory for
+# the dynamic linker to work, but enable it if it works as
+# a linking optimization.
+tryldflag LDFLAGS_AUTO -Wl,-Bsymbolic-functions
 
 # Find compiler runtime library
 test -z "$LIBCC" && tryldflag LIBCC -lgcc && tryldflag LIBCC -lgcc_eh