diff --git a/driver/linker.cpp b/driver/linker.cpp index afe58001..72e16e6b 100644 --- a/driver/linker.cpp +++ b/driver/linker.cpp @@ -84,7 +84,7 @@ static int ExecuteToolAndWait(llvm::sys::Path tool, std::vector arg std::string errstr; if (int status = llvm::sys::Program::ExecuteAndWait(tool, &realargs[0], NULL, NULL, 0, 0, &errstr)) { - error("tool failed:\nstatus: %d", status); + error("%s failed with status: %d", tool.c_str(), status); if (!errstr.empty()) error("message: %s", errstr.c_str()); return status; diff --git a/gen/programs.cpp b/gen/programs.cpp index a3fb6a82..401ab193 100644 --- a/gen/programs.cpp +++ b/gen/programs.cpp @@ -30,24 +30,21 @@ static cl::opt mslib("ms-lib", sys::Path getProgram(const char *name, const cl::opt &opt, const char *envVar = 0) { + sys::Path path; const char *prog = NULL; - if (opt.getNumOccurrences() > 0 && opt.length() > 0) - prog = gcc.c_str(); + if (opt.getNumOccurrences() > 0 && opt.length() > 0 && (prog = opt.c_str())) + path = sys::Program::FindProgramByName(prog); - if (!prog && envVar) - prog = getenv(envVar); - if (!prog) - prog = name; + if (path.empty() && envVar && (prog = getenv(envVar))) + path = sys::Program::FindProgramByName(prog); - sys::Path path = sys::Program::FindProgramByName(prog); - if (path.empty() && !prog) { - if (prog) { - path.set(prog); - } else { - error("failed to locate %s", name); - fatal(); - } + if (path.empty()) + path = sys::Program::FindProgramByName(name); + + if (path.empty()) { + error("failed to locate %s", name); + fatal(); } return path;