I'm getting this warning from the mac linker after this commit: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning same member name (libclangDriver.RISCV.o) in output file used for input files: obj/clang/lib/Driver/ToolChains/Arch/libclangDriver.RISCV.o and: obj/clang/lib/Driver/ToolChains/libclangDriver.RISCV.o (due to use of basename, truncation, blank padding or duplicate input files)
Could we rename the file to fix that warning? On Tue, Jul 31, 2018 at 10:40 AM David Bolvansky via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: xbolva00 > Date: Tue Jul 31 07:21:46 2018 > New Revision: 338385 > > URL: http://llvm.org/viewvc/llvm-project?rev=338385&view=rev > Log: > [RISCV] Add driver for riscv32-unknown-elf baremetal target > > Summary: > This patch adds a driver for the baremetal RISC-V target (i.e. > riscv32-unknown-elf). For reference, D39963 added basic target info and > added support for riscv32-linux-unknown-elf. > > Patch by: asb (Alex Bradbury) > > Reviewers: efriedma, phosek, apazos, espindola, mgrang > > Reviewed By: mgrang > > Subscribers: jrtc27, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, > emaste, mgorny, arichardson, rbar, johnrusso, simoncook, > jordy.potman.lists, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, > edward-jones, mgrang, cfe-commits > > Differential Revision: https://reviews.llvm.org/D46822 > > Added: > cfe/trunk/lib/Driver/ToolChains/RISCV.cpp > cfe/trunk/lib/Driver/ToolChains/RISCV.h > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/ > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/bin/ > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/bin/riscv32-unknown-elf-ld > (with props) > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/lib/ > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/lib/gcc/ > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/ > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/ > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtbegin.o > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtend.o > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/ > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/include/ > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/include/c++/ > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/include/c++/8.0.1/ > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/include/c++/8.0.1/.keep > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/lib/ > > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/lib/crt0.o > Modified: > cfe/trunk/lib/Driver/CMakeLists.txt > cfe/trunk/lib/Driver/Driver.cpp > cfe/trunk/lib/Driver/ToolChains/Gnu.cpp > cfe/trunk/test/Driver/riscv32-toolchain.c > > Modified: cfe/trunk/lib/Driver/CMakeLists.txt > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/CMakeLists.txt?rev=338385&r1=338384&r2=338385&view=diff > > ============================================================================== > --- cfe/trunk/lib/Driver/CMakeLists.txt (original) > +++ cfe/trunk/lib/Driver/CMakeLists.txt Tue Jul 31 07:21:46 2018 > @@ -57,6 +57,7 @@ add_clang_library(clangDriver > ToolChains/NetBSD.cpp > ToolChains/OpenBSD.cpp > ToolChains/PS4CPU.cpp > + ToolChains/RISCV.cpp > ToolChains/Solaris.cpp > ToolChains/TCE.cpp > ToolChains/WebAssembly.cpp > > Modified: cfe/trunk/lib/Driver/Driver.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=338385&r1=338384&r2=338385&view=diff > > ============================================================================== > --- cfe/trunk/lib/Driver/Driver.cpp (original) > +++ cfe/trunk/lib/Driver/Driver.cpp Tue Jul 31 07:21:46 2018 > @@ -37,6 +37,7 @@ > #include "ToolChains/NetBSD.h" > #include "ToolChains/OpenBSD.h" > #include "ToolChains/PS4CPU.h" > +#include "ToolChains/RISCV.h" > #include "ToolChains/Solaris.h" > #include "ToolChains/TCE.h" > #include "ToolChains/WebAssembly.h" > @@ -4399,6 +4400,10 @@ const ToolChain &Driver::getToolChain(co > case llvm::Triple::avr: > TC = llvm::make_unique<toolchains::AVRToolChain>(*this, Target, > Args); > break; > + case llvm::Triple::riscv32: > + case llvm::Triple::riscv64: > + TC = llvm::make_unique<toolchains::RISCVToolChain>(*this, Target, > Args); > + break; > default: > if (Target.getVendor() == llvm::Triple::Myriad) > TC = llvm::make_unique<toolchains::MyriadToolChain>(*this, > Target, > > Modified: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Gnu.cpp?rev=338385&r1=338384&r2=338385&view=diff > > ============================================================================== > --- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp (original) > +++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp Tue Jul 31 07:21:46 2018 > @@ -1877,7 +1877,8 @@ void Generic_GCC::GCCInstallationDetecto > > static const char *const RISCV32LibDirs[] = {"/lib", "/lib32"}; > static const char *const RISCVTriples[] = {"riscv32-unknown-linux-gnu", > - "riscv64-unknown-linux-gnu"}; > + "riscv64-unknown-linux-gnu", > + "riscv32-unknown-elf"}; > > static const char *const SPARCv8LibDirs[] = {"/lib32", "/lib"}; > static const char *const SPARCv8Triples[] = {"sparc-linux-gnu", > > Added: cfe/trunk/lib/Driver/ToolChains/RISCV.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/RISCV.cpp?rev=338385&view=auto > > ============================================================================== > --- cfe/trunk/lib/Driver/ToolChains/RISCV.cpp (added) > +++ cfe/trunk/lib/Driver/ToolChains/RISCV.cpp Tue Jul 31 07:21:46 2018 > @@ -0,0 +1,117 @@ > +//===--- RISCV.cpp - RISCV ToolChain Implementations ------------*- C++ > -*-===// > +// > +// The LLVM Compiler Infrastructure > +// > +// This file is distributed under the University of Illinois Open Source > +// License. See LICENSE.TXT for details. > +// > > +//===----------------------------------------------------------------------===// > + > +#include "RISCV.h" > +#include "CommonArgs.h" > +#include "InputInfo.h" > +#include "clang/Driver/Compilation.h" > +#include "clang/Driver/Options.h" > +#include "llvm/Option/ArgList.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; > + > +/// RISCV Toolchain > +RISCVToolChain::RISCVToolChain(const Driver &D, const llvm::Triple > &Triple, > + const ArgList &Args) > + : Generic_ELF(D, Triple, Args) { > + GCCInstallation.init(Triple, Args); > + getFilePaths().push_back(D.SysRoot + "/lib"); > + if (GCCInstallation.isValid()) { > + getFilePaths().push_back(GCCInstallation.getInstallPath().str()); > + getProgramPaths().push_back( > + (GCCInstallation.getParentLibPath() + "/../bin").str()); > + } > +} > + > +Tool *RISCVToolChain::buildLinker() const { > + return new tools::RISCV::Linker(*this); > +} > + > +void RISCVToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, > + ArgStringList &CC1Args) > const { > + if (DriverArgs.hasArg(options::OPT_nostdinc)) > + return; > + > + if (!DriverArgs.hasArg(options::OPT_nostdlibinc)) { > + SmallString<128> Dir(getDriver().SysRoot); > + llvm::sys::path::append(Dir, "include"); > + addSystemInclude(DriverArgs, CC1Args, Dir.str()); > + } > +} > + > +void RISCVToolChain::addLibStdCxxIncludePaths( > + const llvm::opt::ArgList &DriverArgs, > + llvm::opt::ArgStringList &CC1Args) const { > + StringRef LibDir = GCCInstallation.getParentLibPath(); > + const GCCVersion &Version = GCCInstallation.getVersion(); > + StringRef TripleStr = GCCInstallation.getTriple().str(); > + const Multilib &Multilib = GCCInstallation.getMultilib(); > + addLibStdCXXIncludePaths( > + LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" + > Version.Text, > + "", TripleStr, "", "", Multilib.includeSuffix(), DriverArgs, > CC1Args); > +} > + > +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)); > + > + std::string Linker = getToolChain().GetProgramPath(getShortName()); > + > + bool WantCRTs = > + !Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles); > + > + if (WantCRTs) { > + > CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt0.o"))); > + > CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtbegin.o"))); > + } > + > + Args.AddAllArgs(CmdArgs, options::OPT_L); > + ToolChain.AddFilePathLibArgs(Args, CmdArgs); > + Args.AddAllArgs(CmdArgs, > + {options::OPT_T_Group, options::OPT_e, options::OPT_s, > + options::OPT_t, options::OPT_Z_Flag, options::OPT_r}); > + > + AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); > + > + // TODO: add C++ includes and libs if compiling C++. > + > + if (!Args.hasArg(options::OPT_nostdlib) && > + !Args.hasArg(options::OPT_nodefaultlibs)) { > + if (ToolChain.ShouldLinkCXXStdlib(Args)) > + ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs); > + CmdArgs.push_back("--start-group"); > + CmdArgs.push_back("-lc"); > + CmdArgs.push_back("-lgloss"); > + CmdArgs.push_back("--end-group"); > + CmdArgs.push_back("-lgcc"); > + } > + > + if (WantCRTs) > + > CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtend.o"))); > + > + CmdArgs.push_back("-o"); > + CmdArgs.push_back(Output.getFilename()); > + C.addCommand(llvm::make_unique<Command>(JA, *this, > Args.MakeArgString(Linker), > + CmdArgs, Inputs)); > +} > +// RISCV tools end. > > Added: cfe/trunk/lib/Driver/ToolChains/RISCV.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/RISCV.h?rev=338385&view=auto > > ============================================================================== > --- cfe/trunk/lib/Driver/ToolChains/RISCV.h (added) > +++ cfe/trunk/lib/Driver/ToolChains/RISCV.h Tue Jul 31 07:21:46 2018 > @@ -0,0 +1,57 @@ > +//===--- RISCV.h - RISCV ToolChain Implementations --------------*- C++ > -*-===// > +// > +// The LLVM Compiler Infrastructure > +// > +// This file is distributed under the University of Illinois Open Source > +// License. See LICENSE.TXT for details. > +// > > +//===----------------------------------------------------------------------===// > + > +#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_RISCV_H > +#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_RISCV_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); > + > + bool IsIntegratedAssemblerDefault() const override { return true; } > + 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; > +}; > + > +} // end namespace toolchains > + > +namespace tools { > +namespace RISCV { > +class LLVM_LIBRARY_VISIBILITY Linker : public GnuTool { > +public: > + Linker(const ToolChain &TC) : GnuTool("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_RISCV_H > > Added: > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/bin/riscv32-unknown-elf-ld > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/bin/riscv32-unknown-elf-ld?rev=338385&view=auto > > ============================================================================== > --- > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/bin/riscv32-unknown-elf-ld > (added) > +++ > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/bin/riscv32-unknown-elf-ld > Tue Jul 31 07:21:46 2018 > @@ -0,0 +1 @@ > +#!/bin/true > > Propchange: > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/bin/riscv32-unknown-elf-ld > > ------------------------------------------------------------------------------ > svn:executable = * > > Added: > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtbegin.o > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtbegin.o?rev=338385&view=auto > > ============================================================================== > (empty) > > Added: > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtend.o > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/crtend.o?rev=338385&view=auto > > ============================================================================== > (empty) > > Added: > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/include/c++/8.0.1/.keep > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/include/c%2B%2B/8.0.1/.keep?rev=338385&view=auto > > ============================================================================== > (empty) > > Added: > cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/lib/crt0.o > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_riscv32_tree/riscv32-unknown-elf/lib/crt0.o?rev=338385&view=auto > > ============================================================================== > (empty) > > Modified: cfe/trunk/test/Driver/riscv32-toolchain.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv32-toolchain.c?rev=338385&r1=338384&r2=338385&view=diff > > ============================================================================== > --- cfe/trunk/test/Driver/riscv32-toolchain.c (original) > +++ cfe/trunk/test/Driver/riscv32-toolchain.c Tue Jul 31 07:21:46 2018 > @@ -3,6 +3,36 @@ > // RUN: %clang %s -### -no-canonical-prefixes -target riscv32 2>&1 | > FileCheck -check-prefix=CC1 %s > // CC1: clang{{.*}} "-cc1" "-triple" "riscv32" > > +// RUN: %clang %s -### -no-canonical-prefixes \ > +// RUN: -target riscv32-unknown-elf \ > +// RUN: --gcc-toolchain=%S/Inputs/basic_riscv32_tree \ > +// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf 2>&1 > \ > +// RUN: | FileCheck -check-prefix=C-RV32-BAREMETAL-ILP32 %s > + > +// C-RV32-BAREMETAL-ILP32: > "{{.*}}Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/../../../../bin{{/|\\\\}}riscv32-unknown-elf-ld" > +// C-RV32-BAREMETAL-ILP32: > "--sysroot={{.*}}/Inputs/basic_riscv32_tree/riscv32-unknown-elf" > +// C-RV32-BAREMETAL-ILP32: > "{{.*}}/Inputs/basic_riscv32_tree/riscv32-unknown-elf/lib{{/|\\\\}}crt0.o" > +// 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/riscv32-unknown-elf/lib" > +// C-RV32-BAREMETAL-ILP32: > "-L{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1" > +// C-RV32-BAREMETAL-ILP32: "--start-group" "-lc" "-lgloss" "--end-group" > "-lgcc" > +// C-RV32-BAREMETAL-ILP32: > "{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1{{/|\\\\}}crtend.o" > + > +// RUN: %clangxx %s -### -no-canonical-prefixes \ > +// RUN: -target riscv32-unknown-elf \ > +// RUN: --gcc-toolchain=%S/Inputs/basic_riscv32_tree \ > +// RUN: --sysroot=%S/Inputs/basic_riscv32_tree/riscv32-unknown-elf 2>&1 > \ > +// RUN: | FileCheck -check-prefix=CXX-RV32-BAREMETAL-ILP32 %s > + > +// CXX-RV32-BAREMETAL-ILP32: "-internal-isystem" > "{{.*}}Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/../../../../riscv32-unknown-elf/include/c++{{/|\\\\}}8.0.1" > +// CXX-RV32-BAREMETAL-ILP32: > "{{.*}}Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1/../../../../bin{{/|\\\\}}riscv32-unknown-elf-ld" > +// CXX-RV32-BAREMETAL-ILP32: > "--sysroot={{.*}}/Inputs/basic_riscv32_tree/riscv32-unknown-elf" > +// CXX-RV32-BAREMETAL-ILP32: > "{{.*}}/Inputs/basic_riscv32_tree/riscv32-unknown-elf/lib{{/|\\\\}}crt0.o" > +// 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/riscv32-unknown-elf/lib" > +// CXX-RV32-BAREMETAL-ILP32: > "-L{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1" > +// CXX-RV32-BAREMETAL-ILP32: "-lstdc++" "--start-group" "-lc" "-lgloss" > "--end-group" "-lgcc" > +// CXX-RV32-BAREMETAL-ILP32: > "{{.*}}/Inputs/basic_riscv32_tree/lib/gcc/riscv32-unknown-elf/8.0.1{{/|\\\\}}crtend.o" > > // RUN: %clang %s -### -no-canonical-prefixes -fuse-ld=ld \ > // RUN: -target riscv32-linux-unknown-elf \ > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits