mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-21 10:47:03 +00:00
[RISCV] Integrate RISCV target in baremetal toolchain object and deprecate
RISCVToolchain object This patch: - Adds CXXStdlib, runtimelib and unwindlib defaults for riscv target to BareMetal toolchain object. - Add riscv 32 and 64-bit emulation flags to linker job of BareMetal toolchain. - Removes call to RISCVToolChain object from llvm. This PR is last patch in the series of patches of merging RISCVToolchain object into BareMetal toolchain object. RFC: https://discourse.llvm.org/t/merging-riscvtoolchain-and-baremetal-toolchains/75524 Change-Id: I2877ac328f55a7638cc185d6034866cbd2ac4203
This commit is contained in:
parent
bf9ad08ad5
commit
c4f3b5c11a
@ -74,7 +74,6 @@ add_clang_library(clangDriver
|
||||
ToolChains/OHOS.cpp
|
||||
ToolChains/OpenBSD.cpp
|
||||
ToolChains/PS4CPU.cpp
|
||||
ToolChains/RISCVToolchain.cpp
|
||||
ToolChains/Solaris.cpp
|
||||
ToolChains/SPIRV.cpp
|
||||
ToolChains/SPIRVOpenMP.cpp
|
||||
|
@ -41,7 +41,6 @@
|
||||
#include "ToolChains/PPCFreeBSD.h"
|
||||
#include "ToolChains/PPCLinux.h"
|
||||
#include "ToolChains/PS4CPU.h"
|
||||
#include "ToolChains/RISCVToolchain.h"
|
||||
#include "ToolChains/SPIRV.h"
|
||||
#include "ToolChains/SPIRVOpenMP.h"
|
||||
#include "ToolChains/SYCL.h"
|
||||
@ -6889,16 +6888,11 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
|
||||
TC = std::make_unique<toolchains::AVRToolChain>(*this, Target, Args);
|
||||
break;
|
||||
case llvm::Triple::msp430:
|
||||
TC =
|
||||
std::make_unique<toolchains::MSP430ToolChain>(*this, Target, Args);
|
||||
TC = std::make_unique<toolchains::MSP430ToolChain>(*this, Target, Args);
|
||||
break;
|
||||
case llvm::Triple::riscv32:
|
||||
case llvm::Triple::riscv64:
|
||||
if (toolchains::RISCVToolChain::hasGCCToolchain(*this, Args))
|
||||
TC =
|
||||
std::make_unique<toolchains::RISCVToolChain>(*this, Target, Args);
|
||||
else
|
||||
TC = std::make_unique<toolchains::BareMetal>(*this, Target, Args);
|
||||
TC = std::make_unique<toolchains::BareMetal>(*this, Target, Args);
|
||||
break;
|
||||
case llvm::Triple::ve:
|
||||
TC = std::make_unique<toolchains::VEToolChain>(*this, Target, Args);
|
||||
|
@ -336,6 +336,26 @@ BareMetal::OrderedMultilibs BareMetal::getOrderedMultilibs() const {
|
||||
return llvm::reverse(Default);
|
||||
}
|
||||
|
||||
ToolChain::CXXStdlibType BareMetal::GetDefaultCXXStdlibType() const {
|
||||
if (getTriple().isRISCV() && GCCInstallation.isValid())
|
||||
return ToolChain::CST_Libstdcxx;
|
||||
return ToolChain::CST_Libcxx;
|
||||
}
|
||||
|
||||
ToolChain::RuntimeLibType BareMetal::GetDefaultRuntimeLibType() const {
|
||||
if (getTriple().isRISCV() && GCCInstallation.isValid())
|
||||
return ToolChain::RLT_Libgcc;
|
||||
return ToolChain::RLT_CompilerRT;
|
||||
}
|
||||
|
||||
ToolChain::UnwindLibType
|
||||
BareMetal::GetUnwindLibType(const llvm::opt::ArgList &Args) const {
|
||||
if (getTriple().isRISCV())
|
||||
return ToolChain::UNW_None;
|
||||
|
||||
return ToolChain::GetUnwindLibType(Args);
|
||||
}
|
||||
|
||||
void BareMetal::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
|
||||
ArgStringList &CC1Args) const {
|
||||
if (DriverArgs.hasArg(options::OPT_nostdinc))
|
||||
|
@ -54,12 +54,11 @@ public:
|
||||
return UnwindTableLevel::None;
|
||||
}
|
||||
|
||||
RuntimeLibType GetDefaultRuntimeLibType() const override {
|
||||
return ToolChain::RLT_CompilerRT;
|
||||
}
|
||||
CXXStdlibType GetDefaultCXXStdlibType() const override {
|
||||
return ToolChain::CST_Libcxx;
|
||||
}
|
||||
CXXStdlibType GetDefaultCXXStdlibType() const override;
|
||||
|
||||
RuntimeLibType GetDefaultRuntimeLibType() const override;
|
||||
|
||||
UnwindLibType GetUnwindLibType(const llvm::opt::ArgList &Args) const override;
|
||||
|
||||
void
|
||||
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
|
||||
|
@ -1,232 +0,0 @@
|
||||
//===--- RISCVToolchain.cpp - RISC-V ToolChain Implementations --*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "RISCVToolchain.h"
|
||||
#include "CommonArgs.h"
|
||||
#include "clang/Driver/Compilation.h"
|
||||
#include "clang/Driver/InputInfo.h"
|
||||
#include "clang/Driver/Options.h"
|
||||
#include "llvm/Option/ArgList.h"
|
||||
#include "llvm/Support/FileSystem.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
||||
using namespace clang::driver;
|
||||
using namespace clang::driver::toolchains;
|
||||
using namespace clang::driver::tools;
|
||||
using namespace clang;
|
||||
using namespace llvm::opt;
|
||||
|
||||
static void addMultilibsFilePaths(const Driver &D, const MultilibSet &Multilibs,
|
||||
const Multilib &Multilib,
|
||||
StringRef InstallPath,
|
||||
ToolChain::path_list &Paths) {
|
||||
if (const auto &PathsCallback = Multilibs.filePathsCallback())
|
||||
for (const auto &Path : PathsCallback(Multilib))
|
||||
addPathIfExists(D, InstallPath + Path, Paths);
|
||||
}
|
||||
|
||||
// This function tests whether a gcc installation is present either
|
||||
// through gcc-toolchain argument or in the same prefix where clang
|
||||
// is installed. This helps decide whether to instantiate this toolchain
|
||||
// or Baremetal toolchain.
|
||||
bool RISCVToolChain::hasGCCToolchain(const Driver &D,
|
||||
const llvm::opt::ArgList &Args) {
|
||||
if (Args.getLastArg(options::OPT_gcc_toolchain))
|
||||
return true;
|
||||
|
||||
SmallString<128> GCCDir;
|
||||
llvm::sys::path::append(GCCDir, D.Dir, "..", D.getTargetTriple(),
|
||||
"lib/crt0.o");
|
||||
return llvm::sys::fs::exists(GCCDir);
|
||||
}
|
||||
|
||||
/// RISC-V Toolchain
|
||||
RISCVToolChain::RISCVToolChain(const Driver &D, const llvm::Triple &Triple,
|
||||
const ArgList &Args)
|
||||
: Generic_ELF(D, Triple, Args) {
|
||||
GCCInstallation.init(Triple, Args);
|
||||
if (GCCInstallation.isValid()) {
|
||||
Multilibs = GCCInstallation.getMultilibs();
|
||||
SelectedMultilibs.assign({GCCInstallation.getMultilib()});
|
||||
path_list &Paths = getFilePaths();
|
||||
// Add toolchain/multilib specific file paths.
|
||||
addMultilibsFilePaths(D, Multilibs, SelectedMultilibs.back(),
|
||||
GCCInstallation.getInstallPath(), Paths);
|
||||
getFilePaths().push_back(GCCInstallation.getInstallPath().str());
|
||||
ToolChain::path_list &PPaths = getProgramPaths();
|
||||
// Multilib cross-compiler GCC installations put ld in a triple-prefixed
|
||||
// directory off of the parent of the GCC installation.
|
||||
PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
|
||||
GCCInstallation.getTriple().str() + "/bin")
|
||||
.str());
|
||||
PPaths.push_back((GCCInstallation.getParentLibPath() + "/../bin").str());
|
||||
} else {
|
||||
getProgramPaths().push_back(D.Dir);
|
||||
}
|
||||
getFilePaths().push_back(computeSysRoot() + "/lib");
|
||||
}
|
||||
|
||||
Tool *RISCVToolChain::buildLinker() const {
|
||||
return new tools::RISCV::Linker(*this);
|
||||
}
|
||||
|
||||
ToolChain::RuntimeLibType RISCVToolChain::GetDefaultRuntimeLibType() const {
|
||||
return GCCInstallation.isValid() ?
|
||||
ToolChain::RLT_Libgcc : ToolChain::RLT_CompilerRT;
|
||||
}
|
||||
|
||||
ToolChain::UnwindLibType
|
||||
RISCVToolChain::GetUnwindLibType(const llvm::opt::ArgList &Args) const {
|
||||
return ToolChain::UNW_None;
|
||||
}
|
||||
|
||||
ToolChain::UnwindTableLevel RISCVToolChain::getDefaultUnwindTableLevel(
|
||||
const llvm::opt::ArgList &Args) const {
|
||||
return UnwindTableLevel::None;
|
||||
}
|
||||
|
||||
void RISCVToolChain::addClangTargetOptions(
|
||||
const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args,
|
||||
Action::OffloadKind) const {
|
||||
CC1Args.push_back("-nostdsysteminc");
|
||||
}
|
||||
|
||||
void RISCVToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
|
||||
ArgStringList &CC1Args) const {
|
||||
if (DriverArgs.hasArg(options::OPT_nostdinc))
|
||||
return;
|
||||
|
||||
if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
|
||||
SmallString<128> Dir(getDriver().ResourceDir);
|
||||
llvm::sys::path::append(Dir, "include");
|
||||
addSystemInclude(DriverArgs, CC1Args, Dir.str());
|
||||
}
|
||||
|
||||
if (!DriverArgs.hasArg(options::OPT_nostdlibinc)) {
|
||||
SmallString<128> Dir(computeSysRoot());
|
||||
llvm::sys::path::append(Dir, "include");
|
||||
addSystemInclude(DriverArgs, CC1Args, Dir.str());
|
||||
}
|
||||
}
|
||||
|
||||
void RISCVToolChain::addLibStdCxxIncludePaths(
|
||||
const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args) const {
|
||||
const GCCVersion &Version = GCCInstallation.getVersion();
|
||||
StringRef TripleStr = GCCInstallation.getTriple().str();
|
||||
const Multilib &Multilib = GCCInstallation.getMultilib();
|
||||
addLibStdCXXIncludePaths(computeSysRoot() + "/include/c++/" + Version.Text,
|
||||
TripleStr, Multilib.includeSuffix(), DriverArgs,
|
||||
CC1Args);
|
||||
}
|
||||
|
||||
std::string RISCVToolChain::computeSysRoot() const {
|
||||
if (!getDriver().SysRoot.empty())
|
||||
return getDriver().SysRoot;
|
||||
|
||||
SmallString<128> SysRootDir;
|
||||
if (GCCInstallation.isValid()) {
|
||||
StringRef LibDir = GCCInstallation.getParentLibPath();
|
||||
StringRef TripleStr = GCCInstallation.getTriple().str();
|
||||
llvm::sys::path::append(SysRootDir, LibDir, "..", TripleStr);
|
||||
} else {
|
||||
// Use the triple as provided to the driver. Unlike the parsed triple
|
||||
// this has not been normalized to always contain every field.
|
||||
llvm::sys::path::append(SysRootDir, getDriver().Dir, "..",
|
||||
getDriver().getTargetTriple());
|
||||
}
|
||||
|
||||
if (!llvm::sys::fs::exists(SysRootDir))
|
||||
return std::string();
|
||||
|
||||
return std::string(SysRootDir);
|
||||
}
|
||||
|
||||
void RISCV::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
const InputInfo &Output,
|
||||
const InputInfoList &Inputs,
|
||||
const ArgList &Args,
|
||||
const char *LinkingOutput) const {
|
||||
const ToolChain &ToolChain = getToolChain();
|
||||
const Driver &D = ToolChain.getDriver();
|
||||
ArgStringList CmdArgs;
|
||||
|
||||
if (!D.SysRoot.empty())
|
||||
CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
|
||||
|
||||
if (Args.hasArg(options::OPT_mno_relax))
|
||||
CmdArgs.push_back("--no-relax");
|
||||
|
||||
bool IsRV64 = ToolChain.getArch() == llvm::Triple::riscv64;
|
||||
CmdArgs.push_back("-m");
|
||||
if (IsRV64) {
|
||||
CmdArgs.push_back("elf64lriscv");
|
||||
} else {
|
||||
CmdArgs.push_back("elf32lriscv");
|
||||
}
|
||||
CmdArgs.push_back("-X");
|
||||
|
||||
std::string Linker = getToolChain().GetLinkerPath();
|
||||
|
||||
bool WantCRTs =
|
||||
!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles);
|
||||
|
||||
const char *crtbegin, *crtend;
|
||||
auto RuntimeLib = ToolChain.GetRuntimeLibType(Args);
|
||||
if (RuntimeLib == ToolChain::RLT_Libgcc) {
|
||||
crtbegin = "crtbegin.o";
|
||||
crtend = "crtend.o";
|
||||
} else {
|
||||
assert (RuntimeLib == ToolChain::RLT_CompilerRT);
|
||||
crtbegin = ToolChain.getCompilerRTArgString(Args, "crtbegin",
|
||||
ToolChain::FT_Object);
|
||||
crtend = ToolChain.getCompilerRTArgString(Args, "crtend",
|
||||
ToolChain::FT_Object);
|
||||
}
|
||||
|
||||
if (WantCRTs) {
|
||||
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt0.o")));
|
||||
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin)));
|
||||
}
|
||||
|
||||
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
|
||||
|
||||
Args.addAllArgs(CmdArgs, {options::OPT_L, options::OPT_u});
|
||||
|
||||
ToolChain.AddFilePathLibArgs(Args, CmdArgs);
|
||||
Args.addAllArgs(CmdArgs, {options::OPT_T_Group, options::OPT_s,
|
||||
options::OPT_t, options::OPT_r});
|
||||
|
||||
// TODO: add C++ includes and libs if compiling C++.
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostdlib) &&
|
||||
!Args.hasArg(options::OPT_nodefaultlibs)) {
|
||||
if (D.CCCIsCXX()) {
|
||||
if (ToolChain.ShouldLinkCXXStdlib(Args))
|
||||
ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
|
||||
CmdArgs.push_back("-lm");
|
||||
}
|
||||
CmdArgs.push_back("--start-group");
|
||||
CmdArgs.push_back("-lc");
|
||||
CmdArgs.push_back("-lgloss");
|
||||
CmdArgs.push_back("--end-group");
|
||||
AddRunTimeLibs(ToolChain, ToolChain.getDriver(), CmdArgs, Args);
|
||||
}
|
||||
|
||||
if (WantCRTs)
|
||||
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtend)));
|
||||
|
||||
CmdArgs.push_back("-o");
|
||||
CmdArgs.push_back(Output.getFilename());
|
||||
C.addCommand(std::make_unique<Command>(
|
||||
JA, *this, ResponseFileSupport::AtFileCurCP(), Args.MakeArgString(Linker),
|
||||
CmdArgs, Inputs, Output));
|
||||
}
|
||||
// RISCV tools end.
|
@ -1,67 +0,0 @@
|
||||
//===--- RISCVToolchain.h - RISC-V ToolChain Implementations ----*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_RISCVTOOLCHAIN_H
|
||||
#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_RISCVTOOLCHAIN_H
|
||||
|
||||
#include "Gnu.h"
|
||||
#include "clang/Driver/ToolChain.h"
|
||||
|
||||
namespace clang {
|
||||
namespace driver {
|
||||
namespace toolchains {
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY RISCVToolChain : public Generic_ELF {
|
||||
public:
|
||||
RISCVToolChain(const Driver &D, const llvm::Triple &Triple,
|
||||
const llvm::opt::ArgList &Args);
|
||||
|
||||
static bool hasGCCToolchain(const Driver &D, const llvm::opt::ArgList &Args);
|
||||
void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args,
|
||||
Action::OffloadKind) const override;
|
||||
RuntimeLibType GetDefaultRuntimeLibType() const override;
|
||||
UnwindLibType
|
||||
GetUnwindLibType(const llvm::opt::ArgList &Args) const override;
|
||||
UnwindTableLevel
|
||||
getDefaultUnwindTableLevel(const llvm::opt::ArgList &Args) const override;
|
||||
void
|
||||
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args) const override;
|
||||
void
|
||||
addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
|
||||
llvm::opt::ArgStringList &CC1Args) const override;
|
||||
|
||||
protected:
|
||||
Tool *buildLinker() const override;
|
||||
|
||||
private:
|
||||
std::string computeSysRoot() const override;
|
||||
};
|
||||
|
||||
} // end namespace toolchains
|
||||
|
||||
namespace tools {
|
||||
namespace RISCV {
|
||||
class LLVM_LIBRARY_VISIBILITY Linker final : public Tool {
|
||||
public:
|
||||
Linker(const ToolChain &TC) : Tool("RISCV::Linker", "ld", TC) {}
|
||||
bool hasIntegratedCPP() const override { return false; }
|
||||
bool isLinkJob() const override { return true; }
|
||||
void ConstructJob(Compilation &C, const JobAction &JA,
|
||||
const InputInfo &Output, const InputInfoList &Inputs,
|
||||
const llvm::opt::ArgList &TCArgs,
|
||||
const char *LinkingOutput) const override;
|
||||
};
|
||||
} // end namespace RISCV
|
||||
} // end namespace tools
|
||||
|
||||
} // end namespace driver
|
||||
} // end namespace clang
|
||||
|
||||
#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_RISCVTOOLCHAIN_H
|
@ -1,15 +1,11 @@
|
||||
// Check the arguments are correctly passed
|
||||
|
||||
// Make sure -T is the last with gcc-toolchain option
|
||||
// RUN: %clang -### --target=aarch64-none-elf --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds -u foo %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK-LD %s
|
||||
// RUN: %clang -### --target=armv6m-none-eabi --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds -u foo %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK-LD %s
|
||||
// RUN: %clang -### --target=riscv32 --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds -u foo %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK-LD %s
|
||||
// CHECK-LD: {{.*}} "--defsym=FOO=10" {{.*}} "-u" "foo" {{.*}} "-T" "a.lds"
|
||||
|
||||
// TODO: Merge this test with the above in the last patch when finally integrating riscv
|
||||
// Make sure -T is the last with gcc-toolchain option
|
||||
// RUN: %clang -### --target=aarch64-none-elf --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds -u foo %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK-ARM-LD %s
|
||||
// RUN: %clang -### --target=armv6m-none-eabi --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds -u foo %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK-ARM-LD %s
|
||||
// CHECK-ARM-LD: {{.*}} "-T" "a.lds" "-u" "foo" {{.*}} "--defsym=FOO=10"
|
||||
// CHECK-LD: {{.*}} "-T" "a.lds" "-u" "foo" {{.*}} "--defsym=FOO=10"
|
||||
|
||||
|
@ -18,12 +18,12 @@
|
||||
// RUN: ln -s %S/Inputs/basic_riscv32_nogcc_tree/riscv32-unknown-elf %t/riscv32-nogcc/riscv32-unknown-elf
|
||||
// RUN: %t/riscv32-nogcc/bin/clang %s -### -no-canonical-prefixes \
|
||||
// RUN: --gcc-toolchain=%t/riscv32-nogcc/invalid \
|
||||
// RUN: --target=riscv32-unknown-elf --rtlib=platform -fuse-ld= 2>&1 \
|
||||
// RUN: --target=riscv32-unknown-elf --rtlib=platform -fuse-ld=ld 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=C-RV32-BAREMETAL-ILP32-NOGCC %s
|
||||
|
||||
// RUN: %t/riscv32-nogcc/bin/clang %s -### -no-canonical-prefixes \
|
||||
// RUN: --sysroot=%t/riscv32-nogcc/bin/../riscv32-unknown-elf \
|
||||
// RUN: --target=riscv32-unknown-elf --rtlib=platform -fuse-ld= 2>&1 \
|
||||
// RUN: --target=riscv32-unknown-elf --rtlib=platform -fuse-ld=ld 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=C-RV32-BAREMETAL-ILP32-NOGCC %s
|
||||
|
||||
// C-RV32-BAREMETAL-ILP32-NOGCC: "-internal-isystem" "{{.*}}/riscv32-nogcc/bin/../riscv32-unknown-elf/include"
|
||||
@ -31,6 +31,5 @@
|
||||
// C-RV32-BAREMETAL-ILP32-NOGCC: "{{.*}}/riscv32-nogcc/bin/../riscv32-unknown-elf/lib/crt0.o"
|
||||
// C-RV32-BAREMETAL-ILP32-NOGCC: "{{.*}}/riscv32-nogcc/{{.*}}/riscv32-unknown-unknown-elf/clang_rt.crtbegin.o"
|
||||
// C-RV32-BAREMETAL-ILP32-NOGCC: "{{.*}}/riscv32-nogcc/bin/../riscv32-unknown-elf/lib"
|
||||
// C-RV32-BAREMETAL-ILP32-NOGCC: "--start-group" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32-BAREMETAL-ILP32-NOGCC: "{{.*}}/riscv32-nogcc/{{.*}}/riscv32-unknown-unknown-elf/libclang_rt.builtins.a"
|
||||
// C-RV32-BAREMETAL-ILP32-NOGCC: "--start-group" "{{.*}}/riscv32-nogcc/{{.*}}/riscv32-unknown-unknown-elf/libclang_rt.builtins.a" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32-BAREMETAL-ILP32-NOGCC: "{{.*}}/riscv32-nogcc/{{.*}}/riscv32-unknown-unknown-elf/clang_rt.crtend.o"
|
||||
|
@ -28,7 +28,7 @@
|
||||
// C-RV32-BAREMETAL-ILP32: "{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtbegin.o"
|
||||
// C-RV32-BAREMETAL-ILP32: "-L{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1"
|
||||
// C-RV32-BAREMETAL-ILP32: "-L{{.*}}/Inputs/basic_riscv32_tree/riscv32-unknown-elf/lib"
|
||||
// C-RV32-BAREMETAL-ILP32: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV32-BAREMETAL-ILP32: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32-BAREMETAL-ILP32: "{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtend.o"
|
||||
|
||||
// RUN: %clang -### %s -fuse-ld= \
|
||||
@ -42,7 +42,7 @@
|
||||
// C-RV32-BAREMETAL-NOSYSROOT-ILP32: "{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtbegin.o"
|
||||
// C-RV32-BAREMETAL-NOSYSROOT-ILP32: "-L{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1"
|
||||
// C-RV32-BAREMETAL-NOSYSROOT-ILP32: "-L{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/../../../../riscv32-unknown-elf/lib"
|
||||
// C-RV32-BAREMETAL-NOSYSROOT-ILP32: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV32-BAREMETAL-NOSYSROOT-ILP32: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32-BAREMETAL-NOSYSROOT-ILP32: "{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtend.o"
|
||||
|
||||
// RUN: %clangxx -### %s -fuse-ld= \
|
||||
@ -58,7 +58,7 @@
|
||||
// CXX-RV32-BAREMETAL-ILP32: "{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtbegin.o"
|
||||
// CXX-RV32-BAREMETAL-ILP32: "-L{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1"
|
||||
// CXX-RV32-BAREMETAL-ILP32: "-L{{.*}}/Inputs/basic_riscv32_tree/riscv32-unknown-elf/lib"
|
||||
// CXX-RV32-BAREMETAL-ILP32: "-lstdc++" "-lm" "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// CXX-RV32-BAREMETAL-ILP32: "-lstdc++" "-lm" "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-RV32-BAREMETAL-ILP32: "{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtend.o"
|
||||
|
||||
// RUN: %clangxx -### %s -fuse-ld= \
|
||||
@ -73,7 +73,7 @@
|
||||
// CXX-RV32-BAREMETAL-NOSYSROOT-ILP32: "{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtbegin.o"
|
||||
// CXX-RV32-BAREMETAL-NOSYSROOT-ILP32: "-L{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1"
|
||||
// CXX-RV32-BAREMETAL-NOSYSROOT-ILP32: "-L{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/../../../../riscv32-unknown-elf/lib"
|
||||
// CXX-RV32-BAREMETAL-NOSYSROOT-ILP32: "-lstdc++" "-lm" "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// CXX-RV32-BAREMETAL-NOSYSROOT-ILP32: "-lstdc++" "-lm" "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-RV32-BAREMETAL-NOSYSROOT-ILP32: "{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtend.o"
|
||||
|
||||
// RUN: env "PATH=" %clang -### %s -fuse-ld=ld -no-pie \
|
||||
@ -117,7 +117,7 @@
|
||||
// C-RV32I-BAREMETAL-MULTI-ILP32: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv32imac/ilp32/crtbegin.o"
|
||||
// C-RV32I-BAREMETAL-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0"
|
||||
// C-RV32I-BAREMETAL-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib"
|
||||
// C-RV32I-BAREMETAL-MULTI-ILP32: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV32I-BAREMETAL-MULTI-ILP32: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32I-BAREMETAL-MULTI-ILP32: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv32imac/ilp32/crtend.o"
|
||||
|
||||
// RUN: env "PATH=" %clang -### %s -fuse-ld=ld \
|
||||
@ -132,7 +132,7 @@
|
||||
// C-RV32IM-BAREMETAL-MULTI-ILP32: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv32im/ilp32/crtbegin.o"
|
||||
// C-RV32IM-BAREMETAL-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0"
|
||||
// C-RV32IM-BAREMETAL-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib"
|
||||
// C-RV32IM-BAREMETAL-MULTI-ILP32: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV32IM-BAREMETAL-MULTI-ILP32: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32IM-BAREMETAL-MULTI-ILP32: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv32im/ilp32/crtend.o"
|
||||
|
||||
// RUN: env "PATH=" %clang -### %s -fuse-ld=ld \
|
||||
@ -147,7 +147,7 @@
|
||||
// C-RV32IAC-BAREMETAL-MULTI-ILP32: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv32iac/ilp32/crtbegin.o"
|
||||
// C-RV32IAC-BAREMETAL-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0"
|
||||
// C-RV32IAC-BAREMETAL-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib"
|
||||
// C-RV32IAC-BAREMETAL-MULTI-ILP32: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV32IAC-BAREMETAL-MULTI-ILP32: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32IAC-BAREMETAL-MULTI-ILP32: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv32iac/ilp32/crtend.o"
|
||||
|
||||
// RUN: env "PATH=" %clang -### %s -fuse-ld=ld \
|
||||
@ -162,7 +162,7 @@
|
||||
// C-RV32IMAC-BAREMETAL-MULTI-ILP32: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv32imac/ilp32/crtbegin.o"
|
||||
// C-RV32IMAC-BAREMETAL-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0"
|
||||
// C-RV32IMAC-BAREMETAL-MULTI-ILP32: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib"
|
||||
// C-RV32IMAC-BAREMETAL-MULTI-ILP32: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV32IMAC-BAREMETAL-MULTI-ILP32: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32IMAC-BAREMETAL-MULTI-ILP32: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv32imac/ilp32/crtend.o"
|
||||
|
||||
// RUN: env "PATH=" %clang -### %s -fuse-ld=ld \
|
||||
@ -177,7 +177,7 @@
|
||||
// C-RV32IMAFC-BAREMETAL-MULTI-ILP32F: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv32imafc/ilp32f/crtbegin.o"
|
||||
// C-RV32IMAFC-BAREMETAL-MULTI-ILP32F: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0"
|
||||
// C-RV32IMAFC-BAREMETAL-MULTI-ILP32F: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib"
|
||||
// C-RV32IMAFC-BAREMETAL-MULTI-ILP32F: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV32IMAFC-BAREMETAL-MULTI-ILP32F: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32IMAFC-BAREMETAL-MULTI-ILP32F: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv32imafc/ilp32f/crtend.o"
|
||||
|
||||
// Check that --rtlib can be used to override the used runtime library
|
||||
@ -187,7 +187,7 @@
|
||||
// RUN: | FileCheck -check-prefix=C-RV32-RTLIB-LIBGCC-ILP32 %s
|
||||
// C-RV32-RTLIB-LIBGCC-ILP32: "{{.*}}crt0.o"
|
||||
// C-RV32-RTLIB-LIBGCC-ILP32: "{{.*}}crtbegin.o"
|
||||
// C-RV32-RTLIB-LIBGCC-ILP32: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV32-RTLIB-LIBGCC-ILP32: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32-RTLIB-LIBGCC-ILP32: "{{.*}}crtend.o"
|
||||
|
||||
// RUN: %clang -### %s \
|
||||
@ -196,7 +196,7 @@
|
||||
// RUN: | FileCheck -check-prefix=C-RV32-RTLIB-COMPILERRT-ILP32 %s
|
||||
// C-RV32-RTLIB-COMPILERRT-ILP32: "{{.*}}crt0.o"
|
||||
// C-RV32-RTLIB-COMPILERRT-ILP32: "{{.*}}clang_rt.crtbegin.o"
|
||||
// C-RV32-RTLIB-COMPILERRT-ILP32: "--start-group" "-lc" "-lgloss" "--end-group" "{{.*}}libclang_rt.builtins.a"
|
||||
// C-RV32-RTLIB-COMPILERRT-ILP32: "--start-group" "{{.*}}libclang_rt.builtins.a" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV32-RTLIB-COMPILERRT-ILP32: "{{.*}}clang_rt.crtend.o"
|
||||
|
||||
// RUN: %clang -### %s --target=riscv32 \
|
||||
@ -215,7 +215,7 @@
|
||||
|
||||
// RUN: %clang --target=riscv32 %s -emit-llvm -S -o - | FileCheck %s
|
||||
|
||||
// Check that "--no-relax" is forwarded to the linker for RISC-V (RISCVToolchain.cpp).
|
||||
// Check that "--no-relax" is forwarded to the linker for RISC-V.
|
||||
// RUN: env "PATH=" %clang %s -### 2>&1 -mno-relax \
|
||||
// RUN: --target=riscv32-unknown-elf --rtlib=platform --unwindlib=platform --sysroot= \
|
||||
// RUN: -march=rv32imac -mabi=lp32\
|
||||
@ -223,7 +223,7 @@
|
||||
// RUN: | FileCheck --check-prefix=CHECK-RV32-NORELAX %s
|
||||
// CHECK-RV32-NORELAX: "--no-relax"
|
||||
|
||||
// Check that "--no-relax" is not forwarded to the linker for RISC-V (RISCVToolchain.cpp).
|
||||
// Check that "--no-relax" is not forwarded to the linker for RISC-V.
|
||||
// RUN:env "PATH=" %clang %s -### 2>&1 \
|
||||
// RUN: --target=riscv32-unknown-elf --rtlib=platform --unwindlib=platform --sysroot= \
|
||||
// RUN: -march=rv32imac -mabi=lp32\
|
||||
|
@ -18,12 +18,12 @@
|
||||
// RUN: ln -s %S/Inputs/basic_riscv64_nogcc_tree/riscv64-unknown-elf %t/riscv64-nogcc/riscv64-unknown-elf
|
||||
// RUN: %t/riscv64-nogcc/bin/clang %s -### -no-canonical-prefixes \
|
||||
// RUN: --gcc-toolchain=%t/riscv64-nogcc/invalid \
|
||||
// RUN: --target=riscv64-unknown-elf --rtlib=platform -fuse-ld= 2>&1 \
|
||||
// RUN: --target=riscv64-unknown-elf --rtlib=platform -fuse-ld=ld 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=C-RV64-BAREMETAL-LP64-NOGCC %s
|
||||
|
||||
// RUN: %t/riscv64-nogcc/bin/clang %s -### -no-canonical-prefixes \
|
||||
// RUN: --sysroot=%t/riscv64-nogcc/bin/../riscv64-unknown-elf \
|
||||
// RUN: --target=riscv64-unknown-elf --rtlib=platform -fuse-ld= 2>&1 \
|
||||
// RUN: --target=riscv64-unknown-elf --rtlib=platform -fuse-ld=ld 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=C-RV64-BAREMETAL-LP64-NOGCC %s
|
||||
|
||||
// C-RV64-BAREMETAL-LP64-NOGCC: "-internal-isystem" "{{.*}}/riscv64-nogcc/bin/../riscv64-unknown-elf/include"
|
||||
@ -31,6 +31,5 @@
|
||||
// C-RV64-BAREMETAL-LP64-NOGCC: "{{.*}}/riscv64-nogcc/bin/../riscv64-unknown-elf/lib/crt0.o"
|
||||
// C-RV64-BAREMETAL-LP64-NOGCC: "{{.*}}/riscv64-nogcc/{{.*}}/riscv64-unknown-unknown-elf/clang_rt.crtbegin.o"
|
||||
// C-RV64-BAREMETAL-LP64-NOGCC: "{{.*}}/riscv64-nogcc/bin/../riscv64-unknown-elf/lib"
|
||||
// C-RV64-BAREMETAL-LP64-NOGCC: "--start-group" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV64-BAREMETAL-LP64-NOGCC: "{{.*}}/riscv64-nogcc/{{.*}}/riscv64-unknown-unknown-elf/libclang_rt.builtins.a"
|
||||
// C-RV64-BAREMETAL-LP64-NOGCC: "--start-group" "{{.*}}/riscv64-nogcc/{{.*}}/riscv64-unknown-unknown-elf/libclang_rt.builtins.a" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV64-BAREMETAL-LP64-NOGCC: "{{.*}}/riscv64-nogcc/{{.*}}/riscv64-unknown-unknown-elf/clang_rt.crtend.o"
|
||||
|
@ -28,7 +28,7 @@
|
||||
// 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/lib/gcc/riscv64-unknown-elf/8.0.1"
|
||||
// C-RV64-BAREMETAL-LP64: "-L{{.*}}/Inputs/basic_riscv64_tree/riscv64-unknown-elf/lib"
|
||||
// C-RV64-BAREMETAL-LP64: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV64-BAREMETAL-LP64: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV64-BAREMETAL-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/crtend.o"
|
||||
|
||||
// RUN: env "PATH=" %clang -### %s -fuse-ld= \
|
||||
@ -42,7 +42,7 @@
|
||||
// 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"
|
||||
// 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: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV64-BAREMETAL-NOSYSROOT-LP64: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV64-BAREMETAL-NOSYSROOT-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/crtend.o"
|
||||
|
||||
// RUN: env "PATH=" %clangxx -### %s -fuse-ld= \
|
||||
@ -58,7 +58,7 @@
|
||||
// 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/lib/gcc/riscv64-unknown-elf/8.0.1"
|
||||
// CXX-RV64-BAREMETAL-LP64: "-L{{.*}}/Inputs/basic_riscv64_tree/riscv64-unknown-elf/lib"
|
||||
// CXX-RV64-BAREMETAL-LP64: "-lstdc++" "-lm" "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// CXX-RV64-BAREMETAL-LP64: "-lstdc++" "-lm" "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-RV64-BAREMETAL-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/crtend.o"
|
||||
|
||||
// RUN: env "PATH=" %clangxx -### %s -fuse-ld= \
|
||||
@ -73,7 +73,7 @@
|
||||
// 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"
|
||||
// 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: "-lstdc++" "-lm" "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "-lstdc++" "-lm" "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// CXX-RV64-BAREMETAL-NOSYSROOT-LP64: "{{.*}}/Inputs/basic_riscv64_tree/lib/gcc/riscv64-unknown-elf/8.0.1/crtend.o"
|
||||
|
||||
// RUN: env "PATH=" %clang -### %s -fuse-ld= -no-pie \
|
||||
@ -118,7 +118,7 @@
|
||||
// C-RV64IMAC-BAREMETAL-MULTI-LP64: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv64imac/lp64/crtbegin.o"
|
||||
// C-RV64IMAC-BAREMETAL-MULTI-LP64: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0"
|
||||
// C-RV64IMAC-BAREMETAL-MULTI-LP64: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib"
|
||||
// C-RV64IMAC-BAREMETAL-MULTI-LP64: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV64IMAC-BAREMETAL-MULTI-LP64: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV64IMAC-BAREMETAL-MULTI-LP64: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv64imac/lp64/crtend.o"
|
||||
|
||||
// RUN: env "PATH=" %clang -### %s -fuse-ld=ld \
|
||||
@ -133,7 +133,7 @@
|
||||
// C-RV64IMAFDC-BAREMETAL-MULTI-ILP64D: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv64imafdc/lp64d/crtbegin.o"
|
||||
// C-RV64IMAFDC-BAREMETAL-MULTI-ILP64D: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0"
|
||||
// C-RV64IMAFDC-BAREMETAL-MULTI-ILP64D: "-L{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/../../../../riscv64-unknown-elf/lib"
|
||||
// C-RV64IMAFDC-BAREMETAL-MULTI-ILP64D: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV64IMAFDC-BAREMETAL-MULTI-ILP64D: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV64IMAFDC-BAREMETAL-MULTI-ILP64D: "{{.*}}/Inputs/multilib_riscv_elf_sdk/lib/gcc/riscv64-unknown-elf/8.2.0/rv64imafdc/lp64d/crtend.o"
|
||||
|
||||
// Check that --rtlib can be used to override the used runtime library
|
||||
@ -143,7 +143,7 @@
|
||||
// RUN: | FileCheck -check-prefix=C-RV64-RTLIB-LIBGCC-LP64 %s
|
||||
// C-RV64-RTLIB-LIBGCC-LP64: "{{.*}}crt0.o"
|
||||
// C-RV64-RTLIB-LIBGCC-LP64: "{{.*}}crtbegin.o"
|
||||
// C-RV64-RTLIB-LIBGCC-LP64: "--start-group" "-lc" "-lgloss" "--end-group" "-lgcc"
|
||||
// C-RV64-RTLIB-LIBGCC-LP64: "--start-group" "-lgcc" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV64-RTLIB-LIBGCC-LP64: "{{.*}}crtend.o"
|
||||
|
||||
// RUN: %clang -### %s \
|
||||
@ -152,7 +152,7 @@
|
||||
// RUN: | FileCheck -check-prefix=C-RV64-RTLIB-COMPILERRT-LP64 %s
|
||||
// C-RV64-RTLIB-COMPILERRT-LP64: "{{.*}}crt0.o"
|
||||
// C-RV64-RTLIB-COMPILERRT-LP64: "{{.*}}clang_rt.crtbegin.o"
|
||||
// C-RV64-RTLIB-COMPILERRT-LP64: "--start-group" "-lc" "-lgloss" "--end-group" "{{.*}}libclang_rt.builtins.a"
|
||||
// C-RV64-RTLIB-COMPILERRT-LP64: "--start-group" "{{.*}}libclang_rt.builtins.a" "-lc" "-lgloss" "--end-group"
|
||||
// C-RV64-RTLIB-COMPILERRT-LP64: "{{.*}}clang_rt.crtend.o"
|
||||
|
||||
// RUN: %clang -### %s --target=riscv64 \
|
||||
@ -171,7 +171,7 @@
|
||||
|
||||
// RUN: %clang --target=riscv64 %s -emit-llvm -S -o - | FileCheck %s
|
||||
|
||||
// Check that "--no-relax" is forwarded to the linker for RISC-V (RISCVToolchain.cpp).
|
||||
// Check that "--no-relax" is forwarded to the linker for RISC-V.
|
||||
// RUN: env "PATH=" %clang %s -### 2>&1 -mno-relax \
|
||||
// RUN: --target=riscv64-unknown-elf --rtlib=platform --unwindlib=platform --sysroot= \
|
||||
// RUN: -march=rv64imac -mabi=lp64\
|
||||
@ -179,7 +179,7 @@
|
||||
// RUN: | FileCheck --check-prefix=CHECK-RV64-NORELAX %s
|
||||
// CHECK-RV64-NORELAX: "--no-relax"
|
||||
|
||||
// Check that "--no-relax" is not forwarded to the linker for RISC-V (RISCVToolchain.cpp).
|
||||
// Check that "--no-relax" is not forwarded to the linker for RISC-V.
|
||||
// RUN:env "PATH=" %clang %s -### 2>&1 \
|
||||
// RUN: --target=riscv64-unknown-elf --rtlib=platform --unwindlib=platform --sysroot= \
|
||||
// RUN: -march=rv64imac -mabi=lp64\
|
||||
|
Loading…
x
Reference in New Issue
Block a user