Reland [Driver] Add support for crtbegin.o, crtend.o and libgloss lib to BareMetal toolchain object (#144649)
This patch conditionalise the addition of crt{begin,end}.o object files
along with addition of -lgloss lib based on whether libc selected is
newlib or
llvm libc. Since there is no way a user can specify which libc it wants
to
link against, currently passing valid GCCInstallation to driver will
select
newlib otherwise it will default to llvm libc.
Moreover, this patch makes gnuld the default linker for baremetal
toolchain object. User need to pass `-fuse-ld=lld` explicitly to driver
to select
lld
This is the 2nd patch in the series of patches of merging RISCVToolchain
into BareMetal toolchain object.
RFC:
https://discourse.llvm.org/t/merging-riscvtoolchain-and-baremetal-toolchains/75524
This commit is contained in:
@@ -584,9 +584,31 @@ void baremetal::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
CmdArgs.push_back(Arch == llvm::Triple::aarch64_be ? "-EB" : "-EL");
|
||||
}
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles,
|
||||
options::OPT_r)) {
|
||||
CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crt0.o")));
|
||||
bool NeedCRTs =
|
||||
!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles);
|
||||
|
||||
const char *CRTBegin, *CRTEnd;
|
||||
if (NeedCRTs) {
|
||||
if (!Args.hasArg(options::OPT_r))
|
||||
CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crt0.o")));
|
||||
if (TC.hasValidGCCInstallation() || detectGCCToolchainAdjacent(D)) {
|
||||
auto RuntimeLib = TC.GetRuntimeLibType(Args);
|
||||
switch (RuntimeLib) {
|
||||
case (ToolChain::RLT_Libgcc): {
|
||||
CRTBegin = "crtbegin.o";
|
||||
CRTEnd = "crtend.o";
|
||||
break;
|
||||
}
|
||||
case (ToolChain::RLT_CompilerRT): {
|
||||
CRTBegin =
|
||||
TC.getCompilerRTArgString(Args, "crtbegin", ToolChain::FT_Object);
|
||||
CRTEnd =
|
||||
TC.getCompilerRTArgString(Args, "crtend", ToolChain::FT_Object);
|
||||
break;
|
||||
}
|
||||
}
|
||||
CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath(CRTBegin)));
|
||||
}
|
||||
}
|
||||
|
||||
Args.addAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group,
|
||||
@@ -609,15 +631,22 @@ void baremetal::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
}
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
|
||||
CmdArgs.push_back("--start-group");
|
||||
AddRunTimeLibs(TC, D, CmdArgs, Args);
|
||||
|
||||
CmdArgs.push_back("-lc");
|
||||
if (TC.hasValidGCCInstallation() || detectGCCToolchainAdjacent(D))
|
||||
CmdArgs.push_back("-lgloss");
|
||||
CmdArgs.push_back("--end-group");
|
||||
}
|
||||
|
||||
if (D.isUsingLTO())
|
||||
addLTOOptions(TC, Args, CmdArgs, Output, Inputs,
|
||||
D.getLTOMode() == LTOK_Thin);
|
||||
|
||||
if ((TC.hasValidGCCInstallation() || detectGCCToolchainAdjacent(D)) &&
|
||||
NeedCRTs)
|
||||
CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath(CRTEnd)));
|
||||
|
||||
if (TC.getTriple().isRISCV())
|
||||
CmdArgs.push_back("-X");
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ protected:
|
||||
public:
|
||||
bool initGCCInstallation(const llvm::Triple &Triple,
|
||||
const llvm::opt::ArgList &Args);
|
||||
bool hasValidGCCInstallation() const { return IsGCCInstallationValid; }
|
||||
bool isBareMetal() const override { return true; }
|
||||
bool isCrossCompiling() const override { return true; }
|
||||
bool HasNativeLLVMSupport() const override { return true; }
|
||||
@@ -63,8 +64,6 @@ public:
|
||||
return ToolChain::CST_Libcxx;
|
||||
}
|
||||
|
||||
const char *getDefaultLinker() const override { return "ld.lld"; }
|
||||
|
||||
void
|
||||
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args) const override;
|
||||
|
||||
@@ -15,14 +15,21 @@
|
||||
// RUN: mkdir -p %t/aarch64-nogcc/bin
|
||||
// RUN: ln -s %clang %t/aarch64-nogcc/bin/clang
|
||||
// RUN: ln -s %S/Inputs/basic_aarch64_nogcc_tree/aarch64-none-elf %t/aarch64-nogcc/aarch64-none-elf
|
||||
// RUN: ln -s %S/Inputs/basic_aarch64_nogcc_tree/bin/aarch64-none-elf-ld %t/aarch64-nogcc/bin/aarch64-none-elf-ld
|
||||
// RUN: %t/aarch64-nogcc/bin/clang %s -### -no-canonical-prefixes \
|
||||
// RUN: --gcc-toolchain=%t/aarch64-nogcc/invalid \
|
||||
// RUN: --target=aarch64-none-elf --rtlib=libgcc --unwindlib=platform -fuse-ld=ld 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=C-ARM-BAREMETAL-NOGCC %s
|
||||
// RUN: | FileCheck -check-prefix=C-AARCH64-BAREMETAL-NOGCC %s
|
||||
|
||||
// RUN: %t/aarch64-nogcc/bin/clang %s -### -no-canonical-prefixes \
|
||||
// RUN: --sysroot=%t/aarch64-nogcc/bin/../aarch64-none-elf \
|
||||
// RUN: --target=aarch64-none-elf --rtlib=libgcc --unwindlib=platform -fuse-ld=ld 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=C-ARM-BAREMETAL-NOGCC %s
|
||||
// RUN: | FileCheck -check-prefix=C-AARCH64-BAREMETAL-NOGCC %s
|
||||
|
||||
// C-ARM-BAREMETAL-NOGCC: "-internal-isystem" "{{.*}}/aarch64-nogcc/bin/../aarch64-none-elf/include"
|
||||
// C-AARCH64-BAREMETAL-NOGCC: "-internal-isystem" "{{.*}}/aarch64-nogcc/bin/../aarch64-none-elf/include"
|
||||
// C-AARCH64-BAREMETAL-NOGCC: "{{.*}}/aarch64-nogcc/bin/aarch64-none-elf-ld"
|
||||
// C-AARCH64-BAREMETAL-NOGCC: "{{.*}}/aarch64-nogcc/bin/../aarch64-none-elf/lib/crt0.o"
|
||||
// C-AARCH64-BAREMETAL-NOGCC: "{{.*}}/aarch64-nogcc/{{.*}}/aarch64-none-elf/lib/crtbegin.o"
|
||||
// C-AARCH64-BAREMETAL-NOGCC: "{{.*}}/aarch64-nogcc/bin/../aarch64-none-elf/lib"
|
||||
// C-AARCH64-BAREMETAL-NOGCC: "--start-group" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgloss" "--end-group"
|
||||
// C-AARCH64-BAREMETAL-NOGCC: "{{.*}}/aarch64-nogcc/{{.*}}/aarch64-none-elf/lib/crtend.o"
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
// UNSUPPORTED: system-windows
|
||||
|
||||
// Test interaction with -fuse-ld=lld
|
||||
// RUN: %clang -### %s -fuse-ld=lld -B%S/Inputs/lld \
|
||||
// RUN: --target=aarch64-none-elf --rtlib=libgcc --unwindlib=platform \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_aarch64_gcc_tree \
|
||||
// RUN: --sysroot=%S/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=LLD-AARCH64-BAREMETAL %s
|
||||
|
||||
// LLD-AARCH64-BAREMETAL: "-cc1" "-triple" "aarch64-unknown-none-elf"
|
||||
// LLD-AARCH64-BAREMETAL: "-isysroot" "{{.*}}Inputs/basic_aarch64_gcc_tree/aarch64-none-elf"
|
||||
// LLD-AARCH64-BAREMETAL: "-internal-isystem" "{{.*}}Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include"
|
||||
// LLD-AARCH64-BAREMETAL: "{{.*}}/Inputs/lld/ld.lld"
|
||||
// LLD-AARCH64-BAREMETAL: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// LLD-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib/crt0.o"
|
||||
// LLD-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtbegin.o"
|
||||
// LLD-AARCH64-BAREMETAL: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1"
|
||||
// LLD-AARCH64-BAREMETAL: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib"
|
||||
// LLD-AARCH64-BAREMETAL: "--start-group" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgloss" "--end-group"
|
||||
// LLD-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
// RUN: --target=aarch64-none-elf --rtlib=libgcc --unwindlib=platform \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_aarch64_gcc_tree \
|
||||
@@ -9,6 +28,14 @@
|
||||
// C-AARCH64-BAREMETAL: "-cc1" "-triple" "aarch64-unknown-none-elf"
|
||||
// C-AARCH64-BAREMETAL: "-isysroot" "{{.*}}Inputs/basic_aarch64_gcc_tree/aarch64-none-elf"
|
||||
// C-AARCH64-BAREMETAL: "-internal-isystem" "{{.*}}Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include"
|
||||
// C-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../bin/aarch64-none-elf-ld"
|
||||
// C-AARCH64-BAREMETAL: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// C-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib/crt0.o"
|
||||
// C-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtbegin.o"
|
||||
// C-AARCH64-BAREMETAL: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1"
|
||||
// C-AARCH64-BAREMETAL: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib"
|
||||
// C-AARCH64-BAREMETAL: "--start-group" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgloss" "--end-group"
|
||||
// C-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
// RUN: --target=aarch64-none-elf --rtlib=libgcc --unwindlib=platform \
|
||||
@@ -18,6 +45,14 @@
|
||||
|
||||
// C-AARCH64-BAREMETAL-NOSYSROOT: "-cc1" "-triple" "aarch64-unknown-none-elf"
|
||||
// C-AARCH64-BAREMETAL-NOSYSROOT: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/include"
|
||||
// C-AARCH64-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../bin/aarch64-none-elf-ld"
|
||||
// C-AARCH64-BAREMETAL-NOSYSROOT: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// C-AARCH64-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/lib/crt0.o"
|
||||
// C-AARCH64-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtbegin.o"
|
||||
// C-AARCH64-BAREMETAL-NOSYSROOT: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1"
|
||||
// C-AARCH64-BAREMETAL-NOSYSROOT: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/lib"
|
||||
// C-AARCH64-BAREMETAL-NOSYSROOT: "--start-group" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgloss" "--end-group"
|
||||
// C-AARCH64-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clangxx -### %s -fuse-ld= \
|
||||
// RUN: --target=aarch64-none-elf -stdlib=libstdc++ --rtlib=libgcc --unwindlib=platform \
|
||||
@@ -29,6 +64,14 @@
|
||||
// CXX-AARCH64-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include/c++/8.2.1/backward"
|
||||
// CXX-AARCH64-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include/c++/8.2.1"
|
||||
// CXX-AARCH64-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include"
|
||||
// CXX-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../bin/aarch64-none-elf-ld"
|
||||
// CXX-AARCH64-BAREMETAL: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// CXX-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib/crt0.o"
|
||||
// CXX-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtbegin.o"
|
||||
// CXX-AARCH64-BAREMETAL: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1"
|
||||
// CXX-AARCH64-BAREMETAL: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib"
|
||||
// CXX-AARCH64-BAREMETAL: "-lstdc++" "-lm" "--start-group" "-lgcc_s" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-AARCH64-BAREMETAL: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clangxx -### %s -fuse-ld= \
|
||||
// RUN: --target=aarch64-none-elf -stdlib=libstdc++ --rtlib=libgcc --unwindlib=platform \
|
||||
@@ -40,6 +83,14 @@
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/include/c++/8.2.1/backward"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/include/c++/8.2.1"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/include"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../bin/aarch64-none-elf-ld"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/lib/crt0.o"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtbegin.o"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/lib"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "-lstdc++" "-lm" "--start-group" "-lgcc_s" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clangxx -### %s -fuse-ld= \
|
||||
// RUN: --target=aarch64-none-elf -stdlib=libc++ --rtlib=libgcc --unwindlib=platform \
|
||||
@@ -50,6 +101,14 @@
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "-isysroot" "{{.*}}Inputs/basic_aarch64_gcc_tree/aarch64-none-elf"
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include/c++/v1"
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/include"
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../bin/aarch64-none-elf-ld
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib/crt0.o"
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtbegin.o"
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1"
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf/lib"
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "-lc++" "-lm" "--start-group" "-lgcc_s" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-AARCH64-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clangxx -### %s -fuse-ld= \
|
||||
// RUN: --target=aarch64-none-elf -stdlib=libc++ --rtlib=libgcc --unwindlib=platform \
|
||||
@@ -59,3 +118,39 @@
|
||||
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/include/c++/v1"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/include"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../bin/aarch64-none-elf-ld"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT-LIBCXX: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/lib/crt0.o"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtbegin.o"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT-LIBCXX: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT-LIBCXX: "-L{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/../../../../aarch64-none-elf/lib"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT-LIBCXX: "-lc++" "-lm" "--start-group" "-lgcc_s" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-AARCH64-BAREMETAL-NOSYSROOT-LIBCXX: "{{.*}}/Inputs/basic_aarch64_gcc_tree/lib/gcc/aarch64-none-elf/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
// RUN: --target=aarch64-none-elf --rtlib=compiler-rt --unwindlib=platform \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_aarch64_gcc_tree \
|
||||
// RUN: --sysroot=%S/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=AARCH64-BAREMETAL-COMPILER-RT %s
|
||||
|
||||
// AARCH64-BAREMETAL-COMPILER-RT: "{{.*}}crt0.o"
|
||||
// AARCH64-BAREMETAL-COMPILER-RT: "{{.*}}clang_rt.crtbegin.o"
|
||||
// AARCH64-BAREMETAL-COMPILER-RT: "--start-group" "{{.*}}libclang_rt.builtins.a" "-lc" "-lgloss" "--end-group"
|
||||
// AARCH64-BAREMETAL-COMPILER-RT: "{{.*}}clang_rt.crtend.o"
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
// RUN: --target=aarch64-none-elf --rtlib=platform --unwindlib=libunwind \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_aarch64_gcc_tree \
|
||||
// RUN: --sysroot=%S/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=AARCH64-BAREMETAL-UNWINDLIB %s
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
// RUN: --target=aarch64-none-elf --rtlib=compiler-rt --unwindlib=libunwind \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_aarch64_gcc_tree \
|
||||
// RUN: --sysroot=%S/Inputs/basic_aarch64_gcc_tree/aarch64-none-elf 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=AARCH64-BAREMETAL-UNWINDLIB %s
|
||||
|
||||
// AARCH64-BAREMETAL-UNWINDLIB: "{{.*}}crt0.o"
|
||||
// AARCH64-BAREMETAL-UNWINDLIB: "{{.*}}clang_rt.crtbegin.o"
|
||||
// AARCH64-BAREMETAL-UNWINDLIB: "--start-group" "{{.*}}libclang_rt.builtins.a" "--as-needed" "-lunwind" "--no-as-needed" "-lc" "-lgloss" "--end-group"
|
||||
// AARCH64-BAREMETAL-UNWINDLIB: "{{.*}}clang_rt.crtend.o"
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
// RUN: mkdir -p %t/arm-nogcc/bin
|
||||
// RUN: ln -s %clang %t/arm-nogcc/bin/clang
|
||||
// RUN: ln -s %S/Inputs/basic_arm_nogcc_tree/armv6m-none-eabi %t/arm-nogcc/armv6m-none-eabi
|
||||
// RUN: ln -s %S/Inputs/basic_arm_nogcc_tree/bin/armv6m-none-eabi-ld %t/arm-nogcc/bin/armv6m-none-eabi-ld
|
||||
// RUN: %t/arm-nogcc/bin/clang %s -### -no-canonical-prefixes \
|
||||
// RUN: --gcc-toolchain=%t/arm-nogcc/invalid \
|
||||
// RUN: --target=armv6m-none-eabi --rtlib=libgcc --unwindlib=platform -fuse-ld=ld 2>&1 \
|
||||
@@ -26,4 +27,10 @@
|
||||
// RUN: | FileCheck -check-prefix=C-ARM-BAREMETAL-NOGCC %s
|
||||
|
||||
// C-ARM-BAREMETAL-NOGCC: "-internal-isystem" "{{.*}}/arm-nogcc/bin/../armv6m-none-eabi/include"
|
||||
// C-ARM-BAREMETAL-NOGCC: "{{.*}}/arm-nogcc/bin/armv6m-none-eabi-ld"
|
||||
// C-ARM-BAREMETAL-NOGCC: "{{.*}}/arm-nogcc/bin/../armv6m-none-eabi/lib/crt0.o"
|
||||
// C-ARM-BAREMETAL-NOGCC: "{{.*}}/arm-nogcc/{{.*}}/armv6m-none-eabi/lib/crtbegin.o"
|
||||
// C-ARM-BAREMETAL-NOGCC: "{{.*}}/arm-nogcc/bin/../armv6m-none-eabi/lib"
|
||||
// C-ARM-BAREMETAL-NOGCC: "--start-group" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgloss" "--end-group"
|
||||
// C-ARM-BAREMETAL-NOGCC: "{{.*}}/arm-nogcc/{{.*}}/armv6m-none-eabi/lib/crtend.o"
|
||||
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
// UNSUPPORTED: system-windows
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld=lld -B%S/Inputs/lld \
|
||||
// RUN: --target=armv6m-none-eabi --rtlib=libgcc --unwindlib=platform \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_arm_gcc_tree \
|
||||
// RUN: --sysroot=%S/Inputs/basic_arm_gcc_tree/armv6m-none-eabi 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=LLD-ARM-BAREMETAL %s
|
||||
|
||||
// LLD-ARM-BAREMETAL: "-cc1" "-triple" "thumbv6m-unknown-none-eabi"
|
||||
// LLD-ARM-BAREMETAL: "-isysroot" "{{.*}}Inputs/basic_arm_gcc_tree/armv6m-none-eabi"
|
||||
// LLD-ARM-BAREMETAL: "-internal-isystem" "{{.*}}Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include"
|
||||
// LLD-ARM-BAREMETAL: "{{.*}}/Inputs/lld/ld.lld"
|
||||
// LLD-ARM-BAREMETAL: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// LLD-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib/crt0.o"
|
||||
// LLD-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtbegin.o"
|
||||
// LLD-ARM-BAREMETAL: "-L{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1"
|
||||
// LLD-ARM-BAREMETAL: "-L{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib"
|
||||
// LLD-ARM-BAREMETAL: "--start-group" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgloss" "--end-group"
|
||||
// LLD-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
// RUN: --target=armv6m-none-eabi --rtlib=libgcc --unwindlib=platform \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_arm_gcc_tree \
|
||||
@@ -9,6 +27,14 @@
|
||||
// C-ARM-BAREMETAL: "-cc1" "-triple" "thumbv6m-unknown-none-eabi"
|
||||
// C-ARM-BAREMETAL: "-isysroot" "{{.*}}Inputs/basic_arm_gcc_tree/armv6m-none-eabi"
|
||||
// C-ARM-BAREMETAL: "-internal-isystem" "{{.*}}Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include"
|
||||
// C-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../bin/armv6m-none-eabi-ld"
|
||||
// C-ARM-BAREMETAL: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// C-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib/crt0.o"
|
||||
// C-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtbegin.o"
|
||||
// C-ARM-BAREMETAL: "-L{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1"
|
||||
// C-ARM-BAREMETAL: "-L{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib"
|
||||
// C-ARM-BAREMETAL: "--start-group" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgloss" "--end-group"
|
||||
// C-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
// RUN: --target=armv6m-none-eabi --rtlib=libgcc --unwindlib=platform \
|
||||
@@ -18,6 +44,14 @@
|
||||
|
||||
// C-ARM-BAREMETAL-NOSYSROOT: "-cc1" "-triple" "thumbv6m-unknown-none-eabi"
|
||||
// C-ARM-BAREMETAL-NOSYSROOT: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/include"
|
||||
// C-ARM-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../bin/armv6m-none-eabi-ld"
|
||||
// C-ARM-BAREMETAL-NOSYSROOT: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// C-ARM-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/lib/crt0.o"
|
||||
// C-ARM-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtbegin.o"
|
||||
// C-ARM-BAREMETAL-NOSYSROOT: "-L{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1"
|
||||
// C-ARM-BAREMETAL-NOSYSROOT: "-L{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/lib"
|
||||
// C-ARM-BAREMETAL-NOSYSROOT: "--start-group" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgloss" "--end-group"
|
||||
// C-ARM-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clangxx -### %s -fuse-ld= \
|
||||
// RUN: --target=armv6m-none-eabi -stdlib=libstdc++ --rtlib=libgcc --unwindlib=platform \
|
||||
@@ -28,8 +62,17 @@
|
||||
// CXX-ARM-BAREMETAL: "-isysroot" "{{.*}}Inputs/basic_arm_gcc_tree/armv6m-none-eabi"
|
||||
// CXX-ARM-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include/c++/8.2.1/armv6m-none-eabi"
|
||||
// CXX-ARM-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include/c++/8.2.1/backward"
|
||||
// CXX-ARM-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include/c++/8.2.1"
|
||||
// CXX-ARM-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include/c++/8.2.1"
|
||||
// CXX-ARM-BAREMETAL: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include"
|
||||
// CXX-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../bin/armv6m-none-eabi-ld"
|
||||
// CXX-ARM-BAREMETAL: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// CXX-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib/crt0.o"
|
||||
// CXX-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtbegin.o"
|
||||
// CXX-ARM-BAREMETAL: "-L{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1"
|
||||
// CXX-ARM-BAREMETAL: "-L{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib"
|
||||
// CXX-ARM-BAREMETAL: "-lstdc++" "-lm" "--start-group" "-lgcc_s" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-ARM-BAREMETAL: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtend.o"
|
||||
|
||||
|
||||
// RUN: %clangxx -### %s -fuse-ld= \
|
||||
// RUN: --target=armv6m-none-eabi -stdlib=libstdc++ --rtlib=libgcc --unwindlib=platform \
|
||||
@@ -41,6 +84,14 @@
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/include/c++/8.2.1/backward"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/include/c++/8.2.1"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/include"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../bin/armv6m-none-eabi-ld"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/lib/crt0.o"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtbegin.o"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "-L{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "-L{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/lib"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "-lstdc++" "-lm" "--start-group" "-lgcc_s" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clangxx -### %s -fuse-ld= \
|
||||
// RUN: --target=armv6m-none-eabi -stdlib=libc++ --rtlib=libgcc --unwindlib=platform \
|
||||
@@ -51,6 +102,14 @@
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "-isysroot" "{{.*}}Inputs/basic_arm_gcc_tree/armv6m-none-eabi"
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include/c++/v1"
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/include"
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../bin/armv6m-none-eabi-ld"
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib/crt0.o"
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtbegin.o"
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "-L{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1"
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "-L{{.*}}/Inputs/basic_arm_gcc_tree/armv6m-none-eabi/lib"
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "-lc++" "-lm" "--start-group" "-lgcc_s" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-ARM-BAREMETAL-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clangxx -### %s -fuse-ld= \
|
||||
// RUN: --target=armv6m-none-eabi -stdlib=libc++ --rtlib=libgcc --unwindlib=platform \
|
||||
@@ -59,4 +118,40 @@
|
||||
// RUN: | FileCheck -check-prefix=CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX %s
|
||||
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/include/c++/v1"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/include
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "-internal-isystem" "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/include"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../bin/armv6m-none-eabi-ld"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "{{.*}}.o" "-Bstatic" "-EL"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/lib/crt0.o"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtbegin.o"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "-L{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "-L{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/../../../../armv6m-none-eabi/lib"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "-lc++" "-lm" "--start-group" "-lgcc_s" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-ARM-BAREMETAL-NOSYSROOT-LIBCXX: "{{.*}}/Inputs/basic_arm_gcc_tree/lib/gcc/armv6m-none-eabi/8.2.1/crtend.o"
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
// RUN: --target=armv6m-none-eabi --rtlib=compiler-rt --unwindlib=platform \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_arm_gcc_tree \
|
||||
// RUN: --sysroot=%S/Inputs/basic_arm_gcc_tree/armv6m-none-eabi 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=ARM-BAREMETAL-COMPILER-RT %s
|
||||
|
||||
// ARM-BAREMETAL-COMPILER-RT: "{{.*}}crt0.o"
|
||||
// ARM-BAREMETAL-COMPILER-RT: "{{.*}}clang_rt.crtbegin.o"
|
||||
// ARM-BAREMETAL-COMPILER-RT: "--start-group" "{{.*}}libclang_rt.builtins.a" "-lc" "-lgloss" "--end-group"
|
||||
// ARM-BAREMETAL-COMPILER-RT: "{{.*}}clang_rt.crtend.o"
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
// RUN: --target=armv6m-none-eabi --rtlib=platform --unwindlib=libunwind \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_arm_gcc_tree \
|
||||
// RUN: --sysroot=%S/Inputs/basic_arm_gcc_tree/armv6m-none-eabi 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=ARM-BAREMETAL-UNWINDLIB %s
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
// RUN: --target=armv6m-none-eabi --rtlib=compiler-rt --unwindlib=libunwind \
|
||||
// RUN: --gcc-toolchain=%S/Inputs/basic_arm_gcc_tree \
|
||||
// RUN: --sysroot=%S/Inputs/basic_arm_gcc_tree/armv6m-none-eabi 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=ARM-BAREMETAL-UNWINDLIB %s
|
||||
|
||||
// ARM-BAREMETAL-UNWINDLIB: "{{.*}}crt0.o"
|
||||
// ARM-BAREMETAL-UNWINDLIB: "{{.*}}clang_rt.crtbegin.o"
|
||||
// ARM-BAREMETAL-UNWINDLIB: "--start-group" "{{.*}}libclang_rt.builtins.a" "--as-needed" "-lunwind" "--no-as-needed" "-lc" "-lgloss" "--end-group"
|
||||
// ARM-BAREMETAL-UNWINDLIB: "{{.*}}clang_rt.crtend.o"
|
||||
|
||||
@@ -319,7 +319,8 @@
|
||||
// CHECK-RV32-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
|
||||
// CHECK-RV32-LIBSTDCXX-SAME: "-lstdc++" "-lm"
|
||||
// CHECK-RV32-LIBSTDCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
|
||||
// CHECK-RV32-LIBSTDCXX-SAME: "-lc" "-X" "-o" "a.out"
|
||||
// CHECK-RV32-LIBSTDCXX-SAME: "-lc"
|
||||
// CHECK-RV32-LIBSTDCXX-SAME: "-X" "-o" "a.out"
|
||||
|
||||
// RUN: %clang %s -### 2>&1 --target=riscv64-unknown-elf \
|
||||
// RUN: -nostdlibinc -nobuiltininc \
|
||||
|
||||
@@ -1033,7 +1033,7 @@
|
||||
// RUN: --target=riscv32-unknown-elf -fuse-ld=ld \
|
||||
// RUN: | %{filecheck} --check-prefix=CHECK-SHADOWCALLSTACK-ELF-RISCV32
|
||||
// CHECK-SHADOWCALLSTACK-ELF-RISCV32-NOT: error:
|
||||
// CHECK-SHADOWCALLSTACK-ELF-RISCV32: "{{(.*[^-.0-9A-Z_a-z])?}}ld.lld{{(.exe)?}}"
|
||||
// CHECK-SHADOWCALLSTACK-ELF-RISCV32: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
|
||||
|
||||
// RUN: %clang -fsanitize=shadow-call-stack -### %s 2>&1 \
|
||||
// RUN: --target=riscv64-unknown-linux -fuse-ld=ld \
|
||||
|
||||
Reference in New Issue
Block a user