parent
0c35b38fd2
commit
b51f67a175
|
@ -32,6 +32,8 @@
|
||||||
|
|
||||||
using namespace llvm::COFF;
|
using namespace llvm::COFF;
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
using llvm::cl::ExpandResponseFiles;
|
||||||
|
using llvm::cl::TokenizeWindowsCommandLine;
|
||||||
using llvm::sys::Process;
|
using llvm::sys::Process;
|
||||||
|
|
||||||
namespace lld {
|
namespace lld {
|
||||||
|
@ -216,26 +218,14 @@ std::vector<const char *> ArgParser::tokenize(StringRef S) {
|
||||||
return V;
|
return V;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates a new command line by replaceing options starting with '@'
|
// Creates a new command line by replacing options starting with '@'
|
||||||
// character. '@<filename>' is replaced by the file's contents.
|
// character. '@<filename>' is replaced by the file's contents.
|
||||||
ErrorOr<std::vector<const char *>>
|
ErrorOr<std::vector<const char *>>
|
||||||
ArgParser::replaceResponseFiles(std::vector<const char *> Argv) {
|
ArgParser::replaceResponseFiles(std::vector<const char *> Argv) {
|
||||||
std::vector<const char *> V;
|
SmallVector<const char *, 256> Tokens(&Argv[0], &Argv[0] + Argv.size());
|
||||||
for (const char *S : Argv) {
|
BumpPtrStringSaver Saver(&Alloc);
|
||||||
if (S[0] != '@') {
|
ExpandResponseFiles(Saver, TokenizeWindowsCommandLine, Tokens);
|
||||||
V.push_back(S);
|
return std::vector<const char *>(Tokens.begin(), Tokens.end());
|
||||||
continue;
|
|
||||||
}
|
|
||||||
StringRef Path = S + 1;
|
|
||||||
auto BufOrErr = MemoryBuffer::getFile(Path);
|
|
||||||
if (auto EC = BufOrErr.getError())
|
|
||||||
return EC;
|
|
||||||
std::unique_ptr<MemoryBuffer> Buf = std::move(BufOrErr.get());
|
|
||||||
StringRef Str = Alloc.save(Buf->getBuffer());
|
|
||||||
std::vector<const char *> Tokens = tokenize(Str);
|
|
||||||
V.insert(V.end(), Tokens.begin(), Tokens.end());
|
|
||||||
}
|
|
||||||
return V;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void printHelp(const char *Argv0) {
|
void printHelp(const char *Argv0) {
|
||||||
|
|
Loading…
Reference in New Issue