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 | |
parent | 3bdcedbf3d6adbd3ea5c6e00e814ea7548a07e66 (diff) | |
download | bcm5719-llvm-899bdaa8c29d9100759e63e9be52897e4dbb37d9.tar.gz bcm5719-llvm-899bdaa8c29d9100759e63e9be52897e4dbb37d9.zip |
[llvm-objcopy] Improve --add-section argument string parsing
Differential Revision: https://reviews.llvm.org/D65346
llvm-svn: 367236
Diffstat (limited to 'llvm/tools')
-rw-r--r-- | llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp | 3 | ||||
-rw-r--r-- | llvm/tools/llvm-objcopy/CopyConfig.cpp | 13 |
2 files changed, 11 insertions, 5 deletions
diff --git a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp index b0474a0f0f4..d30bea0b35f 100644 --- a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp +++ b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp @@ -186,9 +186,6 @@ static Error handleArgs(const CopyConfig &Config, Object &Obj) { StringRef SecName, FileName; std::tie(SecName, FileName) = Flag.split("="); - if (FileName.empty()) - return createStringError(llvm::errc::invalid_argument, - "bad format for --add-section"); auto BufOrErr = MemoryBuffer::getFile(FileName); if (!BufOrErr) return createFileError(FileName, errorCodeToError(BufOrErr.getError())); diff --git a/llvm/tools/llvm-objcopy/CopyConfig.cpp b/llvm/tools/llvm-objcopy/CopyConfig.cpp index 8d6431b3044..4001aac4ed4 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); |