bfd/
2011-08-08 Tristan Gingold <gingold@adacore.com> * mach-o.h: Move size macros to external.h Move reloc macros to reloc.h and x86-64.h. * mach-o-i386.c: Includes mach-o/reloc.h * mach-o-x86-64.c: Ditto and includes mach-o/x86-64.h * mach-o.c: Add includes. (bfd_mach_o_write_header): Use structure from external.h to convert. (bfd_mach_o_write_thread): Ditto. (bfd_mach_o_write_relocs): Ditto. (bfd_mach_o_write_section_32): Ditto. (bfd_mach_o_write_section_64): Ditto. (bfd_mach_o_write_segment_32): Ditto. (bfd_mach_o_write_segment_64): Ditto. (bfd_mach_o_write_symtab): Ditto. (bfd_mach_o_write_contents): Ditto. (bfd_mach_o_read_header): Ditto. (bfd_mach_o_read_section_32): Ditto. (bfd_mach_o_read_section_64): Ditto. (bfd_mach_o_read_symtab_symbol): Ditto. (bfd_mach_o_read_dylinker): Ditto. (bfd_mach_o_read_dylib): Ditto. (bfd_mach_o_read_dysymtab): Ditto. (bfd_mach_o_read_symtab): Ditto. (bfd_mach_o_read_linkedit): Ditto. (bfd_mach_o_read_str): Ditto. (bfd_mach_o_read_dyld_info): Ditto. (bfd_mach_o_read_segment): Ditto. (bfd_mach_o_read_command): Ditto. (bfd_mach_o_archive_p): Ditto. (bfd_mach_o_canonicalize_one_reloc): Ditto. Change the BUF parameter. (bfd_mach_o_canonicalize_relocs): Adjust to call the above function. (bfd_mach_o_read_dysymtab_symbol): Rename BUF variable. (bfd_mach_o_read_uuid): Remove useless cast. Use a macro instead of an hard-coded value. include/mach-o 2011-08-08 Tristan Gingold <gingold@adacore.com> * loader.h: Reorder declarations. * x86-64.h: New file. * external.h: New file. * reloc.h: New file.
This commit is contained in:
parent
fde3380891
commit
46d1c23bce
@ -1,3 +1,39 @@
|
||||
2011-08-08 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* mach-o.h: Move size macros to external.h
|
||||
Move reloc macros to reloc.h and x86-64.h.
|
||||
* mach-o-i386.c: Includes mach-o/reloc.h
|
||||
* mach-o-x86-64.c: Ditto and includes mach-o/x86-64.h
|
||||
* mach-o.c: Add includes.
|
||||
(bfd_mach_o_write_header): Use structure from external.h to convert.
|
||||
(bfd_mach_o_write_thread): Ditto.
|
||||
(bfd_mach_o_write_relocs): Ditto.
|
||||
(bfd_mach_o_write_section_32): Ditto.
|
||||
(bfd_mach_o_write_section_64): Ditto.
|
||||
(bfd_mach_o_write_segment_32): Ditto.
|
||||
(bfd_mach_o_write_segment_64): Ditto.
|
||||
(bfd_mach_o_write_symtab): Ditto.
|
||||
(bfd_mach_o_write_contents): Ditto.
|
||||
(bfd_mach_o_read_header): Ditto.
|
||||
(bfd_mach_o_read_section_32): Ditto.
|
||||
(bfd_mach_o_read_section_64): Ditto.
|
||||
(bfd_mach_o_read_symtab_symbol): Ditto.
|
||||
(bfd_mach_o_read_dylinker): Ditto.
|
||||
(bfd_mach_o_read_dylib): Ditto.
|
||||
(bfd_mach_o_read_dysymtab): Ditto.
|
||||
(bfd_mach_o_read_symtab): Ditto.
|
||||
(bfd_mach_o_read_linkedit): Ditto.
|
||||
(bfd_mach_o_read_str): Ditto.
|
||||
(bfd_mach_o_read_dyld_info): Ditto.
|
||||
(bfd_mach_o_read_segment): Ditto.
|
||||
(bfd_mach_o_read_command): Ditto.
|
||||
(bfd_mach_o_archive_p): Ditto.
|
||||
(bfd_mach_o_canonicalize_one_reloc): Ditto. Change the BUF parameter.
|
||||
(bfd_mach_o_canonicalize_relocs): Adjust to call the above function.
|
||||
(bfd_mach_o_read_dysymtab_symbol): Rename BUF variable.
|
||||
(bfd_mach_o_read_uuid): Remove useless cast. Use a macro instead
|
||||
of an hard-coded value.
|
||||
|
||||
2011-08-08 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* mach-o-x86-64.c (bfd_mach_o_x86_64_mkobject): Fix cut-and-past typos.
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
#include "libiberty.h"
|
||||
#include "mach-o/reloc.h"
|
||||
|
||||
#define bfd_mach_o_object_p bfd_mach_o_i386_object_p
|
||||
#define bfd_mach_o_core_p bfd_mach_o_i386_core_p
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
#include "libiberty.h"
|
||||
#include "mach-o/x86-64.h"
|
||||
|
||||
#define bfd_mach_o_object_p bfd_mach_o_x86_64_object_p
|
||||
#define bfd_mach_o_core_p bfd_mach_o_x86_64_core_p
|
||||
|
611
bfd/mach-o.c
611
bfd/mach-o.c
File diff suppressed because it is too large
Load Diff
53
bfd/mach-o.h
53
bfd/mach-o.h
@ -41,9 +41,6 @@ typedef struct bfd_mach_o_header
|
||||
}
|
||||
bfd_mach_o_header;
|
||||
|
||||
#define BFD_MACH_O_HEADER_SIZE 28
|
||||
#define BFD_MACH_O_HEADER_64_SIZE 32
|
||||
|
||||
typedef struct bfd_mach_o_section
|
||||
{
|
||||
/* Fields present in the file. */
|
||||
@ -64,8 +61,6 @@ typedef struct bfd_mach_o_section
|
||||
asection *bfdsection;
|
||||
}
|
||||
bfd_mach_o_section;
|
||||
#define BFD_MACH_O_SECTION_SIZE 68
|
||||
#define BFD_MACH_O_SECTION_64_SIZE 80
|
||||
|
||||
typedef struct bfd_mach_o_segment_command
|
||||
{
|
||||
@ -81,55 +76,12 @@ typedef struct bfd_mach_o_segment_command
|
||||
bfd_mach_o_section *sections;
|
||||
}
|
||||
bfd_mach_o_segment_command;
|
||||
#define BFD_MACH_O_LC_SEGMENT_SIZE 56
|
||||
#define BFD_MACH_O_LC_SEGMENT_64_SIZE 72
|
||||
|
||||
/* Protection flags. */
|
||||
#define BFD_MACH_O_PROT_READ 0x01
|
||||
#define BFD_MACH_O_PROT_WRITE 0x02
|
||||
#define BFD_MACH_O_PROT_EXECUTE 0x04
|
||||
|
||||
/* Generic relocation types (used by i386). */
|
||||
#define BFD_MACH_O_GENERIC_RELOC_VANILLA 0
|
||||
#define BFD_MACH_O_GENERIC_RELOC_PAIR 1
|
||||
#define BFD_MACH_O_GENERIC_RELOC_SECTDIFF 2
|
||||
#define BFD_MACH_O_GENERIC_RELOC_PB_LA_PTR 3
|
||||
#define BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF 4
|
||||
|
||||
/* X86-64 relocations. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_UNSIGNED 0 /* Absolute addresses. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_SIGNED 1 /* 32-bit disp. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_BRANCH 2 /* 32-bit pcrel disp. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_GOT_LOAD 3 /* Movq load of a GOT entry. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_GOT 4 /* GOT reference. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_SUBTRACTOR 5 /* Symbol difference. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_SIGNED_1 6 /* 32-bit signed disp -1. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_SIGNED_2 7 /* 32-bit signed disp -2. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_SIGNED_4 8 /* 32-bit signed disp -4. */
|
||||
|
||||
/* Size of a relocation entry. */
|
||||
#define BFD_MACH_O_RELENT_SIZE 8
|
||||
|
||||
/* Fields for a normal (non-scattered) entry. */
|
||||
#define BFD_MACH_O_R_PCREL 0x01000000
|
||||
#define BFD_MACH_O_GET_R_LENGTH(s) (((s) >> 25) & 0x3)
|
||||
#define BFD_MACH_O_R_EXTERN 0x08000000
|
||||
#define BFD_MACH_O_GET_R_TYPE(s) (((s) >> 28) & 0x0f)
|
||||
#define BFD_MACH_O_GET_R_SYMBOLNUM(s) ((s) & 0x00ffffff)
|
||||
#define BFD_MACH_O_SET_R_LENGTH(l) (((l) & 0x3) << 25)
|
||||
#define BFD_MACH_O_SET_R_TYPE(t) (((t) & 0xf) << 28)
|
||||
#define BFD_MACH_O_SET_R_SYMBOLNUM(s) ((s) & 0x00ffffff)
|
||||
|
||||
/* Fields for a scattered entry. */
|
||||
#define BFD_MACH_O_SR_SCATTERED 0x80000000
|
||||
#define BFD_MACH_O_SR_PCREL 0x40000000
|
||||
#define BFD_MACH_O_GET_SR_LENGTH(s) (((s) >> 28) & 0x3)
|
||||
#define BFD_MACH_O_GET_SR_TYPE(s) (((s) >> 24) & 0x0f)
|
||||
#define BFD_MACH_O_GET_SR_ADDRESS(s) ((s) & 0x00ffffff)
|
||||
#define BFD_MACH_O_SET_SR_LENGTH(l) (((l) & 0x3) << 28)
|
||||
#define BFD_MACH_O_SET_SR_TYPE(t) (((t) & 0xf) << 24)
|
||||
#define BFD_MACH_O_SET_SR_ADDRESS(s) ((s) & 0x00ffffff)
|
||||
|
||||
/* Expanded internal representation of a relocation entry. */
|
||||
typedef struct bfd_mach_o_reloc_info
|
||||
{
|
||||
@ -154,8 +106,6 @@ typedef struct bfd_mach_o_asymbol
|
||||
unsigned short n_desc;
|
||||
}
|
||||
bfd_mach_o_asymbol;
|
||||
#define BFD_MACH_O_NLIST_SIZE 12
|
||||
#define BFD_MACH_O_NLIST_64_SIZE 16
|
||||
|
||||
typedef struct bfd_mach_o_symtab_command
|
||||
{
|
||||
@ -262,8 +212,6 @@ typedef struct bfd_mach_o_dylib_module
|
||||
bfd_vma objc_module_info_addr;
|
||||
}
|
||||
bfd_mach_o_dylib_module;
|
||||
#define BFD_MACH_O_DYLIB_MODULE_SIZE 52
|
||||
#define BFD_MACH_O_DYLIB_MODULE_64_SIZE 56
|
||||
|
||||
typedef struct bfd_mach_o_dylib_table_of_content
|
||||
{
|
||||
@ -274,7 +222,6 @@ typedef struct bfd_mach_o_dylib_table_of_content
|
||||
unsigned long module_index;
|
||||
}
|
||||
bfd_mach_o_dylib_table_of_content;
|
||||
#define BFD_MACH_O_TABLE_OF_CONTENT_SIZE 8
|
||||
|
||||
typedef struct bfd_mach_o_dylib_reference
|
||||
{
|
||||
|
@ -1,3 +1,10 @@
|
||||
2011-08-08 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* loader.h: Reorder declarations.
|
||||
* x86-64.h: New file.
|
||||
* external.h: New file.
|
||||
* reloc.h: New file.
|
||||
|
||||
2011-07-06 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* loader.h: New file.
|
||||
|
267
include/mach-o/external.h
Normal file
267
include/mach-o/external.h
Normal file
@ -0,0 +1,267 @@
|
||||
/* Mach-O support for BFD.
|
||||
Copyright 2011
|
||||
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_EXTERNAL_H
|
||||
#define _MACH_O_EXTERNAL_H
|
||||
|
||||
struct mach_o_header_external
|
||||
{
|
||||
unsigned char magic[4]; /* Magic number. */
|
||||
unsigned char cputype[4]; /* CPU that this object is for. */
|
||||
unsigned char cpusubtype[4]; /* CPU subtype. */
|
||||
unsigned char filetype[4]; /* Type of file. */
|
||||
unsigned char ncmds[4]; /* Number of load commands. */
|
||||
unsigned char sizeofcmds[4]; /* Total size of load commands. */
|
||||
unsigned char flags[4]; /* Flags. */
|
||||
unsigned char reserved[4]; /* Reserved (on 64-bit version only). */
|
||||
};
|
||||
|
||||
#define BFD_MACH_O_HEADER_SIZE 28
|
||||
#define BFD_MACH_O_HEADER_64_SIZE 32
|
||||
|
||||
/* 32-bit section header. */
|
||||
|
||||
struct mach_o_section_32_external
|
||||
{
|
||||
unsigned char sectname[16]; /* Section name. */
|
||||
unsigned char segname[16]; /* Segment that the section belongs to. */
|
||||
unsigned char addr[4]; /* Address of this section in memory. */
|
||||
unsigned char size[4]; /* Size in bytes of this section. */
|
||||
unsigned char offset[4]; /* File offset of this section. */
|
||||
unsigned char align[4]; /* log2 of this section's alignment. */
|
||||
unsigned char reloff[4]; /* File offset of this section's relocs. */
|
||||
unsigned char nreloc[4]; /* Number of relocs for this section. */
|
||||
unsigned char flags[4]; /* Section flags/attributes. */
|
||||
unsigned char reserved1[4];
|
||||
unsigned char reserved2[4];
|
||||
};
|
||||
#define BFD_MACH_O_SECTION_SIZE 68
|
||||
|
||||
/* 64-bit section header. */
|
||||
|
||||
struct mach_o_section_64_external
|
||||
{
|
||||
unsigned char sectname[16]; /* Section name. */
|
||||
unsigned char segname[16]; /* Segment that the section belongs to. */
|
||||
unsigned char addr[8]; /* Address of this section in memory. */
|
||||
unsigned char size[8]; /* Size in bytes of this section. */
|
||||
unsigned char offset[4]; /* File offset of this section. */
|
||||
unsigned char align[4]; /* log2 of this section's alignment. */
|
||||
unsigned char reloff[4]; /* File offset of this section's relocs. */
|
||||
unsigned char nreloc[4]; /* Number of relocs for this section. */
|
||||
unsigned char flags[4]; /* Section flags/attributes. */
|
||||
unsigned char reserved1[4];
|
||||
unsigned char reserved2[4];
|
||||
unsigned char reserved3[4];
|
||||
};
|
||||
#define BFD_MACH_O_SECTION_64_SIZE 80
|
||||
|
||||
struct mach_o_load_command_external
|
||||
{
|
||||
unsigned char cmd[4]; /* The type of load command. */
|
||||
unsigned char cmdsize[4]; /* Size in bytes of entire command. */
|
||||
};
|
||||
#define BFD_MACH_O_LC_SIZE 8
|
||||
|
||||
struct mach_o_segment_command_32_external
|
||||
{
|
||||
unsigned char segname[16]; /* Name of this segment. */
|
||||
unsigned char vmaddr[4]; /* Virtual memory address of this segment. */
|
||||
unsigned char vmsize[4]; /* Size there, in bytes. */
|
||||
unsigned char fileoff[4]; /* Offset in bytes of the data to be mapped. */
|
||||
unsigned char filesize[4]; /* Size in bytes on disk. */
|
||||
unsigned char maxprot[4]; /* Maximum permitted vm protection. */
|
||||
unsigned char initprot[4]; /* Initial vm protection. */
|
||||
unsigned char nsects[4]; /* Number of sections in this segment. */
|
||||
unsigned char flags[4]; /* Flags that affect the loading. */
|
||||
};
|
||||
#define BFD_MACH_O_LC_SEGMENT_SIZE 56 /* Include the header. */
|
||||
|
||||
struct mach_o_segment_command_64_external
|
||||
{
|
||||
unsigned char segname[16]; /* Name of this segment. */
|
||||
unsigned char vmaddr[8]; /* Virtual memory address of this segment. */
|
||||
unsigned char vmsize[8]; /* Size there, in bytes. */
|
||||
unsigned char fileoff[8]; /* Offset in bytes of the data to be mapped. */
|
||||
unsigned char filesize[8]; /* Size in bytes on disk. */
|
||||
unsigned char maxprot[4]; /* Maximum permitted vm protection. */
|
||||
unsigned char initprot[4]; /* Initial vm protection. */
|
||||
unsigned char nsects[4]; /* Number of sections in this segment. */
|
||||
unsigned char flags[4]; /* Flags that affect the loading. */
|
||||
};
|
||||
#define BFD_MACH_O_LC_SEGMENT_64_SIZE 72 /* Include the header. */
|
||||
|
||||
struct mach_o_reloc_info_external
|
||||
{
|
||||
unsigned char r_address[4];
|
||||
unsigned char r_symbolnum[4];
|
||||
};
|
||||
#define BFD_MACH_O_RELENT_SIZE 8
|
||||
|
||||
struct mach_o_symtab_command_external
|
||||
{
|
||||
unsigned char symoff[4];
|
||||
unsigned char nsyms[4];
|
||||
unsigned char stroff[4];
|
||||
unsigned char strsize[4];
|
||||
};
|
||||
|
||||
struct mach_o_nlist_external
|
||||
{
|
||||
unsigned char n_strx[4];
|
||||
unsigned char n_type[1];
|
||||
unsigned char n_sect[1];
|
||||
unsigned char n_desc[2];
|
||||
unsigned char n_value[4];
|
||||
};
|
||||
#define BFD_MACH_O_NLIST_SIZE 12
|
||||
|
||||
struct mach_o_nlist_64_external
|
||||
{
|
||||
unsigned char n_strx[4];
|
||||
unsigned char n_type[1];
|
||||
unsigned char n_sect[1];
|
||||
unsigned char n_desc[2];
|
||||
unsigned char n_value[8];
|
||||
};
|
||||
#define BFD_MACH_O_NLIST_64_SIZE 16
|
||||
|
||||
struct mach_o_thread_command_external
|
||||
{
|
||||
unsigned char flavour[4];
|
||||
unsigned char count[4];
|
||||
};
|
||||
|
||||
/* For commands that just have a string or a path. */
|
||||
struct mach_o_str_command_external
|
||||
{
|
||||
unsigned char str[4];
|
||||
};
|
||||
|
||||
struct mach_o_dylib_command_external
|
||||
{
|
||||
unsigned char name[4];
|
||||
unsigned char timestamp[4];
|
||||
unsigned char current_version[4];
|
||||
unsigned char compatibility_version[4];
|
||||
};
|
||||
|
||||
struct mach_o_dysymtab_command_external
|
||||
{
|
||||
unsigned char ilocalsym[4]; /* Index of. */
|
||||
unsigned char nlocalsym[4]; /* Number of. */
|
||||
unsigned char iextdefsym[4];
|
||||
unsigned char nextdefsym[4];
|
||||
unsigned char iundefsym[4];
|
||||
unsigned char nundefsym[4];
|
||||
unsigned char tocoff[4];
|
||||
unsigned char ntoc[4];
|
||||
unsigned char modtaboff[4];
|
||||
unsigned char nmodtab[4];
|
||||
unsigned char extrefsymoff[4];
|
||||
unsigned char nextrefsyms[4];
|
||||
unsigned char indirectsymoff[4];
|
||||
unsigned char nindirectsyms[4];
|
||||
unsigned char extreloff[4];
|
||||
unsigned char nextrel[4];
|
||||
unsigned char locreloff[4];
|
||||
unsigned char nlocrel[4];
|
||||
};
|
||||
|
||||
struct mach_o_dylib_module_external
|
||||
{
|
||||
unsigned char module_name[4];
|
||||
unsigned char iextdefsym[4];
|
||||
unsigned char nextdefsym[4];
|
||||
unsigned char irefsym[4];
|
||||
unsigned char nrefsym[4];
|
||||
unsigned char ilocalsym[4];
|
||||
unsigned char nlocalsym[4];
|
||||
unsigned char iextrel[4];
|
||||
unsigned char nextrel[4];
|
||||
unsigned char iinit_iterm[4];
|
||||
unsigned char ninit_nterm[4];
|
||||
unsigned char objc_module_info_addr[4];
|
||||
unsigned char objc_module_info_size[4];
|
||||
};
|
||||
#define BFD_MACH_O_DYLIB_MODULE_SIZE 52
|
||||
|
||||
struct mach_o_dylib_module_64_external
|
||||
{
|
||||
unsigned char module_name[4];
|
||||
unsigned char iextdefsym[4];
|
||||
unsigned char nextdefsym[4];
|
||||
unsigned char irefsym[4];
|
||||
unsigned char nrefsym[4];
|
||||
unsigned char ilocalsym[4];
|
||||
unsigned char nlocalsym[4];
|
||||
unsigned char iextrel[4];
|
||||
unsigned char nextrel[4];
|
||||
unsigned char iinit_iterm[4];
|
||||
unsigned char ninit_nterm[4];
|
||||
unsigned char objc_module_info_size[4];
|
||||
unsigned char objc_module_info_addr[8];
|
||||
};
|
||||
#define BFD_MACH_O_DYLIB_MODULE_64_SIZE 56
|
||||
|
||||
struct mach_o_dylib_table_of_contents_external
|
||||
{
|
||||
unsigned char symbol_index[4];
|
||||
unsigned char module_index[4];
|
||||
};
|
||||
#define BFD_MACH_O_TABLE_OF_CONTENT_SIZE 8
|
||||
|
||||
struct mach_o_linkedit_data_command_external
|
||||
{
|
||||
unsigned char dataoff[4];
|
||||
unsigned char datasize[4];
|
||||
};
|
||||
|
||||
struct mach_o_dyld_info_command_external
|
||||
{
|
||||
unsigned char rebase_off[4];
|
||||
unsigned char rebase_size[4];
|
||||
unsigned char bind_off[4];
|
||||
unsigned char bind_size[4];
|
||||
unsigned char weak_bind_off[4];
|
||||
unsigned char weak_bind_size[4];
|
||||
unsigned char lazy_bind_off[4];
|
||||
unsigned char lazy_bind_size[4];
|
||||
unsigned char export_off[4];
|
||||
unsigned char export_size[4];
|
||||
};
|
||||
|
||||
struct mach_o_fat_header_external
|
||||
{
|
||||
unsigned char magic[4];
|
||||
unsigned char nfat_arch[4]; /* Number of components. */
|
||||
};
|
||||
|
||||
struct mach_o_fat_arch_external
|
||||
{
|
||||
unsigned char cputype[4];
|
||||
unsigned char cpusubtype[4];
|
||||
unsigned char offset[4]; /* File offset of the member. */
|
||||
unsigned char size[4]; /* Size of the member. */
|
||||
unsigned char align[4]; /* Power of 2. */
|
||||
};
|
||||
|
||||
#endif /* _MACH_O_EXTERNAL_H */
|
@ -22,33 +22,7 @@
|
||||
#ifndef _MACH_O_LOADER_H
|
||||
#define _MACH_O_LOADER_H
|
||||
|
||||
/* Symbol n_type values. */
|
||||
#define BFD_MACH_O_N_STAB 0xe0 /* If any of these bits set, a symbolic debugging entry. */
|
||||
#define BFD_MACH_O_N_PEXT 0x10 /* Private external symbol bit. */
|
||||
#define BFD_MACH_O_N_TYPE 0x0e /* Mask for the type bits. */
|
||||
#define BFD_MACH_O_N_EXT 0x01 /* External symbol bit, set for external symbols. */
|
||||
#define BFD_MACH_O_N_UNDF 0x00 /* Undefined, n_sect == NO_SECT. */
|
||||
#define BFD_MACH_O_N_ABS 0x02 /* Absolute, n_sect == NO_SECT. */
|
||||
#define BFD_MACH_O_N_INDR 0x0a /* Indirect. */
|
||||
#define BFD_MACH_O_N_PBUD 0x0c /* Prebound undefined (defined in a dylib). */
|
||||
#define BFD_MACH_O_N_SECT 0x0e /* Defined in section number n_sect. */
|
||||
|
||||
#define BFD_MACH_O_NO_SECT 0 /* Symbol not in any section of the image. */
|
||||
|
||||
/* Symbol n_desc reference flags. */
|
||||
#define BFD_MACH_O_REFERENCE_MASK 0x0f
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_NON_LAZY 0x00
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_LAZY 0x01
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_DEFINED 0x02
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_PRIVATE_DEFINED 0x03
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY 0x04
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY 0x05
|
||||
|
||||
#define BFD_MACH_O_REFERENCED_DYNAMICALLY 0x10
|
||||
#define BFD_MACH_O_N_DESC_DISCARDED 0x20
|
||||
#define BFD_MACH_O_N_NO_DEAD_STRIP 0x20
|
||||
#define BFD_MACH_O_N_WEAK_REF 0x40
|
||||
#define BFD_MACH_O_N_WEAK_DEF 0x80
|
||||
/* Constants for header. */
|
||||
|
||||
typedef enum bfd_mach_o_mach_header_magic
|
||||
{
|
||||
@ -59,82 +33,6 @@ typedef enum bfd_mach_o_mach_header_magic
|
||||
}
|
||||
bfd_mach_o_mach_header_magic;
|
||||
|
||||
typedef enum bfd_mach_o_ppc_thread_flavour
|
||||
{
|
||||
BFD_MACH_O_PPC_THREAD_STATE = 1,
|
||||
BFD_MACH_O_PPC_FLOAT_STATE = 2,
|
||||
BFD_MACH_O_PPC_EXCEPTION_STATE = 3,
|
||||
BFD_MACH_O_PPC_VECTOR_STATE = 4,
|
||||
BFD_MACH_O_PPC_THREAD_STATE64 = 5,
|
||||
BFD_MACH_O_PPC_EXCEPTION_STATE64 = 6,
|
||||
BFD_MACH_O_PPC_THREAD_STATE_NONE = 7
|
||||
}
|
||||
bfd_mach_o_ppc_thread_flavour;
|
||||
|
||||
/* Defined in <mach/i386/thread_status.h> */
|
||||
typedef enum bfd_mach_o_i386_thread_flavour
|
||||
{
|
||||
BFD_MACH_O_x86_THREAD_STATE32 = 1,
|
||||
BFD_MACH_O_x86_FLOAT_STATE32 = 2,
|
||||
BFD_MACH_O_x86_EXCEPTION_STATE32 = 3,
|
||||
BFD_MACH_O_x86_THREAD_STATE64 = 4,
|
||||
BFD_MACH_O_x86_FLOAT_STATE64 = 5,
|
||||
BFD_MACH_O_x86_EXCEPTION_STATE64 = 6,
|
||||
BFD_MACH_O_x86_THREAD_STATE = 7,
|
||||
BFD_MACH_O_x86_FLOAT_STATE = 8,
|
||||
BFD_MACH_O_x86_EXCEPTION_STATE = 9,
|
||||
BFD_MACH_O_x86_DEBUG_STATE32 = 10,
|
||||
BFD_MACH_O_x86_DEBUG_STATE64 = 11,
|
||||
BFD_MACH_O_x86_DEBUG_STATE = 12,
|
||||
BFD_MACH_O_x86_THREAD_STATE_NONE = 13
|
||||
}
|
||||
bfd_mach_o_i386_thread_flavour;
|
||||
|
||||
#define BFD_MACH_O_LC_REQ_DYLD 0x80000000
|
||||
|
||||
typedef enum bfd_mach_o_load_command_type
|
||||
{
|
||||
BFD_MACH_O_LC_SEGMENT = 0x1, /* File segment to be mapped. */
|
||||
BFD_MACH_O_LC_SYMTAB = 0x2, /* Link-edit stab symbol table info (obsolete). */
|
||||
BFD_MACH_O_LC_SYMSEG = 0x3, /* Link-edit gdb symbol table info. */
|
||||
BFD_MACH_O_LC_THREAD = 0x4, /* Thread. */
|
||||
BFD_MACH_O_LC_UNIXTHREAD = 0x5, /* UNIX thread (includes a stack). */
|
||||
BFD_MACH_O_LC_LOADFVMLIB = 0x6, /* Load a fixed VM shared library. */
|
||||
BFD_MACH_O_LC_IDFVMLIB = 0x7, /* Fixed VM shared library id. */
|
||||
BFD_MACH_O_LC_IDENT = 0x8, /* Object identification information (obsolete). */
|
||||
BFD_MACH_O_LC_FVMFILE = 0x9, /* Fixed VM file inclusion. */
|
||||
BFD_MACH_O_LC_PREPAGE = 0xa, /* Prepage command (internal use). */
|
||||
BFD_MACH_O_LC_DYSYMTAB = 0xb, /* Dynamic link-edit symbol table info. */
|
||||
BFD_MACH_O_LC_LOAD_DYLIB = 0xc, /* Load a dynamically linked shared library. */
|
||||
BFD_MACH_O_LC_ID_DYLIB = 0xd, /* Dynamically linked shared lib identification. */
|
||||
BFD_MACH_O_LC_LOAD_DYLINKER = 0xe, /* Load a dynamic linker. */
|
||||
BFD_MACH_O_LC_ID_DYLINKER = 0xf, /* Dynamic linker identification. */
|
||||
BFD_MACH_O_LC_PREBOUND_DYLIB = 0x10, /* Modules prebound for a dynamically. */
|
||||
BFD_MACH_O_LC_ROUTINES = 0x11, /* Image routines. */
|
||||
BFD_MACH_O_LC_SUB_FRAMEWORK = 0x12, /* Sub framework. */
|
||||
BFD_MACH_O_LC_SUB_UMBRELLA = 0x13, /* Sub umbrella. */
|
||||
BFD_MACH_O_LC_SUB_CLIENT = 0x14, /* Sub client. */
|
||||
BFD_MACH_O_LC_SUB_LIBRARY = 0x15, /* Sub library. */
|
||||
BFD_MACH_O_LC_TWOLEVEL_HINTS = 0x16, /* Two-level namespace lookup hints. */
|
||||
BFD_MACH_O_LC_PREBIND_CKSUM = 0x17, /* Prebind checksum. */
|
||||
/* Load a dynamically linked shared library that is allowed to be
|
||||
missing (weak). */
|
||||
BFD_MACH_O_LC_LOAD_WEAK_DYLIB = 0x18,
|
||||
BFD_MACH_O_LC_SEGMENT_64 = 0x19, /* 64-bit segment of this file to be
|
||||
mapped. */
|
||||
BFD_MACH_O_LC_ROUTINES_64 = 0x1a, /* Address of the dyld init routine
|
||||
in a dylib. */
|
||||
BFD_MACH_O_LC_UUID = 0x1b, /* 128-bit UUID of the executable. */
|
||||
BFD_MACH_O_LC_RPATH = 0x1c, /* Run path addiions. */
|
||||
BFD_MACH_O_LC_CODE_SIGNATURE = 0x1d, /* Local of code signature. */
|
||||
BFD_MACH_O_LC_SEGMENT_SPLIT_INFO = 0x1e, /* Local of info to split seg. */
|
||||
BFD_MACH_O_LC_REEXPORT_DYLIB = 0x1f, /* Load and re-export lib. */
|
||||
BFD_MACH_O_LC_LAZY_LOAD_DYLIB = 0x20, /* Delay load of lib until use. */
|
||||
BFD_MACH_O_LC_ENCRYPTION_INFO = 0x21, /* Encrypted segment info. */
|
||||
BFD_MACH_O_LC_DYLD_INFO = 0x22 /* Compressed dyld information. */
|
||||
}
|
||||
bfd_mach_o_load_command_type;
|
||||
|
||||
#define BFD_MACH_O_CPU_IS64BIT 0x1000000
|
||||
|
||||
typedef enum bfd_mach_o_cpu_type
|
||||
@ -180,31 +78,81 @@ bfd_mach_o_filetype;
|
||||
|
||||
typedef enum bfd_mach_o_header_flags
|
||||
{
|
||||
BFD_MACH_O_MH_NOUNDEFS = 0x000001,
|
||||
BFD_MACH_O_MH_INCRLINK = 0x000002,
|
||||
BFD_MACH_O_MH_DYLDLINK = 0x000004,
|
||||
BFD_MACH_O_MH_BINDATLOAD = 0x000008,
|
||||
BFD_MACH_O_MH_PREBOUND = 0x000010,
|
||||
BFD_MACH_O_MH_SPLIT_SEGS = 0x000020,
|
||||
BFD_MACH_O_MH_LAZY_INIT = 0x000040,
|
||||
BFD_MACH_O_MH_TWOLEVEL = 0x000080,
|
||||
BFD_MACH_O_MH_FORCE_FLAT = 0x000100,
|
||||
BFD_MACH_O_MH_NOMULTIDEFS = 0x000200,
|
||||
BFD_MACH_O_MH_NOFIXPREBINDING = 0x000400,
|
||||
BFD_MACH_O_MH_PREBINDABLE = 0x000800,
|
||||
BFD_MACH_O_MH_ALLMODSBOUND = 0x001000,
|
||||
BFD_MACH_O_MH_SUBSECTIONS_VIA_SYMBOLS = 0x002000,
|
||||
BFD_MACH_O_MH_CANONICAL = 0x004000,
|
||||
BFD_MACH_O_MH_WEAK_DEFINES = 0x008000,
|
||||
BFD_MACH_O_MH_BINDS_TO_WEAK = 0x010000,
|
||||
BFD_MACH_O_MH_ALLOW_STACK_EXECUTION = 0x020000,
|
||||
BFD_MACH_O_MH_ROOT_SAFE = 0x040000,
|
||||
BFD_MACH_O_MH_SETUID_SAFE = 0x080000,
|
||||
BFD_MACH_O_MH_NO_REEXPORTED_DYLIBS = 0x100000,
|
||||
BFD_MACH_O_MH_PIE = 0x200000
|
||||
BFD_MACH_O_MH_NOUNDEFS = 0x0000001,
|
||||
BFD_MACH_O_MH_INCRLINK = 0x0000002,
|
||||
BFD_MACH_O_MH_DYLDLINK = 0x0000004,
|
||||
BFD_MACH_O_MH_BINDATLOAD = 0x0000008,
|
||||
BFD_MACH_O_MH_PREBOUND = 0x0000010,
|
||||
BFD_MACH_O_MH_SPLIT_SEGS = 0x0000020,
|
||||
BFD_MACH_O_MH_LAZY_INIT = 0x0000040,
|
||||
BFD_MACH_O_MH_TWOLEVEL = 0x0000080,
|
||||
BFD_MACH_O_MH_FORCE_FLAT = 0x0000100,
|
||||
BFD_MACH_O_MH_NOMULTIDEFS = 0x0000200,
|
||||
BFD_MACH_O_MH_NOFIXPREBINDING = 0x0000400,
|
||||
BFD_MACH_O_MH_PREBINDABLE = 0x0000800,
|
||||
BFD_MACH_O_MH_ALLMODSBOUND = 0x0001000,
|
||||
BFD_MACH_O_MH_SUBSECTIONS_VIA_SYMBOLS = 0x0002000,
|
||||
BFD_MACH_O_MH_CANONICAL = 0x0004000,
|
||||
BFD_MACH_O_MH_WEAK_DEFINES = 0x0008000,
|
||||
BFD_MACH_O_MH_BINDS_TO_WEAK = 0x0010000,
|
||||
BFD_MACH_O_MH_ALLOW_STACK_EXECUTION = 0x0020000,
|
||||
BFD_MACH_O_MH_ROOT_SAFE = 0x0040000,
|
||||
BFD_MACH_O_MH_SETUID_SAFE = 0x0080000,
|
||||
BFD_MACH_O_MH_NO_REEXPORTED_DYLIBS = 0x0100000,
|
||||
BFD_MACH_O_MH_PIE = 0x0200000,
|
||||
BFD_MACH_O_MH_DEAD_STRIPPABLE_DYLIB = 0x0400000,
|
||||
BFD_MACH_O_MH_HAS_TLV_DESCRIPTORS = 0x0800000,
|
||||
BFD_MACH_O_MH_NO_HEAP_EXECUTION = 0x1000000
|
||||
}
|
||||
bfd_mach_o_header_flags;
|
||||
|
||||
/* Load command constants. */
|
||||
#define BFD_MACH_O_LC_REQ_DYLD 0x80000000
|
||||
|
||||
typedef enum bfd_mach_o_load_command_type
|
||||
{
|
||||
BFD_MACH_O_LC_SEGMENT = 0x1, /* File segment to be mapped. */
|
||||
BFD_MACH_O_LC_SYMTAB = 0x2, /* Link-edit stab symbol table info (obsolete). */
|
||||
BFD_MACH_O_LC_SYMSEG = 0x3, /* Link-edit gdb symbol table info. */
|
||||
BFD_MACH_O_LC_THREAD = 0x4, /* Thread. */
|
||||
BFD_MACH_O_LC_UNIXTHREAD = 0x5, /* UNIX thread (includes a stack). */
|
||||
BFD_MACH_O_LC_LOADFVMLIB = 0x6, /* Load a fixed VM shared library. */
|
||||
BFD_MACH_O_LC_IDFVMLIB = 0x7, /* Fixed VM shared library id. */
|
||||
BFD_MACH_O_LC_IDENT = 0x8, /* Object identification information (obsolete). */
|
||||
BFD_MACH_O_LC_FVMFILE = 0x9, /* Fixed VM file inclusion. */
|
||||
BFD_MACH_O_LC_PREPAGE = 0xa, /* Prepage command (internal use). */
|
||||
BFD_MACH_O_LC_DYSYMTAB = 0xb, /* Dynamic link-edit symbol table info. */
|
||||
BFD_MACH_O_LC_LOAD_DYLIB = 0xc, /* Load a dynamically linked shared library. */
|
||||
BFD_MACH_O_LC_ID_DYLIB = 0xd, /* Dynamically linked shared lib identification. */
|
||||
BFD_MACH_O_LC_LOAD_DYLINKER = 0xe, /* Load a dynamic linker. */
|
||||
BFD_MACH_O_LC_ID_DYLINKER = 0xf, /* Dynamic linker identification. */
|
||||
BFD_MACH_O_LC_PREBOUND_DYLIB = 0x10, /* Modules prebound for a dynamically. */
|
||||
BFD_MACH_O_LC_ROUTINES = 0x11, /* Image routines. */
|
||||
BFD_MACH_O_LC_SUB_FRAMEWORK = 0x12, /* Sub framework. */
|
||||
BFD_MACH_O_LC_SUB_UMBRELLA = 0x13, /* Sub umbrella. */
|
||||
BFD_MACH_O_LC_SUB_CLIENT = 0x14, /* Sub client. */
|
||||
BFD_MACH_O_LC_SUB_LIBRARY = 0x15, /* Sub library. */
|
||||
BFD_MACH_O_LC_TWOLEVEL_HINTS = 0x16, /* Two-level namespace lookup hints. */
|
||||
BFD_MACH_O_LC_PREBIND_CKSUM = 0x17, /* Prebind checksum. */
|
||||
/* Load a dynamically linked shared library that is allowed to be
|
||||
missing (weak). */
|
||||
BFD_MACH_O_LC_LOAD_WEAK_DYLIB = 0x18,
|
||||
BFD_MACH_O_LC_SEGMENT_64 = 0x19, /* 64-bit segment of this file to be
|
||||
mapped. */
|
||||
BFD_MACH_O_LC_ROUTINES_64 = 0x1a, /* Address of the dyld init routine
|
||||
in a dylib. */
|
||||
BFD_MACH_O_LC_UUID = 0x1b, /* 128-bit UUID of the executable. */
|
||||
BFD_MACH_O_LC_RPATH = 0x1c, /* Run path addiions. */
|
||||
BFD_MACH_O_LC_CODE_SIGNATURE = 0x1d, /* Local of code signature. */
|
||||
BFD_MACH_O_LC_SEGMENT_SPLIT_INFO = 0x1e, /* Local of info to split seg. */
|
||||
BFD_MACH_O_LC_REEXPORT_DYLIB = 0x1f, /* Load and re-export lib. */
|
||||
BFD_MACH_O_LC_LAZY_LOAD_DYLIB = 0x20, /* Delay load of lib until use. */
|
||||
BFD_MACH_O_LC_ENCRYPTION_INFO = 0x21, /* Encrypted segment info. */
|
||||
BFD_MACH_O_LC_DYLD_INFO = 0x22 /* Compressed dyld information. */
|
||||
}
|
||||
bfd_mach_o_load_command_type;
|
||||
|
||||
/* Section constants. */
|
||||
/* Constants for the type of a section. */
|
||||
|
||||
typedef enum bfd_mach_o_section_type
|
||||
@ -325,5 +273,68 @@ typedef enum bfd_mach_o_section_attribute
|
||||
BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS = 0x80000000
|
||||
}
|
||||
bfd_mach_o_section_attribute;
|
||||
|
||||
/* Symbol constants. */
|
||||
|
||||
/* Symbol n_type values. */
|
||||
#define BFD_MACH_O_N_STAB 0xe0 /* If any of these bits set, a symbolic debugging entry. */
|
||||
#define BFD_MACH_O_N_PEXT 0x10 /* Private external symbol bit. */
|
||||
#define BFD_MACH_O_N_TYPE 0x0e /* Mask for the type bits. */
|
||||
#define BFD_MACH_O_N_EXT 0x01 /* External symbol bit, set for external symbols. */
|
||||
#define BFD_MACH_O_N_UNDF 0x00 /* Undefined, n_sect == NO_SECT. */
|
||||
#define BFD_MACH_O_N_ABS 0x02 /* Absolute, n_sect == NO_SECT. */
|
||||
#define BFD_MACH_O_N_INDR 0x0a /* Indirect. */
|
||||
#define BFD_MACH_O_N_PBUD 0x0c /* Prebound undefined (defined in a dylib). */
|
||||
#define BFD_MACH_O_N_SECT 0x0e /* Defined in section number n_sect. */
|
||||
|
||||
#define BFD_MACH_O_NO_SECT 0 /* Symbol not in any section of the image. */
|
||||
|
||||
/* Symbol n_desc reference flags. */
|
||||
#define BFD_MACH_O_REFERENCE_MASK 0x0f
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_NON_LAZY 0x00
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_LAZY 0x01
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_DEFINED 0x02
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_PRIVATE_DEFINED 0x03
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY 0x04
|
||||
#define BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY 0x05
|
||||
|
||||
#define BFD_MACH_O_REFERENCED_DYNAMICALLY 0x10
|
||||
#define BFD_MACH_O_N_DESC_DISCARDED 0x20
|
||||
#define BFD_MACH_O_N_NO_DEAD_STRIP 0x20
|
||||
#define BFD_MACH_O_N_WEAK_REF 0x40
|
||||
#define BFD_MACH_O_N_WEAK_DEF 0x80
|
||||
|
||||
/* Thread constants. */
|
||||
|
||||
typedef enum bfd_mach_o_ppc_thread_flavour
|
||||
{
|
||||
BFD_MACH_O_PPC_THREAD_STATE = 1,
|
||||
BFD_MACH_O_PPC_FLOAT_STATE = 2,
|
||||
BFD_MACH_O_PPC_EXCEPTION_STATE = 3,
|
||||
BFD_MACH_O_PPC_VECTOR_STATE = 4,
|
||||
BFD_MACH_O_PPC_THREAD_STATE64 = 5,
|
||||
BFD_MACH_O_PPC_EXCEPTION_STATE64 = 6,
|
||||
BFD_MACH_O_PPC_THREAD_STATE_NONE = 7
|
||||
}
|
||||
bfd_mach_o_ppc_thread_flavour;
|
||||
|
||||
/* Defined in <mach/i386/thread_status.h> */
|
||||
typedef enum bfd_mach_o_i386_thread_flavour
|
||||
{
|
||||
BFD_MACH_O_x86_THREAD_STATE32 = 1,
|
||||
BFD_MACH_O_x86_FLOAT_STATE32 = 2,
|
||||
BFD_MACH_O_x86_EXCEPTION_STATE32 = 3,
|
||||
BFD_MACH_O_x86_THREAD_STATE64 = 4,
|
||||
BFD_MACH_O_x86_FLOAT_STATE64 = 5,
|
||||
BFD_MACH_O_x86_EXCEPTION_STATE64 = 6,
|
||||
BFD_MACH_O_x86_THREAD_STATE = 7,
|
||||
BFD_MACH_O_x86_FLOAT_STATE = 8,
|
||||
BFD_MACH_O_x86_EXCEPTION_STATE = 9,
|
||||
BFD_MACH_O_x86_DEBUG_STATE32 = 10,
|
||||
BFD_MACH_O_x86_DEBUG_STATE64 = 11,
|
||||
BFD_MACH_O_x86_DEBUG_STATE = 12,
|
||||
BFD_MACH_O_x86_THREAD_STATE_NONE = 13
|
||||
}
|
||||
bfd_mach_o_i386_thread_flavour;
|
||||
|
||||
#endif /* _MACH_O_LOADER_H */
|
||||
|
53
include/mach-o/reloc.h
Normal file
53
include/mach-o/reloc.h
Normal file
@ -0,0 +1,53 @@
|
||||
/* Mach-O support for BFD.
|
||||
Copyright 2011
|
||||
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_RELOC_H
|
||||
#define _MACH_O_RELOC_H
|
||||
|
||||
/* Fields for a normal (non-scattered) entry. */
|
||||
#define BFD_MACH_O_R_PCREL 0x01000000
|
||||
#define BFD_MACH_O_GET_R_LENGTH(s) (((s) >> 25) & 0x3)
|
||||
#define BFD_MACH_O_R_EXTERN 0x08000000
|
||||
#define BFD_MACH_O_GET_R_TYPE(s) (((s) >> 28) & 0x0f)
|
||||
#define BFD_MACH_O_GET_R_SYMBOLNUM(s) ((s) & 0x00ffffff)
|
||||
#define BFD_MACH_O_SET_R_LENGTH(l) (((l) & 0x3) << 25)
|
||||
#define BFD_MACH_O_SET_R_TYPE(t) (((t) & 0xf) << 28)
|
||||
#define BFD_MACH_O_SET_R_SYMBOLNUM(s) ((s) & 0x00ffffff)
|
||||
|
||||
/* Fields for a scattered entry. */
|
||||
#define BFD_MACH_O_SR_SCATTERED 0x80000000
|
||||
#define BFD_MACH_O_SR_PCREL 0x40000000
|
||||
#define BFD_MACH_O_GET_SR_LENGTH(s) (((s) >> 28) & 0x3)
|
||||
#define BFD_MACH_O_GET_SR_TYPE(s) (((s) >> 24) & 0x0f)
|
||||
#define BFD_MACH_O_GET_SR_ADDRESS(s) ((s) & 0x00ffffff)
|
||||
#define BFD_MACH_O_SET_SR_LENGTH(l) (((l) & 0x3) << 28)
|
||||
#define BFD_MACH_O_SET_SR_TYPE(t) (((t) & 0xf) << 24)
|
||||
#define BFD_MACH_O_SET_SR_ADDRESS(s) ((s) & 0x00ffffff)
|
||||
|
||||
/* Generic relocation types (used by i386). */
|
||||
#define BFD_MACH_O_GENERIC_RELOC_VANILLA 0
|
||||
#define BFD_MACH_O_GENERIC_RELOC_PAIR 1
|
||||
#define BFD_MACH_O_GENERIC_RELOC_SECTDIFF 2
|
||||
#define BFD_MACH_O_GENERIC_RELOC_PB_LA_PTR 3
|
||||
#define BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF 4
|
||||
#define BFD_MACH_O_GENERIC_RELOC_TLV 5
|
||||
|
||||
#endif /* _MACH_O_RELOC_H */
|
37
include/mach-o/x86-64.h
Normal file
37
include/mach-o/x86-64.h
Normal file
@ -0,0 +1,37 @@
|
||||
/* Mach-O support for BFD.
|
||||
Copyright 2011
|
||||
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_X86_64_H
|
||||
#define _MACH_O_X86_64_H
|
||||
|
||||
/* X86-64 relocations. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_UNSIGNED 0 /* Absolute addresses. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_SIGNED 1 /* 32-bit disp. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_BRANCH 2 /* 32-bit pcrel disp. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_GOT_LOAD 3 /* Movq load of a GOT entry. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_GOT 4 /* GOT reference. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_SUBTRACTOR 5 /* Symbol difference. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_SIGNED_1 6 /* 32-bit signed disp -1. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_SIGNED_2 7 /* 32-bit signed disp -2. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_SIGNED_4 8 /* 32-bit signed disp -4. */
|
||||
#define BFD_MACH_O_X86_64_RELOC_TLV 9 /* Thread local variables. */
|
||||
|
||||
#endif /* _MACH_O_X86_64_H */
|
Loading…
Reference in New Issue
Block a user