diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp index 26a888c628d9d..104d802b1e1ee 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 -objcopy::parseObjcopyOptions(ArrayRef RawArgsArr, +objcopy::parseObjcopyOptions(ArrayRef ArgsArr, function_ref ErrorCallback) { DriverConfig DC; ObjcopyOptTable T; - const char *const *DashDash = - llvm::find_if(RawArgsArr, [](StringRef Str) { return Str == "--"; }); - ArrayRef 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 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 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");