[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-04-05 Thread Yaxun Liu via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
yaxunl marked an inline comment as done.
Closed by commit rG5f91c747763c: [Driver] Fix rpath for compiler-rt (authored 
by yaxunl).
Herald added a project: clang.

Changed prior to commit:
  https://reviews.llvm.org/D146686?vs=508823=511238#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146686/new/

https://reviews.llvm.org/D146686

Files:
  clang/include/clang/Driver/ToolChain.h
  clang/lib/Driver/ToolChain.cpp
  clang/lib/Driver/ToolChains/CommonArgs.cpp
  clang/lib/Driver/ToolChains/OHOS.cpp
  clang/lib/Driver/ToolChains/OHOS.h
  clang/lib/Driver/ToolChains/VEToolchain.cpp
  clang/test/Driver/arch-specific-libdir-rpath.c

Index: clang/test/Driver/arch-specific-libdir-rpath.c
===
--- clang/test/Driver/arch-specific-libdir-rpath.c
+++ clang/test/Driver/arch-specific-libdir-rpath.c
@@ -75,6 +75,15 @@
 // RUN: -frtlib-add-rpath 2>&1 \
 // RUN:   | FileCheck --check-prefixes=RESDIR,NO-LIBPATH,NO-RPATH %s
 
+// Test that the driver adds an per-target arch-specific subdirectory in
+// {RESOURCE_DIR}/lib/{triple} to the linker search path and to '-rpath'
+//
+// RUN: %clang %s -### 2>&1 --target=x86_64-linux-gnu \
+// RUN: -fsanitize=address -shared-libasan \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: -frtlib-add-rpath \
+// RUN:   | FileCheck --check-prefixes=PERTARGET %s
+
 // RESDIR: "-resource-dir" "[[RESDIR:[^"]*]]"
 //
 // LIBPATH-X86_64: -L[[RESDIR]]{{(/|)lib(/|)linux(/|)x86_64}}
@@ -88,3 +97,7 @@
 //
 // NO-LIBPATH-NOT: "-L{{[^"]*Inputs(/|)resource_dir}}"
 // NO-RPATH-NOT:   "-rpath" {{.*(/|)Inputs(/|)resource_dir}}
+
+// PERTARGET: "-resource-dir" "[[PTRESDIR:[^"]*]]"
+// PERTARGET: -L[[PTRESDIR]]{{(/|)lib(/|)x86_64-unknown-linux-gnu}}
+// PERTARGET:   "-rpath" "[[PTRESDIR]]{{(/|)lib(/|)x86_64-unknown-linux-gnu}}"
Index: clang/lib/Driver/ToolChains/VEToolchain.cpp
===
--- clang/lib/Driver/ToolChains/VEToolchain.cpp
+++ clang/lib/Driver/ToolChains/VEToolchain.cpp
@@ -33,7 +33,7 @@
   // These are OK.
 
   // Default file paths are following:
-  //   ${RESOURCEDIR}/lib/linux/ve, (== getArchSpecificLibPath)
+  //   ${RESOURCEDIR}/lib/linux/ve, (== getArchSpecificLibPaths)
   //   /lib/../lib64,
   //   /usr/lib/../lib64,
   //   ${BINPATH}/../lib,
@@ -45,12 +45,13 @@
   getFilePaths().clear();
 
   // Add library directories:
-  //   ${BINPATH}/../lib/ve-unknown-linux-gnu, (== getStdlibPath)
-  //   ${RESOURCEDIR}/lib/linux/ve, (== getArchSpecificLibPath)
+  //   ${BINPATH}/../lib/ve-unknown-linux-gnu, (== getStdlibPaths)
+  //   ${RESOURCEDIR}/lib/linux/ve, (== getArchSpecificLibPaths)
   //   ${SYSROOT}/opt/nec/ve/lib,
   for (auto  : getStdlibPaths())
 getFilePaths().push_back(std::move(Path));
-  getFilePaths().push_back(getArchSpecificLibPath());
+  for (const auto  : getArchSpecificLibPaths())
+getFilePaths().push_back(Path);
   getFilePaths().push_back(computeSysRoot() + "/opt/nec/ve/lib");
 }
 
Index: clang/lib/Driver/ToolChains/OHOS.h
===
--- clang/lib/Driver/ToolChains/OHOS.h
+++ clang/lib/Driver/ToolChains/OHOS.h
@@ -83,7 +83,8 @@
   SanitizerMask getSupportedSanitizers() const override;
   void addProfileRTLibs(const llvm::opt::ArgList ,
  llvm::opt::ArgStringList ) const override;
-  std::string getArchSpecificLibPath() const override;
+  path_list getArchSpecificLibPaths() const override;
+
 private:
   Multilib SelectedMultilib;
 };
Index: clang/lib/Driver/ToolChains/OHOS.cpp
===
--- clang/lib/Driver/ToolChains/OHOS.cpp
+++ clang/lib/Driver/ToolChains/OHOS.cpp
@@ -139,9 +139,9 @@
   SelectedMultilib = Result.SelectedMultilib;
 
   getFilePaths().clear();
-  std::string CandidateLibPath = getArchSpecificLibPath();
-  if (getVFS().exists(CandidateLibPath))
-getFilePaths().push_back(CandidateLibPath);
+  for (const auto  : getArchSpecificLibPaths())
+if (getVFS().exists(CandidateLibPath))
+  getFilePaths().push_back(CandidateLibPath);
 
   getLibraryPaths().clear();
   for (auto  : getRuntimePaths())
@@ -401,9 +401,12 @@
   ToolChain::addProfileRTLibs(Args, CmdArgs);
 }
 
-std::string OHOS::getArchSpecificLibPath() const {
+ToolChain::path_list OHOS::getArchSpecificLibPaths() const {
+  ToolChain::path_list Paths;
   llvm::Triple Triple = getTriple();
-  return makePath({getDriver().ResourceDir, "lib", getMultiarchTriple(Triple)});
+  Paths.push_back(
+  makePath({getDriver().ResourceDir, "lib", getMultiarchTriple(Triple)}));
+  return Paths;
 }
 
 ToolChain::UnwindLibType OHOS::GetUnwindLibType(const llvm::opt::ArgList ) 

[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-04-01 Thread Yaxun Liu via Phabricator via cfe-commits
yaxunl marked 2 inline comments as done.
yaxunl added inline comments.



Comment at: clang/lib/Driver/ToolChain.cpp:638
+  AddPath({getOSLibName(), llvm::Triple::getArchTypeName(getArch())});
+
+  return Paths;

MaskRay wrote:
> unneeded blank line
will remove when committing


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146686/new/

https://reviews.llvm.org/D146686

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-03-30 Thread Fangrui Song via Phabricator via cfe-commits
MaskRay accepted this revision.
MaskRay added inline comments.
This revision is now accepted and ready to land.



Comment at: clang/lib/Driver/ToolChain.cpp:638
+  AddPath({getOSLibName(), llvm::Triple::getArchTypeName(getArch())});
+
+  return Paths;

unneeded blank line


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146686/new/

https://reviews.llvm.org/D146686

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-03-27 Thread Yaxun Liu via Phabricator via cfe-commits
yaxunl updated this revision to Diff 508823.
yaxunl added a comment.

revised by Fangrui's comments


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146686/new/

https://reviews.llvm.org/D146686

Files:
  clang/include/clang/Driver/ToolChain.h
  clang/lib/Driver/ToolChain.cpp
  clang/lib/Driver/ToolChains/CommonArgs.cpp
  clang/lib/Driver/ToolChains/OHOS.cpp
  clang/lib/Driver/ToolChains/OHOS.h
  clang/lib/Driver/ToolChains/VEToolchain.cpp
  clang/test/Driver/arch-specific-libdir-rpath.c

Index: clang/test/Driver/arch-specific-libdir-rpath.c
===
--- clang/test/Driver/arch-specific-libdir-rpath.c
+++ clang/test/Driver/arch-specific-libdir-rpath.c
@@ -75,6 +75,15 @@
 // RUN: -frtlib-add-rpath \
 // RUN:   | FileCheck --check-prefixes=RESDIR,NO-LIBPATH,NO-RPATH %s
 
+// Test that the driver adds an per-target arch-specific subdirectory in
+// {RESOURCE_DIR}/lib/{triple} to the linker search path and to '-rpath'
+//
+// RUN: %clang %s -### 2>&1 --target=x86_64-linux-gnu \
+// RUN: -fsanitize=address -shared-libasan \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: -frtlib-add-rpath \
+// RUN:   | FileCheck --check-prefixes=PERTARGET %s
+
 // RESDIR: "-resource-dir" "[[RESDIR:[^"]*]]"
 //
 // LIBPATH-X86_64: -L[[RESDIR]]{{(/|)lib(/|)linux(/|)x86_64}}
@@ -88,3 +97,7 @@
 //
 // NO-LIBPATH-NOT: "-L{{[^"]*Inputs(/|)resource_dir}}"
 // NO-RPATH-NOT:   "-rpath" {{.*(/|)Inputs(/|)resource_dir}}
+
+// PERTARGET: "-resource-dir" "[[PTRESDIR:[^"]*]]"
+// PERTARGET: -L[[PTRESDIR]]{{(/|)lib(/|)x86_64-unknown-linux-gnu}}
+// PERTARGET:   "-rpath" "[[PTRESDIR]]{{(/|)lib(/|)x86_64-unknown-linux-gnu}}"
Index: clang/lib/Driver/ToolChains/VEToolchain.cpp
===
--- clang/lib/Driver/ToolChains/VEToolchain.cpp
+++ clang/lib/Driver/ToolChains/VEToolchain.cpp
@@ -33,7 +33,7 @@
   // These are OK.
 
   // Default file paths are following:
-  //   ${RESOURCEDIR}/lib/linux/ve, (== getArchSpecificLibPath)
+  //   ${RESOURCEDIR}/lib/linux/ve, (== getArchSpecificLibPaths)
   //   /lib/../lib64,
   //   /usr/lib/../lib64,
   //   ${BINPATH}/../lib,
@@ -45,12 +45,13 @@
   getFilePaths().clear();
 
   // Add library directories:
-  //   ${BINPATH}/../lib/ve-unknown-linux-gnu, (== getStdlibPath)
-  //   ${RESOURCEDIR}/lib/linux/ve, (== getArchSpecificLibPath)
+  //   ${BINPATH}/../lib/ve-unknown-linux-gnu, (== getStdlibPaths)
+  //   ${RESOURCEDIR}/lib/linux/ve, (== getArchSpecificLibPaths)
   //   ${SYSROOT}/opt/nec/ve/lib,
   for (auto  : getStdlibPaths())
 getFilePaths().push_back(std::move(Path));
-  getFilePaths().push_back(getArchSpecificLibPath());
+  for (const auto  : getArchSpecificLibPaths())
+getFilePaths().push_back(Path);
   getFilePaths().push_back(computeSysRoot() + "/opt/nec/ve/lib");
 }
 
Index: clang/lib/Driver/ToolChains/OHOS.h
===
--- clang/lib/Driver/ToolChains/OHOS.h
+++ clang/lib/Driver/ToolChains/OHOS.h
@@ -82,7 +82,8 @@
   SanitizerMask getSupportedSanitizers() const override;
   void addProfileRTLibs(const llvm::opt::ArgList ,
  llvm::opt::ArgStringList ) const override;
-  std::string getArchSpecificLibPath() const override;
+  path_list getArchSpecificLibPaths() const override;
+
 private:
   Multilib SelectedMultilib;
 };
Index: clang/lib/Driver/ToolChains/OHOS.cpp
===
--- clang/lib/Driver/ToolChains/OHOS.cpp
+++ clang/lib/Driver/ToolChains/OHOS.cpp
@@ -139,9 +139,9 @@
   SelectedMultilib = Result.SelectedMultilib;
 
   getFilePaths().clear();
