[llvm] [llvm-objcopy] Replace custom -- parsing with DashDashParsing (PR #116565)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 17 17:15:40 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-binary-utilities
Author: Fangrui Song (MaskRay)
<details>
<summary>Changes</summary>
The custom -- parsing from https://reviews.llvm.org/D102665 can be
replaced with the generic feature from https://reviews.llvm.org/D152286
---
Full diff: https://github.com/llvm/llvm-project/pull/116565.diff
1 Files Affected:
- (modified) llvm/tools/llvm-objcopy/ObjcopyOptions.cpp (+3-9)
``````````diff
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
index 26a888c628d9d3..104d802b1e1eeb 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");
``````````
</details>
https://github.com/llvm/llvm-project/pull/116565
More information about the llvm-commits
mailing list