pirama created this revision. This patch unconditionally adds -rpath of the arch-specific subdirectory in resource directory (instead of doing so only during native compilation).
This patch also re-enables test arch-specific-libdir.c which was silently unsupported because of the REQUIRES tag 'linux'. https://reviews.llvm.org/D30700 Files: lib/Driver/Tools.cpp test/Driver/arch-specific-libdir-rpath.c test/Driver/arch-specific-libdir.c test/lit.cfg
Index: test/lit.cfg =================================================================== --- test/lit.cfg +++ test/lit.cfg @@ -397,10 +397,6 @@ if config.host_triple == config.target_triple: config.available_features.add("native") -# Test Driver/arch-specific-libdir-rpath.c is restricted to x86_64-linux -if re.match(r'^x86_64.*-linux', config.target_triple): - config.available_features.add("x86_64-linux") - # Case-insensitive file system def is_filesystem_case_insensitive(): handle, path = tempfile.mkstemp(prefix='case-test', dir=config.test_exec_root) Index: test/Driver/arch-specific-libdir.c =================================================================== --- test/Driver/arch-specific-libdir.c +++ test/Driver/arch-specific-libdir.c @@ -1,8 +1,6 @@ // Test that the driver adds an arch-specific subdirectory in // {RESOURCE_DIR}/lib/linux to the search path. // -// REQUIRES: linux -// // RUN: %clang %s -### 2>&1 -target i386-unknown-linux \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \ // RUN: | FileCheck --check-prefixes=FILEPATH,ARCHDIR-i386 %s Index: test/Driver/arch-specific-libdir-rpath.c =================================================================== --- test/Driver/arch-specific-libdir-rpath.c +++ test/Driver/arch-specific-libdir-rpath.c @@ -1,50 +1,53 @@ // Test that the driver adds an arch-specific subdirectory in -// {RESOURCE_DIR}/lib/linux to the linker search path and to '-rpath' for native -// compilations. -// -// -rpath only gets added during native compilation. To keep the test simple, -// just test for x86_64-linux native compilation. -// REQUIRES: x86_64-linux +// {RESOURCE_DIR}/lib/linux to the linker search path and to '-rpath' // // Add LIBPATH but no RPATH for -fsanitizer=address w/o -shared-libasan -// RUN: %clang %s -### 2>&1 -fsanitize=undefined \ +// RUN: %clang %s -### 2>&1 -target x86_64-linux -fsanitize=undefined \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \ -// RUN: | FileCheck --check-prefixes=FILEPATH,LIBPATH,NO-RPATH %s +// RUN: | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH %s // // Add LIBPATH, RPATH for -fsanitize=address -shared-libasan // RUN: %clang %s -### 2>&1 -target x86_64-linux \ // RUN: -fsanitize=address -shared-libasan \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \ -// RUN: | FileCheck --check-prefixes=FILEPATH,LIBPATH,RPATH %s +// RUN: | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,RPATH-X86_64 %s +// +// Add LIBPATH, RPATH for -fsanitize=address -shared-libasan on aarch64 +// RUN: %clang %s -### 2>&1 -target aarch64-linux \ +// RUN: -fsanitize=address -shared-libasan \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \ +// RUN: | FileCheck --check-prefixes=RESDIR,LIBPATH-AArch64,RPATH-AArch64 %s // // Add LIBPATH, RPATH with -fsanitize=address for Android // RUN: %clang %s -### 2>&1 -target x86_64-linux-android -fsanitize=address \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \ -// RUN: | FileCheck --check-prefixes=FILEPATH,LIBPATH,RPATH %s +// RUN: | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,RPATH-X86_64 %s // // Add LIBPATH, RPATH for OpenMP -// RUN: %clang %s -### 2>&1 -fopenmp \ +// RUN: %clang %s -### 2>&1 -target x86_64-linux -fopenmp \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \ -// RUN: | FileCheck --check-prefixes=FILEPATH,LIBPATH,RPATH %s +// RUN: | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,RPATH-X86_64 %s // // Add LIBPATH but no RPATH for ubsan (or any other sanitizer) // RUN: %clang %s -### 2>&1 -fsanitize=undefined \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \ -// RUN: | FileCheck --check-prefixes=FILEPATH,LIBPATH,NO-RPATH %s +// RUN: | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH %s // // Add LIBPATH but no RPATH if no sanitizer or runtime is specified // RUN: %clang %s -### 2>&1 \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \ -// RUN: | FileCheck --check-prefixes=FILEPATH,LIBPATH,NO-RPATH %s +// RUN: | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH %s // // Do not add LIBPATH or RPATH if arch-specific subdir doesn't exist // RUN: %clang %s -### 2>&1 \ // RUN: -resource-dir=%S/Inputs/resource_dir \ -// RUN: | FileCheck --check-prefixes=FILEPATH,NO-LIBPATH,NO-RPATH %s +// RUN: | FileCheck --check-prefixes=RESDIR,NO-LIBPATH,NO-RPATH %s // // -// FILEPATH: "-x" "c" "[[FILE_PATH:.*]]/{{.*}}.c" -// LIBPATH: -L[[FILE_PATH]]/Inputs/resource_dir_with_arch_subdir/lib/linux/x86_64 -// RPATH: "-rpath" "[[FILE_PATH]]/Inputs/resource_dir_with_arch_subdir/lib/linux/x86_64" -// NO-LIBPATH-NOT: -L{{.*}}Inputs/resource_dir -// NO-RPATH-NOT: "-rpath" {{.*}}/Inputs/resource_dir +// RESDIR: "-resource-dir" "[[RESDIR:[^ ]*]]" +// LIBPATH-X86_64: -L[[RESDIR]]/lib/linux/x86_64 +// RPATH-X86_64: "-rpath" "[[RESDIR]]/lib/linux/x86_64" +// LIBPATH-AArch64: -L[[RESDIR]]/lib/linux/aarch64 +// RPATH-AArch64: "-rpath" "[[RESDIR]]/lib/linux/aarch64" +// NO-LIBPATH-NOT: -L{{.*}}Inputs/resource_dir +// NO-RPATH-NOT: "-rpath" {{.*}}/Inputs/resource_dir Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -2004,10 +2004,6 @@ static void addArchSpecificRPath(const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) { - // In the cross-compilation case, arch-specific library path is likely - // unavailable at runtime. - if (TC.isCrossCompiling()) return; - std::string CandidateRPath = TC.getArchSpecificLibPath(); if (TC.getVFS().exists(CandidateRPath)) { CmdArgs.push_back("-rpath");
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits