/contrib/toolchain/binutils/include/mach-o/ChangeLog |
---|
1,3 → 1,38 |
2015-01-01 Alan Modra <amodra@gmail.com> |
Update year range in copyright notice of all files. |
2014-04-16 Tristan Gingold <gingold@adacore.com> |
* loader.h: Add macros for rebase, bind and export constants. |
2014-04-16 Tristan Gingold <gingold@adacore.com> |
* loader.h (BFD_MACH_O_CPU_ARCH_MASK, BFD_MACH_O_CPU_ARCH_ABI64) |
(BFD_MACH_O_CPU_SUBTYPE_MASK, BFD_MACH_O_CPU_SUBTYPE_LIB64): Define. |
2014-04-03 Tristan Gingold <gingold@adacore.com> |
* unwind.h (mach_o_compact_unwind_64): Fix typo in personality. |
2014-04-02 Tristan Gingold <gingold@adacore.com> |
* external.h (mach_o_prebound_dylib_command_external) |
(mach_o_prebind_cksum_command_external) |
(mach_o_twolevel_hints_command_external): New types. |
2014-03-26 Tristan Gingold <gingold@adacore.com> |
* loader.h (bfd_mach_o_cpu_type): Add BFD_MACH_O_CPU_TYPE_ARM64. |
2014-03-17 Tristan Gingold <gingold@adacore.com> |
* unwind.h: New file. |
2014-03-05 Alan Modra <amodra@gmail.com> |
Update copyright years. |
2012-11-14 Tristan Gingold <gingold@adacore.com> |
* external.h (mach_o_entry_point_command_external) |
67,7 → 102,7 |
* loader.h: New file. |
Copyright (C) 2011-2012 Free Software Foundation, Inc. |
Copyright (C) 2011-2015 Free Software Foundation, Inc. |
Copying and distribution of this file, with or without modification, |
are permitted in any medium without royalty provided the copyright |
/contrib/toolchain/binutils/include/mach-o/arm.h |
---|
1,6 → 1,5 |
/* Mach-O arm declarations for BFD. |
Copyright 2012 |
Free Software Foundation, Inc. |
Copyright (C) 2012-2015 Free Software Foundation, Inc. |
This file is part of BFD, the Binary File Descriptor library. |
/contrib/toolchain/binutils/include/mach-o/codesign.h |
---|
1,6 → 1,5 |
/* Mach-O support for BFD. |
Copyright 2011 |
Free Software Foundation, Inc. |
Copyright (C) 2011-2015 Free Software Foundation, Inc. |
This file is part of BFD, the Binary File Descriptor library. |
/contrib/toolchain/binutils/include/mach-o/external.h |
---|
1,6 → 1,5 |
/* Mach-O support for BFD. |
Copyright 2011, 2012 |
Free Software Foundation, Inc. |
Copyright (C) 2011-2015 Free Software Foundation, Inc. |
This file is part of BFD, the Binary File Descriptor library. |
288,6 → 287,24 |
unsigned char export_size[4]; |
}; |
struct mach_o_prebound_dylib_command_external |
{ |
unsigned char name[4]; |
unsigned char nmodules[4]; |
unsigned char linked_modules[4]; |
}; |
struct mach_o_prebind_cksum_command_external |
{ |
unsigned char cksum[4]; |
}; |
struct mach_o_twolevel_hints_command_external |
{ |
unsigned char offset[4]; |
unsigned char nhints[4]; |
}; |
struct mach_o_version_min_command_external |
{ |
unsigned char version[4]; |
/contrib/toolchain/binutils/include/mach-o/loader.h |
---|
1,6 → 1,5 |
/* Mach-O support for BFD. |
Copyright 2011, 2012 |
Free Software Foundation, Inc. |
Copyright (C) 2011-2015 Free Software Foundation, Inc. |
This file is part of BFD, the Binary File Descriptor library. |
33,7 → 32,10 |
} |
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 |
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 |
#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 |
{ |
/contrib/toolchain/binutils/include/mach-o/reloc.h |
---|
1,6 → 1,5 |
/* Mach-O support for BFD. |
Copyright 2011, 2012 |
Free Software Foundation, Inc. |
Copyright (C) 2011-2015 Free Software Foundation, Inc. |
This file is part of BFD, the Binary File Descriptor library. |
/contrib/toolchain/binutils/include/mach-o/unwind.h |
---|
0,0 → 1,199 |
/* Mach-O compact unwind encoding. |
Copyright (C) 2014-2015 Free Software Foundation, Inc. |
This file is part of BFD, the Binary File Descriptor library. |
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
the Free Software Foundation; either version 3 of the License, or |
(at your option) any later version. |
This program is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this program; if not, write to the Free Software |
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
MA 02110-1301, USA. */ |
#ifndef _MACH_O_UNWIND_H |
#define _MACH_O_UNWIND_H |
/* Encodings bits for all cpus. */ |
#define MACH_O_UNWIND_IS_NOT_FUNCTION_START 0x80000000 |
#define MACH_O_UNWIND_HAS_LSDA 0x40000000 |
#define MACH_O_UNWIND_PERSONALITY_MASK 0x30000000 |
#define MACH_O_UNWIND_PERSONALITY_SHIFT 28 |
/* Encodings for x86-64. */ |
/* Kind of encoding (4 bits). */ |
#define MACH_O_UNWIND_X86_64_MODE_MASK 0x0f000000 |
/* Frame is RBP based, using the standard sequence: push %rbp; mov %rsp, %rbp. |
Non-volatile registers must be saved in the stack starting at %rbp-8 to |
%rbp-2040 (offset is encoded in offset bits * 8). Registers saved are |
encoded in registers bits, 3 bits per register. */ |
#define MACH_O_UNWIND_X86_64_MODE_RBP_FRAME 0x01000000 |
#define MACH_O_UNWIND_X86_64_RBP_FRAME_REGSITERS 0x00007FFF |
#define MACH_O_UNWIND_X86_64_RBP_FRAME_OFFSET 0x00FF0000 |
/* Frameless function, with a small stack size. */ |
#define MACH_O_UNWIND_X86_64_MODE_STACK_IMMD 0x02000000 |
#define MACH_O_UNWIND_X86_64_FRAMELESS_STACK_SIZE 0x00FF0000 |
#define MACH_O_UNWIND_X86_64_FRAMELESS_REG_COUNT 0x00001C00 |
#define MACH_O_UNWIND_X86_64_FRAMELESS_REG_PERMUTATION 0x000003FF |
/* Frameless function, with a larger stack size. The stack size is the sum |
of the X in subq $X,%rsp (address of X is at function + stack size bits) |
and stack adjust. */ |
#define MACH_O_UNWIND_X86_64_MODE_STACK_IND 0x03000000 |
#define MACH_O_UNWIND_X86_64_FRAMELESS_STACK_ADJUST 0x0000E000 |
/* Use dwarf. */ |
#define MACH_O_UNWIND_X86_64_MODE_DWARF 0x04000000 |
#define MACH_O_UNWIND_X86_64_DWARF_SECTION_OFFSET 0x00ffffff |
/* Registers. */ |
#define MACH_O_UNWIND_X86_64_REG_NONE 0 |
#define MACH_O_UNWIND_X86_64_REG_RBX 1 |
#define MACH_O_UNWIND_X86_64_REG_R12 2 |
#define MACH_O_UNWIND_X86_64_REG_R13 3 |
#define MACH_O_UNWIND_X86_64_REG_R14 4 |
#define MACH_O_UNWIND_X86_64_REG_R15 5 |
#define MACH_O_UNWIND_X86_64_REG_RBP 6 |
/* Encodings for x86 (almot the same as x86-64). */ |
/* Kind of encoding (4 bits). */ |
#define MACH_O_UNWIND_X86_MODE_MASK 0x0f000000 |
/* Frame is EBP based, using the standard sequence: push %ebp; mov %esp, %ebp. |
Non-volatile registers must be saved in the stack starting at %ebp-4 to |
%ebp-240 (offset is encoded in offset bits * 4). Registers saved are |
encoded in registers bits, 3 bits per register. */ |
#define MACH_O_UNWIND_X86_MODE_EBP_FRAME 0x01000000 |
#define MACH_O_UNWIND_X86_EBP_FRAME_REGSITERS 0x00007FFF |
#define MACH_O_UNWIND_X86_EBP_FRAME_OFFSET 0x00FF0000 |
/* Frameless function, with a small stack size. */ |
#define MACH_O_UNWIND_X86_MODE_STACK_IMMD 0x02000000 |
#define MACH_O_UNWIND_X86_FRAMELESS_STACK_SIZE 0x00FF0000 |
#define MACH_O_UNWIND_X86_FRAMELESS_REG_COUNT 0x00001C00 |
#define MACH_O_UNWIND_X86_FRAMELESS_REG_PERMUTATION 0x000003FF |
/* Frameless function, with a larger stack size. The stack size is the sum |
of the X in subq $X,%esp (address of X is at function + stack size bits) |
and stack adjust. */ |
#define MACH_O_UNWIND_X86_MODE_STACK_IND 0x03000000 |
#define MACH_O_UNWIND_X86_FRAMELESS_STACK_ADJUST 0x0000E000 |
/* Use dwarf. */ |
#define MACH_O_UNWIND_X86_MODE_DWARF 0x04000000 |
#define MACH_O_UNWIND_X86_DWARF_SECTION_OFFSET 0x00ffffff |
/* Registers. */ |
#define MACH_O_UNWIND_X86_REG_NONE 0 |
#define MACH_O_UNWIND_X86_REG_EBX 1 |
#define MACH_O_UNWIND_X86_REG_ECX 2 |
#define MACH_O_UNWIND_X86_REG_EDX 3 |
#define MACH_O_UNWIND_X86_REG_EDI 4 |
#define MACH_O_UNWIND_X86_REG_ESI 5 |
#define MACH_O_UNWIND_X86_REG_EBP 6 |
/* Entry in object file (in __LD,__compact_unwind section). */ |
struct mach_o_compact_unwind_32 |
{ |
unsigned char start[4]; |
unsigned char length[4]; |
unsigned char encoding[4]; |
unsigned char personality[4]; |
unsigned char lsda[4]; |
}; |
struct mach_o_compact_unwind_64 |
{ |
unsigned char start[8]; |
unsigned char length[4]; |
unsigned char encoding[4]; |
unsigned char personality[8]; |
unsigned char lsda[8]; |
}; |
/* Header in images (in __TEXT,__unwind_info). */ |
#define MACH_O_UNWIND_SECTION_VERSION 1 /* Current verion in header. */ |
struct mach_o_unwind_info_header |
{ |
unsigned char version[4]; /* Currently MACH_O_UNWIND_SECTION_VERSION. */ |
unsigned char encodings_array_offset[4]; |
unsigned char encodings_array_count[4]; |
unsigned char personality_array_offset[4]; |
unsigned char personality_array_count[4]; |
unsigned char index_offset[4]; |
unsigned char index_count[4]; |
/* Followed by: |
- encodings array |
These are the encodings shared, for index < encoding_array_count |
- personality array |
count given by personality_array_count |
- index entries |
count given by index_count |
- lsda index entries |
last offset given by lsda offset of last index_entry. |
*/ |
}; |
struct mach_o_unwind_index_entry |
{ |
unsigned char function_offset[4]; |
unsigned char second_level_offset[4]; |
unsigned char lsda_index_offset[4]; |
}; |
struct mach_o_unwind_lsda_index_entry |
{ |
unsigned char function_offset[4]; |
unsigned char lsda_offset[4]; |
}; |
/* Second level index pages. */ |
#define MACH_O_UNWIND_SECOND_LEVEL_REGULAR 2 |
struct mach_o_unwind_regular_second_level_page_header |
{ |
unsigned char kind[4]; |
unsigned char entry_page_offset[2]; |
unsigned char entry_count[2]; |
/* Array of entries. */ |
}; |
struct mach_o_unwind_regular_second_level_entry |
{ |
unsigned char function_offset[4]; |
unsigned char encoding[4]; |
}; |
#define MACH_O_UNWIND_SECOND_LEVEL_COMPRESSED 3 |
struct mach_o_unwind_compressed_second_level_page_header |
{ |
unsigned char kind[4]; |
unsigned char entry_page_offset[2]; |
unsigned char entry_count[2]; |
unsigned char encodings_offset[2]; |
unsigned char encodings_count[2]; |
/* Followed by entries array (one word, see below). */ |
/* Followed by (non-common) encodings array. */ |
}; |
/* Compressed entries are one word, containing function offset and encoding |
index. */ |
#define MACH_O_UNWIND_INFO_COMPRESSED_ENTRY_FUNC_OFFSET(en) \ |
((en) & 0x00FFFFFF) |
#define MACH_O_UNWIND_INFO_COMPRESSED_ENTRY_ENCODING_INDEX(en) \ |
(((en) >> 24) & 0xFF) |
#endif /* _MACH_O_UNWIND_H */ |
/contrib/toolchain/binutils/include/mach-o/x86-64.h |
---|
1,6 → 1,5 |
/* Mach-O support for BFD. |
Copyright 2011 |
Free Software Foundation, Inc. |
Copyright (C) 2011-2015 Free Software Foundation, Inc. |
This file is part of BFD, the Binary File Descriptor library. |