From 1038406a8f6609ad0a449746da70393b0835f699 Mon Sep 17 00:00:00 2001 From: Nick Alcock Date: Tue, 5 Jan 2021 13:25:56 +0000 Subject: [PATCH] libctf: rip out BFD_DEPENDENCIES / BFD_LIBADD This complex morass inherited from libopcodes, which endeavours to implement the effect of specifying ../bfd/libbfd.la in _LIBADD without actually doing so, appears to be working around a libtool bug which as far as I can see is no longer present (i.e., the install directory no longer appears in -L arguments in libtool link-mode invocations, so there is no danger of picking up old libbfds or other dependent libraries). Replaced with a simple reference to libbfd.la in the appropriate place. Also adjusted things a little more so that libctf.la and libctf-nobfd.la are self-contained, even when linking statically. This opens up the possibility of running libtool to link against libctf from inside the (upcoming) testsuite. libctf/ChangeLog 2021-01-05 Nick Alcock * configure.ac (BFD_LIBADD): Remove. (BFD_DEPENDENCIES): Likewise. Remove associated cases. (SHARED_LIBADD): Rename to... (CTF_LIBADD): ... this. Stick in a suitable libiberty even when linking statically. * Makefile.am (libctf_nobfd_la_LIBADD): Adjust accordingly. libctf uses libintl. (libctf_la_LIBADD): Reference libbfd.la directly, not via BFD_LIBADD. (libctf_la_DEPENDENCIES): Remove. * Makefile.in: Regenerate. * configure: Likewise. --- libctf/ChangeLog | 15 +++++++++++++++ libctf/Makefile.am | 5 ++--- libctf/Makefile.in | 15 +++++++-------- libctf/configure | 36 +++++++----------------------------- libctf/configure.ac | 30 +++++------------------------- 5 files changed, 36 insertions(+), 65 deletions(-) diff --git a/libctf/ChangeLog b/libctf/ChangeLog index 8ba75f32e1f..7e4997eb956 100644 --- a/libctf/ChangeLog +++ b/libctf/ChangeLog @@ -1,3 +1,18 @@ +2021-01-05 Nick Alcock + + * configure.ac (BFD_LIBADD): Remove. + (BFD_DEPENDENCIES): Likewise. Remove associated cases. + (SHARED_LIBADD): Rename to... + (CTF_LIBADD): ... this. Stick in a suitable libiberty even when + linking statically. + * Makefile.am (libctf_nobfd_la_LIBADD): Adjust accordingly. + libctf uses libintl. + (libctf_la_LIBADD): Reference libbfd.la directly, not via + BFD_LIBADD. + (libctf_la_DEPENDENCIES): Remove. + * Makefile.in: Regenerate. + * configure: Likewise. + 2021-01-05 Nick Alcock * ctf-decl.c (ctf_decl_push): Exclude slices from the decl stack. diff --git a/libctf/Makefile.am b/libctf/Makefile.am index 32a4f5b5af5..a66ccc1a218 100644 --- a/libctf/Makefile.am +++ b/libctf/Makefile.am @@ -39,7 +39,7 @@ include_HEADERS = noinst_LTLIBRARIES = libctf.la libctf-nobfd.la endif -libctf_nobfd_la_LIBADD = @SHARED_LIBADD@ $(ZLIB) +libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(LIBINTL) $(ZLIB) libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@ libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1 libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \ @@ -50,8 +50,7 @@ if NEED_CTF_QSORT_R libctf_nobfd_la_SOURCES += ctf-qsort_r.c endif -libctf_la_LIBADD = @BFD_LIBADD@ $(libctf_nobfd_la_LIBADD) +libctf_la_LIBADD = ../bfd/libbfd.la $(libctf_nobfd_la_LIBADD) libctf_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=0 -libctf_la_DEPENDENCIES = @BFD_DEPENDENCIES@ libctf_la_LDFLAGS = $(libctf_nobfd_la_LDFLAGS) libctf_la_SOURCES = $(libctf_nobfd_la_SOURCES) ctf-open-bfd.c diff --git a/libctf/Makefile.in b/libctf/Makefile.in index 6bb56918166..0ee67fcc010 100644 --- a/libctf/Makefile.in +++ b/libctf/Makefile.in @@ -163,7 +163,8 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = -libctf_nobfd_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +libctf_nobfd_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) am__libctf_nobfd_la_SOURCES_DIST = ctf-archive.c ctf-dump.c \ ctf-create.c ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c \ ctf-dedup.c ctf-link.c ctf-lookup.c ctf-open.c ctf-sha1.c \ @@ -189,7 +190,8 @@ libctf_nobfd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ -o $@ @INSTALL_LIBBFD_FALSE@am_libctf_nobfd_la_rpath = @INSTALL_LIBBFD_TRUE@am_libctf_nobfd_la_rpath = -rpath $(libdir) -am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) +am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +libctf_la_DEPENDENCIES = ../bfd/libbfd.la $(am__DEPENDENCIES_2) am__libctf_la_SOURCES_DIST = ctf-archive.c ctf-dump.c ctf-create.c \ ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c ctf-dedup.c \ ctf-link.c ctf-lookup.c ctf-open.c ctf-sha1.c ctf-string.c \ @@ -307,8 +309,6 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ -BFD_DEPENDENCIES = @BFD_DEPENDENCIES@ -BFD_LIBADD = @BFD_LIBADD@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -316,6 +316,7 @@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CTF_LIBADD = @CTF_LIBADD@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ @@ -370,7 +371,6 @@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_LDFLAGS = @SHARED_LDFLAGS@ -SHARED_LIBADD = @SHARED_LIBADD@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ @@ -453,16 +453,15 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @ @INSTALL_LIBBFD_FALSE@include_HEADERS = @INSTALL_LIBBFD_TRUE@include_HEADERS = $(INCDIR)/ctf.h $(INCDIR)/ctf-api.h @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libctf.la libctf-nobfd.la -libctf_nobfd_la_LIBADD = @SHARED_LIBADD@ $(ZLIB) +libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(LIBINTL) $(ZLIB) libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@ libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1 libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \ ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c ctf-dedup.c \ ctf-link.c ctf-lookup.c ctf-open.c ctf-sha1.c ctf-string.c \ ctf-subr.c ctf-types.c ctf-util.c $(am__append_1) -libctf_la_LIBADD = @BFD_LIBADD@ $(libctf_nobfd_la_LIBADD) +libctf_la_LIBADD = ../bfd/libbfd.la $(libctf_nobfd_la_LIBADD) libctf_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=0 -libctf_la_DEPENDENCIES = @BFD_DEPENDENCIES@ libctf_la_LDFLAGS = $(libctf_nobfd_la_LDFLAGS) libctf_la_SOURCES = $(libctf_nobfd_la_SOURCES) ctf-open-bfd.c all: config.h diff --git a/libctf/configure b/libctf/configure index fb77403a0cd..0a09b352b02 100755 --- a/libctf/configure +++ b/libctf/configure @@ -636,9 +636,7 @@ am__EXEEXT_TRUE LTLIBOBJS LIBOBJS VERSION_FLAGS -BFD_DEPENDENCIES -BFD_LIBADD -SHARED_LIBADD +CTF_LIBADD SHARED_LDFLAGS NEED_CTF_QSORT_R_FALSE NEED_CTF_QSORT_R_TRUE @@ -11520,7 +11518,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11523 "configure" +#line 11521 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11626,7 +11624,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11629 "configure" +#line 11627 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -13339,10 +13337,9 @@ $as_echo "#define HAVE_O_CLOEXEC 1" >>confdefs.h fi # Horrible hacks to build DLLs on Windows and a shared library elsewhere. -SHARED_LIBADD= + +CTF_LIBADD="-L`pwd`/../libiberty -liberty" SHARED_LDFLAGS= -BFD_LIBADD= -BFD_DEPENDENCIES= if test "$enable_shared" = "yes"; then # When building a shared libctf, link against the pic version of libiberty # so that apps that use libctf won't need libiberty just to satisfy any @@ -13354,39 +13351,20 @@ if test "$enable_shared" = "yes"; then # since libbfd may not pull in the entirety of libiberty. x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'` if test -n "$x"; then - SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty" + CTF_LIBADD="-L`pwd`/../libiberty/pic -liberty" fi case "${host}" in # More hacks to build DLLs on Windows. *-*-cygwin*) SHARED_LDFLAGS="-no-undefined" - SHARED_LIBADD="-L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin" - BFD_LIBADD="-L`pwd`/../bfd -lbfd" - ;; - - *-*-darwin*) - BFD_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.dylib" - BFD_DEPENDENCIES="../bfd/libbfd.la" - ;; - *) - case "$host_vendor" in - hp) - BFD_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.sl" - ;; - *) - BFD_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.so" - ;; - esac - BFD_DEPENDENCIES="../bfd/libbfd.la" + CTF_LIBADD="$CTF_LIBADD -L`pwd`/../intl -lintl -lcygwin" ;; esac fi - - # Use a version script, if possible, or an -export-symbols-regex otherwise. VERSION_FLAGS='-export-symbols-regex ctf_.*' if $LD --help 2>&1 | grep -- --version-script >/dev/null; then diff --git a/libctf/configure.ac b/libctf/configure.ac index 3c57e652c0c..bbdfd63e7c9 100644 --- a/libctf/configure.ac +++ b/libctf/configure.ac @@ -170,10 +170,9 @@ if test $ac_cv_libctf_macro_O_CLOEXEC = yes; then fi # Horrible hacks to build DLLs on Windows and a shared library elsewhere. -SHARED_LIBADD= + +CTF_LIBADD="-L`pwd`/../libiberty -liberty" SHARED_LDFLAGS= -BFD_LIBADD= -BFD_DEPENDENCIES= if test "$enable_shared" = "yes"; then # When building a shared libctf, link against the pic version of libiberty # so that apps that use libctf won't need libiberty just to satisfy any @@ -187,38 +186,19 @@ changequote(,)dnl x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'` changequote([,])dnl if test -n "$x"; then - SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty" + CTF_LIBADD="-L`pwd`/../libiberty/pic -liberty" fi case "${host}" in # More hacks to build DLLs on Windows. *-*-cygwin*) SHARED_LDFLAGS="-no-undefined" - SHARED_LIBADD="-L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin" - BFD_LIBADD="-L`pwd`/../bfd -lbfd" - ;; - - *-*-darwin*) - BFD_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.dylib" - BFD_DEPENDENCIES="../bfd/libbfd.la" - ;; - *) - case "$host_vendor" in - hp) - BFD_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.sl" - ;; - *) - BFD_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.so" - ;; - esac - BFD_DEPENDENCIES="../bfd/libbfd.la" + CTF_LIBADD="$CTF_LIBADD -L`pwd`/../intl -lintl -lcygwin" ;; esac fi AC_SUBST(SHARED_LDFLAGS) -AC_SUBST(SHARED_LIBADD) -AC_SUBST(BFD_LIBADD) -AC_SUBST(BFD_DEPENDENCIES) +AC_SUBST(CTF_LIBADD) # Use a version script, if possible, or an -export-symbols-regex otherwise. VERSION_FLAGS='-export-symbols-regex ctf_.*' -- 2.39.5