Skip to content

Commit 6113998

Browse files
committed
Add MachO MH_FILESET support to objdump
https://reviews.llvm.org/D131909
1 parent 8f45b5a commit 6113998

File tree

7 files changed

+28
-0
lines changed

7 files changed

+28
-0
lines changed

llvm/include/llvm/BinaryFormat/Magic.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ struct file_magic {
4040
macho_dsym_companion, ///< Mach-O dSYM companion file
4141
macho_kext_bundle, ///< Mach-O kext bundle file
4242
macho_universal_binary, ///< Mach-O universal binary
43+
macho_file_set, ///< Mach-O file set binary
4344
minidump, ///< Windows minidump file
4445
coff_cl_gl_object, ///< Microsoft cl.exe's intermediate code file
4546
coff_object, ///< COFF object file

llvm/lib/BinaryFormat/Magic.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ file_magic llvm::identify_magic(StringRef Magic) {
182182
return file_magic::macho_dsym_companion;
183183
case 11:
184184
return file_magic::macho_kext_bundle;
185+
case 12:
186+
return file_magic::macho_file_set;
185187
}
186188
break;
187189
}

llvm/lib/Object/Binary.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ Expected<std::unique_ptr<Binary>> object::createBinary(MemoryBufferRef Buffer,
6767
case file_magic::macho_dynamically_linked_shared_lib_stub:
6868
case file_magic::macho_dsym_companion:
6969
case file_magic::macho_kext_bundle:
70+
case file_magic::macho_file_set:
7071
case file_magic::coff_object:
7172
case file_magic::coff_import_library:
7273
case file_magic::pecoff_executable:

llvm/lib/Object/ObjectFile.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ ObjectFile::createObjectFile(MemoryBufferRef Object, file_magic Type,
169169
case file_magic::macho_dynamically_linked_shared_lib_stub:
170170
case file_magic::macho_dsym_companion:
171171
case file_magic::macho_kext_bundle:
172+
case file_magic::macho_file_set:
172173
return createMachOObjectFile(Object);
173174
case file_magic::coff_object:
174175
case file_magic::coff_import_library:

llvm/lib/Object/SymbolicFile.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ SymbolicFile::createSymbolicFile(MemoryBufferRef Object, file_magic Type,
6363
case file_magic::macho_dynamically_linked_shared_lib_stub:
6464
case file_magic::macho_dsym_companion:
6565
case file_magic::macho_kext_bundle:
66+
case file_magic::macho_file_set:
6667
case file_magic::pecoff_executable:
6768
case file_magic::xcoff_object_32:
6869
case file_magic::xcoff_object_64:
@@ -113,6 +114,7 @@ bool SymbolicFile::isSymbolicFile(file_magic Type, const LLVMContext *Context) {
113114
case file_magic::macho_dynamically_linked_shared_lib_stub:
114115
case file_magic::macho_dsym_companion:
115116
case file_magic::macho_kext_bundle:
117+
case file_magic::macho_file_set:
116118
case file_magic::pecoff_executable:
117119
case file_magic::xcoff_object_32:
118120
case file_magic::xcoff_object_64:
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# REQUIRES: host-byteorder-little-endian
2+
# RUN: yaml2obj %s \
3+
# RUN: | llvm-objdump --macho --private-header - 2>&1 \
4+
# RUN: | FileCheck %s
5+
6+
# CHECK: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
7+
# CHECK-NEXT: MH_MAGIC_64 ARM64 ALL 0x00 FILESET 0 0 0x00000000
8+
9+
--- !mach-o
10+
FileHeader:
11+
magic: 0xFEEDFACF
12+
cputype: 0x100000C
13+
cpusubtype: 0x0
14+
filetype: 0xC
15+
ncmds: 0
16+
sizeofcmds: 0
17+
flags: 0x0
18+
reserved: 0x0

llvm/tools/llvm-objdump/MachODump.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8599,6 +8599,9 @@ static void PrintMachHeader(uint32_t magic, uint32_t cputype,
85998599
case MachO::MH_KEXT_BUNDLE:
86008600
outs() << " KEXTBUNDLE";
86018601
break;
8602+
case MachO::MH_FILESET:
8603+
outs() << " FILESET";
8604+
break;
86028605
default:
86038606
outs() << format(" %10u", filetype);
86048607
break;

0 commit comments

Comments
 (0)