diff options
Diffstat (limited to 'libctf')
-rwxr-xr-x | libctf/configure | 21 | ||||
-rw-r--r-- | libctf/configure.ac | 21 |
2 files changed, 32 insertions, 10 deletions
diff --git a/libctf/configure b/libctf/configure index 778c141..1faadef 100755 --- a/libctf/configure +++ b/libctf/configure @@ -16952,7 +16952,10 @@ fi # 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= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker versioning flags" >&5 $as_echo_n "checking for linker versioning flags... " >&6; } if ${ac_cv_libctf_version_script+:} false; then : @@ -16969,7 +16972,7 @@ int ctf_foo (void) { return 0; } int main (void) { return ctf_foo(); } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_libctf_version_script="-Wl,--version-script='$srcdir/libctf.ver'" + ac_cv_libctf_version_script="-Wl,--version-script" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext @@ -16994,22 +16997,30 @@ rm -f core conftest.err conftest.$ac_objext \ 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 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libctf_version_script" >&5 $as_echo "$ac_cv_libctf_version_script" >&6; } + +# 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" 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" |