|
30 | 30 | using namespace lld;
|
31 | 31 | using namespace llvm;
|
32 | 32 |
|
| 33 | +LLVM_ATTRIBUTE_NORETURN static void error(const Twine &Msg) { |
| 34 | + errs() << Msg << "\n"; |
| 35 | + exit(1); |
| 36 | +} |
| 37 | + |
33 | 38 | // Create OptTable
|
34 | 39 | enum {
|
35 | 40 | OPT_INVALID = 0,
|
@@ -60,9 +65,20 @@ class MinGWOptTable : public opt::OptTable {
|
60 | 65 | };
|
61 | 66 | } // namespace
|
62 | 67 |
|
63 |
| -LLVM_ATTRIBUTE_NORETURN static void error(const Twine &Msg) { |
64 |
| - errs() << Msg << "\n"; |
65 |
| - exit(1); |
| 68 | +opt::InputArgList MinGWOptTable::parse(ArrayRef<const char *> Argv) { |
| 69 | + unsigned MissingIndex; |
| 70 | + unsigned MissingCount; |
| 71 | + |
| 72 | + SmallVector<const char *, 256> Vec(Argv.data(), Argv.data() + Argv.size()); |
| 73 | + opt::InputArgList Args = this->ParseArgs(Vec, MissingIndex, MissingCount); |
| 74 | + |
| 75 | + if (MissingCount) |
| 76 | + error(StringRef(Args.getArgString(MissingIndex)) + ": missing argument"); |
| 77 | + for (auto *Arg : Args.filtered(OPT_UNKNOWN)) |
| 78 | + error("unknown argument: " + Arg->getSpelling()); |
| 79 | + if (!Args.hasArgNoClaim(OPT_INPUT) && !Args.hasArgNoClaim(OPT_l)) |
| 80 | + error("no input files"); |
| 81 | + return Args; |
66 | 82 | }
|
67 | 83 |
|
68 | 84 | // Find a file by concatenating given paths.
|
@@ -94,22 +110,6 @@ searchLibrary(StringRef Name, ArrayRef<StringRef> SearchPaths, bool BStatic) {
|
94 | 110 | error("unable to find library -l" + Name);
|
95 | 111 | }
|
96 | 112 |
|
97 |
| -opt::InputArgList MinGWOptTable::parse(ArrayRef<const char *> Argv) { |
98 |
| - unsigned MissingIndex; |
99 |
| - unsigned MissingCount; |
100 |
| - |
101 |
| - SmallVector<const char *, 256> Vec(Argv.data(), Argv.data() + Argv.size()); |
102 |
| - opt::InputArgList Args = this->ParseArgs(Vec, MissingIndex, MissingCount); |
103 |
| - |
104 |
| - if (MissingCount) |
105 |
| - error(StringRef(Args.getArgString(MissingIndex)) + ": missing argument"); |
106 |
| - for (auto *Arg : Args.filtered(OPT_UNKNOWN)) |
107 |
| - error("unknown argument: " + Arg->getSpelling()); |
108 |
| - if (!Args.hasArgNoClaim(OPT_INPUT) && !Args.hasArgNoClaim(OPT_l)) |
109 |
| - error("no input files"); |
110 |
| - return Args; |
111 |
| -} |
112 |
| - |
113 | 113 | // Convert Unix-ish command line arguments to Windows-ish ones and
|
114 | 114 | // then call coff::link.
|
115 | 115 | bool mingw::link(ArrayRef<const char *> ArgsArr, raw_ostream &Diag) {
|
|
0 commit comments