[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
This commit is contained in:
Alexander Shaposhnikov 2020-09-18 17:50:08 -07:00
parent 2ac06241d2
commit e9f9027c3c
2 changed files with 10 additions and 11 deletions

View File

@ -902,13 +902,16 @@ parseInstallNameToolOptions(ArrayRef<const char *> 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();
for (auto *Arg : InputArgs.filtered(INSTALL_NAME_TOOL_change)) {
Config.InstallNamesToUpdate.insert({Arg->getValue(0), Arg->getValue(1)});
if (Config.SharedLibId->empty())
return createStringError(errc::invalid_argument,
"cannot specify an empty id");
}
for (auto *Arg : InputArgs.filtered(INSTALL_NAME_TOOL_change))
Config.InstallNamesToUpdate.insert({Arg->getValue(0), Arg->getValue(1)});
SmallVector<StringRef, 2> Positional;
for (auto Arg : InputArgs.filtered(INSTALL_NAME_TOOL_UNKNOWN))
return createStringError(errc::invalid_argument, "unknown argument '%s'",

View File

@ -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<MachO::dylib_command>(LC, Id);
}
if (Config.SharedLibId)
updateLoadCommandPayloadString<MachO::dylib_command>(
LC, *Config.SharedLibId);
break;
case MachO::LC_RPATH: {