Index: llvm/include/llvm/BinaryFormat/MachO.h =================================================================== --- llvm/include/llvm/BinaryFormat/MachO.h +++ llvm/include/llvm/BinaryFormat/MachO.h @@ -50,7 +50,8 @@ MH_BUNDLE = 0x8u, MH_DYLIB_STUB = 0x9u, MH_DSYM = 0xAu, - MH_KEXT_BUNDLE = 0xBu + MH_KEXT_BUNDLE = 0xBu, + MH_FILESET = 0xCu }; enum { Index: llvm/include/llvm/BinaryFormat/Magic.h =================================================================== --- llvm/include/llvm/BinaryFormat/Magic.h +++ llvm/include/llvm/BinaryFormat/Magic.h @@ -40,6 +40,7 @@ macho_dsym_companion, ///< Mach-O dSYM companion file macho_kext_bundle, ///< Mach-O kext bundle file macho_universal_binary, ///< Mach-O universal binary + macho_file_set, ///< Mach-O file set binary minidump, ///< Windows minidump file coff_cl_gl_object, ///< Microsoft cl.exe's intermediate code file coff_object, ///< COFF object file Index: llvm/lib/BinaryFormat/Magic.cpp =================================================================== --- llvm/lib/BinaryFormat/Magic.cpp +++ llvm/lib/BinaryFormat/Magic.cpp @@ -182,6 +182,8 @@ return file_magic::macho_dsym_companion; case 11: return file_magic::macho_kext_bundle; + case 12: + return file_magic::macho_file_set; } break; } Index: llvm/lib/Object/Binary.cpp =================================================================== --- llvm/lib/Object/Binary.cpp +++ llvm/lib/Object/Binary.cpp @@ -67,6 +67,7 @@ case file_magic::macho_dynamically_linked_shared_lib_stub: case file_magic::macho_dsym_companion: case file_magic::macho_kext_bundle: + case file_magic::macho_file_set: case file_magic::coff_object: case file_magic::coff_import_library: case file_magic::pecoff_executable: Index: llvm/lib/Object/ObjectFile.cpp =================================================================== --- llvm/lib/Object/ObjectFile.cpp +++ llvm/lib/Object/ObjectFile.cpp @@ -169,6 +169,7 @@ case file_magic::macho_dynamically_linked_shared_lib_stub: case file_magic::macho_dsym_companion: case file_magic::macho_kext_bundle: + case file_magic::macho_file_set: return createMachOObjectFile(Object); case file_magic::coff_object: case file_magic::coff_import_library: Index: llvm/lib/Object/SymbolicFile.cpp =================================================================== --- llvm/lib/Object/SymbolicFile.cpp +++ llvm/lib/Object/SymbolicFile.cpp @@ -63,6 +63,7 @@ case file_magic::macho_dynamically_linked_shared_lib_stub: case file_magic::macho_dsym_companion: case file_magic::macho_kext_bundle: + case file_magic::macho_file_set: case file_magic::pecoff_executable: case file_magic::xcoff_object_32: case file_magic::xcoff_object_64: @@ -113,6 +114,7 @@ case file_magic::macho_dynamically_linked_shared_lib_stub: case file_magic::macho_dsym_companion: case file_magic::macho_kext_bundle: + case file_magic::macho_file_set: case file_magic::pecoff_executable: case file_magic::xcoff_object_32: case file_magic::xcoff_object_64: Index: llvm/test/Object/AArch64/filetype-fileset.yaml =================================================================== --- /dev/null +++ llvm/test/Object/AArch64/filetype-fileset.yaml @@ -0,0 +1,18 @@ +# REQUIRES: host-byteorder-little-endian +# RUN: yaml2obj %s \ +# RUN: | llvm-objdump --macho --private-header - 2>&1 \ +# RUN: | FileCheck %s + +# CHECK: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags +# CHECK-NEXT: MH_MAGIC_64 ARM64 ALL 0x00 FILESET 0 0 0x00000000 + +--- !mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x100000C + cpusubtype: 0x0 + filetype: 0xC + ncmds: 0 + sizeofcmds: 0 + flags: 0x0 + reserved: 0x0 Index: llvm/tools/llvm-objdump/MachODump.cpp =================================================================== --- llvm/tools/llvm-objdump/MachODump.cpp +++ llvm/tools/llvm-objdump/MachODump.cpp @@ -8492,6 +8492,9 @@ case MachO::MH_KEXT_BUNDLE: outs() << " KEXTBUNDLE"; break; + case MachO::MH_FILESET: + outs() << " FILESET"; + break; default: outs() << format(" %10u", filetype); break;