[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