[llvm] 310a8e1 - [llvm-objcopy][NFC] Extract arg parsing logic into a helper function
Alexander Shaposhnikov via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 22 23:33:46 PDT 2020
Author: Keith Smiley
Date: 2020-10-22T23:33:33-07:00
New Revision: 310a8e1d1284096fd42499c48a19899ff8b150ee
URL: https://github.com/llvm/llvm-project/commit/310a8e1d1284096fd42499c48a19899ff8b150ee
DIFF: https://github.com/llvm/llvm-project/commit/310a8e1d1284096fd42499c48a19899ff8b150ee.diff
LOG: [llvm-objcopy][NFC] Extract arg parsing logic into a helper function
This diff refactors the code which determines the tool type based on
how llvm-objcopy is invoked (objcopy vs strip vs bitcode-strip vs install-name-tool).
NFC.
Test plan: make check-all
Differential revision: https://reviews.llvm.org/D89713
Added:
Modified:
llvm/tools/llvm-objcopy/llvm-objcopy.cpp
Removed:
################################################################################
diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
index e1f1ed8f3cc1..7fd2acd11e99 100644
--- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
+++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
@@ -63,6 +63,30 @@ ErrorSuccess reportWarning(Error E) {
return Error::success();
}
+static Expected<DriverConfig> getDriverConfig(ArrayRef<const char *> Args) {
+ StringRef Stem = sys::path::stem(ToolName);
+ auto Is = [=](StringRef Tool) {
+ // We need to recognize the following filenames:
+ //
+ // llvm-objcopy -> objcopy
+ // strip-10.exe -> strip
+ // powerpc64-unknown-freebsd13-objcopy -> objcopy
+ // llvm-install-name-tool -> install-name-tool
+ auto I = Stem.rfind_lower(Tool);
+ return I != StringRef::npos &&
+ (I + Tool.size() == Stem.size() || !isAlnum(Stem[I + Tool.size()]));
+ };
+
+ if (Is("bitcode-strip") || Is("bitcode_strip"))
+ return parseBitcodeStripOptions(Args);
+ else if (Is("strip"))
+ return parseStripOptions(Args, reportWarning);
+ else if (Is("install-name-tool") || Is("install_name_tool"))
+ return parseInstallNameToolOptions(Args);
+ else
+ return parseObjcopyOptions(Args, reportWarning);
+}
+
} // end namespace objcopy
} // end namespace llvm
@@ -309,34 +333,12 @@ static Error executeObjcopy(CopyConfig &Config) {
namespace {
-enum class ToolType { Objcopy, Strip, InstallNameTool, BitcodeStrip };
-
} // anonymous namespace
int main(int argc, char **argv) {
InitLLVM X(argc, argv);
ToolName = argv[0];
- StringRef Stem = sys::path::stem(ToolName);
- auto Is = [=](StringRef Tool) {
- // We need to recognize the following filenames:
- //
- // llvm-objcopy -> objcopy
- // strip-10.exe -> strip
- // powerpc64-unknown-freebsd13-objcopy -> objcopy
- // llvm-install-name-tool -> install-name-tool
- auto I = Stem.rfind_lower(Tool);
- return I != StringRef::npos &&
- (I + Tool.size() == Stem.size() || !isAlnum(Stem[I + Tool.size()]));
- };
- ToolType Tool = ToolType::Objcopy;
- if (Is("bitcode-strip") || Is("bitcode_strip"))
- Tool = ToolType::BitcodeStrip;
- else if (Is("strip"))
- Tool = ToolType::Strip;
- else if (Is("install-name-tool") || Is("install_name_tool"))
- Tool = ToolType::InstallNameTool;
-
// Expand response files.
// TODO: Move these lines, which are copied from lib/Support/CommandLine.cpp,
// into a separate function in the CommandLine library and call that function
@@ -351,14 +353,8 @@ int main(int argc, char **argv) {
NewArgv);
auto Args = makeArrayRef(NewArgv).drop_front();
- Expected<DriverConfig> DriverConfig =
- (Tool == ToolType::Strip)
- ? parseStripOptions(Args, reportWarning)
- : ((Tool == ToolType::InstallNameTool)
- ? parseInstallNameToolOptions(Args)
- : ((Tool == ToolType::BitcodeStrip)
- ? parseBitcodeStripOptions(Args)
- : parseObjcopyOptions(Args, reportWarning)));
+ Expected<DriverConfig> DriverConfig = getDriverConfig(Args);
+
if (!DriverConfig) {
logAllUnhandledErrors(DriverConfig.takeError(),
WithColor::error(errs(), ToolName));
More information about the llvm-commits
mailing list