From: Alexander Shaposhnikov Date: Sat, 19 Sep 2020 00:50:08 +0000 (-0700) Subject: [llvm-install-name-tool] Validate -id value early X-Git-Tag: llvmorg-13-init~11556 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e9f9027c3c07ecdfad1ab900c0a62e0e320d5dd1;p=platform%2Fupstream%2Fllvm.git [llvm-install-name-tool] Validate -id value early The code which validates the value of -id is moved into the function parseInstallNameToolOptions. Test plan: make check-all Differential revision: https://reviews.llvm.org/D87855 --- diff --git a/llvm/tools/llvm-objcopy/CopyConfig.cpp b/llvm/tools/llvm-objcopy/CopyConfig.cpp index 1fde54d..63e672e 100644 --- a/llvm/tools/llvm-objcopy/CopyConfig.cpp +++ b/llvm/tools/llvm-objcopy/CopyConfig.cpp @@ -902,12 +902,15 @@ parseInstallNameToolOptions(ArrayRef ArgsArr) { Config.RPathsToUpdate.insert({Old, New}); } - if (auto *Arg = InputArgs.getLastArg(INSTALL_NAME_TOOL_id)) + if (auto *Arg = InputArgs.getLastArg(INSTALL_NAME_TOOL_id)) { Config.SharedLibId = Arg->getValue(); + if (Config.SharedLibId->empty()) + return createStringError(errc::invalid_argument, + "cannot specify an empty id"); + } - for (auto *Arg : InputArgs.filtered(INSTALL_NAME_TOOL_change)) { + for (auto *Arg : InputArgs.filtered(INSTALL_NAME_TOOL_change)) Config.InstallNamesToUpdate.insert({Arg->getValue(0), Arg->getValue(1)}); - } SmallVector Positional; for (auto Arg : InputArgs.filtered(INSTALL_NAME_TOOL_UNKNOWN)) diff --git a/llvm/tools/llvm-objcopy/MachO/MachOObjcopy.cpp b/llvm/tools/llvm-objcopy/MachO/MachOObjcopy.cpp index 68cbdbb..de372ac 100644 --- a/llvm/tools/llvm-objcopy/MachO/MachOObjcopy.cpp +++ b/llvm/tools/llvm-objcopy/MachO/MachOObjcopy.cpp @@ -181,13 +181,9 @@ static Error processLoadCommands(const CopyConfig &Config, Object &Obj) { for (LoadCommand &LC : Obj.LoadCommands) { switch (LC.MachOLoadCommand.load_command_data.cmd) { case MachO::LC_ID_DYLIB: - if (Config.SharedLibId) { - StringRef Id = Config.SharedLibId.getValue(); - if (Id.empty()) - return createStringError(errc::invalid_argument, - "cannot specify an empty id"); - updateLoadCommandPayloadString(LC, Id); - } + if (Config.SharedLibId) + updateLoadCommandPayloadString( + LC, *Config.SharedLibId); break; case MachO::LC_RPATH: {