diff options
Diffstat (limited to 'libctf/configure.ac')
-rw-r--r-- | libctf/configure.ac | 21 |
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" |