-retain-symbols-file is not what it seems. Update the makefiles

and configury to use --version-script.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105271 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2010-06-01 14:56:56 +00:00
parent c6e1f67b17
commit da612d6226
5 changed files with 50 additions and 31 deletions

View File

@ -344,5 +344,5 @@ NO_MISSING_FIELD_INITIALIZERS = @NO_MISSING_FIELD_INITIALIZERS@
NO_VARIADIC_MACROS = @NO_VARIADIC_MACROS@ NO_VARIADIC_MACROS = @NO_VARIADIC_MACROS@
# Flags supported by the linker. # Flags supported by the linker.
# bfd ld / gold -retain-symbols-file file # bfd ld / gold --version-script=file
HAVE_LINK_RETAIN_SYMBOLS_FILE = @HAVE_LINK_RETAIN_SYMBOLS_FILE@ HAVE_LINK_VERSION_SCRIPT = @HAVE_LINK_VERSION_SCRIPT@

View File

@ -990,8 +990,21 @@ $(NativeExportsFile): $(EXPORTED_SYMBOL_FILE) $(ObjDir)/.dir
clean-local:: clean-local::
-$(Verb) $(RM) -f $(NativeExportsFile) -$(Verb) $(RM) -f $(NativeExportsFile)
else else
ifeq ($(HAVE_LINK_VERSION_SCRIPT),1)
# Gold and BFD ld require a version script rather than a plain list.
NativeExportsFile := $(ObjDir)/$(notdir $(EXPORTED_SYMBOL_FILE)).map
$(NativeExportsFile): $(EXPORTED_SYMBOL_FILE) $(ObjDir)/.dir
$(Verb) echo "{" > $@
$(Verb) grep -q "\<" $< && echo " global:" >> $@ || :
$(Verb) sed -e 's/\>/;/' -e 's/^\</ /' < $< >> $@
$(Verb) echo " local: *;" >> $@
$(Verb) echo "};" >> $@
clean-local::
-$(Verb) $(RM) -f $(NativeExportsFile)
else
NativeExportsFile := $(EXPORTED_SYMBOL_FILE) NativeExportsFile := $(EXPORTED_SYMBOL_FILE)
endif endif
endif
# Now add the linker command-line options to use the native export file. # Now add the linker command-line options to use the native export file.
@ -1000,8 +1013,8 @@ LLVMLibsOptions += -Wl,-exported_symbols_list,$(NativeExportsFile)
endif endif
# gold, bfd ld, etc. # gold, bfd ld, etc.
ifeq ($(HAVE_LINK_RETAIN_SYMBOLS_FILE),1) ifeq ($(HAVE_LINK_VERSION_SCRIPT),1)
LLVMLibsOptions += -Wl,-retain-symbols-file,$(NativeExportsFile) LLVMLibsOptions += -Wl,--version-script,$(NativeExportsFile)
endif endif
endif endif

View File

@ -1039,8 +1039,8 @@ AC_LINK_USE_R
dnl Determine whether the linker supports the -export-dynamic option. dnl Determine whether the linker supports the -export-dynamic option.
AC_LINK_EXPORT_DYNAMIC AC_LINK_EXPORT_DYNAMIC
dnl Determine whether the linker supports the -retain-symbols-file option. dnl Determine whether the linker supports the --version-script option.
AC_LINK_RETAIN_SYMBOLS_FILE AC_LINK_VERSION_SCRIPT
dnl Check for libtool and the library that has dlopen function (which must come dnl Check for libtool and the library that has dlopen function (which must come
dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with

View File

@ -40,14 +40,14 @@ if test "$llvm_cv_link_use_export_dynamic" = yes ; then
]) ])
# #
# Determine if the system can handle the -retain-symbols-file option being # Determine if the system can handle the --version-script option being
# passed to the linker. # passed to the linker.
# #
# This macro is specific to LLVM. # This macro is specific to LLVM.
# #
AC_DEFUN([AC_LINK_RETAIN_SYMBOLS_FILE], AC_DEFUN([AC_LINK_VERSION_SCRIPT],
[AC_CACHE_CHECK([for compiler -Wl,-retain-symbols-file option], [AC_CACHE_CHECK([for compiler -Wl,--version-script option],
[llvm_cv_link_use_retain_symbols_file], [llvm_cv_link_use_version_script],
[ AC_LANG_PUSH([C]) [ AC_LANG_PUSH([C])
oldcflags="$CFLAGS" oldcflags="$CFLAGS"
@ -67,18 +67,21 @@ AC_DEFUN([AC_LINK_RETAIN_SYMBOLS_FILE],
(umask 077 && mkdir "$tmp") (umask 077 && mkdir "$tmp")
} || exit $? } || exit $?
echo "main" > "$tmp/exports" echo "{" > "$tmp/export.map"
echo " global: main;" >> "$tmp/export.map"
echo " local: *;" >> "$tmp/export.map"
echo "};" >> "$tmp/export.map"
CFLAGS="$CFLAGS -Wl,-retain-symbols-file=$tmp/exports" CFLAGS="$CFLAGS -Wl,--version-script=$tmp/export.map"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])], AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],
[llvm_cv_link_use_retain_symbols_file=yes],[llvm_cv_link_use_retain_symbols_file=no]) [llvm_cv_link_use_version_script=yes],[llvm_cv_link_version_script=no])
rm "$tmp/exports" rm "$tmp/export.map"
rmdir "$tmp" rmdir "$tmp"
CFLAGS="$oldcflags" CFLAGS="$oldcflags"
AC_LANG_POP([C]) AC_LANG_POP([C])
]) ])
if test "$llvm_cv_link_use_retain_symbols_file" = yes ; then if test "$llvm_cv_link_use_version_script" = yes ; then
AC_SUBST(HAVE_LINK_RETAIN_SYMBOLS_FILE,1) AC_SUBST(HAVE_LINK_VERSION_SCRIPT,1)
fi fi
]) ])

