#include <mach-o/fat.h>

mach-o/fat.h

This header file describes the structures of the file format for "fat" architecture specific file (wrapper design). At the begining of the file there is one fat_header structure followed by a number of fat_arch structures. For each architecture in the file, specified by a pair of cputype and cpusubtype, the fat_header describes the file offset, file size and alignment in the file of the architecture specific member. The padded bytes in the file to place each member on it's specific alignment are defined to be read as zeros and can be left as "holes" if the file system can support them as long as they read as zeros. All structures defined here are always written and read to/from disk in big-endian order.
includes: stdint.h, mach/machine.h, architecture/byte_order.h
4 macros · 3 structs

macroFAT_MAGIC

#define FAT_MAGIC 0xcafebabe

macroFAT_CIGAM

#define FAT_CIGAM 0xbebafeca
NXSwapLong(FAT_MAGIC)

structfat_header

size 8, align 4
uint32_tmagicFAT_MAGIC or FAT_MAGIC_64
uint32_tnfat_archnumber of structs that follow

structfat_arch

size 20, align 4
int32_tcputypecpu specifier (int)
int32_tcpusubtypemachine specifier (int)
uint32_toffsetfile offset to this object file
uint32_tsizesize of this object file
uint32_talignalignment as a power of 2

macroFAT_MAGIC_64

The support for the 64-bit fat file format described here is a work in progress and not yet fully supported in all the Apple Developer Tools. When a slice is greater than 4mb or an offset to a slice is greater than 4mb then the 64-bit fat file format is used.
#define FAT_MAGIC_64 0xcafebabf

macroFAT_CIGAM_64

#define FAT_CIGAM_64 0xbfbafeca
NXSwapLong(FAT_MAGIC_64)

structfat_arch_64

size 32, align 8
int32_tcputypecpu specifier (int)
int32_tcpusubtypemachine specifier (int)
uint64_toffsetfile offset to this object file
uint64_tsizesize of this object file
uint32_talignalignment as a power of 2
uint32_treservedreserved