add driver support for minix, patch by Kees van Reeuwijk

from PR7583

llvm-svn: 107788
This commit is contained in:
Chris Lattner 2010-07-07 16:01:42 +00:00
parent e784616fbb
commit 3e2ee147d0
10 changed files with 324 additions and 29 deletions

View File

@ -76,6 +76,8 @@ const HostInfo *createOpenBSDHostInfo(const Driver &D,
const llvm::Triple& Triple); const llvm::Triple& Triple);
const HostInfo *createFreeBSDHostInfo(const Driver &D, const HostInfo *createFreeBSDHostInfo(const Driver &D,
const llvm::Triple& Triple); const llvm::Triple& Triple);
const HostInfo *createMinixHostInfo(const Driver &D,
const llvm::Triple& Triple);
const HostInfo *createDragonFlyHostInfo(const Driver &D, const HostInfo *createDragonFlyHostInfo(const Driver &D,
const llvm::Triple& Triple); const llvm::Triple& Triple);
const HostInfo *createLinuxHostInfo(const Driver &D, const HostInfo *createLinuxHostInfo(const Driver &D,

View File

@ -212,6 +212,30 @@ public:
} }
}; };
// Minix Target
template<typename Target>
class MinixTargetInfo : public OSTargetInfo<Target> {
protected:
virtual void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
MacroBuilder &Builder) const {
// Minix defines
Builder.defineMacro("__minix", "3");
Builder.defineMacro("_EM_WSIZE", "4");
Builder.defineMacro("_EM_PSIZE", "4");
Builder.defineMacro("_EM_SSIZE", "2");
Builder.defineMacro("_EM_LSIZE", "4");
Builder.defineMacro("_EM_FSIZE", "4");
Builder.defineMacro("_EM_DSIZE", "8");
DefineStd(Builder, "unix", Opts);
}
public:
MinixTargetInfo(const std::string &triple)
: OSTargetInfo<Target>(triple) {
this->UserLabelPrefix = "";
}
};
// Linux target // Linux target
template<typename Target> template<typename Target>
class LinuxTargetInfo : public OSTargetInfo<Target> { class LinuxTargetInfo : public OSTargetInfo<Target> {
@ -2501,6 +2525,8 @@ static TargetInfo *AllocateTarget(const std::string &T) {
return new OpenBSDI386TargetInfo(T); return new OpenBSDI386TargetInfo(T);
case llvm::Triple::FreeBSD: case llvm::Triple::FreeBSD:
return new FreeBSDTargetInfo<X86_32TargetInfo>(T); return new FreeBSDTargetInfo<X86_32TargetInfo>(T);
case llvm::Triple::Minix:
return new MinixTargetInfo<X86_32TargetInfo>(T);
case llvm::Triple::Solaris: case llvm::Triple::Solaris:
return new SolarisTargetInfo<X86_32TargetInfo>(T); return new SolarisTargetInfo<X86_32TargetInfo>(T);
case llvm::Triple::Cygwin: case llvm::Triple::Cygwin:

View File

@ -2365,6 +2365,7 @@ const TargetCodeGenInfo &CodeGenModule::getTargetCodeGenInfo() const {
case llvm::Triple::DragonFly: case llvm::Triple::DragonFly:
case llvm::Triple::FreeBSD: case llvm::Triple::FreeBSD:
case llvm::Triple::OpenBSD: case llvm::Triple::OpenBSD:
case llvm::Triple::Minix:
return *(TheTargetCodeGenInfo = return *(TheTargetCodeGenInfo =
new X86_32TargetCodeGenInfo(Context, false, true)); new X86_32TargetCodeGenInfo(Context, false, true));

View File

@ -1298,6 +1298,8 @@ const HostInfo *Driver::GetHostInfo(const char *TripleStr) const {
return createOpenBSDHostInfo(*this, Triple); return createOpenBSDHostInfo(*this, Triple);
case llvm::Triple::FreeBSD: case llvm::Triple::FreeBSD:
return createFreeBSDHostInfo(*this, Triple); return createFreeBSDHostInfo(*this, Triple);
case llvm::Triple::Minix:
return createMinixHostInfo(*this, Triple);
case llvm::Triple::Linux: case llvm::Triple::Linux:
return createLinuxHostInfo(*this, Triple); return createLinuxHostInfo(*this, Triple);
default: default:

View File

@ -425,6 +425,58 @@ ToolChain *FreeBSDHostInfo::CreateToolChain(const ArgList &Args,
return TC; return TC;
} }
// Minix Host Info
/// MinixHostInfo - Minix host information implementation.
class MinixHostInfo : public HostInfo {
/// Cache of tool chains we have created.
mutable llvm::StringMap<ToolChain*> ToolChains;
public:
MinixHostInfo(const Driver &D, const llvm::Triple& Triple)
: HostInfo(D, Triple) {}
~MinixHostInfo();
virtual bool useDriverDriver() const;
virtual types::ID lookupTypeForExtension(const char *Ext) const {
return types::lookupTypeForExtension(Ext);
}
virtual ToolChain *CreateToolChain(const ArgList &Args,
const char *ArchName) const;
};
MinixHostInfo::~MinixHostInfo() {
for (llvm::StringMap<ToolChain*>::iterator
it = ToolChains.begin(), ie = ToolChains.end(); it != ie; ++it){
delete it->second;
}
}
bool MinixHostInfo::useDriverDriver() const {
return false;
}
ToolChain *MinixHostInfo::CreateToolChain(const ArgList &Args,
const char *ArchName) const {
assert(!ArchName &&
"Unexpected arch name on platform without driver driver support.");
std::string Arch = getArchName();
ArchName = Arch.c_str();
ToolChain *&TC = ToolChains[ArchName];
if (!TC) {
llvm::Triple TCTriple(getTriple());
TCTriple.setArchName(ArchName);
TC = new toolchains::Minix(*this, TCTriple);
}
return TC;
}
// DragonFly Host Info // DragonFly Host Info
/// DragonFlyHostInfo - DragonFly host information implementation. /// DragonFlyHostInfo - DragonFly host information implementation.
@ -565,6 +617,12 @@ clang::driver::createFreeBSDHostInfo(const Driver &D,
return new FreeBSDHostInfo(D, Triple); return new FreeBSDHostInfo(D, Triple);
} }
const HostInfo *
clang::driver::createMinixHostInfo(const Driver &D,
const llvm::Triple& Triple) {
return new MinixHostInfo(D, Triple);
}
const HostInfo * const HostInfo *
clang::driver::createDragonFlyHostInfo(const Driver &D, clang::driver::createDragonFlyHostInfo(const Driver &D,
const llvm::Triple& Triple) { const llvm::Triple& Triple) {

View File

@ -908,6 +908,38 @@ Tool &FreeBSD::SelectTool(const Compilation &C, const JobAction &JA) const {
return *T; return *T;
} }
/// Minix - Minix tool chain which can call as(1) and ld(1) directly.
Minix::Minix(const HostInfo &Host, const llvm::Triple& Triple)
: Generic_GCC(Host, Triple) {
getFilePaths().push_back(getDriver().Dir + "/../lib");
getFilePaths().push_back("/usr/lib");
getFilePaths().push_back("/usr/gnu/lib");
getFilePaths().push_back("/usr/gnu/lib/gcc/i686-pc-minix/4.4.3");
}
Tool &Minix::SelectTool(const Compilation &C, const JobAction &JA) const {
Action::ActionClass Key;
if (getDriver().ShouldUseClangCompiler(C, JA, getTriple()))
Key = Action::AnalyzeJobClass;
else
Key = JA.getKind();
Tool *&T = Tools[Key];
if (!T) {
switch (Key) {
case Action::AssembleJobClass:
T = new tools::minix::Assemble(*this); break;
case Action::LinkJobClass:
T = new tools::minix::Link(*this); break;
default:
T = &Generic_GCC::SelectTool(C, JA);
}
}
return *T;
}
/// AuroraUX - AuroraUX tool chain which can call as(1) and ld(1) directly. /// AuroraUX - AuroraUX tool chain which can call as(1) and ld(1) directly.
AuroraUX::AuroraUX(const HostInfo &Host, const llvm::Triple& Triple) AuroraUX::AuroraUX(const HostInfo &Host, const llvm::Triple& Triple)

View File

@ -271,6 +271,13 @@ public:
virtual Tool &SelectTool(const Compilation &C, const JobAction &JA) const; virtual Tool &SelectTool(const Compilation &C, const JobAction &JA) const;
}; };
class LLVM_LIBRARY_VISIBILITY Minix : public Generic_GCC {
public:
Minix(const HostInfo &Host, const llvm::Triple& Triple);
virtual Tool &SelectTool(const Compilation &C, const JobAction &JA) const;
};
class LLVM_LIBRARY_VISIBILITY DragonFly : public Generic_GCC { class LLVM_LIBRARY_VISIBILITY DragonFly : public Generic_GCC {
public: public:
DragonFly(const HostInfo &Host, const llvm::Triple& Triple); DragonFly(const HostInfo &Host, const llvm::Triple& Triple);

View File

@ -2680,13 +2680,18 @@ void auroraux::Link::ConstructJob(Compilation &C, const JobAction &JA,
if (!Args.hasArg(options::OPT_nostdlib) && if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nostartfiles)) { !Args.hasArg(options::OPT_nostartfiles)) {
if (!Args.hasArg(options::OPT_shared)) { if (!Args.hasArg(options::OPT_shared)) {
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crt1.o"))); CmdArgs.push_back(Args.MakeArgString(
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crti.o"))); getToolChain().GetFilePath(C, "crt1.o")));
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbegin.o"))); CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crti.o")));
CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crtbegin.o")));
} else { } else {
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crti.o"))); CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crti.o")));
} }
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtn.o"))); CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crtn.o")));
} }
CmdArgs.push_back(Args.MakeArgString("-L/opt/gcc4/lib/gcc/" CmdArgs.push_back(Args.MakeArgString("-L/opt/gcc4/lib/gcc/"
@ -2731,9 +2736,8 @@ void auroraux::Link::ConstructJob(Compilation &C, const JobAction &JA,
if (!Args.hasArg(options::OPT_nostdlib) && if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nostartfiles)) { !Args.hasArg(options::OPT_nostartfiles)) {
if (!Args.hasArg(options::OPT_shared)) if (!Args.hasArg(options::OPT_shared))
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtend.o"))); CmdArgs.push_back(Args.MakeArgString(
// else getToolChain().GetFilePath(C, "crtend.o")));
// CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtendS.o")));
} }
const char *Exec = const char *Exec =
@ -2811,10 +2815,13 @@ void openbsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
if (!Args.hasArg(options::OPT_nostdlib) && if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nostartfiles)) { !Args.hasArg(options::OPT_nostartfiles)) {
if (!Args.hasArg(options::OPT_shared)) { if (!Args.hasArg(options::OPT_shared)) {
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crt0.o"))); CmdArgs.push_back(Args.MakeArgString(
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbegin.o"))); getToolChain().GetFilePath(C, "crt0.o")));
CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crtbegin.o")));
} else { } else {
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbeginS.o"))); CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crtbeginS.o")));
} }
} }
@ -2862,9 +2869,11 @@ void openbsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
if (!Args.hasArg(options::OPT_nostdlib) && if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nostartfiles)) { !Args.hasArg(options::OPT_nostartfiles)) {
if (!Args.hasArg(options::OPT_shared)) if (!Args.hasArg(options::OPT_shared))
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtend.o"))); CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crtend.o")));
else else
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtendS.o"))); CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crtendS.o")));
} }
const char *Exec = const char *Exec =
@ -2954,12 +2963,17 @@ void freebsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
if (!Args.hasArg(options::OPT_nostdlib) && if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nostartfiles)) { !Args.hasArg(options::OPT_nostartfiles)) {
if (!Args.hasArg(options::OPT_shared)) { if (!Args.hasArg(options::OPT_shared)) {
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crt1.o"))); CmdArgs.push_back(Args.MakeArgString(
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crti.o"))); getToolChain().GetFilePath(C, "crt1.o")));
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbegin.o"))); CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crti.o")));
CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crtbegin.o")));
} else { } else {
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crti.o"))); CmdArgs.push_back(Args.MakeArgString(
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbeginS.o"))); getToolChain().GetFilePath(C, "crti.o")));
CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crtbeginS.o")));
} }
} }
@ -3019,10 +3033,13 @@ void freebsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
if (!Args.hasArg(options::OPT_nostdlib) && if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nostartfiles)) { !Args.hasArg(options::OPT_nostartfiles)) {
if (!Args.hasArg(options::OPT_shared)) if (!Args.hasArg(options::OPT_shared))
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtend.o"))); CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C,
"crtend.o")));
else else
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtendS.o"))); CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C,
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtn.o"))); "crtendS.o")));
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C,
"crtn.o")));
} }
const char *Exec = const char *Exec =
@ -3030,6 +3047,109 @@ void freebsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
Dest.addCommand(new Command(JA, *this, Exec, CmdArgs)); Dest.addCommand(new Command(JA, *this, Exec, CmdArgs));
} }
void minix::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
Job &Dest, const InputInfo &Output,
const InputInfoList &Inputs,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
options::OPT_Xassembler);
CmdArgs.push_back("-o");
if (Output.isPipe())
CmdArgs.push_back("-");
else
CmdArgs.push_back(Output.getFilename());
for (InputInfoList::const_iterator
it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) {
const InputInfo &II = *it;
if (II.isPipe())
CmdArgs.push_back("-");
else
CmdArgs.push_back(II.getFilename());
}
const char *Exec =
Args.MakeArgString(getToolChain().GetProgramPath(C, "gas"));
Dest.addCommand(new Command(JA, *this, Exec, CmdArgs));
}
void minix::Link::ConstructJob(Compilation &C, const JobAction &JA,
Job &Dest, const InputInfo &Output,
const InputInfoList &Inputs,
const ArgList &Args,
const char *LinkingOutput) const {
const Driver &D = getToolChain().getDriver();
ArgStringList CmdArgs;
if (Output.isPipe()) {
CmdArgs.push_back("-o");
CmdArgs.push_back("-");
} else if (Output.isFilename()) {
CmdArgs.push_back("-o");
CmdArgs.push_back(Output.getFilename());
} else {
assert(Output.isNothing() && "Invalid output.");
}
if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nostartfiles))
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C,
"/usr/gnu/lib/crtso.o")));
Args.AddAllArgs(CmdArgs, options::OPT_L);
Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
Args.AddAllArgs(CmdArgs, options::OPT_e);
for (InputInfoList::const_iterator
it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) {
const InputInfo &II = *it;
// Don't try to pass LLVM inputs to a generic gcc.
if (II.getType() == types::TY_LLVM_IR || II.getType() == types::TY_LTO_IR ||
II.getType() == types::TY_LLVM_BC || II.getType() == types::TY_LTO_BC)
D.Diag(clang::diag::err_drv_no_linker_llvm_support)
<< getToolChain().getTripleString();
if (II.isPipe())
CmdArgs.push_back("-");
else if (II.isFilename())
CmdArgs.push_back(II.getFilename());
else
II.getInputArg().renderAsInput(Args, CmdArgs);
}
if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nodefaultlibs)) {
if (D.CCCIsCXX) {
CmdArgs.push_back("-lstdc++");
CmdArgs.push_back("-lm");
}
if (Args.hasArg(options::OPT_pthread))
CmdArgs.push_back("-lpthread");
CmdArgs.push_back("-lc");
CmdArgs.push_back("-lgcc");
CmdArgs.push_back("-L/usr/gnu/lib");
// FIXME: fill in the correct search path for the final
// support libraries.
CmdArgs.push_back("-L/usr/gnu/lib/gcc/i686-pc-minix/4.4.3");
}
if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nostartfiles)) {
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C,
"/usr/gnu/lib/libend.a")));
}
const char *Exec =
Args.MakeArgString(getToolChain().GetProgramPath(C, "/usr/gnu/bin/gld"));
Dest.addCommand(new Command(JA, *this, Exec, CmdArgs));
}
/// DragonFly Tools /// DragonFly Tools
// For now, DragonFly Assemble does just about the same as for // For now, DragonFly Assemble does just about the same as for
@ -3108,12 +3228,17 @@ void dragonfly::Link::ConstructJob(Compilation &C, const JobAction &JA,
if (!Args.hasArg(options::OPT_nostdlib) && if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nostartfiles)) { !Args.hasArg(options::OPT_nostartfiles)) {
if (!Args.hasArg(options::OPT_shared)) { if (!Args.hasArg(options::OPT_shared)) {
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crt1.o"))); CmdArgs.push_back(
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crti.o"))); Args.MakeArgString(getToolChain().GetFilePath(C, "crt1.o")));
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbegin.o"))); CmdArgs.push_back(
Args.MakeArgString(getToolChain().GetFilePath(C, "crti.o")));
CmdArgs.push_back(
Args.MakeArgString(getToolChain().GetFilePath(C, "crtbegin.o")));
} else { } else {
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crti.o"))); CmdArgs.push_back(
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbeginS.o"))); Args.MakeArgString(getToolChain().GetFilePath(C, "crti.o")));
CmdArgs.push_back(
Args.MakeArgString(getToolChain().GetFilePath(C, "crtbeginS.o")));
} }
} }
@ -3183,10 +3308,13 @@ void dragonfly::Link::ConstructJob(Compilation &C, const JobAction &JA,
if (!Args.hasArg(options::OPT_nostdlib) && if (!Args.hasArg(options::OPT_nostdlib) &&
!Args.hasArg(options::OPT_nostartfiles)) { !Args.hasArg(options::OPT_nostartfiles)) {
if (!Args.hasArg(options::OPT_shared)) if (!Args.hasArg(options::OPT_shared))
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtend.o"))); CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crtend.o")));
else else
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtendS.o"))); CmdArgs.push_back(Args.MakeArgString(
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtn.o"))); getToolChain().GetFilePath(C, "crtendS.o")));
CmdArgs.push_back(Args.MakeArgString(
getToolChain().GetFilePath(C, "crtn.o")));
} }
const char *Exec = const char *Exec =

