aboutsummaryrefslogtreecommitdiff
path: root/libsanitizer
diff options
context:
space:
mode:
Diffstat (limited to 'libsanitizer')
-rw-r--r--libsanitizer/asan/Makefile.am7
-rw-r--r--libsanitizer/asan/Makefile.in7
-rwxr-xr-xlibsanitizer/configure133
-rw-r--r--libsanitizer/configure.ac2
-rw-r--r--libsanitizer/hwasan/Makefile.am6
-rw-r--r--libsanitizer/hwasan/Makefile.in5
-rw-r--r--libsanitizer/lsan/Makefile.am8
-rw-r--r--libsanitizer/lsan/Makefile.in8
-rw-r--r--libsanitizer/tsan/Makefile.am6
-rw-r--r--libsanitizer/tsan/Makefile.in5
-rw-r--r--libsanitizer/ubsan/Makefile.am7
-rw-r--r--libsanitizer/ubsan/Makefile.in7
12 files changed, 181 insertions, 20 deletions
diff --git a/libsanitizer/asan/Makefile.am b/libsanitizer/asan/Makefile.am
index 4f802f7..223d3e0 100644
--- a/libsanitizer/asan/Makefile.am
+++ b/libsanitizer/asan/Makefile.am
@@ -60,7 +60,12 @@ libasan_la_LIBADD += $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
endif
libasan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDFLAGS)
-libasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_libasan)
+if ENABLE_DARWIN_AT_RPATH
+libasan_darwin_rpath = -Wc,-nodefaultrpaths
+libasan_darwin_rpath += -Wl,-rpath,@loader_path
+endif
+libasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(link_libasan) $(libasan_darwin_rpath)
libasan_preinit.o: asan_preinit.o
cp $< $@
diff --git a/libsanitizer/asan/Makefile.in b/libsanitizer/asan/Makefile.in
index 7833a9a..e88e5e0 100644
--- a/libsanitizer/asan/Makefile.in
+++ b/libsanitizer/asan/Makefile.in
@@ -465,7 +465,12 @@ libasan_la_LIBADD = \
$(top_builddir)/sanitizer_common/libsanitizer_common.la \
$(top_builddir)/lsan/libsanitizer_lsan.la $(am__append_2) \
$(am__append_3) $(LIBSTDCXX_RAW_CXX_LDFLAGS)
-libasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_libasan)
+@ENABLE_DARWIN_AT_RPATH_TRUE@libasan_darwin_rpath = \
+@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
+@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
+libasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(link_libasan) $(libasan_darwin_rpath)
+
# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
diff --git a/libsanitizer/configure b/libsanitizer/configure
index 0805d25..2edd5c3 100755
--- a/libsanitizer/configure
+++ b/libsanitizer/configure
@@ -666,6 +666,8 @@ LSAN_SUPPORTED_FALSE
LSAN_SUPPORTED_TRUE
TSAN_SUPPORTED_FALSE
TSAN_SUPPORTED_TRUE
+ENABLE_DARWIN_AT_RPATH_FALSE
+ENABLE_DARWIN_AT_RPATH_TRUE
enable_static
enable_shared
CXXCPP
@@ -817,6 +819,7 @@ with_pic
enable_fast_install
with_gnu_ld
enable_libtool_lock
+enable_darwin_at_rpath
enable_werror
with_gcc_major_version_only
enable_cet
@@ -1471,6 +1474,9 @@ Optional Features:
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--disable-libtool-lock avoid locking (might break parallel builds)
+ --enable-darwin-at-rpath
+ install libraries with @rpath/library-name, requires
+ rpaths to be added to executables
--disable-werror disable building with -Werror
--enable-cet enable Intel CET in target libraries [default=auto]
@@ -8891,7 +8897,7 @@ $as_echo "$lt_cv_ld_force_load" >&6; }
# darwin 5.x (macOS 10.1) onwards we only need to adjust when the
# deployment target is forced to an earlier version.
case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host in
- UNSET,*-darwin[89]*|UNSET,*-darwin[12][0123456789]*)
+ UNSET,*-darwin[89]*|UNSET,*-darwin[12][0-9]*)
;;
10.[012][,.]*)
_lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
@@ -10596,6 +10602,49 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
darwin* | rhapsody*)
+
+ # Publish an arg to allow the user to select that Darwin host (and target)
+ # libraries should be given install-names like @rpath/libfoo.dylib. This
+ # requires that the user of the library then adds an 'rpath' to the DSO that
+ # needs access.
+ # NOTE: there are defaults below, for systems that support rpaths. The person
+ # configuring can override the defaults for any system version that supports
+ # them - they are, however, forced off for system versions without support.
+ # Check whether --enable-darwin-at-rpath was given.
+if test "${enable_darwin_at_rpath+set}" = set; then :
+ enableval=$enable_darwin_at_rpath; if test "x$enable_darwin_at_rpath" = "xyes"; then
+ # This is not supported before macOS 10.5 / Darwin9.
+ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host_os in
+ UNSET,darwin[4-8]*|UNSET,rhapsody*|10.[0-4][,.]*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Darwin @rpath library names are incompatible with OSX versions earlier than 10.5 (rpaths disabled)" >&5
+$as_echo "$as_me: WARNING: Darwin @rpath library names are incompatible with OSX versions earlier than 10.5 (rpaths disabled)" >&2;}
+ enable_darwin_at_rpath=no
+ ;;
+ esac
+ fi
+else
+ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host_os in
+ # As above, before 10.5 / Darwin9 this does not work.
+ UNSET,darwin[4-8]*|UNSET,rhapsody*|10.[0-4][,.]*)
+ enable_darwin_at_rpath=no
+ ;;
+
+ # We cannot build and test reliably on macOS 10.11+ (Darwin15+) without use
+ # of rpaths, since runpaths set via DYLD_LIBRARY_PATH are elided by key
+ # system executables (e.g. /bin/sh). Force rpaths on for these systems.
+ UNSET,darwin1[5-9]*|UNSET,darwin2*|10.1[1-9][,.]*|1[1-9].*[,.]* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: @rpath library names are needed on macOS versions later than 10.11 (rpaths have been enabled)" >&5
+$as_echo "$as_me: @rpath library names are needed on macOS versions later than 10.11 (rpaths have been enabled)" >&6;}
+ enable_darwin_at_rpath=yes
+ ;;
+ # NOTE: we are not (yet) doing anything for 10.5 .. 10.10, since they can
+ # work with either DYLD_LIBRARY_PATH or embedded rpaths.
+
+ esac
+
+fi
+
+
archive_cmds_need_lc=no
hardcode_direct=no
hardcode_automatic=yes
@@ -10613,9 +10662,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
esac
if test "$_lt_dar_can_shared" = "yes"; then
output_verbose_link_cmd=func_echo_all
- archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _lt_install_name='\$rpath/\$soname'
+ if test "x$enable_darwin_at_rpath" = "xyes"; then
+ _lt_install_name='@rpath/\$soname'
+ fi
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring ${_lt_dsymutil}"
module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring ${_lt_dar_export_syms}${_lt_dsymutil}"
module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
else
@@ -12421,7 +12474,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12424 "configure"
+#line 12477 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12527,7 +12580,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12530 "configure"
+#line 12583 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13403,6 +13456,49 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
darwin* | rhapsody*)
+
+ # Publish an arg to allow the user to select that Darwin host (and target)
+ # libraries should be given install-names like @rpath/libfoo.dylib. This
+ # requires that the user of the library then adds an 'rpath' to the DSO that
+ # needs access.
+ # NOTE: there are defaults below, for systems that support rpaths. The person
+ # configuring can override the defaults for any system version that supports
+ # them - they are, however, forced off for system versions without support.
+ # Check whether --enable-darwin-at-rpath was given.
+if test "${enable_darwin_at_rpath+set}" = set; then :
+ enableval=$enable_darwin_at_rpath; if test "x$enable_darwin_at_rpath" = "xyes"; then
+ # This is not supported before macOS 10.5 / Darwin9.
+ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host_os in
+ UNSET,darwin[4-8]*|UNSET,rhapsody*|10.[0-4][,.]*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Darwin @rpath library names are incompatible with OSX versions earlier than 10.5 (rpaths disabled)" >&5
+$as_echo "$as_me: WARNING: Darwin @rpath library names are incompatible with OSX versions earlier than 10.5 (rpaths disabled)" >&2;}
+ enable_darwin_at_rpath=no
+ ;;
+ esac
+ fi
+else
+ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host_os in
+ # As above, before 10.5 / Darwin9 this does not work.
+ UNSET,darwin[4-8]*|UNSET,rhapsody*|10.[0-4][,.]*)
+ enable_darwin_at_rpath=no
+ ;;
+
+ # We cannot build and test reliably on macOS 10.11+ (Darwin15+) without use
+ # of rpaths, since runpaths set via DYLD_LIBRARY_PATH are elided by key
+ # system executables (e.g. /bin/sh). Force rpaths on for these systems.
+ UNSET,darwin1[5-9]*|UNSET,darwin2*|10.1[1-9][,.]*|1[1-9].*[,.]* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: @rpath library names are needed on macOS versions later than 10.11 (rpaths have been enabled)" >&5
+$as_echo "$as_me: @rpath library names are needed on macOS versions later than 10.11 (rpaths have been enabled)" >&6;}
+ enable_darwin_at_rpath=yes
+ ;;
+ # NOTE: we are not (yet) doing anything for 10.5 .. 10.10, since they can
+ # work with either DYLD_LIBRARY_PATH or embedded rpaths.
+
+ esac
+
+fi
+
+
archive_cmds_need_lc_CXX=no
hardcode_direct_CXX=no
hardcode_automatic_CXX=yes
@@ -13420,12 +13516,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
esac
if test "$_lt_dar_can_shared" = "yes"; then
output_verbose_link_cmd=func_echo_all
- archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _lt_install_name='\$rpath/\$soname'
+ if test "x$enable_darwin_at_rpath" = "xyes"; then
+ _lt_install_name='@rpath/\$soname'
+ fi
+ archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring ${_lt_dsymutil}"
module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring ${_lt_dar_export_syms}${_lt_dsymutil}"
module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
if test "$lt_cv_apple_cc_single_mod" != "yes"; then
- archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ _lt_install_name='\$rpath/\$soname'
+ if test "x$enable_darwin_at_rpath" = "xyes"; then
+ _lt_install_name='@rpath/\$soname'
+ fi
+ archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring${_lt_dsymutil}"
archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
fi
@@ -15845,6 +15949,15 @@ esac
+ if test x$enable_darwin_at_rpath = xyes; then
+ ENABLE_DARWIN_AT_RPATH_TRUE=
+ ENABLE_DARWIN_AT_RPATH_FALSE='#'
+else
+ ENABLE_DARWIN_AT_RPATH_TRUE='#'
+ ENABLE_DARWIN_AT_RPATH_FALSE=
+fi
+
+
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -17243,6 +17356,10 @@ if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then
as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${ENABLE_DARWIN_AT_RPATH_TRUE}" && test -z "${ENABLE_DARWIN_AT_RPATH_FALSE}"; then
+ as_fn_error $? "conditional \"ENABLE_DARWIN_AT_RPATH\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${TSAN_SUPPORTED_TRUE}" && test -z "${TSAN_SUPPORTED_FALSE}"; then
as_fn_error $? "conditional \"TSAN_SUPPORTED\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
diff --git a/libsanitizer/configure.ac b/libsanitizer/configure.ac
index 04cd891..5906c8d 100644
--- a/libsanitizer/configure.ac
+++ b/libsanitizer/configure.ac
@@ -85,6 +85,8 @@ esac
AC_SUBST(enable_shared)
AC_SUBST(enable_static)
+AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes])
+
AC_CHECK_SIZEOF([void *])
if test "${multilib}" = "yes"; then
diff --git a/libsanitizer/hwasan/Makefile.am b/libsanitizer/hwasan/Makefile.am
index bb7f8fa..653fc8c 100644
--- a/libsanitizer/hwasan/Makefile.am
+++ b/libsanitizer/hwasan/Makefile.am
@@ -47,7 +47,11 @@ libhwasan_la_LIBADD += $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
endif
libhwasan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDFLAGS)
-libhwasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_libhwasan)
+if ENABLE_DARWIN_AT_RPATH
+libhwasan_darwin_rpath = -nodefaultrpaths -Wl,-rpath,@loader_path/
+endif
+libhwasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(link_libhwasan) $(libhwasan_darwin_rpath)
libhwasan_preinit.o: hwasan_preinit.o
cp $< $@
diff --git a/libsanitizer/hwasan/Makefile.in b/libsanitizer/hwasan/Makefile.in
index 58bc26b..87971fd 100644
--- a/libsanitizer/hwasan/Makefile.in
+++ b/libsanitizer/hwasan/Makefile.in
@@ -447,7 +447,10 @@ libhwasan_la_LIBADD = \
$(top_builddir)/sanitizer_common/libsanitizer_common.la \
$(top_builddir)/lsan/libsanitizer_lsan.la $(am__append_1) \
$(am__append_2) $(LIBSTDCXX_RAW_CXX_LDFLAGS)
-libhwasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_libhwasan)
+@ENABLE_DARWIN_AT_RPATH_TRUE@libhwasan_darwin_rpath = -nodefaultrpaths -Wl,-rpath,@loader_path/
+libhwasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(link_libhwasan) $(libhwasan_darwin_rpath)
+
# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
diff --git a/libsanitizer/lsan/Makefile.am b/libsanitizer/lsan/Makefile.am
index 6ff28ff..7701b0e 100644
--- a/libsanitizer/lsan/Makefile.am
+++ b/libsanitizer/lsan/Makefile.am
@@ -41,8 +41,12 @@ if LIBBACKTRACE_SUPPORTED
liblsan_la_LIBADD += $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
endif
liblsan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDFLAGS)
-liblsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_liblsan)
-
+if ENABLE_DARWIN_AT_RPATH
+liblsan_darwin_rpath = -Wc,-nodefaultrpaths
+liblsan_darwin_rpath += -Wl,-rpath,@loader_path
+endif
+liblsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(link_liblsan) $(liblsan_darwin_rpath)
liblsan_preinit.o: lsan_preinit.o
cp $< $@
diff --git a/libsanitizer/lsan/Makefile.in b/libsanitizer/lsan/Makefile.in
index d8fd4ee..078edf0 100644
--- a/libsanitizer/lsan/Makefile.in
+++ b/libsanitizer/lsan/Makefile.in
@@ -413,7 +413,12 @@ liblsan_la_LIBADD = \
$(top_builddir)/sanitizer_common/libsanitizer_common.la \
$(top_builddir)/interception/libinterception.la \
$(am__append_1) $(LIBSTDCXX_RAW_CXX_LDFLAGS)
-liblsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_liblsan)
+@ENABLE_DARWIN_AT_RPATH_TRUE@liblsan_darwin_rpath = \
+@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
+@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
+liblsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(link_liblsan) $(liblsan_darwin_rpath)
+
# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
@@ -788,7 +793,6 @@ uninstall-am: uninstall-nodist_toolexeclibHEADERS \
.PRECIOUS: Makefile
-
liblsan_preinit.o: lsan_preinit.o
cp $< $@
diff --git a/libsanitizer/tsan/Makefile.am b/libsanitizer/tsan/Makefile.am
index da80743..01290b0 100644
--- a/libsanitizer/tsan/Makefile.am
+++ b/libsanitizer/tsan/Makefile.am
@@ -57,7 +57,11 @@ libtsan_la_LIBADD += $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
libtsan_la_DEPENDENCIES +=$(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
endif
libtsan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDFLAGS)
-libtsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_libtsan)
+if ENABLE_DARWIN_AT_RPATH
+libtsan_darwin_rpath = -nodefaultrpaths -Wl,-rpath,@loader_path/
+endif
+libtsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(link_libtsan) $(libtsan_darwin_rpath)
libtsan_preinit.o: tsan_preinit.o
cp $< $@
diff --git a/libsanitizer/tsan/Makefile.in b/libsanitizer/tsan/Makefile.in
index 3649883..9501158 100644
--- a/libsanitizer/tsan/Makefile.in
+++ b/libsanitizer/tsan/Makefile.in
@@ -464,7 +464,10 @@ libtsan_la_DEPENDENCIES = \
$(top_builddir)/sanitizer_common/libsanitizer_common.la \
$(top_builddir)/interception/libinterception.la \
$(TSAN_TARGET_DEPENDENT_OBJECTS) $(am__append_2)
-libtsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_libtsan)
+@ENABLE_DARWIN_AT_RPATH_TRUE@libtsan_darwin_rpath = -nodefaultrpaths -Wl,-rpath,@loader_path/
+libtsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(link_libtsan) $(libtsan_darwin_rpath)
+
# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
diff --git a/libsanitizer/ubsan/Makefile.am b/libsanitizer/ubsan/Makefile.am
index d480f26..7769b34 100644
--- a/libsanitizer/ubsan/Makefile.am
+++ b/libsanitizer/ubsan/Makefile.am
@@ -36,7 +36,12 @@ if LIBBACKTRACE_SUPPORTED
libubsan_la_LIBADD += $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
endif
libubsan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDFLAGS)
-libubsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_libubsan)
+if ENABLE_DARWIN_AT_RPATH
+libubsan_darwin_rpath = -Wc,-nodefaultrpaths
+libubsan_darwin_rpath += -Wl,-rpath,@loader_path
+endif
+libubsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(link_libubsan) $(libubsan_darwin_rpath)
# Use special rules for files that require RTTI support.
ubsan_handlers_cxx.% ubsan_type_hash.% ubsan_type_hash_itanium.% : AM_CXXFLAGS += -frtti
diff --git a/libsanitizer/ubsan/Makefile.in b/libsanitizer/ubsan/Makefile.in
index 92a8e38..7e51480e 100644
--- a/libsanitizer/ubsan/Makefile.in
+++ b/libsanitizer/ubsan/Makefile.in
@@ -400,7 +400,12 @@ libubsan_la_SOURCES = $(ubsan_files)
libubsan_la_LIBADD = \
$(top_builddir)/sanitizer_common/libsanitizer_common.la \
$(am__append_1) $(am__append_2) $(LIBSTDCXX_RAW_CXX_LDFLAGS)
-libubsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_libubsan)
+@ENABLE_DARWIN_AT_RPATH_TRUE@libubsan_darwin_rpath = \
+@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wc,-nodefaultrpaths \
+@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path
+libubsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(link_libubsan) $(libubsan_darwin_rpath)
+
# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and