aboutsummaryrefslogtreecommitdiff
path: root/libctf/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'libctf/configure.ac')
-rw-r--r--libctf/configure.ac21
1 files changed, 16 insertions, 5 deletions
diff --git a/libctf/configure.ac b/libctf/configure.ac
index f327d48..ced1aeb 100644
--- a/libctf/configure.ac
+++ b/libctf/configure.ac
@@ -249,7 +249,10 @@ fi
AC_SUBST(HAVE_TCL_TRY)
# Use a version script, if possible, or an -export-symbols-regex otherwise.
+# First figure out the version script flag: then massage the script, if
+# needed.
decommented_version_script=
+no_version_script=
AC_CACHE_CHECK([for linker versioning flags], [ac_cv_libctf_version_script],
[echo 'FOO { global: mai*; local: ctf_fo*; };' > conftest.ver
old_LDFLAGS="$LDFLAGS"
@@ -258,7 +261,7 @@ AC_CACHE_CHECK([for linker versioning flags], [ac_cv_libctf_version_script],
CFLAGS="$CFLAGS -fPIC"
AC_LINK_IFELSE([AC_LANG_SOURCE([[int ctf_foo (void) { return 0; }
int main (void) { return ctf_foo(); }]])],
- [ac_cv_libctf_version_script="-Wl,--version-script='$srcdir/libctf.ver'"],
+ [ac_cv_libctf_version_script="-Wl,--version-script"],
[])
LDFLAGS="$old_LDFLAGS"
@@ -275,19 +278,27 @@ AC_CACHE_CHECK([for linker versioning flags], [ac_cv_libctf_version_script],
if test -z "$ac_cv_libctf_version_script"; then
ac_cv_libctf_version_script='-export-symbols-regex ctf_.*'
+ no_version_script=t
fi
rm -f conftest.ver])
+
+# Ensure that no symbols exist in the version script for libctf-nobfd.so
+# that do not exist in the shared library itself, since some linkers (Solaris)
+# add such symbols with type NOTYPE, and others (LLVM) complain loudly
+# and fail to link.
+grep -v 'libctf only' $srcdir/libctf.ver > libctf-nobfd.ver
+
if test -n "$decommented_version_script"; then
# Solaris's version scripts use shell-style comments rather than the C-style
# used by GNU ld. Use cpp to strip the comments out. (cpp exists under this
# name on all platforms that support ld -z gnu-version-script.)
- # Also ensure that no symbols exist in the version script for libctf-nobfd.so
- # that do not exist in the shared library itself, since some linkers add such
- # symbols with type NOTYPE.
/lib/cpp < $srcdir/libctf.ver > libctf-decommented.ver
- grep -v 'libctf only' $srcdir/libctf.ver | /lib/cpp > libctf-nobfd-decommented.ver
+ /lib/cpp < $srcdir/libctf-nobfd.ver > libctf-nobfd-decommented.ver
VERSION_FLAGS="$ac_cv_libctf_version_script='libctf-decommented.ver'"
VERSION_FLAGS_NOBFD="$ac_cv_libctf_version_script='libctf-nobfd-decommented.ver'"
+elif test -z "$no_version_script"; then
+ VERSION_FLAGS="$ac_cv_libctf_version_script='$srcdir/libctf.ver'"
+ VERSION_FLAGS_NOBFD="$ac_cv_libctf_version_script='libctf-nobfd.ver'"
else
VERSION_FLAGS="$ac_cv_libctf_version_script"
VERSION_FLAGS_NOBFD="$ac_cv_libctf_version_script"