| 1 | /* | 
| 2 |  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. | 
| 3 |  * | 
| 4 |  * @APPLE_LICENSE_HEADER_START@ | 
| 5 |  *  | 
| 6 |  * This file contains Original Code and/or Modifications of Original Code | 
| 7 |  * as defined in and that are subject to the Apple Public Source License | 
| 8 |  * Version 2.0 (the 'License'). You may not use this file except in | 
| 9 |  * compliance with the License. Please obtain a copy of the License at | 
| 10 |  * http://www.opensource.apple.com/apsl/ and read it before using this | 
| 11 |  * file. | 
| 12 |  *  | 
| 13 |  * The Original Code and all software distributed under the License are | 
| 14 |  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER | 
| 15 |  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, | 
| 16 |  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | 
| 17 |  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. | 
| 18 |  * Please see the License for the specific language governing rights and | 
| 19 |  * limitations under the License. | 
| 20 |  *  | 
| 21 |  * @APPLE_LICENSE_HEADER_END@ | 
| 22 |  */ | 
| 23 | #ifndef _MACH_O_FAT_H_ | 
| 24 | #define _MACH_O_FAT_H_ | 
| 25 | /* | 
| 26 |  * This header file describes the structures of the file format for "fat" | 
| 27 |  * architecture specific file (wrapper design).  At the begining of the file | 
| 28 |  * there is one fat_header structure followed by a number of fat_arch | 
| 29 |  * structures.  For each architecture in the file, specified by a pair of | 
| 30 |  * cputype and cpusubtype, the fat_header describes the file offset, file | 
| 31 |  * size and alignment in the file of the architecture specific member. | 
| 32 |  * The padded bytes in the file to place each member on it's specific alignment | 
| 33 |  * are defined to be read as zeros and can be left as "holes" if the file system | 
| 34 |  * can support them as long as they read as zeros. | 
| 35 |  * | 
| 36 |  * All structures defined here are always written and read to/from disk | 
| 37 |  * in big-endian order. | 
| 38 |  */ | 
| 39 |  | 
| 40 | /* | 
| 41 |  * <mach/machine.h> is needed here for the cpu_type_t and cpu_subtype_t types | 
| 42 |  * and contains the constants for the possible values of these types. | 
| 43 |  */ | 
| 44 | #include <stdint.h> | 
| 45 | #include <mach/machine.h> | 
| 46 | #include <architecture/byte_order.h> | 
| 47 |  | 
| 48 | #define FAT_MAGIC	0xcafebabe | 
| 49 | #define FAT_CIGAM	0xbebafeca	/* NXSwapLong(FAT_MAGIC) */ | 
| 50 |  | 
| 51 | struct  { | 
| 52 | 	uint32_t	;		/* FAT_MAGIC */ | 
| 53 | 	uint32_t	;	/* number of structs that follow */ | 
| 54 | }; | 
| 55 |  | 
| 56 | struct fat_arch { | 
| 57 | 	cpu_type_t	cputype;	/* cpu specifier (int) */ | 
| 58 | 	cpu_subtype_t	cpusubtype;	/* machine specifier (int) */ | 
| 59 | 	uint32_t	offset;		/* file offset to this object file */ | 
| 60 | 	uint32_t	size;		/* size of this object file */ | 
| 61 | 	uint32_t	align;		/* alignment as a power of 2 */ | 
| 62 | }; | 
| 63 |  | 
| 64 | #endif /* _MACH_O_FAT_H_ */ | 
| 65 |  |