mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 15:41:46 +00:00
[Clang][VE] Correct rpath handling on VE (#67671)
Add rpath for libc++ libraries in order to not specify rpath by user each time. Disable -frthlib-add-ppath by default for VE similar to other architectures. Update regression tests to check modifications.
This commit is contained in:
parent
06f3b0ed43
commit
1e00423788
@ -902,11 +902,8 @@ void tools::addOpenMPRuntimeLibraryPath(const ToolChain &TC,
|
||||
|
||||
void tools::addArchSpecificRPath(const ToolChain &TC, const ArgList &Args,
|
||||
ArgStringList &CmdArgs) {
|
||||
// Enable -frtlib-add-rpath by default for the case of VE.
|
||||
const bool IsVE = TC.getTriple().isVE();
|
||||
bool DefaultValue = IsVE;
|
||||
if (!Args.hasFlag(options::OPT_frtlib_add_rpath,
|
||||
options::OPT_fno_rtlib_add_rpath, DefaultValue))
|
||||
options::OPT_fno_rtlib_add_rpath, false))
|
||||
return;
|
||||
|
||||
for (const auto &CandidateRPath : TC.getArchSpecificLibPaths()) {
|
||||
|
@ -33,6 +33,7 @@ VEToolChain::VEToolChain(const Driver &D, const llvm::Triple &Triple,
|
||||
// These are OK.
|
||||
|
||||
// Default file paths are following:
|
||||
// ${RESOURCEDIR}/lib/ve-unknown-linux-gnu, (== getArchSpecificLibPaths)
|
||||
// ${RESOURCEDIR}/lib/linux/ve, (== getArchSpecificLibPaths)
|
||||
// /lib/../lib64,
|
||||
// /usr/lib/../lib64,
|
||||
@ -46,6 +47,7 @@ VEToolChain::VEToolChain(const Driver &D, const llvm::Triple &Triple,
|
||||
|
||||
// Add library directories:
|
||||
// ${BINPATH}/../lib/ve-unknown-linux-gnu, (== getStdlibPath)
|
||||
// ${RESOURCEDIR}/lib/ve-unknown-linux-gnu, (== getArchSpecificLibPaths)
|
||||
// ${RESOURCEDIR}/lib/linux/ve, (== getArchSpecificLibPaths)
|
||||
// ${SYSROOT}/opt/nec/ve/lib,
|
||||
if (std::optional<std::string> Path = getStdlibPath())
|
||||
@ -141,6 +143,12 @@ void VEToolChain::AddCXXStdlibLibArgs(const ArgList &Args,
|
||||
|
||||
tools::addArchSpecificRPath(*this, Args, CmdArgs);
|
||||
|
||||
// Add paths for libc++.so and other shared libraries.
|
||||
if (std::optional<std::string> Path = getStdlibPath()) {
|
||||
CmdArgs.push_back("-rpath");
|
||||
CmdArgs.push_back(Args.MakeArgString(*Path));
|
||||
}
|
||||
|
||||
CmdArgs.push_back("-lc++");
|
||||
if (Args.hasArg(options::OPT_fexperimental_library))
|
||||
CmdArgs.push_back("-lc++experimental");
|
||||
|
@ -97,8 +97,8 @@
|
||||
// DEF-SAME: "[[SYSROOT]]/opt/nec/ve/lib/crt1.o"
|
||||
// DEF-SAME: "[[SYSROOT]]/opt/nec/ve/lib/crti.o"
|
||||
// DEF-SAME: "-z" "max-page-size=0x4000000"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/linux/clang_rt.crtbegin-ve.o"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/linux/libclang_rt.builtins-ve.a" "-lc"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/linux/libclang_rt.builtins-ve.a"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/linux/clang_rt.crtend-ve.o"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/ve-unknown-linux-gnu/clang_rt.crtbegin.o"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/ve-unknown-linux-gnu/libclang_rt.builtins.a" "-lc"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/ve-unknown-linux-gnu/libclang_rt.builtins.a"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/ve-unknown-linux-gnu/clang_rt.crtend.o"
|
||||
// DEF-SAME: "[[SYSROOT]]/opt/nec/ve/lib/crtn.o"
|
||||
|
@ -25,6 +25,8 @@
|
||||
// DEFINC-SAME: "-internal-isystem" "{{.*}}/bin/../include/c++/v1"
|
||||
// DEFINC-SAME: "-internal-isystem" "[[RESOURCE_DIR]]/include"
|
||||
// DEFINC-SAME: "-internal-isystem" "[[SYSROOT]]/opt/nec/ve/include"
|
||||
// DEFINC: nld"
|
||||
// DEFINC-SAME: "-rpath" "[[SYSROOT]]/bin/../lib/ve-unknown-linux-gnu"
|
||||
|
||||
// RUN: %clangxx -### --target=ve-unknown-linux-gnu \
|
||||
// RUN: --sysroot %S/Inputs/basic_ve_tree %s \
|
||||
@ -146,9 +148,9 @@
|
||||
// DEF-SAME: "[[SYSROOT]]/opt/nec/ve/lib/crt1.o"
|
||||
// DEF-SAME: "[[SYSROOT]]/opt/nec/ve/lib/crti.o"
|
||||
// DEF-SAME: "-z" "max-page-size=0x4000000"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/linux/clang_rt.crtbegin-ve.o"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/ve-unknown-linux-gnu/clang_rt.crtbegin.o"
|
||||
// DEF-SAME: "-lc++" "-lc++abi" "-lunwind" "-lpthread" "-ldl"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/linux/libclang_rt.builtins-ve.a" "-lc"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/linux/libclang_rt.builtins-ve.a"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/linux/clang_rt.crtend-ve.o"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/ve-unknown-linux-gnu/libclang_rt.builtins.a" "-lc"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/ve-unknown-linux-gnu/libclang_rt.builtins.a"
|
||||
// DEF-SAME: "[[RESOURCE_DIR]]/lib/ve-unknown-linux-gnu/clang_rt.crtend.o"
|
||||
// DEF-SAME: "[[SYSROOT]]/opt/nec/ve/lib/crtn.o"
|
||||
|
Loading…
Reference in New Issue
Block a user