-  std::string CandidateLibPath = getArchSpecificLibPath();
-  if (getVFS().exists(CandidateLibPath))
-getFilePaths().push_back(CandidateLibPath);
+  for (const auto  : getArchSpecificLibPaths())
+if (getVFS().exists(CandidateLibPath))
+  getFilePaths().push_back(CandidateLibPath);
 
   getLibraryPaths().clear();
   for (auto  : getRuntimePaths())
@@ -401,9 +401,12 @@
   ToolChain::addProfileRTLibs(Args, CmdArgs);
 }
 
-std::string OHOS::getArchSpecificLibPath() const {
+ToolChain::path_list OHOS::getArchSpecificLibPaths() const {
+  ToolChain::path_list Paths;
   llvm::Triple Triple = getTriple();
-  return makePath({getDriver().ResourceDir, "lib", getMultiarchTriple(Triple)});
+  Paths.push_back(
+  makePath({getDriver().ResourceDir, "lib", getMultiarchTriple(Triple)}));
+  return Paths;
 }
 
 ToolChain::UnwindLibType OHOS::GetUnwindLibType(const llvm::opt::ArgList ) const {
Index: clang/lib/Driver/ToolChains/CommonArgs.cpp
===
--- clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -815,10 +815,11 @@
 options::OPT_fno_rtlib_add_rpath, DefaultValue))
 

