Avoid redundant linking against libtool convenience libraries.
authorBen Pfaff <blp@cs.stanford.edu>
Sat, 26 Jun 2010 04:33:18 +0000 (21:33 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sat, 26 Jun 2010 04:33:18 +0000 (21:33 -0700)
Both libpspp.la and libpspp-core.la linked directly against libgl.la, and
the UI linked against both libpspp.la and libpspp-core.la.  This works fine
on ELF systems, but with Mach-O on Mac OS X it silently causes duplicate
symbols at runtime.  In particular there are two different copies of
rpl_optarg from libgl.la.  Different code sees different copies of these,
which causes a segfault at runtime whenever anyone invokes pspp with an
option that takes an argument.

Reported by Jeremy Lavergne <jeremy@lavergne.gotdns.org>, with debugging
assistance by Jeremy and by John Darrington.

src/automake.mk
tests/automake.mk

index cfd3a9f5a8114acebd63f6d7f63c8a28534250f0..522664964c4126bbcce5d387d603fbd197ba02ad 100644 (file)
@@ -31,9 +31,7 @@ src_libpspp_la_LIBADD = \
        src/language/liblanguage.la \
        src/math/libpspp-math.la \
        src/output/liboutput.la \
-        $(GSL_LIBS) \
-       gl/libgl.la
-
+        $(GSL_LIBS)
 
 include $(top_srcdir)/src/math/automake.mk
 include $(top_srcdir)/src/output/automake.mk
index 699ce5d1bbe88fe3bc76f89ee19e3f66c335b5d3..f23a0e7773559a52a5684382782003ff5edd7399 100644 (file)
@@ -183,7 +183,7 @@ check_PROGRAMS += \
 
 tests_data_datasheet_test_SOURCES = \
        tests/data/datasheet-test.c
-tests_data_datasheet_test_LDADD = gl/libgl.la src/libpspp-core.la $(LIBINTL) 
+tests_data_datasheet_test_LDADD = src/libpspp-core.la $(LIBINTL) 
 tests_data_datasheet_test_CFLAGS = $(AM_CFLAGS)
 
 tests_libpspp_ll_test_SOURCES = \
@@ -263,7 +263,7 @@ tests_libpspp_range_set_test_CPPFLAGS = $(AM_CPPFLAGS) -DASSERT_LEVEL=10
 
 tests_libpspp_str_test_SOURCES = \
        tests/libpspp/str-test.c
-tests_libpspp_str_test_LDADD = src/libpspp/libpspp.la gl/libgl.la $(LIBINTL) 
+tests_libpspp_str_test_LDADD = gl/libgl.la src/libpspp/libpspp.la $(LIBINTL) 
 
 tests_libpspp_string_map_test_SOURCES = \
        src/libpspp/hash-functions.c \