This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]