[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-03-27 Thread Fangrui Song via Phabricator via cfe-commits
MaskRay added inline comments.



Comment at: clang/lib/Driver/ToolChains/OHOS.cpp:140
   getFilePaths().clear();
-  std::string CandidateLibPath = getArchSpecificLibPath();
-  if (getVFS().exists(CandidateLibPath))
-getFilePaths().push_back(CandidateLibPath);
+  for (const auto  : getArchSpecificLibPaths()) {
+if (getVFS().exists(CandidateLibPath))

delete braces


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146686/new/

https://reviews.llvm.org/D146686

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-03-27 Thread Fangrui Song via Phabricator via cfe-commits
MaskRay added a comment.

The new test can be placed in `arch-specific-libdir-rpath.c`. One or two 
additional RUN lines seem sufficient, no need to duplicate too many.

Also, use `--target=` for new tests and avoid `^//$`.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146686/new/

https://reviews.llvm.org/D146686

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-03-25 Thread Yaxun Liu via Phabricator via cfe-commits
yaxunl updated this revision to Diff 508312.
yaxunl edited the summary of this revision.
yaxunl added a comment.
Herald added a reviewer: jdoerfert.
Herald added subscribers: jplehr, sstefan1.

adds check for both {resource_dir}/lib/{triple} and 
{resource_dir}/lib/{OS}/{arch}


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146686/new/

https://reviews.llvm.org/D146686

Files:
  clang/include/clang/Driver/ToolChain.h
  clang/lib/Driver/ToolChain.cpp
  clang/lib/Driver/ToolChains/CommonArgs.cpp
  clang/lib/Driver/ToolChains/OHOS.cpp
  clang/lib/Driver/ToolChains/OHOS.h
  clang/lib/Driver/ToolChains/VEToolchain.cpp
  clang/test/Driver/arch-specific-per-target-libdir-rpath.c

Index: clang/test/Driver/arch-specific-per-target-libdir-rpath.c
===
--- /dev/null
+++ clang/test/Driver/arch-specific-per-target-libdir-rpath.c
@@ -0,0 +1,86 @@
+// Test that the driver adds an per-target arch-specific subdirectory in
+// {RESOURCE_DIR}/lib/{triple} to the linker search path and to '-rpath'
+//
+// Test the default behavior when neither -frtlib-add-rpath nor
+// -fno-rtlib-add-rpath is specified, which is to skip -rpath
+// RUN: %clang %s -### 2>&1 -target x86_64-linux-gnu \
+// RUN: -fsanitize=address -shared-libasan \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH-X86_64 %s
+//
+// Test that -rpath is not added under -fno-rtlib-add-rpath even if other
+// conditions are met.
+// RUN: %clang %s -### 2>&1 -target x86_64-linux-gnu \
+// RUN: -fsanitize=address -shared-libasan \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: -fno-rtlib-add-rpath \
+// RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH-X86_64 %s
+//
+// Test that -rpath is added only under the right circumstance even if
+// -frtlib-add-rpath is specified.
+//
+// Add LIBPATH but no RPATH for -fsanitizer=address w/o -shared-libasan
+// RUN: %clang %s -### 2>&1 -target x86_64-linux-gnu -fsanitize=undefined \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: -frtlib-add-rpath \
+// RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH-X86_64 %s
+//
+// Add LIBPATH but no RPATH for -fsanitizer=address w/o -shared-libasan
+// RUN: %clang %s -### 2>&1 -target x86_64-linux-gnu -fsanitize=undefined \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: -frtlib-add-rpath \
+// RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH-X86_64 %s
+//
+// Add LIBPATH, RPATH for -fsanitize=address -shared-libasan
+// RUN: %clang %s -### 2>&1 -target x86_64-linux-gnu \
+// RUN: -fsanitize=address -shared-libasan \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: -frtlib-add-rpath \
+// RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,RPATH-X86_64 %s
+//
+// Add LIBPATH, RPATH with -fsanitize=address for Android
+// RUN: %clang %s -### 2>&1 -target aarch64-linux-android -fsanitize=address \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: -frtlib-add-rpath \
+// RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-AARCH64-ANDROID,RPATH-AARCH64-ANDROID %s
+//
+// Add LIBPATH, RPATH for OpenMP
+// RUN: %clang %s -### 2>&1 -target x86_64-linux-gnu -fopenmp \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: -frtlib-add-rpath \
+// 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 -target x86_64-linux-gnu \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: -frtlib-add-rpath \
+// RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH-X86_64 %s
+//
+// Add LIBPATH but no RPATH if no sanitizer or runtime is specified
+// RUN: %clang %s -### 2>&1 -target x86_64-linux-gnu \
+// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: -frtlib-add-rpath \
+// RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,NO-RPATH-X86_64 %s
+//
+// Do not add LIBPATH or RPATH if arch-specific subdir doesn't exist
+// RUN: %clang %s -### 2>&1 -target x86_64-linux-gnu \
+// RUN: -resource-dir=%S/Inputs/resource_dir \
+// RUN: -frtlib-add-rpath \
+// RUN:   | FileCheck --check-prefixes=RESDIR,NO-LIBPATH,NO-RPATH %s
+
+// RESDIR: "-resource-dir" "[[RESDIR:[^"]*]]"
+//
+// LIBPATH-X86_64: -L[[RESDIR]]{{(/|)lib(/|)x86_64-unknown-linux-gnu}}
+// RPATH-X86_64:   "-rpath" "[[RESDIR]]{{(/|)lib(/|)x86_64-unknown-linux-gnu}}"
+//
+// LIBPATH-AARCH64-ANDROID: -L[[RESDIR]]{{(/|)lib(/|)aarch64-unknown-linux-android}}
+// RPATH-AARCH64-ANDROID:   "-rpath" 

[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-03-23 Thread Fangrui Song via Phabricator via cfe-commits
MaskRay added a comment.

In D146686#4216612 , @yaxunl wrote:

> In D146686#4215577 , @MaskRay wrote:
>
>> This change is correct for Linux. `llvm/CMakeLists.txt` says:
>>
>>   if(CMAKE_SYSTEM_NAME MATCHES "BSD|Linux|OS390")
>> set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default ON)
>>
>> Some rpath using OSes (notably macOS) use 
>> LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default=OFF. Is the rpath setting ever 
>> usable on macOS?
>> If not, the change is correct.
>
> How about I try to add both? there is check whether the dir exist then adding 
> it, so only the existing one will be added. then it should work in either 
> case.

Yes. Detecting both locations will be nice.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146686/new/

https://reviews.llvm.org/D146686

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-03-23 Thread Yaxun Liu via Phabricator via cfe-commits
yaxunl added a comment.

In D146686#4215577 , @MaskRay wrote:

> This change is correct for Linux. `llvm/CMakeLists.txt` says:
>
>   if(CMAKE_SYSTEM_NAME MATCHES "BSD|Linux|OS390")
> set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default ON)
>
> Some rpath using OSes (notably macOS) use 
> LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default=OFF. Is the rpath setting ever 
> usable on macOS?
> If not, the change is correct.

How about I try to add both? there is check whether the dir exist then adding 
it, so only the existing one will be added. then it should work in either case.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146686/new/

https://reviews.llvm.org/D146686

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-03-23 Thread Fangrui Song via Phabricator via cfe-commits
MaskRay added a comment.

This change is correct for Linux. `llvm/CMakeLists.txt` says:

  if(CMAKE_SYSTEM_NAME MATCHES "BSD|Linux|OS390")
set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default ON)