View File

@ -377,6 +377,41 @@ namespace freebsd {
}; };
} // end namespace freebsd } // end namespace freebsd
/// minix -- Directly call GNU Binutils assembler and linker
namespace minix {
class LLVM_LIBRARY_VISIBILITY Assemble : public Tool {
public:
Assemble(const ToolChain &TC) : Tool("minix::Assemble", "assembler",
TC) {}
virtual bool acceptsPipedInput() const { return true; }
virtual bool canPipeOutput() const { return true; }
virtual bool hasIntegratedCPP() const { return false; }
virtual void ConstructJob(Compilation &C, const JobAction &JA,
Job &Dest,
const InputInfo &Output,
const InputInfoList &Inputs,
const ArgList &TCArgs,
const char *LinkingOutput) const;
};
class LLVM_LIBRARY_VISIBILITY Link : public Tool {
public:
Link(const ToolChain &TC) : Tool("minix::Link", "linker", TC) {}
virtual bool acceptsPipedInput() const { return true; }
virtual bool canPipeOutput() const { return true; }
virtual bool hasIntegratedCPP() const { return false; }
virtual void ConstructJob(Compilation &C, const JobAction &JA,
Job &Dest,
const InputInfo &Output,
const InputInfoList &Inputs,
const ArgList &TCArgs,
const char *LinkingOutput) const;
};
} // end namespace minix
/// auroraux -- Directly call GNU Binutils assembler and linker /// auroraux -- Directly call GNU Binutils assembler and linker
namespace auroraux { namespace auroraux {
class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { class LLVM_LIBRARY_VISIBILITY Assemble : public Tool {

View File

@ -723,6 +723,10 @@ AddDefaultCPlusPlusIncludePaths(const llvm::Triple &triple) {
// FreeBSD 7.3 // FreeBSD 7.3
AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2", "", "", "", triple); AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2", "", "", "", triple);
break; break;
case llvm::Triple::Minix:
AddGnuCPlusPlusIncludePaths("/usr/gnu/include/c++/4.4.3",
"", "", "", triple);
break;
case llvm::Triple::Solaris: case llvm::Triple::Solaris:
// Solaris - Fall though.. // Solaris - Fall though..
case llvm::Triple::AuroraUX: case llvm::Triple::AuroraUX: