daily update
[deliverable/binutils-gdb.git] / bfd / mach-o.h
index f78027321de8db8fdd67abf98eeae12288296d7f..615a4b3eda5846fa787f865fc6059b0162f3495e 100644 (file)
@@ -1,12 +1,12 @@
 /* Mach-O support for BFD.
-   Copyright 1999, 2000, 2001, 2002
+   Copyright 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008
    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 2 of the License, or
+   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,
@@ -16,7 +16,8 @@
 
    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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
 
 #ifndef _BFD_MACH_O_H_
 #define _BFD_MACH_O_H_
 #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_SECT  0x0e        /* Defined in section number n_sect.  */
-#define BFD_MACH_O_N_PBUD  0x0c /* Prebound undefined (defined in a dylib).  */
 #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
+
+#define BFD_MACH_O_SYM_NTYPE(SYM) (((SYM)->udata.i >> 24) & 0xff)
+#define BFD_MACH_O_SYM_NSECT(SYM) (((SYM)->udata.i >> 16) & 0xff)
+#define BFD_MACH_O_SYM_NDESC(SYM) ((SYM)->udata.i & 0xffff)
 
 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_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_STATE_64 = 5
+}
 bfd_mach_o_ppc_thread_flavour;
 
+/* Defined in <mach/i386/thread_status.h> */
 typedef enum bfd_mach_o_i386_thread_flavour
