OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [bfd/] [mach-o.h] - Diff between revs 14 and 161

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 14 Rev 161
Line 21... Line 21...
 
 
#ifndef _BFD_MACH_O_H_
#ifndef _BFD_MACH_O_H_
#define _BFD_MACH_O_H_
#define _BFD_MACH_O_H_
 
 
#include "bfd.h"
#include "bfd.h"
 
#include "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
 
 
 
typedef enum bfd_mach_o_mach_header_magic
 
{
 
  BFD_MACH_O_MH_MAGIC    = 0xfeedface,
 
  BFD_MACH_O_MH_CIGAM    = 0xcefaedfe,
 
  BFD_MACH_O_MH_MAGIC_64 = 0xfeedfacf,
 
  BFD_MACH_O_MH_CIGAM_64 = 0xcffaedfe
 
}
 
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
 
{
 
  BFD_MACH_O_CPU_TYPE_VAX = 1,
 
  BFD_MACH_O_CPU_TYPE_MC680x0 = 6,
 
  BFD_MACH_O_CPU_TYPE_I386 = 7,
 
  BFD_MACH_O_CPU_TYPE_MIPS = 8,
 
  BFD_MACH_O_CPU_TYPE_MC98000 = 10,
 
  BFD_MACH_O_CPU_TYPE_HPPA = 11,
 
  BFD_MACH_O_CPU_TYPE_ARM = 12,
 
  BFD_MACH_O_CPU_TYPE_MC88000 = 13,
 
  BFD_MACH_O_CPU_TYPE_SPARC = 14,
 
  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;
 
 
 
typedef enum bfd_mach_o_cpu_subtype
 
{
 
  BFD_MACH_O_CPU_SUBTYPE_X86_ALL = 3
 
}
 
bfd_mach_o_cpu_subtype;
 
 
 
typedef enum bfd_mach_o_filetype
 
{
 
  BFD_MACH_O_MH_OBJECT      = 0x01,
 
  BFD_MACH_O_MH_EXECUTE     = 0x02,
 
  BFD_MACH_O_MH_FVMLIB      = 0x03,
 
  BFD_MACH_O_MH_CORE        = 0x04,
 
  BFD_MACH_O_MH_PRELOAD     = 0x05,
 
  BFD_MACH_O_MH_DYLIB       = 0x06,
 
  BFD_MACH_O_MH_DYLINKER    = 0x07,
 
  BFD_MACH_O_MH_BUNDLE      = 0x08,
 
  BFD_MACH_O_MH_DYLIB_STUB  = 0x09,
 
  BFD_MACH_O_MH_DSYM        = 0x0a,
 
  BFD_MACH_O_MH_KEXT_BUNDLE = 0x0b
 
}
 
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_header_flags;
 
 
 
/* Constants for the type of a section.  */
 
 
 
typedef enum bfd_mach_o_section_type
 
{
 
  /* Regular section.  */
 
  BFD_MACH_O_S_REGULAR = 0x0,
 
 
 
  /* Zero fill on demand section.  */
 
  BFD_MACH_O_S_ZEROFILL = 0x1,
 
 
 
  /* Section with only literal C strings.  */
 
  BFD_MACH_O_S_CSTRING_LITERALS = 0x2,
 
 
 
  /* Section with only 4 byte literals.  */
 
  BFD_MACH_O_S_4BYTE_LITERALS = 0x3,
 
 
 
  /* Section with only 8 byte literals.  */
 
  BFD_MACH_O_S_8BYTE_LITERALS = 0x4,
 
 
 
  /* Section with only pointers to literals.  */
 
  BFD_MACH_O_S_LITERAL_POINTERS = 0x5,
 
 
 
  /* For the two types of symbol pointers sections and the symbol stubs
 
     section they have indirect symbol table entries.  For each of the
 
     entries in the section the indirect symbol table entries, in
 
     corresponding order in the indirect symbol table, start at the index
 
     stored in the reserved1 field of the section structure.  Since the
 
     indirect symbol table entries correspond to the entries in the
 
     section the number of indirect symbol table entries is inferred from
 
     the size of the section divided by the size of the entries in the
 
     section.  For symbol pointers sections the size of the entries in
 
     the section is 4 bytes and for symbol stubs sections the byte size
 
     of the stubs is stored in the reserved2 field of the section
 
     structure.  */
 
 
 
  /* Section with only non-lazy symbol pointers.  */
 
  BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS = 0x6,
 
 
 
  /* Section with only lazy symbol pointers.  */
 
  BFD_MACH_O_S_LAZY_SYMBOL_POINTERS = 0x7,
 
 
 
  /* Section with only symbol stubs, byte size of stub in the reserved2
 
     field.  */
 
  BFD_MACH_O_S_SYMBOL_STUBS = 0x8,
 
 
 
  /* Section with only function pointers for initialization.  */
 
  BFD_MACH_O_S_MOD_INIT_FUNC_POINTERS = 0x9,
 
 
 
  /* Section with only function pointers for termination.  */
 
  BFD_MACH_O_S_MOD_FINI_FUNC_POINTERS = 0xa,
 
 
 
  /* Section contains symbols that are coalesced by the linkers.  */
 
  BFD_MACH_O_S_COALESCED = 0xb,
 
 
 
  /* Zero fill on demand section (possibly larger than 4 GB).  */
 
  BFD_MACH_O_S_GB_ZEROFILL = 0xc,
 
 
 
  /* Section with only pairs of function pointers for interposing.  */
 
  BFD_MACH_O_S_INTERPOSING = 0xd,
 
 
 
  /* Section with only 16 byte literals.  */
 
  BFD_MACH_O_S_16BYTE_LITERALS = 0xe,
 
 
 
  /* Section contains DTrace Object Format.  */
 
  BFD_MACH_O_S_DTRACE_DOF = 0xf,
 
 
 
  /* Section with only lazy symbol pointers to lazy loaded dylibs.  */
 
  BFD_MACH_O_S_LAZY_DYLIB_SYMBOL_POINTERS = 0x10
 
}
 
bfd_mach_o_section_type;
 
 
 
/* The flags field of a section structure is separated into two parts a section
 
   type and section attributes.  The section types are mutually exclusive (it
 
   can only have one type) but the section attributes are not (it may have more
 
   than one attribute).  */
 
 
 
#define BFD_MACH_O_SECTION_TYPE_MASK        0x000000ff
 
 
 
/* Constants for the section attributes part of the flags field of a section
 
   structure.  */
 
#define BFD_MACH_O_SECTION_ATTRIBUTES_MASK  0xffffff00
 
/* System setable attributes.  */
 
#define BFD_MACH_O_SECTION_ATTRIBUTES_SYS   0x00ffff00
 
/* User attributes.  */
 
#define BFD_MACH_O_SECTION_ATTRIBUTES_USR   0xff000000
 
 
 
typedef enum bfd_mach_o_section_attribute
 
{
 
  /* Section has local relocation entries.  */
 
  BFD_MACH_O_S_ATTR_LOC_RELOC         = 0x00000100,
 
 
 
  /* Section has external relocation entries.  */
 
  BFD_MACH_O_S_ATTR_EXT_RELOC         = 0x00000200,
 
 
 
  /* Section contains some machine instructions.  */
 
  BFD_MACH_O_S_ATTR_SOME_INSTRUCTIONS = 0x00000400,
 
 
 
  /* A debug section.  */
 
  BFD_MACH_O_S_ATTR_DEBUG             = 0x02000000,
 
 
 
  /* Used with i386 stubs.  */
 
  BFD_MACH_O_S_SELF_MODIFYING_CODE    = 0x04000000,
 
 
 
  /* Blocks are live if they reference live blocks.  */
 
  BFD_MACH_O_S_ATTR_LIVE_SUPPORT      = 0x08000000,
 
 
 
  /* No dead stripping.  */
 
  BFD_MACH_O_S_ATTR_NO_DEAD_STRIP     = 0x10000000,
 
 
 
  /* Section symbols can be stripped in files with MH_DYLDLINK flag.  */
 
  BFD_MACH_O_S_ATTR_STRIP_STATIC_SYMS = 0x20000000,
 
 
 
  /* Section contains coalesced symbols that are not to be in the TOC of an
 
     archive.  */
 
  BFD_MACH_O_S_ATTR_NO_TOC            = 0x40000000,
 
 
 
  /* Section contains only true machine instructions.  */
 
  BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS = 0x80000000
 
}
 
bfd_mach_o_section_attribute;
 
 
 
typedef struct bfd_mach_o_header
typedef struct bfd_mach_o_header
{
{
  unsigned long magic;
  unsigned long magic;
  unsigned long cputype;
  unsigned long cputype;
Line 342... Line 39...
  unsigned int version;
  unsigned int version;
  enum bfd_endian byteorder;
  enum bfd_endian byteorder;
}
}
bfd_mach_o_header;
bfd_mach_o_header;
 
 
#define BFD_MACH_O_HEADER_SIZE 28
#define BFD_MACH_O_SEGNAME_SIZE 16
#define BFD_MACH_O_HEADER_64_SIZE 32
#define BFD_MACH_O_SECTNAME_SIZE 16
 
 
typedef struct bfd_mach_o_section
typedef struct bfd_mach_o_section
{
{
  asection *bfdsection;
  /* Fields present in the file.  */
  char sectname[16 + 1];
  char sectname[BFD_MACH_O_SECTNAME_SIZE + 1];  /* Always NUL padded.  */
  char segname[16 + 1];
  char segname[BFD_MACH_O_SEGNAME_SIZE + 1];
  bfd_vma addr;
  bfd_vma addr;
  bfd_vma size;
  bfd_vma size;
  bfd_vma offset;
  bfd_vma offset;
  unsigned long align;
  unsigned long align;
  bfd_vma reloff;
  bfd_vma reloff;
  unsigned long nreloc;
  unsigned long nreloc;
  unsigned long flags;
  unsigned long flags;
  unsigned long reserved1;
  unsigned long reserved1;
  unsigned long reserved2;
  unsigned long reserved2;
  unsigned long reserved3;
  unsigned long reserved3;
 
 
 
  /* Corresponding bfd section.  */
 
  asection *bfdsection;
 
 
 
  /* Simply linked list.  */
 
  struct bfd_mach_o_section *next;
}
}
bfd_mach_o_section;
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
typedef struct bfd_mach_o_segment_command
{
{
  char segname[16 + 1];
  char segname[16 + 1];
  bfd_vma vmaddr;
  bfd_vma vmaddr;
Line 376... Line 77...
  unsigned long filesize;
  unsigned long filesize;
  unsigned long maxprot;        /* Maximum permitted protection.  */
  unsigned long maxprot;        /* Maximum permitted protection.  */
  unsigned long initprot;       /* Initial protection.  */
  unsigned long initprot;       /* Initial protection.  */
  unsigned long nsects;
  unsigned long nsects;
  unsigned long flags;
  unsigned long flags;
  bfd_mach_o_section *sections;
 
 
  /* Linked list of sections.  */
 
  bfd_mach_o_section *sect_head;
 
  bfd_mach_o_section *sect_tail;
}
}
bfd_mach_o_segment_command;
bfd_mach_o_segment_command;
#define BFD_MACH_O_LC_SEGMENT_SIZE 56
 
#define BFD_MACH_O_LC_SEGMENT_64_SIZE 72
 
 
 
/* Protection flags.  */
/* Protection flags.  */
#define BFD_MACH_O_PROT_READ    0x01
#define BFD_MACH_O_PROT_READ    0x01
#define BFD_MACH_O_PROT_WRITE   0x02
#define BFD_MACH_O_PROT_WRITE   0x02
#define BFD_MACH_O_PROT_EXECUTE 0x04
#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.  */
/* Expanded internal representation of a relocation entry.  */
typedef struct bfd_mach_o_reloc_info
typedef struct bfd_mach_o_reloc_info
{
{
  bfd_vma r_address;
  bfd_vma r_address;
  bfd_vma r_value;
  bfd_vma r_value;
Line 452... Line 113...
  unsigned char n_type;
  unsigned char n_type;
  unsigned char n_sect;
  unsigned char n_sect;
  unsigned short n_desc;
  unsigned short n_desc;
}
}
bfd_mach_o_asymbol;
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
typedef struct bfd_mach_o_symtab_command
{
{
  unsigned int symoff;
  unsigned int symoff;
  unsigned int nsyms;
  unsigned int nsyms;
Line 560... Line 219...
  /* Statically linked address of the start of the data for this module
  /* Statically linked address of the start of the data for this module
     in the __module_info section of the __OBJC_segment.  */
     in the __module_info section of the __OBJC_segment.  */
  bfd_vma objc_module_info_addr;
  bfd_vma objc_module_info_addr;
}
}
bfd_mach_o_dylib_module;
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
typedef struct bfd_mach_o_dylib_table_of_content
{
{
  /* Index into the symbol table to the defined external symbol.  */
  /* Index into the symbol table to the defined external symbol.  */
  unsigned long symbol_index;
  unsigned long symbol_index;
 
 
  /* Index into the module table to the module for this entry.  */
  /* Index into the module table to the module for this entry.  */
  unsigned long module_index;
  unsigned long module_index;
}
}
bfd_mach_o_dylib_table_of_content;
bfd_mach_o_dylib_table_of_content;
#define BFD_MACH_O_TABLE_OF_CONTENT_SIZE 8
 
 
 
typedef struct bfd_mach_o_dylib_reference
typedef struct bfd_mach_o_dylib_reference
{
{
  /* Index into the symbol table for the symbol being referenced.  */
  /* Index into the symbol table for the symbol being referenced.  */
  unsigned long isym;
  unsigned long isym;
Line 804... Line 460...
  unsigned int export_off;
  unsigned int export_off;
  unsigned int export_size;
  unsigned int export_size;
}
}
bfd_mach_o_dyld_info_command;
bfd_mach_o_dyld_info_command;
 
 
 
typedef struct bfd_mach_o_version_min_command
 
{
 
  unsigned char rel;
 
  unsigned char maj;
 
  unsigned char min;
 
  unsigned int reserved;
 
}
 
bfd_mach_o_version_min_command;
 
 
typedef struct bfd_mach_o_load_command
typedef struct bfd_mach_o_load_command
{
{
  bfd_mach_o_load_command_type type;
  bfd_mach_o_load_command_type type;
  bfd_boolean type_required;
  bfd_boolean type_required;
  unsigned int offset;
  unsigned int offset;
Line 823... Line 488...
    bfd_mach_o_prebound_dylib_command prebound_dylib;
    bfd_mach_o_prebound_dylib_command prebound_dylib;
    bfd_mach_o_uuid_command uuid;
    bfd_mach_o_uuid_command uuid;
    bfd_mach_o_linkedit_command linkedit;
    bfd_mach_o_linkedit_command linkedit;
    bfd_mach_o_str_command str;
    bfd_mach_o_str_command str;
    bfd_mach_o_dyld_info_command dyld_info;
    bfd_mach_o_dyld_info_command dyld_info;
 
    bfd_mach_o_version_min_command version_min;
  }
  }
  command;
  command;
}
}
bfd_mach_o_load_command;
bfd_mach_o_load_command;
 
 
Line 844... Line 510...
  /* Used while writting: current length of the output file.  This is used
  /* Used while writting: current length of the output file.  This is used
     to allocate space in the file.  */
     to allocate space in the file.  */
  ufile_ptr filelen;
  ufile_ptr filelen;
 
 
  /* As symtab is referenced by other load command, it is handy to have
  /* As symtab is referenced by other load command, it is handy to have
     a direct access to it.  Also it is not clearly stated, only one symtab
     a direct access to it.  Although it is not clearly stated, only one symtab
     is expected.  */
     is expected.  */
  bfd_mach_o_symtab_command *symtab;
  bfd_mach_o_symtab_command *symtab;
  bfd_mach_o_dysymtab_command *dysymtab;
  bfd_mach_o_dysymtab_command *dysymtab;
}
}
bfd_mach_o_data_struct;
bfd_mach_o_data_struct;
Line 866... Line 532...
 
 
#define bfd_mach_o_get_data(abfd) ((abfd)->tdata.mach_o_data)
#define bfd_mach_o_get_data(abfd) ((abfd)->tdata.mach_o_data)
#define bfd_mach_o_get_backend_data(abfd) \
#define bfd_mach_o_get_backend_data(abfd) \
  ((bfd_mach_o_backend_data*)(abfd)->xvec->backend_data)
  ((bfd_mach_o_backend_data*)(abfd)->xvec->backend_data)
 
 
 