33
configure vendored
View File

@ -752,7 +752,7 @@ OCAMLOPT
OCAMLDEP OCAMLDEP
OCAMLDOC OCAMLDOC
GAS GAS
HAVE_LINK_RETAIN_SYMBOLS_FILE HAVE_LINK_VERSION_SCRIPT
INSTALL_LTDL_TRUE INSTALL_LTDL_TRUE
INSTALL_LTDL_FALSE INSTALL_LTDL_FALSE
CONVENIENCE_LTDL_TRUE CONVENIENCE_LTDL_TRUE
@ -8905,9 +8905,9 @@ _ACEOF
fi fi
{ echo "$as_me:$LINENO: checking for compiler -Wl,-retain-symbols-file option" >&5 { echo "$as_me:$LINENO: checking for compiler -Wl,--version-script option" >&5
echo $ECHO_N "checking for compiler -Wl,-retain-symbols-file option... $ECHO_C" >&6; } echo $ECHO_N "checking for compiler -Wl,--version-script option... $ECHO_C" >&6; }
if test "${llvm_cv_link_use_retain_symbols_file+set}" = set; then if test "${llvm_cv_link_use_version_script+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
ac_ext=c ac_ext=c
@ -8934,9 +8934,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
(umask 077 && mkdir "$tmp") (umask 077 && mkdir "$tmp")
} || exit $? } || exit $?
echo "main" > "$tmp/exports" echo "{" > "$tmp/export.map"
echo " global: main;" >> "$tmp/export.map"
echo " local: *;" >> "$tmp/export.map"
echo "};" >> "$tmp/export.map"
CFLAGS="$CFLAGS -Wl,-retain-symbols-file=$tmp/exports" CFLAGS="$CFLAGS -Wl,--version-script=$tmp/export.map"
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */ /* confdefs.h. */
_ACEOF _ACEOF
@ -8986,17 +8989,17 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
ac_status=$? ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then (exit $ac_status); }; }; then
llvm_cv_link_use_retain_symbols_file=yes llvm_cv_link_use_version_script=yes
else else
echo "$as_me: failed program was:" >&5 echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5 sed 's/^/| /' conftest.$ac_ext >&5
llvm_cv_link_use_retain_symbols_file=no llvm_cv_link_version_script=no
fi fi
rm -f core conftest.err conftest.$ac_objext \ rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext conftest$ac_exeext conftest.$ac_ext
rm "$tmp/exports" rm "$tmp/export.map"
rmdir "$tmp" rmdir "$tmp"
CFLAGS="$oldcflags" CFLAGS="$oldcflags"
ac_ext=c ac_ext=c
@ -9007,10 +9010,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi fi
{ echo "$as_me:$LINENO: result: $llvm_cv_link_use_retain_symbols_file" >&5 { echo "$as_me:$LINENO: result: $llvm_cv_link_use_version_script" >&5
echo "${ECHO_T}$llvm_cv_link_use_retain_symbols_file" >&6; } echo "${ECHO_T}$llvm_cv_link_use_version_script" >&6; }
if test "$llvm_cv_link_use_retain_symbols_file" = yes ; then if test "$llvm_cv_link_use_version_script" = yes ; then
HAVE_LINK_RETAIN_SYMBOLS_FILE=1 HAVE_LINK_VERSION_SCRIPT=1
fi fi
@ -11384,7 +11387,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 11387 "configure" #line 11390 "configure"
#include "confdefs.h" #include "confdefs.h"
#if HAVE_DLFCN_H #if HAVE_DLFCN_H
@ -21297,7 +21300,7 @@ OCAMLOPT!$OCAMLOPT$ac_delim
OCAMLDEP!$OCAMLDEP$ac_delim OCAMLDEP!$OCAMLDEP$ac_delim
OCAMLDOC!$OCAMLDOC$ac_delim OCAMLDOC!$OCAMLDOC$ac_delim
GAS!$GAS$ac_delim GAS!$GAS$ac_delim
HAVE_LINK_RETAIN_SYMBOLS_FILE!$HAVE_LINK_RETAIN_SYMBOLS_FILE$ac_delim HAVE_LINK_VERSION_SCRIPT!$HAVE_LINK_VERSION_SCRIPT$ac_delim
INSTALL_LTDL_TRUE!$INSTALL_LTDL_TRUE$ac_delim INSTALL_LTDL_TRUE!$INSTALL_LTDL_TRUE$ac_delim
INSTALL_LTDL_FALSE!$INSTALL_LTDL_FALSE$ac_delim INSTALL_LTDL_FALSE!$INSTALL_LTDL_FALSE$ac_delim
CONVENIENCE_LTDL_TRUE!$CONVENIENCE_LTDL_TRUE$ac_delim CONVENIENCE_LTDL_TRUE!$CONVENIENCE_LTDL_TRUE$ac_delim