[PATCH REVIEW 06/13] libctf: rip out BFD_DEPENDENCIES / BFD_LIBADD

Nick Alcock nick.alcock@oracle.com
Fri Dec 18 19:51:40 GMT 2020


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
2020-12-09  Nick Alcock  <nick.alcock@oracle.com>

	* 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/Makefile.am  |  5 ++---
 libctf/Makefile.in  | 15 +++++++--------
 libctf/configure    | 36 +++++++-----------------------------
 libctf/configure.ac | 30 +++++-------------------------
 4 files changed, 21 insertions(+), 65 deletions(-)

The REVIEW flag here is simply because if anyone knows of some weird
platform on which this _DEPENDENCIES dance is necessary, I'd be happy
to know of it.  Daniel Jacobowitz introduced the original kludge back
in 2004, in (what is now) commit 3ba7a1aacf86.

If there is no reason for it, we should probably take it out of
libopcodes too.

diff --git a/libctf/Makefile.am b/libctf/Makefile.am
index fc1f229a4b4..a0d6cae2881 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 23b83b234cb..8037beaf16c 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 b7ca7cd5003..718c646436f 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
@@ -11519,7 +11517,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11522 "configure"
+#line 11520 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11625,7 +11623,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11628 "configure"
+#line 11626 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -13338,10 +13336,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
@@ -13353,39 +13350,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 575da4677f3..3d774a62453 100644
--- a/libctf/configure.ac
+++ b/libctf/configure.ac
@@ -169,10 +169,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
@@ -186,38 +185,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.29.2.250.g8336e49d6f.dirty



More information about the Binutils mailing list