-  {
-    BFD_MACH_O_i386_NEW_THREAD_STATE = 1,
-    BFD_MACH_O_i386_FLOAT_STATE = 2,
-    BFD_MACH_O_i386_ISA_PORT_MAP_STATE = 3,
-    BFD_MACH_O_i386_V86_ASSIST_STATE = 4,
-    BFD_MACH_O_i386_REGS_SEGS_STATE = 5,
-    BFD_MACH_O_i386_THREAD_SYSCALL_STATE = 6,
-    BFD_MACH_O_i386_THREAD_STATE_NONE = 7,
-    BFD_MACH_O_i386_SAVED_STATE = 8,
-    BFD_MACH_O_i386_THREAD_STATE = -1,
-    BFD_MACH_O_i386_THREAD_FPSTATE = -2,
-    BFD_MACH_O_i386_THREAD_EXCEPTSTATE = -3,
-    BFD_MACH_O_i386_THREAD_CTHREADSTATE = -4,
-  }
+{
+  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_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 dynamicly linked shared library.  */
-    BFD_MACH_O_LC_ID_DYLIB = 0xd,      /* Dynamicly 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 dynamicly.  */
-    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 dynamicly linked shared library that is allowed to be
+{
+  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_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_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_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_filetype
-  {
-    BFD_MACH_O_MH_OBJECT = 1,
-    BFD_MACH_O_MH_EXECUTE = 2,
-    BFD_MACH_O_MH_FVMLIB = 3,
-    BFD_MACH_O_MH_CORE = 4,
-    BFD_MACH_O_MH_PRELOAD = 5,
-    BFD_MACH_O_MH_DYLIB = 6,
-    BFD_MACH_O_MH_DYLINKER = 7,
-    BFD_MACH_O_MH_BUNDLE = 8
-  }
+{
+  BFD_MACH_O_MH_OBJECT = 1,
+  BFD_MACH_O_MH_EXECUTE = 2,
+  BFD_MACH_O_MH_FVMLIB = 3,
+  BFD_MACH_O_MH_CORE = 4,
+  BFD_MACH_O_MH_PRELOAD = 5,
+  BFD_MACH_O_MH_DYLIB = 6,
+  BFD_MACH_O_MH_DYLINKER = 7,
+  BFD_MACH_O_MH_BUNDLE = 8
+}
 bfd_mach_o_filetype;
 
 /* Constants for the type of a section.  */
 
 typedef enum bfd_mach_o_section_type
-  {
-    /* Regular section.  */
-    BFD_MACH_O_S_REGULAR = 0x0,
+{
+  /* Regular section.  */
+  BFD_MACH_O_S_REGULAR = 0x0,
 
-    /* Zero fill on demand section.  */
-    BFD_MACH_O_S_ZEROFILL = 0x1,
+  /* 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 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 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 8 byte literals.  */
+  BFD_MACH_O_S_8BYTE_LITERALS = 0x4,
 
-    /* Section with only pointers to literals.  */
-    BFD_MACH_O_S_LITERAL_POINTERS = 0x5,
+  /* 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.  */
+  /* 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 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 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 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 initialization.  */
+  BFD_MACH_O_S_MOD_INIT_FUNC_POINTERS = 0x9
+}
 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
+
+/* Section has local relocation entries.  */
+#define BFD_MACH_O_S_ATTR_LOC_RELOC         0x00000100
+
+/* Section has external relocation entries.  */  
+#define BFD_MACH_O_S_ATTR_EXT_RELOC         0x00000200
+
+/* Section contains some machine instructions.  */
+#define BFD_MACH_O_S_ATTR_SOME_INSTRUCTIONS 0x00004000
+
+#define BFD_MACH_O_S_ATTR_DEBUG             0x02000000
+
+/* Section contains only true machine instructions.  */
+#define BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS 0x80000000
+
 typedef unsigned long bfd_mach_o_cpu_subtype;
 
 typedef struct bfd_mach_o_header
@@ -182,6 +236,9 @@ typedef struct bfd_mach_o_header
   unsigned long ncmds;
   unsigned long sizeofcmds;
   unsigned long flags;
+  unsigned int reserved;
+  /* Version 1: 32 bits, version 2: 64 bits.  */
+  unsigned int version;
   enum bfd_endian byteorder;
 }
 bfd_mach_o_header;
@@ -200,16 +257,19 @@ typedef struct bfd_mach_o_section
   unsigned long flags;
   unsigned long reserved1;
   unsigned long reserved2;
+  unsigned long reserved3;
 }
 bfd_mach_o_section;
 
 typedef struct bfd_mach_o_segment_command
 {
-  char segname[16];
+  char segname[16 + 1];
   bfd_vma vmaddr;
   bfd_vma vmsize;
   bfd_vma fileoff;
   unsigned long filesize;
+  unsigned long maxprot;       /* Maximum permitted protection.  */
+  unsigned long initprot;      /* Initial protection.  */
   unsigned long nsects;
   unsigned long flags;
   bfd_mach_o_section *sections;
@@ -217,6 +277,11 @@ typedef struct bfd_mach_o_segment_command
 }
 bfd_mach_o_segment_command;
 
+/* Protection flags.  */
+#define BFD_MACH_O_PROT_READ    0x01
+#define BFD_MACH_O_PROT_WRITE   0x02
+#define BFD_MACH_O_PROT_EXECUTE 0x04
+
 typedef struct bfd_mach_o_symtab_command
 {
   unsigned long symoff;
@@ -231,7 +296,7 @@ typedef struct bfd_mach_o_symtab_command
 bfd_mach_o_symtab_command;
 
 /* This is the second set of the symbolic information which is used to support
-   the data structures for the dynamicly link editor.
+   the data structures for the dynamically link editor.
 
    The original set of symbolic information in the symtab_command which contains
    the symbol and string tables must also be present when this load command is
@@ -250,7 +315,7 @@ bfd_mach_o_symtab_command;
        reference symbol table
        indirect symbol table
    The first three tables above (the table of contents, module table and
-   reference symbol table) are only present if the file is a dynamicly linked
+   reference symbol table) are only present if the file is a dynamically linked
    shared library.  For executable and object modules, which are files
    containing only one module, the information that would be in these three
    tables is determined as follows:
@@ -259,7 +324,7 @@ bfd_mach_o_symtab_command;
                       file is part of the module.
        reference symbol table - is the defined and undefined external symbols
 
-   For dynamicly linked shared library files this load command also contains
+   For dynamically linked shared library files this load command also contains
    offsets and sizes to the pool of relocation entries for all sections
    separated into two groups:
        external relocation entries
@@ -281,7 +346,7 @@ typedef struct bfd_mach_o_dysymtab_command
 
      The last two groups are used by the dynamic binding process to do the
      binding (indirectly through the module table and the reference symbol
-     table when this is a dynamicly linked shared library file).  */
+     table when this is a dynamically linked shared library file).  */
 
   unsigned long ilocalsym;    /* Index to local symbols.  */
   unsigned long nlocalsym;    /* Number of local symbols.  */
@@ -293,7 +358,7 @@ typedef struct bfd_mach_o_dysymtab_command
   /* For the for the dynamic binding process to find which module a symbol
      is defined in the table of contents is used (analogous to the ranlib
      structure in an archive) which maps defined external symbols to modules
-     they are defined in.  This exists only in a dynamicly linked shared
+     they are defined in.  This exists only in a dynamically linked shared
      library file.  For executable and object modules the defined external
      symbols are sorted by name and is use as the table of contents.  */
 
@@ -304,7 +369,7 @@ typedef struct bfd_mach_o_dysymtab_command
      table must reflect the modules that the file was created from.  This is
      done by having a module table that has indexes and counts into the merged
      tables for each module.  The module structure that these two entries
-     refer to is described below.  This exists only in a dynamicly linked
+     refer to is described below.  This exists only in a dynamically linked
      shared library file.  For executable and object modules the file only
      contains one module so everything in the file belongs to the module.  */
 
@@ -315,7 +380,7 @@ typedef struct bfd_mach_o_dysymtab_command
      indicates the external references (defined and undefined) each module
      makes.  For each module there is an offset and a count into the
      reference symbol table for the symbols that the module references.
-     This exists only in a dynamicly linked shared library file.  For
+     This exists only in a dynamically linked shared library file.  For
      executable and object modules the defined external symbols and the
      undefined external symbols indicates the external references.  */
 
@@ -363,7 +428,7 @@ typedef struct bfd_mach_o_dysymtab_command
 
   /* All the local relocation entries are grouped together (they are not
      grouped by their module since they are only used if the object is moved
-     from it staticly link edited address).  */
+     from it statically link edited address).  */
 
   unsigned long locreloff;    /* Offset to local relocation entries.  */
   unsigned long nlocrel;      /* Number of local relocation entries.  */
