aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2005-11-02 04:23:21 +0000
committerMike Frysinger <vapier@gentoo.org>2005-11-02 04:23:21 +0000
commitf4971a01ffa9fbdcd3e89c7b425b9c5c9ab5280d (patch)
tree1d8b54a71b5a4a6874dbf4ad539cd697768137e1 /macho.h
parent- makefile update. last commit before 0.1.4 (diff)
downloadpax-utils-f4971a01ffa9fbdcd3e89c7b425b9c5c9ab5280d.tar.gz
pax-utils-f4971a01ffa9fbdcd3e89c7b425b9c5c9ab5280d.tar.bz2
pax-utils-f4971a01ffa9fbdcd3e89c7b425b9c5c9ab5280d.zip
flesh out more of mach-o support (disabled for now)
Diffstat (limited to 'macho.h')
-rw-r--r--macho.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/macho.h b/macho.h
new file mode 100644
index 0000000..936a100
--- /dev/null
+++ b/macho.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2005 Apple Computer, Inc.
+ *
+ * This file describes the format of mach object files.
+ */
+
+#ifndef _MACHO_LOADER_H_
+#define _MACHO_LOADER_H_
+
+#include <stdint.h>
+
+typedef uint32_t cpu_type_t;
+typedef uint32_t cpu_subtype_t;
+
+/*
+ * Specifies the general attributes of a file.
+ * Appears at the beginning of object files.
+ */
+struct mach_header {
+ uint32_t magic;
+ cpu_type_t cputype;
+ cpu_subtype_t cpusubtype;
+ uint32_t filetype;
+ uint32_t ncmds;
+ uint32_t sizeofcmds;
+ uint32_t flags;
+} __attribute__((packed));
+
+/* Constants for magic member */
+#define MH_MAGIC 0xfeedface
+#define MH_CIGAM 0xbebafeca
+#define MH_MAGIC_32 MH_MAGIC
+#define MH_CIGAM_32 MH_CIGAM
+
+
+/*
+ * Defines the general attributes of a file targeted for a 64-bit architecture
+ */
+struct mach_header_64 {
+ uint32_t magic;
+ cpu_type_t cputype;
+ cpu_subtype_t cpusubtype;
+ uint32_t filetype;
+ uint32_t ncmds;
+ uint32_t sizeofcmds;
+ uint32_t flags;
+ uint32_t reserved;
+};
+
+/* Constants for magic member */
+#define MH_MAGIC_64 0xfeedfacf
+#define MH_CIGAM_64 0xcffaedfe
+
+
+
+/* Constants for filetype member */
+#define MH_OBJECT 0x1 /* intermediate object files */
+#define MH_EXECUTE 0x2 /* standard executable programs */
+#define MH_CORE 0x4 /* address space of a crashed program */
+#define MH_PRELOAD 0x5 /* special-purpose programs (i.e. firmware) */
+#define MH_DYLIB 0x6 /* dynamic shared libraries */
+#define MH_DYLINKER 0x7 /* dynamic linker shared library */
+#define MH_BUNDLE 0x8 /* runtime loadable code */
+
+#endif /* _MACHO_LOADER_H_ */