mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
[llvm-objcopy] --dump-section: error if '=' is missing or filename is empty
Fix PR45416: the diagnostic when '=' is missing is misleading. `FileOutputBuffer::create` returns successfully when the filename is empty (the temporary file is `.tmp%%%%%%%`), but `FileOutputBuffer::commit` will error when renaming `.tmp%%%%%%%` to the empty name). Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D101697
This commit is contained in:
parent
33552ebc41
commit
98bf7fd6fd
@ -59,3 +59,8 @@ ProgramHeaders:
|
||||
# RUN: FileCheck %s --check-prefix=ERR -DFILE=%t -DSECTION=.missing
|
||||
|
||||
# ERR: error: '[[FILE]]': section '[[SECTION]]' not found
|
||||
|
||||
# RUN: not llvm-objcopy --dump-section .text %t /dev/null 2>&1 | FileCheck %s --check-prefix=ERR2
|
||||
# RUN: not llvm-objcopy --dump-section .text= %t /dev/null 2>&1 | FileCheck %s --check-prefix=ERR2
|
||||
|
||||
# ERR2: error: bad format for --dump-section, expected section=file
|
||||
|
@ -700,8 +700,14 @@ parseObjcopyOptions(ArrayRef<const char *> ArgsArr,
|
||||
"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());
|
||||
for (auto *Arg : InputArgs.filtered(OBJCOPY_dump_section)) {
|
||||
StringRef Value(Arg->getValue());
|
||||
if (Value.split('=').second.empty())
|
||||
return createStringError(
|
||||
errc::invalid_argument,
|
||||
"bad format for --dump-section, expected section=file");
|
||||
Config.DumpSection.push_back(Value);
|
||||
}
|
||||
Config.StripAll = InputArgs.hasArg(OBJCOPY_strip_all);
|
||||
Config.StripAllGNU = InputArgs.hasArg(OBJCOPY_strip_all_gnu);
|
||||
Config.StripDebug = InputArgs.hasArg(OBJCOPY_strip_debug);
|
||||
|
Loading…
Reference in New Issue
Block a user