summaryrefslogtreecommitdiffstats
path: root/binutils-2.25/include/mach-o/loader.h
diff options
context:
space:
mode:
Diffstat (limited to 'binutils-2.25/include/mach-o/loader.h')
-rw-r--r--binutils-2.25/include/mach-o/loader.h77
1 files changed, 72 insertions, 5 deletions
diff --git a/binutils-2.25/include/mach-o/loader.h b/binutils-2.25/include/mach-o/loader.h
index 952bc8f4..ff794a3b 100644
--- a/binutils-2.25/include/mach-o/loader.h
+++ b/binutils-2.25/include/mach-o/loader.h
@@ -1,6 +1,5 @@
/* Mach-O support for BFD.
- Copyright 2011, 2012
- Free Software Foundation, Inc.
+ Copyright (C) 2011-2014 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -33,7 +32,10 @@ typedef enum bfd_mach_o_mach_header_magic
}
bfd_mach_o_mach_header_magic;
-#define BFD_MACH_O_CPU_IS64BIT 0x1000000
+/* Capability bits in cpu type. */
+#define BFD_MACH_O_CPU_ARCH_MASK 0xff000000
+#define BFD_MACH_O_CPU_ARCH_ABI64 0x01000000
+#define BFD_MACH_O_CPU_IS64BIT 0x01000000
typedef enum bfd_mach_o_cpu_type
{
@@ -49,11 +51,19 @@ typedef enum bfd_mach_o_cpu_type
BFD_MACH_O_CPU_TYPE_I860 = 15,
BFD_MACH_O_CPU_TYPE_ALPHA = 16,
BFD_MACH_O_CPU_TYPE_POWERPC = 18,
- BFD_MACH_O_CPU_TYPE_POWERPC_64 = (BFD_MACH_O_CPU_TYPE_POWERPC | BFD_MACH_O_CPU_IS64BIT),
- BFD_MACH_O_CPU_TYPE_X86_64 = (BFD_MACH_O_CPU_TYPE_I386 | BFD_MACH_O_CPU_IS64BIT)
+ BFD_MACH_O_CPU_TYPE_POWERPC_64 =
+ (BFD_MACH_O_CPU_TYPE_POWERPC | BFD_MACH_O_CPU_IS64BIT),
+ BFD_MACH_O_CPU_TYPE_X86_64 =
+ (BFD_MACH_O_CPU_TYPE_I386 | BFD_MACH_O_CPU_IS64BIT),
+ BFD_MACH_O_CPU_TYPE_ARM64 =
+ (BFD_MACH_O_CPU_TYPE_ARM | BFD_MACH_O_CPU_IS64BIT)
}
bfd_mach_o_cpu_type;
+/* Capability bits in cpu subtype. */
+#define BFD_MACH_O_CPU_SUBTYPE_MASK 0xff000000
+#define BFD_MACH_O_CPU_SUBTYPE_LIB64 0x80000000
+
typedef enum bfd_mach_o_cpu_subtype
{
/* i386. */
@@ -332,6 +342,63 @@ bfd_mach_o_section_attribute;
#define BFD_MACH_O_INDIRECT_SYM_LOCAL 0x80000000
#define BFD_MACH_O_INDIRECT_SYM_ABS 0x40000000
+/* Constants for dyld info rebase. */
+#define BFD_MACH_O_REBASE_OPCODE_MASK 0xf0
+#define BFD_MACH_O_REBASE_IMMEDIATE_MASK 0x0f
+
+/* The rebase opcodes. */
+#define BFD_MACH_O_REBASE_OPCODE_DONE 0x00
+#define BFD_MACH_O_REBASE_OPCODE_SET_TYPE_IMM 0x10
+#define BFD_MACH_O_REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB 0x20
+#define BFD_MACH_O_REBASE_OPCODE_ADD_ADDR_ULEB 0x30
+#define BFD_MACH_O_REBASE_OPCODE_ADD_ADDR_IMM_SCALED 0x40
+#define BFD_MACH_O_REBASE_OPCODE_DO_REBASE_IMM_TIMES 0x50
+#define BFD_MACH_O_REBASE_OPCODE_DO_REBASE_ULEB_TIMES 0x60
+#define BFD_MACH_O_REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB 0x70
+#define BFD_MACH_O_REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB 0x80
+
+/* The rebase type. */
+#define BFD_MACH_O_REBASE_TYPE_POINTER 1
+#define BFD_MACH_O_REBASE_TYPE_TEXT_ABSOLUTE32 2
+#define BFD_MACH_O_REBASE_TYPE_TEXT_PCREL32 3
+
+/* Constants for dyld info bind. */
+#define BFD_MACH_O_BIND_OPCODE_MASK 0xf0
+#define BFD_MACH_O_BIND_IMMEDIATE_MASK 0x0f
+
+/* The bind opcodes. */
+#define BFD_MACH_O_BIND_OPCODE_DONE 0x00
+#define BFD_MACH_O_BIND_OPCODE_SET_DYLIB_ORDINAL_IMM 0x10
+#define BFD_MACH_O_BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB 0x20
+#define BFD_MACH_O_BIND_OPCODE_SET_DYLIB_SPECIAL_IMM 0x30
+#define BFD_MACH_O_BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM 0x40
+#define BFD_MACH_O_BIND_OPCODE_SET_TYPE_IMM 0x50
+#define BFD_MACH_O_BIND_OPCODE_SET_ADDEND_SLEB 0x60
+#define BFD_MACH_O_BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB 0x70
+#define BFD_MACH_O_BIND_OPCODE_ADD_ADDR_ULEB 0x80
+#define BFD_MACH_O_BIND_OPCODE_DO_BIND 0x90
+#define BFD_MACH_O_BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB 0xa0
+#define BFD_MACH_O_BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED 0xb0
+#define BFD_MACH_O_BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB 0xc0
+
+/* The bind types. */
+#define BFD_MACH_O_BIND_TYPE_POINTER 1
+#define BFD_MACH_O_BIND_TYPE_TEXT_ABSOLUTE32 2
+#define BFD_MACH_O_BIND_TYPE_TEXT_PCREL32 3
+
+/* The special dylib. */
+#define BFD_MACH_O_BIND_SPECIAL_DYLIB_SELF 0
+#define BFD_MACH_O_BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE -1
+#define BFD_MACH_O_BIND_SPECIAL_DYLIB_FLAT_LOOKUP -2
+
+/* Constants for dyld info export. */
+#define BFD_MACH_O_EXPORT_SYMBOL_FLAGS_KIND_MASK 0x03
+#define BFD_MACH_O_EXPORT_SYMBOL_FLAGS_KIND_REGULAR 0x00
+#define BFD_MACH_O_EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL 0x01
+#define BFD_MACH_O_EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION 0x04
+#define BFD_MACH_O_EXPORT_SYMBOL_FLAGS_REEXPORT 0x08
+#define BFD_MACH_O_EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER 0x10
+
/* Constants for DATA_IN_CODE entries. */
typedef enum bfd_mach_o_data_in_code_entry_kind
{