@@ -376,8 +441,8 @@ bfd_mach_o_dysymtab_command;
    removed.  In which case it has the value INDIRECT_SYMBOL_LOCAL.  If the
    symbol was also absolute INDIRECT_SYMBOL_ABS is or'ed with that.  */
 
-#define INDIRECT_SYMBOL_LOCAL 0x80000000
-#define INDIRECT_SYMBOL_ABS   0x40000000
+#define BFD_MACH_O_INDIRECT_SYMBOL_LOCAL 0x80000000
+#define BFD_MACH_O_INDIRECT_SYMBOL_ABS   0x40000000
 
 typedef struct bfd_mach_o_thread_flavour
 {
@@ -397,10 +462,10 @@ bfd_mach_o_thread_command;
 
 typedef struct bfd_mach_o_dylinker_command
 {
-  unsigned long cmd;                   /* LC_ID_DYLIB or LC_LOAD_DYLIB.  */
-  unsigned long cmdsize;               /* Includes pathname string.  */
-  unsigned long name_offset;           /* Offset to library's path name.  */
-  unsigned long name_len;              /* Offset to library's path name.  */
+  unsigned long cmd;                 /* LC_ID_DYLINKER or LC_LOAD_DYLINKER.  */
+  unsigned long cmdsize;             /* Includes pathname string.  */
+  unsigned long name_offset;         /* Offset to library's path name.  */
+  unsigned long name_len;            /* Offset to library's path name.  */
   asection *section;
 }
 bfd_mach_o_dylinker_command;
@@ -429,6 +494,15 @@ typedef struct bfd_mach_o_prebound_dylib_command
 }
 bfd_mach_o_prebound_dylib_command;
 
+typedef struct bfd_mach_o_uuid_command
+{
+  unsigned long cmd;                 /* LC_PREBOUND_DYLIB.  */
+  unsigned long cmdsize;             /* Includes uuid.  */
+  unsigned char uuid[16];           /* Uuid.  */
+  asection *section;
+}
+bfd_mach_o_uuid_command;
+
 typedef struct bfd_mach_o_load_command
 {
   bfd_mach_o_load_command_type type;
@@ -444,6 +518,7 @@ typedef struct bfd_mach_o_load_command
     bfd_mach_o_dylib_command dylib;
     bfd_mach_o_dylinker_command dylinker;
     bfd_mach_o_prebound_dylib_command prebound_dylib;
+    bfd_mach_o_uuid_command uuid;
   }
   command;
 }
@@ -461,27 +536,30 @@ typedef struct mach_o_data_struct
 }
 mach_o_data_struct;
 
+#define bfd_get_mach_o_data(abfd) ((abfd)->tdata.mach_o_data)
+
 typedef struct mach_o_data_struct bfd_mach_o_data_struct;
 