/* Get the Mach-O header for section SEC.  */
 
#define bfd_mach_o_get_mach_o_section(sec) \
 
  ((bfd_mach_o_section *)(sec)->used_by_bfd)
 
 
bfd_boolean bfd_mach_o_valid (bfd *);
bfd_boolean bfd_mach_o_valid (bfd *);
int bfd_mach_o_read_dysymtab_symbol (bfd *, bfd_mach_o_dysymtab_command *, bfd_mach_o_symtab_command *, bfd_mach_o_asymbol *, unsigned long);
int bfd_mach_o_read_dysymtab_symbol (bfd *, bfd_mach_o_dysymtab_command *, bfd_mach_o_symtab_command *, bfd_mach_o_asymbol *, unsigned long);
int bfd_mach_o_scan_start_address (bfd *);
int bfd_mach_o_scan_start_address (bfd *);
int bfd_mach_o_scan (bfd *, bfd_mach_o_header *, bfd_mach_o_data_struct *);
int bfd_mach_o_scan (bfd *, bfd_mach_o_header *, bfd_mach_o_data_struct *);
bfd_boolean bfd_mach_o_mkobject_init (bfd *);
bfd_boolean bfd_mach_o_mkobject_init (bfd *);
Line 877... Line 547...
const bfd_target *bfd_mach_o_core_p (bfd *);
const bfd_target *bfd_mach_o_core_p (bfd *);
const bfd_target *bfd_mach_o_archive_p (bfd *);
const bfd_target *bfd_mach_o_archive_p (bfd *);
bfd *bfd_mach_o_openr_next_archived_file (bfd *, bfd *);
bfd *bfd_mach_o_openr_next_archived_file (bfd *, bfd *);
bfd_boolean bfd_mach_o_set_arch_mach (bfd *, enum bfd_architecture,
bfd_boolean bfd_mach_o_set_arch_mach (bfd *, enum bfd_architecture,
                                      unsigned long);
                                      unsigned long);
