This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
gold patch committed: Don't test -static if it doesn't work
- From: Ian Lance Taylor <iant at google dot com>
- To: binutils at sourceware dot org
- Date: Fri, 01 Jul 2011 17:19:40 -0700
- Subject: gold patch committed: Don't test -static if it doesn't work
Apparently Solaris does not ship a static version of libc.a, so -static
can not work. This patch to gold changes the testsuite so that if
-static does not work, it is not tested. Committed to mainline.
Ian
2011-07-01 Ian Lance Taylor <iant@google.com>
PR gold/12525
* configure.ac: Test whether static linking works, setting
the automake conditional HAVE_STATIC.
* testsuite/Makefile.am: Disable tests using -static if
HAVE_STATIC is not true.
* configure, testsuite/Makefile.in: Rebuild.
Index: configure.ac
===================================================================
RCS file: /cvs/src/src/gold/configure.ac,v
retrieving revision 1.63
diff -u -r1.63 configure.ac
--- configure.ac 23 Jun 2011 00:46:13 -0000 1.63
+++ configure.ac 2 Jul 2011 00:17:27 -0000
@@ -261,6 +261,17 @@
AM_CONDITIONAL(NATIVE_OR_CROSS_LINKER,
test "x$target_alias" = "x" -o "x$host_alias" = "x$target_alias" -o "x$host_alias" = "x$build_alias")
+dnl Test for whether static linking is supported. Some systems do not
+dnl install static libraries. This only affects the set of tests that
+dnl we run.
+AC_CACHE_CHECK([whether static linking works], [gold_cv_lib_static],
+LDFLAGS_hold=$LDFLAGS
+LDFLAGS="$LDFLAGS -static"
+[AC_LINK_IFELSE([
+AC_LANG_PROGRAM([[void f() { }]])],
+[gold_cv_lib_static=yes], [gold_cv_lib_static=no])])
+AM_CONDITIONAL(HAVE_STATIC, test "$gold_cv_lib_static" = "yes")
+
dnl Some architectures do not support taking pointers of functions
dnl defined in shared libraries except in -fPIC mode. We need to
dnl tell the unittest framework if we're compiling for one of those
Index: testsuite/Makefile.am
===================================================================
RCS file: /cvs/src/src/gold/testsuite/Makefile.am,v
retrieving revision 1.168
diff -u -r1.168 Makefile.am
--- testsuite/Makefile.am 28 Jun 2011 05:39:45 -0000 1.168
+++ testsuite/Makefile.am 2 Jul 2011 00:17:28 -0000
@@ -257,22 +257,28 @@
$(TEST_NM) icf_sht_rel_addend_test > icf_sht_rel_addend_test.stdout
check_PROGRAMS += basic_test
-check_PROGRAMS += basic_static_test
check_PROGRAMS += basic_pic_test
-check_PROGRAMS += basic_static_pic_test
basic_test.o: basic_test.cc
$(CXXCOMPILE) -O0 -c -o $@ $<
basic_test: basic_test.o gcctestdir/ld
$(CXXLINK) -Bgcctestdir/ basic_test.o
+
+if HAVE_STATIC
+check_PROGRAMS += basic_static_test
basic_static_test: basic_test.o gcctestdir/ld
$(CXXLINK) -Bgcctestdir/ -static basic_test.o
+endif
basic_pic_test.o: basic_test.cc
$(CXXCOMPILE) -O0 -c -fpic -o $@ $<
basic_pic_test: basic_pic_test.o gcctestdir/ld
$(CXXLINK) -Bgcctestdir/ basic_pic_test.o
+
+if HAVE_STATIC
+check_PROGRAMS += basic_static_pic_test
basic_static_pic_test: basic_pic_test.o gcctestdir/ld
$(CXXLINK) -Bgcctestdir/ -static basic_pic_test.o
+endif
check_PROGRAMS += basic_pie_test
basic_pie_test.o: basic_test.cc
@@ -281,20 +287,20 @@
$(CXXLINK) -Bgcctestdir/ -pie basic_pie_test.o
check_PROGRAMS += constructor_test
-check_PROGRAMS += constructor_static_test
constructor_test_SOURCES = constructor_test.cc
constructor_test_DEPENDENCIES = gcctestdir/ld
constructor_test_LDFLAGS = -Bgcctestdir/
constructor_test_LDADD =
+if HAVE_STATIC
+check_PROGRAMS += constructor_static_test
constructor_static_test_SOURCES = $(constructor_test_SOURCES)
constructor_static_test_DEPENDENCIES = $(constructor_test_DEPENDENCIES)
constructor_static_test_LDFLAGS = $(constructor_test_LDFLAGS) -static
constructor_static_test_LDADD = $(constructor_test_LDADD)
-
+endif
check_PROGRAMS += two_file_test
-check_PROGRAMS += two_file_static_test
check_PROGRAMS += two_file_pic_test
two_file_test_SOURCES = \
two_file_test_1.cc \
@@ -306,10 +312,13 @@
two_file_test_LDFLAGS = -Bgcctestdir/
two_file_test_LDADD =
+if HAVE_STATIC
+check_PROGRAMS += two_file_static_test
two_file_static_test_SOURCES = $(two_file_test_SOURCES)
two_file_static_test_DEPENDENCIES = $(two_file_test_DEPENDENCIES)
two_file_static_test_LDFLAGS = $(two_file_test_LDFLAGS) -static
two_file_static_test_LDADD = $(two_file_test_LDADD)
+endif
two_file_pic_test_SOURCES = two_file_test_main.cc
two_file_pic_test_DEPENDENCIES = \
@@ -514,7 +523,6 @@
$(LINK) -Bgcctestdir/ -shared common_test_3_pic.o -Wl,--version-script,$(srcdir)/ver_test_2.script
check_PROGRAMS += exception_test
-check_PROGRAMS += exception_static_test
check_PROGRAMS += exception_shared_1_test
check_PROGRAMS += exception_shared_2_test
check_PROGRAMS += exception_same_shared_test
@@ -540,10 +548,13 @@
exception_test_LDFLAGS = -Bgcctestdir/
exception_test_LDADD =
+if HAVE_STATIC
+check_PROGRAMS += exception_static_test
exception_static_test_SOURCES = $(exception_test_SOURCES)
exception_static_test_DEPENDENCIES = $(exception_test_DEPENDENCIES)
exception_static_test_LDFLAGS = $(exception_test_LDFLAGS) -static
exception_static_test_LDADD = $(exception_test_LDADD)
+endif
exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc
exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so
@@ -778,6 +789,7 @@
endif TLS_GNU2_DIALECT
+if HAVE_STATIC
if STATIC_TLS
check_PROGRAMS += tls_static_test
check_PROGRAMS += tls_static_pic_test
@@ -792,6 +804,7 @@
tls_static_pic_test_LDFLAGS = $(tls_pic_test_LDFLAGS) -static
tls_static_pic_test_LDADD = $(tls_pic_test_LDADD)
endif
+endif
if FN_PTRS_IN_SO_WITHOUT_PIC
check_PROGRAMS += tls_shared_nonpic_test
@@ -1615,6 +1628,7 @@
ifuncmain1pie.o: ifuncmain1.c
$(COMPILE) -c -fpie -o $@ $<
+if HAVE_STATIC
check_PROGRAMS += ifuncmain1static
ifuncmain1static_SOURCES = ifuncmain1.c
ifuncmain1static_DEPENDENCIES = gcctestdir/ld ifuncdep1.o
@@ -1624,6 +1638,7 @@
check_PROGRAMS += ifuncmain1picstatic
ifuncmain1picstatic: ifuncmain1pic.o ifuncmod1.o gcctestdir/ld
$(LINK) -Bgcctestdir/ -static ifuncmain1pic.o ifuncmod1.o
+endif
check_PROGRAMS += ifuncmain1
ifuncmain1_SOURCES = ifuncmain1.c
@@ -1671,6 +1686,7 @@
ifuncdep2pic.o: ifuncdep2.c
$(COMPILE) -c -fpic -o $@ $<
+if HAVE_STATIC
check_PROGRAMS += ifuncmain2static
ifuncmain2static_SOURCES = ifuncmain2.c ifuncdep2.c
ifuncmain2static_DEPENDENCIES = gcctestdir/ld
@@ -1680,6 +1696,7 @@
check_PROGRAMS += ifuncmain2picstatic
ifuncmain2picstatic: ifuncmain2pic.o ifuncdep2pic.o gcctestdir/ld
$(LINK) -Bgcctestdir/ -static ifuncmain2pic.o ifuncdep2pic.o
+endif
check_PROGRAMS += ifuncmain2
ifuncmain2_SOURCES = ifuncmain2.c ifuncdep2.c
@@ -1705,6 +1722,7 @@
ifuncmain4pic.o: ifuncmain4.c
$(COMPILE) -c -fpic -o $@ $<
+if HAVE_STATIC
check_PROGRAMS += ifuncmain4static
ifuncmain4static_SOURCES = ifuncmain4.c
ifuncmain4static_DEPENDENCIES = gcctestdir/ld
@@ -1714,6 +1732,7 @@
check_PROGRAMS += ifuncmain4picstatic
ifuncmain4picstatic: ifuncmain4pic.o gcctestdir/ld
$(LINK) -Bgcctestdir/ -static ifuncmain4pic.o
+endif
check_PROGRAMS += ifuncmain4
ifuncmain4_SOURCES = ifuncmain4.c
@@ -1735,6 +1754,7 @@
ifuncdep5.o: ifuncmod5.c
$(COMPILE) -c -o $@ $<
+if HAVE_STATIC
check_PROGRAMS += ifuncmain5static
ifuncmain5static_SOURCES = ifuncmain5.c
ifuncmain5static_DEPENDENCIES = gcctestdir/ld ifuncdep5.o
@@ -1744,6 +1764,7 @@
check_PROGRAMS += ifuncmain5picstatic
ifuncmain5picstatic: ifuncmain5pic.o ifuncmod5.o gcctestdir/ld
$(LINK) -Bgcctestdir/ -static ifuncmain5pic.o ifuncmod5.o
+endif
check_PROGRAMS += ifuncmain5
ifuncmain5_SOURCES = ifuncmain5.c
@@ -1781,6 +1802,7 @@
ifuncmain7pie.o: ifuncmain7.c
$(COMPILE) -c -fpie -o $@ $<
+if HAVE_STATIC
check_PROGRAMS += ifuncmain7static
ifuncmain7static_SOURCES = ifuncmain7.c
ifuncmain7static_DEPENDENCIES = gcctestdir/ld
@@ -1790,6 +1812,7 @@
check_PROGRAMS += ifuncmain7picstatic
ifuncmain7picstatic: ifuncmain7pic.o gcctestdir/ld
$(LINK) -Bgcctestdir/ -static ifuncmain7pic.o
+endif
check_PROGRAMS += ifuncmain7
ifuncmain7_SOURCES = ifuncmain7.c