-boolean            bfd_mach_o_valid                     PARAMS ((bfd *));
-int                bfd_mach_o_scan_read_symtab_symbol   PARAMS ((bfd *, bfd_mach_o_symtab_command *, asymbol *, unsigned long));
-int                bfd_mach_o_scan_read_symtab_strtab   PARAMS ((bfd *, bfd_mach_o_symtab_command *));
-int                bfd_mach_o_scan_read_symtab_symbols  PARAMS ((bfd *, bfd_mach_o_symtab_command *));
-int                bfd_mach_o_scan_read_dysymtab_symbol PARAMS ((bfd *, bfd_mach_o_dysymtab_command *, bfd_mach_o_symtab_command *, asymbol *, unsigned long));
-int                bfd_mach_o_scan_start_address        PARAMS ((bfd *));
-int                bfd_mach_o_scan                      PARAMS ((bfd *, bfd_mach_o_header *, bfd_mach_o_data_struct *));
-boolean            bfd_mach_o_mkobject                  PARAMS ((bfd *));
-const bfd_target * bfd_mach_o_object_p                  PARAMS ((bfd *));
-const bfd_target * bfd_mach_o_core_p                    PARAMS ((bfd *));
-const bfd_target * bfd_mach_o_archive_p                 PARAMS ((bfd *));
-bfd *              bfd_mach_o_openr_next_archived_file  PARAMS ((bfd *, bfd *));
-int                bfd_mach_o_lookup_section            PARAMS ((bfd *, asection *, bfd_mach_o_load_command **, bfd_mach_o_section **));
-int                bfd_mach_o_lookup_command            PARAMS ((bfd *, bfd_mach_o_load_command_type, bfd_mach_o_load_command **));
-unsigned long      bfd_mach_o_stack_addr                PARAMS ((enum bfd_mach_o_cpu_type));
-int                bfd_mach_o_core_fetch_environment    PARAMS ((bfd *, unsigned char **, unsigned int *));
-char *             bfd_mach_o_core_file_failing_command PARAMS ((bfd *));
-int                bfd_mach_o_core_file_failing_signal  PARAMS ((bfd *));
-boolean            bfd_mach_o_core_file_matches_executable_p PARAMS ((bfd *, bfd *));
+bfd_boolean        bfd_mach_o_valid  (bfd *);
+int                bfd_mach_o_scan_read_symtab_symbol        (bfd *, bfd_mach_o_symtab_command *, asymbol *, unsigned long);
+int                bfd_mach_o_scan_read_symtab_strtab        (bfd *, bfd_mach_o_symtab_command *);
+int                bfd_mach_o_scan_read_symtab_symbols       (bfd *, bfd_mach_o_symtab_command *);
+int                bfd_mach_o_scan_read_dysymtab_symbol      (bfd *, bfd_mach_o_dysymtab_command *, bfd_mach_o_symtab_command *, asymbol *, unsigned long);
+int                bfd_mach_o_scan_start_address             (bfd *);
+int                bfd_mach_o_scan                           (bfd *, bfd_mach_o_header *, bfd_mach_o_data_struct *);
+bfd_boolean        bfd_mach_o_mkobject                       (bfd *);
+const bfd_target * bfd_mach_o_object_p                       (bfd *);
+const bfd_target * bfd_mach_o_core_p                         (bfd *);
+const bfd_target * bfd_mach_o_archive_p                      (bfd *);
+bfd *              bfd_mach_o_openr_next_archived_file       (bfd *, bfd *);
+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 **);
+unsigned long      bfd_mach_o_stack_addr                     (enum bfd_mach_o_cpu_type);
+int                bfd_mach_o_core_fetch_environment         (bfd *, unsigned char **, unsigned int *);
+char *             bfd_mach_o_core_file_failing_command      (bfd *);
+int                bfd_mach_o_core_file_failing_signal       (bfd *);
+bfd_boolean        bfd_mach_o_core_file_matches_executable_p (bfd *, bfd *);
+bfd *bfd_mach_o_fat_extract (bfd *, bfd_format , const bfd_arch_info_type *);
 
 extern const bfd_target mach_o_be_vec;
 extern const bfd_target mach_o_le_vec;
This page took 0.032381 seconds and 4 git commands to generate.