mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-11 02:16:50 +00:00
[RISCV] Collect library directories and triples for riscv64 triple too
When setting up library and tools paths when detecting an accompanying GCC installation only riscv32 was handled. As a consequence when targetting riscv64 neither the linker nor libraries would be found. This adds handling and tests for riscv64. Differential Revision: https://reviews.llvm.org/D53392 Patch by Edward Jones. llvm-svn: 357699
This commit is contained in:
parent
aa79a3fe8e
commit
d411677dea
@ -1976,10 +1976,14 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
|
||||
"powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu",
|
||||
"powerpc64le-suse-linux", "ppc64le-redhat-linux"};
|
||||
|
||||
static const char *const RISCV32LibDirs[] = {"/lib", "/lib32"};
|
||||
static const char *const RISCVTriples[] = {"riscv32-unknown-linux-gnu",
|
||||
"riscv64-unknown-linux-gnu",
|
||||
"riscv32-unknown-elf"};
|
||||
static const char *const RISCV32LibDirs[] = {"/lib32", "/lib"};
|
||||
static const char *const RISCV32Triples[] = {"riscv32-unknown-linux-gnu",
|
||||
"riscv32-linux-gnu",
|
||||
"riscv32-unknown-elf"};
|
||||
static const char *const RISCV64LibDirs[] = {"/lib64", "/lib"};
|
||||
static const char *const RISCV64Triples[] = {"riscv64-unknown-linux-gnu",
|
||||
"riscv64-linux-gnu",
|
||||
"riscv64-unknown-elf"};
|
||||
|
||||
static const char *const SPARCv8LibDirs[] = {"/lib32", "/lib"};
|
||||
static const char *const SPARCv8Triples[] = {"sparc-linux-gnu",
|
||||
@ -2209,9 +2213,15 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
|
||||
break;
|
||||
case llvm::Triple::riscv32:
|
||||
LibDirs.append(begin(RISCV32LibDirs), end(RISCV32LibDirs));
|
||||
TripleAliases.append(begin(RISCV32Triples), end(RISCV32Triples));
|
||||
BiarchLibDirs.append(begin(RISCV64LibDirs), end(RISCV64LibDirs));
|
||||
BiarchTripleAliases.append(begin(RISCV64Triples), end(RISCV64Triples));
|
||||
break;
|
||||
case llvm::Triple::riscv64:
|
||||
LibDirs.append(begin(RISCV64LibDirs), end(RISCV64LibDirs));
|
||||
TripleAliases.append(begin(RISCV64Triples), end(RISCV64Triples));
|
||||
BiarchLibDirs.append(begin(RISCV32LibDirs), end(RISCV32LibDirs));
|
||||
TripleAliases.append(begin(RISCVTriples), end(RISCVTriples));
|
||||
BiarchTripleAliases.append(begin(RISCVTriples), end(RISCVTriples));
|
||||
BiarchTripleAliases.append(begin(RISCV32Triples), end(RISCV32Triples));
|
||||
break;
|
||||
case llvm::Triple::sparc:
|
||||
case llvm::Triple::sparcel:
|
||||
|
1
clang/test/Driver/Inputs/basic_riscv64_tree/bin/riscv64-unknown-elf-ld
Executable file
1
clang/test/Driver/Inputs/basic_riscv64_tree/bin/riscv64-unknown-elf-ld
Executable file
@ -0,0 +1 @@
|
||||
#!/bin/true
|
@ -3,6 +3,102 @@
|
||||
// RUN: %clang %s -### -no-canonical-prefixes -target riscv64 2>&1 | FileCheck -check-prefix=CC1 %s
|
||||
// CC1: clang{{.*}} "-cc1" "-triple" "riscv64"
|
||||
|
||||
// RUN: %clang %s -### -no-canonical-prefixes \
|
||||
// RUN: -target riscv64-unknown-elf \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_riscv64_tree \
|
||||
// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=C-RV64-BAREMETAL-LP64 %s
|
||||
|
||||
// C-RV64-BAREMETAL-LP64: "-fuse-init-array"
|
||||
// C-RV64-BAREMETAL-LP64: "{{.*}}Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/../../../../bin{{/|\\\\}}riscv64-unknown-elf-ld"
|
||||
// C-RV64-BAREMETAL-LP64: "--sysroot={{.*}}/Inputs/basic_riscv64_tree/riscv64-unknown-elf"
|
||||
// C-RV64-BAREMETAL-LP64: "{{.*}}/Inputs/basic_riscv64_tree/riscv64-unknown-elf/lib{{/|\\\\}}crt0.o"
|
||||
// C-RV64-BAREMETAL-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1{{/|\\\\}}crtbegin.o"
|
||||
// C-RV64-BAREMETAL-LP64: "-L{{.*}}/Inputs/basic_riscv64_tree/riscv64-unknown-elf/lib"
|
||||
// C-RV64-BAREMETAL-LP64: "-L{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1"
|
||||
// C-RV64-BAREMETAL-LP64: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV64-BAREMETAL-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1{{/|\\\\}}crtend.o"
|
||||
|
||||
// RUN: %clang %s -### -no-canonical-prefixes \
|
||||
// RUN: -target riscv64-unknown-elf \
|
||||
// RUN: --sysroot= \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_riscv64_tree 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=C-RV64-BAREMETAL-NOSYSROOT-LP64 %s
|
||||
|
||||
// C-RV64-BAREMETAL-NOSYSROOT-LP64: "-fuse-init-array"
|
||||
// C-RV64-BAREMETAL-NOSYSROOT-LP64: "{{.*}}Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/../../../../bin{{/|\\\\}}riscv64-unknown-elf-ld"
|
||||
// C-RV64-BAREMETAL-NOSYSROOT-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/../../../../riscv64-unknown-elf/lib{{/|\\\\}}crt0.o"
|
||||
// C-RV64-BAREMETAL-NOSYSROOT-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1{{/|\\\\}}crtbegin.o"
|
||||
// C-RV64-BAREMETAL-NOSYSROOT-LP64: "-L{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/../../../../riscv64-unknown-elf{{/|\\\\}}lib"
|
||||
// C-RV64-BAREMETAL-NOSYSROOT-LP64: "-L{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1"
|
||||
// C-RV64-BAREMETAL-NOSYSROOT-LP64: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV64-BAREMETAL-NOSYSROOT-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1{{/|\\\\}}crtend.o"
|
||||
|
||||
// RUN: %clangxx %s -### -no-canonical-prefixes \
|
||||
// RUN: -target riscv64-unknown-elf -stdlib=libstdc++ \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_riscv64_tree \
|
||||
// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CXX-RV64-BAREMETAL-LP64 %s
|
||||
|
||||
// CXX-RV64-BAREMETAL-LP64: "-fuse-init-array"
|
||||
// CXX-RV64-BAREMETAL-LP64: "-internal-isystem" "{{.*}}Inputs/basic_riscv64_tree/riscv64-unknown-elf/include/c++{{/|\\\\}}8.0.1"
|
||||
// CXX-RV64-BAREMETAL-LP64: "{{.*}}Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/../../../../bin{{/|\\\\}}riscv64-unknown-elf-ld"
|
||||
// CXX-RV64-BAREMETAL-LP64: "--sysroot={{.*}}/Inputs/basic_riscv64_tree/riscv64-unknown-elf"
|
||||
// CXX-RV64-BAREMETAL-LP64: "{{.*}}/Inputs/basic_riscv64_tree/riscv64-unknown-elf/lib{{/|\\\\}}crt0.o"
|
||||
// CXX-RV64-BAREMETAL-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1{{/|\\\\}}crtbegin.o"
|
||||
// CXX-RV64-BAREMETAL-LP64: "-L{{.*}}/Inputs/basic_riscv64_tree/riscv64-unknown-elf/lib"
|
||||
// CXX-RV64-BAREMETAL-LP64: "-L{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1"
|
||||
// CXX-RV64-BAREMETAL-LP64: "-lstdc++" "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// CXX-RV64-BAREMETAL-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1{{/|\\\\}}crtend.o"
|
||||
|
||||
// RUN: %clangxx %s -### -no-canonical-prefixes \
|
||||
// RUN: -target riscv64-unknown-elf -stdlib=libstdc++ \
|
||||
// RUN: --sysroot= \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_riscv64_tree 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CXX-RV64-BAREMETAL-NOSYSROOT-LP64 %s
|
||||
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "-fuse-init-array"
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "-internal-isystem" "{{.*}}Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/../../../../riscv64-unknown-elf/include/c++{{/|\\\\}}8.0.1"
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "{{.*}}Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/../../../../bin{{/|\\\\}}riscv64-unknown-elf-ld"
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/../../../../riscv64-unknown-elf/lib{{/|\\\\}}crt0.o"
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1{{/|\\\\}}crtbegin.o"
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "-L{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/../../../../riscv64-unknown-elf/lib"
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "-L{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1"
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "-lstdc++" "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1{{/|\\\\}}crtend.o"
|
||||
|
||||
// RUN: %clang %s -### -no-canonical-prefixes -fuse-ld=ld \
|
||||
// RUN: -target riscv64-unknown-linux-gnu \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/multilib_riscv_linux_sdk \
|
||||
// RUN: --sysroot=%S/Inputs/multilib_riscv_linux_sdk/sysroot 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=C-RV64-LINUX-MULTI-LP64 %s
|
||||
|
||||
// C-RV64-LINUX-MULTI-LP64: "-fuse-init-array"
|
||||
// C-RV64-LINUX-MULTI-LP64: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/../../../../riscv64-unknown-linux-gnu/bin{{/|\\\\}}ld"
|
||||
// C-RV64-LINUX-MULTI-LP64: "--sysroot={{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot"
|
||||
// C-RV64-LINUX-MULTI-LP64: "-m" "elf64lriscv"
|
||||
// C-RV64-LINUX-MULTI-LP64: "-dynamic-linker" "/lib/ld-linux-riscv64-lp64.so.1"
|
||||
// C-RV64-LINUX-MULTI-LP64: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib64/lp64{{/|\\\\}}crtbegin.o"
|
||||
// C-RV64-LINUX-MULTI-LP64: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib64/lp64"
|
||||
// C-RV64-LINUX-MULTI-LP64: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/lib64/lp64"
|
||||
// C-RV64-LINUX-MULTI-LP64: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/usr/lib64/lp64"
|
||||
|
||||
// RUN: %clang %s -### -no-canonical-prefixes -fuse-ld=ld \
|
||||
// RUN: -target riscv64-unknown-linux-gnu -march=rv64imafd -mabi=lp64d \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/multilib_riscv_linux_sdk \
|
||||
// RUN: --sysroot=%S/Inputs/multilib_riscv_linux_sdk/sysroot 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=C-RV64-LINUX-MULTI-LP64D %s
|
||||
|
||||
// C-RV64-LINUX-MULTI-LP64D: "-fuse-init-array"
|
||||
// C-RV64-LINUX-MULTI-LP64D: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/../../../../riscv64-unknown-linux-gnu/bin{{/|\\\\}}ld"
|
||||
// C-RV64-LINUX-MULTI-LP64D: "--sysroot={{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot"
|
||||
// C-RV64-LINUX-MULTI-LP64D: "-m" "elf64lriscv"
|
||||
// C-RV64-LINUX-MULTI-LP64D: "-dynamic-linker" "/lib/ld-linux-riscv64-lp64d.so.1"
|
||||
// C-RV64-LINUX-MULTI-LP64D: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib64/lp64d{{/|\\\\}}crtbegin.o"
|
||||
// C-RV64-LINUX-MULTI-LP64D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/lib64/lp64d"
|
||||
// C-RV64-LINUX-MULTI-LP64D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/lib64/lp64d"
|
||||
// C-RV64-LINUX-MULTI-LP64D: "-L{{.*}}/Inputs/multilib_riscv_linux_sdk/sysroot/usr/lib64/lp64d"
|
||||
|
||||
// RUN: %clang -target riscv64 %s -emit-llvm -S -o - | FileCheck %s
|
||||
|
||||
typedef __builtin_va_list va_list;
|
||||
|
Loading…
x
Reference in New Issue
Block a user