[llvm-commits] [llvm] r101560 - in /llvm/trunk: Makefile.config.in Makefile.rules autoconf/configure.ac autoconf/m4/link_options.m4

Nick Lewycky nicholas at mxc.ca
Fri Apr 16 21:42:42 PDT 2010


Dan Gohman wrote:
> Author: djg
> Date: Fri Apr 16 17:58:15 2010
> New Revision: 101560
>
> URL: http://llvm.org/viewvc/llvm-project?rev=101560&view=rev
> Log:
> Add an autoconf check for -retain-symbols-file and conditionalize
> use of that option with it. This eliminates an imprecise "Linux"
> test, and should help support old versions of gold.

Thanks Dan!!

> Modified:
>      llvm/trunk/Makefile.config.in
>      llvm/trunk/Makefile.rules
>      llvm/trunk/autoconf/configure.ac
>      llvm/trunk/autoconf/m4/link_options.m4
>
> Modified: llvm/trunk/Makefile.config.in
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.config.in?rev=101560&r1=101559&r2=101560&view=diff
> ==============================================================================
> --- llvm/trunk/Makefile.config.in (original)
> +++ llvm/trunk/Makefile.config.in Fri Apr 16 17:58:15 2010
> @@ -337,3 +337,7 @@
>   NO_MISSING_FIELD_INITIALIZERS = @NO_MISSING_FIELD_INITIALIZERS@
>   # -Wno-variadic-macros
>   NO_VARIADIC_MACROS = @NO_VARIADIC_MACROS@
> +
> +# Flags supported by the linker.
> +# bfd ld / gold -retain-symbols-file file
> +HAVE_LINK_RETAIN_SYMBOLS_FILE = @HAVE_LINK_RETAIN_SYMBOLS_FILE@
>
> Modified: llvm/trunk/Makefile.rules
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.rules?rev=101560&r1=101559&r2=101560&view=diff
> ==============================================================================
> --- llvm/trunk/Makefile.rules (original)
> +++ llvm/trunk/Makefile.rules Fri Apr 16 17:58:15 2010
> @@ -561,7 +561,7 @@
>     # Get "4" out of 10.4 for later pieces in the makefile.
>     DARWIN_MAJVERS := $(shell echo $(DARWIN_VERSION)| sed -E 's/10.([0-9]).*/\1/')
>
> -  SharedLinkOptions=-Wl,-flat_namespace -Wl,-undefined -Wl,suppress \
> +  SharedLinkOptions=-Wl,-flat_namespace -Wl,-undefined,suppress \
>                       -dynamiclib
>     ifneq ($(ARCH),ARM)
>       SharedLinkOptions += -mmacosx-version-min=$(DARWIN_VERSION)
> @@ -990,13 +990,12 @@
>   # Now add the linker command-line options to use the native export file.
>
>   ifeq ($(HOST_OS),Darwin)
> -LLVMLibsOptions += -Wl,-exported_symbols_list -Wl,$(NativeExportsFile)
> +LLVMLibsOptions += -Wl,-exported_symbols_list,$(NativeExportsFile)
>   endif
>
> -# This isn't really Linux-specific; it works at least on gold and bfd ld, but
> -# there's no convenient way to detect it.
> -ifeq ($(HOST_OS),Linux)
> -LLVMLibsOptions += -Wl,-retain-symbols-file -Wl,$(NativeExportsFile)
> +# gold, bfd ld, etc.
> +ifeq ($(HAVE_LINK_RETAIN_SYMBOLS_FILE),1)
> +LLVMLibsOptions += -Wl,-retain-symbols-file,$(NativeExportsFile)
>   endif
>
>   endif
> @@ -1297,7 +1296,7 @@
>
>   # Tiger tools don't support this.
>   ifneq ($(DARWIN_MAJVERS),4)
> -LD.Flags += -Wl,-exported_symbol -Wl,_main
> +LD.Flags += -Wl,-exported_symbol,_main
>   endif
>   endif
>
>
> Modified: llvm/trunk/autoconf/configure.ac
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=101560&r1=101559&r2=101560&view=diff
> ==============================================================================
> --- llvm/trunk/autoconf/configure.ac (original)
> +++ llvm/trunk/autoconf/configure.ac Fri Apr 16 17:58:15 2010
> @@ -1022,6 +1022,9 @@
>   dnl Determine whether the linker supports the -export-dynamic option.
>   AC_LINK_EXPORT_DYNAMIC
>
> +dnl Determine whether the linker supports the -retain-symbols-file option.
> +AC_LINK_RETAIN_SYMBOLS_FILE
> +
>   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 libtool).
>
> Modified: llvm/trunk/autoconf/m4/link_options.m4
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/m4/link_options.m4?rev=101560&r1=101559&r2=101560&view=diff
> ==============================================================================
> --- llvm/trunk/autoconf/m4/link_options.m4 (original)
> +++ llvm/trunk/autoconf/m4/link_options.m4 Fri Apr 16 17:58:15 2010
> @@ -39,3 +39,46 @@
>     fi
>   ])
>
> +#
> +# Determine if the system can handle the -retain-symbols-file option being
> +# passed to the linker.
> +#
> +# This macro is specific to LLVM.
> +#
> +AC_DEFUN([AC_LINK_RETAIN_SYMBOLS_FILE],
> +[AC_CACHE_CHECK([for compiler -Wl,-retain-symbols-file option],
> +                [llvm_cv_link_use_retain_symbols_file],
> +[ AC_LANG_PUSH([C])
> +  oldcflags="$CFLAGS"
> +
> +  # The following code is from the autoconf manual,
> +  # "11.13: Limitations of Usual Tools".
> +  # Create a temporary directory $tmp in $TMPDIR (default /tmp).
> +  # Use mktemp if possible; otherwise fall back on mkdir,
> +  # with $RANDOM to make collisions less likely.
> +  : ${TMPDIR=/tmp}
> +  {
> +    tmp=`
> +      (umask 077&&  mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
> +    `&&
> +    test -n "$tmp"&&  test -d "$tmp"
> +  } || {
> +    tmp=$TMPDIR/foo$$-$RANDOM
> +    (umask 077&&  mkdir "$tmp")
> +  } || exit $?
> +
> +  echo "main">  "$tmp/exports"
> +
> +  CFLAGS="$CFLAGS -Wl,-retain-symbols-file=$tmp/exports"
> +  AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[int main() { return 0; }]])],
> +    [llvm_cv_link_use_retain_symbols_file=yes],[llvm_cv_link_use_retain_symbols_file=no])
> +  rm "$tmp/exports"
> +  rmdir "$tmp"
> +  CFLAGS="$oldcflags"
> +  AC_LANG_POP([C])
> +])
> +if test "$llvm_cv_link_use_retain_symbols_file" = yes ; then
> +  AC_SUBST(HAVE_LINK_RETAIN_SYMBOLS_FILE,1)
> +  fi
> +])
> +
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>




More information about the llvm-commits mailing list