diff options
author | Fangrui Song <i@maskray.me> | 2024-11-18 09:09:06 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-18 09:09:06 -0800 |
commit | 2444b6f0df56d2aeb0ae6dce946443b23a3a9d3b (patch) | |
tree | 772457d2347b873ca7336327f6eeedeed189b120 /llvm/tools/llvm-objcopy/ObjcopyOptions.cpp | |
parent | 4092c0deef466e5b96a221e4066a78ae72efa7af (diff) | |
download | llvm-2444b6f0df56d2aeb0ae6dce946443b23a3a9d3b.zip llvm-2444b6f0df56d2aeb0ae6dce946443b23a3a9d3b.tar.gz llvm-2444b6f0df56d2aeb0ae6dce946443b23a3a9d3b.tar.bz2 |
[llvm-objcopy] Replace custom -- parsing with DashDashParsing
The custom -- parsing from https://reviews.llvm.org/D102665 can be
replaced with the generic feature from https://reviews.llvm.org/D152286
Pull Request: https://github.com/llvm/llvm-project/pull/116565
Diffstat (limited to 'llvm/tools/llvm-objcopy/ObjcopyOptions.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/ObjcopyOptions.cpp | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp index 26a888c..104d802 100644 --- a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp +++ b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp @@ -58,6 +58,7 @@ class ObjcopyOptTable : public opt::GenericOptTable { public: ObjcopyOptTable() : opt::GenericOptTable(objcopy_opt::ObjcopyInfoTable) { setGroupedShortOptions(true); + setDashDashParsing(true); } }; @@ -650,17 +651,11 @@ parseChangeSectionAddr(StringRef ArgValue, StringRef OptionName, // help flag is set then parseObjcopyOptions will print the help messege and // exit. Expected<DriverConfig> -objcopy::parseObjcopyOptions(ArrayRef<const char *> RawArgsArr, +objcopy::parseObjcopyOptions(ArrayRef<const char *> ArgsArr, function_ref<Error(Error)> ErrorCallback) { DriverConfig DC; ObjcopyOptTable T; - const char *const *DashDash = - llvm::find_if(RawArgsArr, [](StringRef Str) { return Str == "--"; }); - ArrayRef<const char *> ArgsArr = ArrayRef(RawArgsArr.begin(), DashDash); - if (DashDash != RawArgsArr.end()) - DashDash = std::next(DashDash); - unsigned MissingArgumentIndex, MissingArgumentCount; llvm::opt::InputArgList InputArgs = T.ParseArgs(ArgsArr, MissingArgumentIndex, MissingArgumentCount); @@ -671,7 +666,7 @@ objcopy::parseObjcopyOptions(ArrayRef<const char *> RawArgsArr, "argument to '%s' is missing (expected %d value(s))", InputArgs.getArgString(MissingArgumentIndex), MissingArgumentCount); - if (InputArgs.size() == 0 && DashDash == RawArgsArr.end()) { + if (InputArgs.size() == 0) { printHelp(T, errs(), ToolType::Objcopy); exit(1); } @@ -695,7 +690,6 @@ objcopy::parseObjcopyOptions(ArrayRef<const char *> RawArgsArr, for (auto *Arg : InputArgs.filtered(OBJCOPY_INPUT)) Positional.push_back(Arg->getValue()); - std::copy(DashDash, RawArgsArr.end(), std::back_inserter(Positional)); if (Positional.empty()) return createStringError(errc::invalid_argument, "no input file specified"); |