diff options
author | Sergey Dmitriev <serguei.n.dmitriev@intel.com> | 2019-07-29 16:22:40 +0000 |
---|---|---|
committer | Sergey Dmitriev <serguei.n.dmitriev@intel.com> | 2019-07-29 16:22:40 +0000 |
commit | 899bdaa8c29d9100759e63e9be52897e4dbb37d9 (patch) | |
tree | cafe4cb72e375f4de1fc8178c267876f6d1c5d1a /llvm/tools/llvm-objcopy/CopyConfig.cpp | |
parent | 3bdcedbf3d6adbd3ea5c6e00e814ea7548a07e66 (diff) | |
download | llvm-899bdaa8c29d9100759e63e9be52897e4dbb37d9.zip llvm-899bdaa8c29d9100759e63e9be52897e4dbb37d9.tar.gz llvm-899bdaa8c29d9100759e63e9be52897e4dbb37d9.tar.bz2 |
[llvm-objcopy] Improve --add-section argument string parsing
Differential Revision: https://reviews.llvm.org/D65346
llvm-svn: 367236
Diffstat (limited to 'llvm/tools/llvm-objcopy/CopyConfig.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/CopyConfig.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/tools/llvm-objcopy/CopyConfig.cpp b/llvm/tools/llvm-objcopy/CopyConfig.cpp index 8d6431b..4001aac 100644 --- a/llvm/tools/llvm-objcopy/CopyConfig.cpp +++ b/llvm/tools/llvm-objcopy/CopyConfig.cpp @@ -617,8 +617,17 @@ Expected<DriverConfig> parseObjcopyOptions(ArrayRef<const char *> ArgsArr) { Config.KeepSection.emplace_back(Arg->getValue(), UseRegex); for (auto Arg : InputArgs.filtered(OBJCOPY_only_section)) Config.OnlySection.emplace_back(Arg->getValue(), UseRegex); - for (auto Arg : InputArgs.filtered(OBJCOPY_add_section)) - Config.AddSection.push_back(Arg->getValue()); + for (auto Arg : InputArgs.filtered(OBJCOPY_add_section)) { + StringRef ArgValue(Arg->getValue()); + if (!ArgValue.contains('=')) + return createStringError(errc::invalid_argument, + "bad format for --add-section: missing '='"); + if (ArgValue.split("=").second.empty()) + return createStringError( + errc::invalid_argument, + "bad format for --add-section: missing file name"); + Config.AddSection.push_back(ArgValue); + } for (auto Arg : InputArgs.filtered(OBJCOPY_dump_section)) Config.DumpSection.push_back(Arg->getValue()); Config.StripAll = InputArgs.hasArg(OBJCOPY_strip_all); |