[llvm-obcopy][MachO] Add error for MH_PRELOAD

Previously this would crash. Fixes https://bugs.llvm.org/show_bug.cgi?id=51877

Differential Revision: https://reviews.llvm.org/D113819
This commit is contained in:
Keith Smiley 2021-11-12 17:24:26 -08:00
parent 9b29dae3ca
commit 47bb456b2f
2 changed files with 21 additions and 0 deletions

View File

@ -0,0 +1,16 @@
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x100000C
cpusubtype: 0x0
filetype: 0x5
ncmds: 0
sizeofcmds: 0
flags: 0x1
reserved: 0x0
...
# RUN: yaml2obj %s > %t
# RUN: not llvm-objcopy %t 2>&1 | FileCheck %s -DFILE=%t
#
# CHECK: error: [[FILE]]: MH_PRELOAD files are not supported

View File

@ -389,6 +389,11 @@ Error objcopy::macho::executeObjcopyOnBinary(const CommonConfig &Config,
if (!O) if (!O)
return createFileError(Config.InputFilename, O.takeError()); return createFileError(Config.InputFilename, O.takeError());
if (O->get()->Header.FileType == MachO::HeaderFileType::MH_PRELOAD)
return createStringError(std::errc::not_supported,
"%s: MH_PRELOAD files are not supported",
Config.InputFilename.str().c_str());
if (Error E = handleArgs(Config, MachOConfig, **O)) if (Error E = handleArgs(Config, MachOConfig, **O))
return createFileError(Config.InputFilename, std::move(E)); return createFileError(Config.InputFilename, std::move(E));