Skip to content

Commit

Permalink
Link with -rdynamic instead of -Wl,-export-dynamic.
Browse files Browse the repository at this point in the history
Recent versions of the OS X linker support this but follow the existing
OS X linker convention of using an underscore in the option name, i.e.,
-export_dynamic. Rather than changing our configure scripts to check for
that alternate spelling, it is simpler to just use the compiler's -rdynamic
option and let it deal with translating that to the appropriate linker
option. One potential disadvantage of this approach is that the compiler
will typically ignore -rdynamic on platforms where it is not supported, so
the HAVE_LINK_EXPORT_DYNAMIC in config.h will not necessarily show whether
that option has any effect or not. I don't see any in-tree uses of that
macro, so I'm assuming it is OK.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187686 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
bob-wilson committed Aug 2, 2013
1 parent 40bacac commit 244acf3
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 14 deletions.
4 changes: 2 additions & 2 deletions autoconf/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -1239,7 +1239,7 @@ AC_LINK_GET_VERSION
dnl Determine whether the linker supports the -R option.
AC_LINK_USE_R

dnl Determine whether the linker supports the -export-dynamic option.
dnl Determine whether the compiler supports the -rdynamic option.
AC_LINK_EXPORT_DYNAMIC

dnl Determine whether the linker supports the --version-script option.
Expand Down Expand Up @@ -1863,7 +1863,7 @@ AC_SUBST(RPATH)

dnl Determine linker rdynamic flag
if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
RDYNAMIC="-Wl,-export-dynamic"
RDYNAMIC="-rdynamic"
else
RDYNAMIC=""
fi
Expand Down
9 changes: 5 additions & 4 deletions autoconf/m4/link_options.m4
Original file line number Diff line number Diff line change
Expand Up @@ -40,23 +40,24 @@ if test "$llvm_cv_link_use_r" = yes ; then
])

#
# Determine if the system can handle the -R option being passed to the linker.
# Determine if the system can handle the -rdynamic option being passed
# to the compiler.
#
# This macro is specific to LLVM.
#
AC_DEFUN([AC_LINK_EXPORT_DYNAMIC],
[AC_CACHE_CHECK([for compiler -Wl,-export-dynamic option],
[AC_CACHE_CHECK([for compiler -rdynamic option],
[llvm_cv_link_use_export_dynamic],
[ AC_LANG_PUSH([C])
oldcflags="$CFLAGS"
CFLAGS="$CFLAGS -Wl,-export-dynamic"
CFLAGS="$CFLAGS -rdynamic"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],
[llvm_cv_link_use_export_dynamic=yes],[llvm_cv_link_use_export_dynamic=no])
CFLAGS="$oldcflags"
AC_LANG_POP([C])
])
if test "$llvm_cv_link_use_export_dynamic" = yes ; then
AC_DEFINE([HAVE_LINK_EXPORT_DYNAMIC],[1],[Define if you can use -Wl,-export-dynamic.])
AC_DEFINE([HAVE_LINK_EXPORT_DYNAMIC],[1],[Define if you can use -rdynamic.])
fi
])

Expand Down
2 changes: 1 addition & 1 deletion include/llvm/Config/config.h.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@
/* Define to 1 if you have the <limits.h> header file. */
#cmakedefine HAVE_LIMITS_H ${HAVE_LIMITS_H}

/* Define if you can use -Wl,-export-dynamic. */
/* Define if you can use -rdynamic. */
#define HAVE_LINK_EXPORT_DYNAMIC 1

/* Define if you can use -Wl,-R. to pass -R. to the linker, in order to add
Expand Down
2 changes: 1 addition & 1 deletion include/llvm/Config/config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@
/* Define to 1 if you have the `z' library (-lz). */
#undef HAVE_LIBZ

/* Define if you can use -Wl,-export-dynamic. */
/* Define if you can use -rdynamic. */
#undef HAVE_LINK_EXPORT_DYNAMIC

/* Define to 1 if you have the <link.h> header file. */
Expand Down
4 changes: 2 additions & 2 deletions projects/sample/autoconf/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -985,7 +985,7 @@ AC_LINK_GET_VERSION
dnl Determine whether the linker supports the -R option.
AC_LINK_USE_R

dnl Determine whether the linker supports the -export-dynamic option.
dnl Determine whether the compiler supports the -rdynamic option.
AC_LINK_EXPORT_DYNAMIC

dnl Determine whether the linker supports the --version-script option.
Expand Down Expand Up @@ -1464,7 +1464,7 @@ AC_SUBST(RPATH)

dnl Determine linker rdynamic flag
if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
RDYNAMIC="-Wl,-export-dynamic"
RDYNAMIC="-rdynamic"
else
RDYNAMIC=""
fi
Expand Down
9 changes: 5 additions & 4 deletions projects/sample/autoconf/m4/link_options.m4
Original file line number Diff line number Diff line change
Expand Up @@ -40,23 +40,24 @@ if test "$llvm_cv_link_use_r" = yes ; then
])

#
# Determine if the system can handle the -R option being passed to the linker.
# Determine if the system can handle the -rdynamic option being passed
# to the compiler.
#
# This macro is specific to LLVM.
#
AC_DEFUN([AC_LINK_EXPORT_DYNAMIC],
[AC_CACHE_CHECK([for compiler -Wl,-export-dynamic option],
[AC_CACHE_CHECK([for compiler -rdynamic option],
[llvm_cv_link_use_export_dynamic],
[ AC_LANG_PUSH([C])
oldcflags="$CFLAGS"
CFLAGS="$CFLAGS -Wl,-export-dynamic"
CFLAGS="$CFLAGS -rdynamic"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],
[llvm_cv_link_use_export_dynamic=yes],[llvm_cv_link_use_export_dynamic=no])
CFLAGS="$oldcflags"
AC_LANG_POP([C])
])
if test "$llvm_cv_link_use_export_dynamic" = yes ; then
AC_DEFINE([HAVE_LINK_EXPORT_DYNAMIC],[1],[Define if you can use -Wl,-export-dynamic.])
AC_DEFINE([HAVE_LINK_EXPORT_DYNAMIC],[1],[Define if you can use -rdynamic.])
fi
])

Expand Down

0 comments on commit 244acf3

Please sign in to comment.