int bfd_mach_o_lookup_section (bfd *, asection *, bfd_mach_o_load_command **, bfd_mach_o_section **);
 
int bfd_mach_o_lookup_command (bfd *, bfd_mach_o_load_command_type, bfd_mach_o_load_command **);
int bfd_mach_o_lookup_command (bfd *, bfd_mach_o_load_command_type, bfd_mach_o_load_command **);
 
bfd_boolean bfd_mach_o_new_section_hook (bfd *, asection *);
bfd_boolean bfd_mach_o_write_contents (bfd *);
bfd_boolean bfd_mach_o_write_contents (bfd *);
bfd_boolean bfd_mach_o_bfd_copy_private_symbol_data (bfd *, asymbol *,
bfd_boolean bfd_mach_o_bfd_copy_private_symbol_data (bfd *, asymbol *,
                                                     bfd *, asymbol *);
                                                     bfd *, asymbol *);
bfd_boolean bfd_mach_o_bfd_copy_private_section_data (bfd *, asection *,
bfd_boolean bfd_mach_o_bfd_copy_private_section_data (bfd *, asection *,
                                                      bfd *, asection *);
                                                      bfd *, asection *);
Line 911... Line 581...
bfd_boolean bfd_mach_o_build_commands (bfd *);
bfd_boolean bfd_mach_o_build_commands (bfd *);
bfd_boolean bfd_mach_o_set_section_contents (bfd *, asection *, const void *,
bfd_boolean bfd_mach_o_set_section_contents (bfd *, asection *, const void *,
                                             file_ptr, bfd_size_type);
                                             file_ptr, bfd_size_type);
unsigned int bfd_mach_o_version (bfd *);
unsigned int bfd_mach_o_version (bfd *);
 
 
 
unsigned int bfd_mach_o_get_section_type_from_name (const char *);
 
unsigned int bfd_mach_o_get_section_attribute_from_name (const char *);
 
void bfd_mach_o_normalize_section_name (const char *, const char *,
 
                                        const char **, flagword *);
 
 
extern const bfd_target mach_o_fat_vec;
extern const bfd_target mach_o_fat_vec;
 
 
#endif /* _BFD_MACH_O_H_ */
#endif /* _BFD_MACH_O_H_ */
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.