Some rpath using OSes (notably macOS) use 
LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default=OFF. Is the rpath setting ever 
usable on macOS?
If not, the change is correct.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146686/new/

https://reviews.llvm.org/D146686

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D146686: [Driver] Fix rpath for compiler-rt

2023-03-22 Thread Yaxun Liu via Phabricator via cfe-commits
yaxunl created this revision.
yaxunl added reviewers: MaskRay, tra.
Herald added a subscriber: dberris.
Herald added a project: All.
yaxunl requested review of this revision.

The compiler-rt library path has changed to {resource_dir}/lib/{triple}
from {resource_dir}/lib/{OS}/{arch} but the rpath has not been
updated. This causes rpath not really added.


https://reviews.llvm.org/D146686

Files:
  clang/lib/Driver/ToolChain.cpp
  
clang/test/Driver/Inputs/resource_dir_with_arch_subdir/lib/arm-unknown-linux/.keep
  
clang/test/Driver/Inputs/resource_dir_with_arch_subdir/lib/i386-unknown-linux/.keep
  clang/test/Driver/Inputs/resource_dir_with_arch_subdir/lib/linux/aarch64/.keep
  clang/test/Driver/Inputs/resource_dir_with_arch_subdir/lib/linux/arm/.keep
  clang/test/Driver/Inputs/resource_dir_with_arch_subdir/lib/linux/i386/.keep
  clang/test/Driver/Inputs/resource_dir_with_arch_subdir/lib/linux/x86_64/.keep
  
clang/test/Driver/Inputs/resource_dir_with_arch_subdir/lib/x86_64-unknown-linux-android/.keep
  
clang/test/Driver/Inputs/resource_dir_with_arch_subdir/lib/x86_64-unknown-linux/.keep
  clang/test/Driver/arch-specific-libdir-rpath.c
  clang/test/Driver/arch-specific-libdir.c


Index: clang/test/Driver/arch-specific-libdir.c
===
--- clang/test/Driver/arch-specific-libdir.c
+++ clang/test/Driver/arch-specific-libdir.c
@@ -1,5 +1,5 @@
 // Test that the driver adds an arch-specific subdirectory in
-// {RESOURCE_DIR}/lib/linux to the search path.
+// {RESOURCE_DIR}/lib/{triple} to the search path.
 //
 // RUN: %clang %s -### 2>&1 -target i386-unknown-linux \
 // RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
@@ -11,7 +11,7 @@
 //
 // RUN: %clang %s -### 2>&1 -target i686-unknown-linux \
 // RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
-// RUN:   | FileCheck --check-prefixes=FILEPATH,ARCHDIR-i386 %s
+// RUN:   | FileCheck --check-prefixes=FILEPATH,ARCHDIR-i686 %s
 //
 // RUN: %clang %s -### 2>&1 -target i686-unknown-linux \
 // RUN: -resource-dir=%S/Inputs/resource_dir \
@@ -43,10 +43,11 @@
 //
 //
 // FILEPATH: "-x" "c" "[[FILE_PATH:.*]]{{(/|).*}}.c"
