Skip to content

Commit 0f7674e

Browse files
authored
Fix libasan runpath behaviour. (#54104)
This is necessary with LLVM 17 but was extracted to a separate patch xref #53070
1 parent f30aae5 commit 0f7674e

File tree

4 files changed

+6
-3
lines changed

4 files changed

+6
-3
lines changed

cli/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ STRIP_EXPORTED_FUNCS := $(shell $(CPP_STDOUT) -I$(JULIAHOME)/src $(SRCDIR)/list_
119119
endif
120120

121121
$(build_shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT): $(LIB_OBJS) $(SRCDIR)/list_strip_symbols.h $(BUILDDIR)/julia.expmap | $(build_shlibdir) $(build_libdir)
122-
@$(call PRINT_LINK, $(CC) $(call IMPLIB_FLAGS,$@.tmp) $(LOADER_CFLAGS) -shared $(SHIPFLAGS) $(LIB_OBJS) -o $@ \
122+
@$(call PRINT_LINK, $(CC) $(call IMPLIB_FLAGS,$@.tmp) $(LOADER_CFLAGS) -shared $(SHIPFLAGS) $(LIB_OBJS) $(RPATH_LIB) -o $@ \
123123
$(JLIBLDFLAGS) $(LOADER_LDFLAGS) $(VERSIONSCRIPT) $(call SONAME_FLAGS,libjulia.$(JL_MAJOR_SHLIB_EXT)))
124124
@$(INSTALL_NAME_CMD)libjulia.$(JL_MAJOR_SHLIB_EXT) $@
125125
@$(DSYMUTIL) $@
@@ -130,7 +130,7 @@ ifeq ($(OS), WINNT)
130130
endif
131131

132132
$(build_shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(LIB_DOBJS) $(SRCDIR)/list_strip_symbols.h $(BUILDDIR)/julia.expmap | $(build_shlibdir) $(build_libdir)
133-
@$(call PRINT_LINK, $(CC) $(call IMPLIB_FLAGS,$@.tmp) $(LOADER_CFLAGS) -shared $(DEBUGFLAGS) $(LIB_DOBJS) -o $@ \
133+
@$(call PRINT_LINK, $(CC) $(call IMPLIB_FLAGS,$@.tmp) $(LOADER_CFLAGS) -shared $(DEBUGFLAGS) $(LIB_DOBJS) $(RPATH_LIB) -o $@ \
134134
$(JLIBLDFLAGS) $(LOADER_LDFLAGS) $(VERSIONSCRIPT) $(call SONAME_FLAGS,libjulia-debug.$(JL_MAJOR_SHLIB_EXT)))
135135
@$(INSTALL_NAME_CMD)libjulia-debug.$(JL_MAJOR_SHLIB_EXT) $@
136136
@$(DSYMUTIL) $@

contrib/asan/Make.user.asan

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ TOOLDIR=$(TOOLCHAIN)/usr/tools
66
USECLANG=1
77
override CC=$(TOOLDIR)/clang
88
override CXX=$(TOOLDIR)/clang++
9+
override PATCHELF=$(TOOLDIR)/patchelf
910
export ASAN_SYMBOLIZER_PATH=$(TOOLDIR)/llvm-symbolizer
1011

1112
USE_BINARYBUILDER_LLVM=1

contrib/asan/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ if [ ! -d "$TOOLCHAIN" ]; then
4040
cp "$HERE/Make.user.tools" "$TOOLCHAIN/Make.user"
4141
fi
4242

43-
make -C "$TOOLCHAIN/deps" install-clang install-llvm-tools
43+
make -C "$TOOLCHAIN/deps" install-clang install-llvm-tools install-patchelf
4444

4545
echo
4646
echo "Building Julia..."

deps/sanitizers.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ define copy_sanitizer_lib
1414
install-sanitizers: $$(addprefix $$(build_libdir)/, $$(notdir $$(call pathsearch_all,$(1),$$(SANITIZER_LIB_PATH)))) | $$(build_shlibdir)
1515
$$(addprefix $$(build_shlibdir)/,$(2)): $$(addprefix $$(SANITIZER_LIB_PATH)/,$(2)) | $$(build_shlibdir)
1616
-cp $$< $$@
17+
$(if $(filter $(OS), Linux), \
18+
-$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$$$ORIGIN' $$@ , 0)
1719
endef
1820

1921
ifeq ($(USECLANG),1)

0 commit comments

Comments
 (0)