diff options
author | Alexander Shaposhnikov <alexshap@fb.com> | 2019-11-19 23:30:52 -0800 |
---|---|---|
committer | Alexander Shaposhnikov <alexshap@fb.com> | 2019-11-19 23:42:37 -0800 |
commit | c54959c00d0b39f357d48c3b4f955d72de4c9fc1 (patch) | |
tree | af1728a427fa7a2d4948342165cf80891c3be572 /llvm/tools/llvm-objcopy/llvm-objcopy.cpp | |
parent | 7d980319ab241c68bf856c4ac0f3702f50c6c595 (diff) | |
download | llvm-c54959c00d0b39f357d48c3b4f955d72de4c9fc1.zip llvm-c54959c00d0b39f357d48c3b4f955d72de4c9fc1.tar.gz llvm-c54959c00d0b39f357d48c3b4f955d72de4c9fc1.tar.bz2 |
Introduce llvm-install-name-tool
This diff adds a new "driver" for llvm-objcopy
which is supposed to emulate the behavior of install-name-tool.
This is a recommit of b5913e6 with ubsan, test dependencies issues fixed.
Differential revision: https://reviews.llvm.org/D69146
Test plan: make check-all
Diffstat (limited to 'llvm/tools/llvm-objcopy/llvm-objcopy.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/llvm-objcopy.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp index a68210f..e662f35 100644 --- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp +++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp @@ -313,11 +313,20 @@ static Error executeObjcopy(CopyConfig &Config) { return Error::success(); } +namespace { + +enum class ToolType { Objcopy, Strip, InstallNameTool }; + +} // anonymous namespace + int main(int argc, char **argv) { InitLLVM X(argc, argv); ToolName = argv[0]; - bool IsStrip = sys::path::stem(ToolName).contains("strip"); - + ToolType Tool = StringSwitch<ToolType>(sys::path::stem(ToolName)) + .EndsWith("strip", ToolType::Strip) + .EndsWith("install-name-tool", ToolType::InstallNameTool) + .EndsWith("install_name_tool", ToolType::InstallNameTool) + .Default(ToolType::Objcopy); // 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 @@ -332,10 +341,11 @@ int main(int argc, char **argv) { NewArgv); auto Args = makeArrayRef(NewArgv).drop_front(); - Expected<DriverConfig> DriverConfig = - IsStrip ? parseStripOptions(Args, reportWarning) - : parseObjcopyOptions(Args, reportWarning); + (Tool == ToolType::Strip) ? parseStripOptions(Args, reportWarning) + : ((Tool == ToolType::InstallNameTool) + ? parseInstallNameToolOptions(Args) + : parseObjcopyOptions(Args, reportWarning)); if (!DriverConfig) { logAllUnhandledErrors(DriverConfig.takeError(), WithColor::error(errs(), ToolName)); |