-// ARCHDIR-i386:
-L[[FILE_PATH]]{{(/|)Inputs(/|)resource_dir_with_arch_subdir(/|)lib(/|)linux(/|)i386}}
-// ARCHDIR-x86_64:  
-L[[FILE_PATH]]{{(/|)Inputs(/|)resource_dir_with_arch_subdir(/|)lib(/|)linux(/|)x86_64}}
-// ARCHDIR-arm: 
-L[[FILE_PATH]]{{(/|)Inputs(/|)resource_dir_with_arch_subdir(/|)lib(/|)linux(/|)arm}}
-// ARCHDIR-aarch64: 
-L[[FILE_PATH]]{{(/|)Inputs(/|)resource_dir_with_arch_subdir(/|)lib(/|)linux(/|)aarch64}}
+// ARCHDIR-i386:
-L[[FILE_PATH]]{{(/|)Inputs(/|)resource_dir_with_arch_subdir(/|)lib(/|)i386-unknown-linux}}
+// ARCHDIR-i686:
-L[[FILE_PATH]]{{(/|)Inputs(/|)resource_dir_with_arch_subdir(/|)lib(/|)i686-unknown-linux}}
+// ARCHDIR-x86_64:  
-L[[FILE_PATH]]{{(/|)Inputs(/|)resource_dir_with_arch_subdir(/|)lib(/|)x86_64-unknown-linux}}
+// ARCHDIR-arm: 
-L[[FILE_PATH]]{{(/|)Inputs(/|)resource_dir_with_arch_subdir(/|)lib(/|)arm-unknown-linux}}
+// ARCHDIR-aarch64: 
-L[[FILE_PATH]]{{(/|)Inputs(/|)resource_dir_with_arch_subdir(/|)lib(/|)aarch64-unknown-linux}}
 //
 // Have a stricter check for no-archdir - that the driver doesn't add any
 // subdirectory from the provided resource directory.
Index: clang/test/Driver/arch-specific-libdir-rpath.c
===
--- clang/test/Driver/arch-specific-libdir-rpath.c
+++ clang/test/Driver/arch-specific-libdir-rpath.c
@@ -49,7 +49,7 @@
 // RUN: %clang %s -### 2>&1 -target x86_64-linux-android -fsanitize=address \
 // RUN: -resource-dir=%S/Inputs/resource_dir_with_arch_subdir \
 // RUN: -frtlib-add-rpath \
-// RUN:   | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,RPATH-X86_64 %s
+// RUN:   | FileCheck 
--check-prefixes=RESDIR,LIBPATH-X86_64-ANDROID,RPATH-X86_64-ANDROID %s
 //
 // Add LIBPATH, RPATH for OpenMP
 // RUN: %clang %s -### 2>&1 -target x86_64-linux -fopenmp \
@@ -77,14 +77,17 @@
 
 // RESDIR: "-resource-dir" "[[RESDIR:[^"]*]]"
 //
-// LIBPATH-X86_64: -L[[RESDIR]]{{(/|)lib(/|)linux(/|)x86_64}}
-// RPATH-X86_64:   "-rpath" 
"[[RESDIR]]{{(/|)lib(/|)linux(/|)x86_64}}"
+// LIBPATH-X86_64: -L[[RESDIR]]{{(/|)lib(/|)x86_64-unknown-linux}}
+// RPATH-X86_64:   "-rpath" 
"[[RESDIR]]{{(/|)lib(/|)x86_64-unknown-linux}}"
+//
+// LIBPATH-X86_64-ANDROID: 
-L[[RESDIR]]{{(/|)lib(/|)x86_64-unknown-linux-android}}
+// RPATH-X86_64-ANDROID:   "-rpath" 
"[[RESDIR]]{{(/|)lib(/|)x86_64-unknown-linux-android}}"
 //
-// NO-LIBPATH-X86_64-NOT: 
-L[[RESDIR]]{{(/|)lib(/|)linux(/|)x86_64}}
-// NO-RPATH-X86_64-NOT:   "-rpath" 
"[[RESDIR]]{{(/|)lib(/|)linux(/|)x86_64}}"
+//