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 161 and 166

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

Rev 161 Rev 166
Line 1... Line 1...
/* Mach-O support for BFD.
/* Mach-O support for BFD.
   Copyright 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009
   Copyright 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2011,
 
   2012
   Free Software Foundation, Inc.
   Free Software Foundation, Inc.
 
 
   This file is part of BFD, the Binary File Descriptor library.
   This file is part of BFD, the Binary File Descriptor library.
 
 
   This program is free software; you can redistribute it and/or modify
   This program is free software; you can redistribute it and/or modify
Line 39... Line 40...
  unsigned int version;
  unsigned int version;
  enum bfd_endian byteorder;
  enum bfd_endian byteorder;
}
}
bfd_mach_o_header;
bfd_mach_o_header;
 
 
 
typedef struct bfd_mach_o_asymbol
 
{
 
  /* The actual symbol which the rest of BFD works with.  */
 
  asymbol symbol;
 
 
 
  /* Mach-O symbol fields.  */
 
  unsigned char n_type;
 
  unsigned char n_sect;
 
  unsigned short n_desc;
 
}
 
bfd_mach_o_asymbol;
 
 
#define BFD_MACH_O_SEGNAME_SIZE 16
#define BFD_MACH_O_SEGNAME_SIZE 16
#define BFD_MACH_O_SECTNAME_SIZE 16
#define BFD_MACH_O_SECTNAME_SIZE 16
 
 
typedef struct bfd_mach_o_section
typedef struct bfd_mach_o_section
{
{
Line 61... Line 74...
  unsigned long reserved3;
  unsigned long reserved3;
 
 
  /* Corresponding bfd section.  */
  /* Corresponding bfd section.  */
  asection *bfdsection;
  asection *bfdsection;
 
 
 
  /* An array holding the indirect symbols for this section.
 
     NULL values indicate local symbols.
 
     The number of symbols is determined from the section size and type.  */
 
 
 
  bfd_mach_o_asymbol **indirect_syms;
 
 
  /* Simply linked list.  */
  /* Simply linked list.  */
  struct bfd_mach_o_section *next;
  struct bfd_mach_o_section *next;
}
}
bfd_mach_o_section;
bfd_mach_o_section;
 
 
typedef struct bfd_mach_o_segment_command
typedef struct bfd_mach_o_segment_command
{
{
  char segname[16 + 1];
  char segname[BFD_MACH_O_SEGNAME_SIZE + 1];
  bfd_vma vmaddr;
  bfd_vma vmaddr;
  bfd_vma vmsize;
  bfd_vma vmsize;
  bfd_vma fileoff;
  bfd_vma fileoff;
  unsigned long filesize;
  unsigned long filesize;
  unsigned long maxprot;        /* Maximum permitted protection.  */
  unsigned long maxprot;        /* Maximum permitted protection.  */
Line 102... Line 121...
  unsigned int r_length : 2;
  unsigned int r_length : 2;
  unsigned int r_extern : 1;
  unsigned int r_extern : 1;
}
}
bfd_mach_o_reloc_info;
bfd_mach_o_reloc_info;
 
 
typedef struct bfd_mach_o_asymbol
/* The symbol table is sorted like this:
{
 (1) local.
  /* The actual symbol which the rest of BFD works with.  */
        (otherwise in order of generation)
  asymbol symbol;
 (2) external defined
 
        (sorted by name)
  /* Fields from Mach-O symbol.  */
 (3) external undefined / common
  unsigned char n_type;
        (sorted by name)
  unsigned char n_sect;
*/
  unsigned short n_desc;
 
}
 
bfd_mach_o_asymbol;
 
 
 
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 436... Line 452...
  unsigned long str_len;
  unsigned long str_len;
  char *str;
  char *str;
}
}
bfd_mach_o_str_command;
bfd_mach_o_str_command;
 
 
 
typedef struct bfd_mach_o_fvmlib_command
 
{
 
  unsigned int name_offset;
 
  unsigned int name_len;
 
  char *name_str;
 
  unsigned int minor_version;
 
  unsigned int header_addr;
 
}
 
bfd_mach_o_fvmlib_command;
 
 
typedef struct bfd_mach_o_dyld_info_command
typedef struct bfd_mach_o_dyld_info_command
{
{
  /* File offset and size to rebase info.  */
  /* File offset and size to rebase info.  */
  unsigned int rebase_off;
  unsigned int rebase_off;
  unsigned int rebase_size;
  unsigned int rebase_size;
Line 469... Line 495...
  unsigned char min;
  unsigned char min;
  unsigned int reserved;
  unsigned int reserved;
}
}
bfd_mach_o_version_min_command;
bfd_mach_o_version_min_command;
 
 
 
typedef struct bfd_mach_o_encryption_info_command
 
{
 
  unsigned int cryptoff;
 
  unsigned int cryptsize;
 
  unsigned int cryptid;
 
}
 
bfd_mach_o_encryption_info_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 489... Line 523...
    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;
    bfd_mach_o_version_min_command version_min;
 
    bfd_mach_o_encryption_info_command encryption_info;
 
    bfd_mach_o_fvmlib_command fvmlib;
  }
  }
  command;
  command;
}
}
bfd_mach_o_load_command;
bfd_mach_o_load_command;
 
 
Line 505... Line 541...
 
 
  /* Flatten array of sections.  The array is 0-based.  */
  /* Flatten array of sections.  The array is 0-based.  */
  unsigned long nsects;
  unsigned long nsects;
  bfd_mach_o_section **sections;
  bfd_mach_o_section **sections;
 
 
  /* Used while writting: current length of the output file.  This is used
  /* Used while writing: 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.  Although 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;
 
 
 
  /* A place to stash dwarf2 info for this bfd.  */
 
  void *dwarf2_find_line_info;
 
 
 
  /* BFD of .dSYM file. */
 
  bfd *dsym_bfd;
 
 
 
  /* Cache of dynamic relocs. */
 
  arelent *dyn_reloc_cache;
}
}
bfd_mach_o_data_struct;
bfd_mach_o_data_struct;
 
 
/* Target specific routines.  */
typedef struct bfd_mach_o_xlat_name
typedef struct bfd_mach_o_backend_data
 
{
{
  enum bfd_architecture arch;
  const char *name;
  bfd_boolean (*_bfd_mach_o_swap_reloc_in)(arelent *, bfd_mach_o_reloc_info *);
  unsigned long val;
  bfd_boolean (*_bfd_mach_o_swap_reloc_out)(arelent *, bfd_mach_o_reloc_info *);
 
  bfd_boolean (*_bfd_mach_o_print_thread)(bfd *, bfd_mach_o_thread_flavour *,
 
                                          void *, char *);
 
}
}
bfd_mach_o_backend_data;
bfd_mach_o_xlat_name;
 
 
 
/* Target specific routines.  */
 
 
#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.  */
/* Get the Mach-O header for section SEC.  */
#define bfd_mach_o_get_mach_o_section(sec) \
#define bfd_mach_o_get_mach_o_section(sec) \
  ((bfd_mach_o_section *)(sec)->used_by_bfd)
  ((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_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_init (bfd *);
bfd_boolean bfd_mach_o_mkobject_init (bfd *);
const bfd_target *bfd_mach_o_object_p (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_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 *);
Line 555... Line 595...
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 *);
bfd_boolean bfd_mach_o_bfd_copy_private_bfd_data (bfd *, bfd *);
bfd_boolean bfd_mach_o_bfd_copy_private_bfd_data (bfd *, bfd *);
 
bfd_boolean bfd_mach_o_bfd_set_private_flags (bfd *, flagword);
long bfd_mach_o_get_symtab_upper_bound (bfd *);
long bfd_mach_o_get_symtab_upper_bound (bfd *);
long bfd_mach_o_canonicalize_symtab (bfd *, asymbol **);
long bfd_mach_o_canonicalize_symtab (bfd *, asymbol **);
long bfd_mach_o_get_synthetic_symtab (bfd *, long, asymbol **, long,
long bfd_mach_o_get_synthetic_symtab (bfd *, long, asymbol **, long,
                                      asymbol **, asymbol **ret);
                                      asymbol **, asymbol **ret);
long bfd_mach_o_get_reloc_upper_bound (bfd *, asection *);
long bfd_mach_o_get_reloc_upper_bound (bfd *, asection *);
Line 566... Line 607...
long bfd_mach_o_get_dynamic_reloc_upper_bound (bfd *);
long bfd_mach_o_get_dynamic_reloc_upper_bound (bfd *);
long bfd_mach_o_canonicalize_dynamic_reloc (bfd *, arelent **, asymbol **);
long bfd_mach_o_canonicalize_dynamic_reloc (bfd *, arelent **, asymbol **);
asymbol *bfd_mach_o_make_empty_symbol (bfd *);
asymbol *bfd_mach_o_make_empty_symbol (bfd *);
void bfd_mach_o_get_symbol_info (bfd *, asymbol *, symbol_info *);
void bfd_mach_o_get_symbol_info (bfd *, asymbol *, symbol_info *);
void bfd_mach_o_print_symbol (bfd *, PTR, asymbol *, bfd_print_symbol_type);
void bfd_mach_o_print_symbol (bfd *, PTR, asymbol *, bfd_print_symbol_type);
bfd_boolean bfd_mach_o_bfd_print_private_bfd_data (bfd *, PTR);
 
int bfd_mach_o_sizeof_headers (bfd *, struct bfd_link_info *);
int bfd_mach_o_sizeof_headers (bfd *, struct bfd_link_info *);
unsigned long bfd_mach_o_stack_addr (enum bfd_mach_o_cpu_type);
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 *);
int bfd_mach_o_core_fetch_environment (bfd *, unsigned char **, unsigned int *);
char *bfd_mach_o_core_file_failing_command (bfd *);
char *bfd_mach_o_core_file_failing_command (bfd *);
int bfd_mach_o_core_file_failing_signal (bfd *);
int bfd_mach_o_core_file_failing_signal (bfd *);
Line 581... Line 621...
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_type_from_name (bfd *, const char *);
unsigned int bfd_mach_o_get_section_attribute_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 *,
 
 
void bfd_mach_o_convert_section_name_to_bfd (bfd *, const char *, const char *,
                                        const char **, flagword *);
                                        const char **, flagword *);
 
bfd_boolean bfd_mach_o_find_nearest_line (bfd *, asection *, asymbol **,
 
                                          bfd_vma, const char **,
 
                                          const char **, unsigned int *);
 
bfd_boolean bfd_mach_o_close_and_cleanup (bfd *);
 
bfd_boolean bfd_mach_o_free_cached_info (bfd *);
 
 
 
unsigned int bfd_mach_o_section_get_nbr_indirect (bfd *, bfd_mach_o_section *);
 
unsigned int bfd_mach_o_section_get_entry_size (bfd *, bfd_mach_o_section *);
 
bfd_boolean bfd_mach_o_read_symtab_symbols (bfd *);
 
bfd_boolean bfd_mach_o_read_symtab_strtab (bfd *abfd);
 
 
 
/* A placeholder in case we need to suppress emitting the dysymtab for some
 
   reason (e.g. compatibility with older system versions).  */
 
#define bfd_mach_o_should_emit_dysymtab(x) TRUE
 
 
 
extern const bfd_mach_o_xlat_name bfd_mach_o_section_attribute_name[];
 
extern const bfd_mach_o_xlat_name bfd_mach_o_section_type_name[];
 
 
extern const bfd_target mach_o_fat_vec;
extern const bfd_target mach_o_fat_vec;
 
 
 
/* Interfaces between BFD names and Mach-O names.  */
 
 
 
typedef struct mach_o_section_name_xlat
 
{
 
  const char *bfd_name;
 
  const char *mach_o_name;
 
  flagword bfd_flags;
 
  unsigned int macho_sectype;
 
  unsigned int macho_secattr;
 
  unsigned int sectalign;
 
} mach_o_section_name_xlat;
 
 
 
typedef struct mach_o_segment_name_xlat
 
{
 
  const char *segname;
 
  const mach_o_section_name_xlat *sections;
 
} mach_o_segment_name_xlat;
 
 
 
const mach_o_section_name_xlat *
 
bfd_mach_o_section_data_for_mach_sect (bfd *, const char *, const char *);
 
const mach_o_section_name_xlat *
 
bfd_mach_o_section_data_for_bfd_name (bfd *, const char *, const char **);
 
 
 
typedef struct bfd_mach_o_backend_data
 
{
 
  enum bfd_architecture arch;
 
  bfd_boolean (*_bfd_mach_o_swap_reloc_in)(arelent *, bfd_mach_o_reloc_info *);
 
  bfd_boolean (*_bfd_mach_o_swap_reloc_out)(arelent *, bfd_mach_o_reloc_info *);
 
  bfd_boolean (*_bfd_mach_o_print_thread)(bfd *, bfd_mach_o_thread_flavour *,
 
                                          void *, char *);
 
  const mach_o_segment_name_xlat *segsec_names_xlat;
 
  bfd_boolean (*bfd_mach_o_section_type_valid_for_target) (unsigned long);
 
}
 
bfd_mach_o_backend_data;
 
 
 
/* Values used in symbol.udata.i, to signal that the mach-o-specific data in the
 
   symbol are not yet set, or need validation (where this is possible).  */
 
 
 
#define SYM_MACHO_FIELDS_UNSET ((bfd_vma) -1)
 
#define SYM_MACHO_FIELDS_NOT_VALIDATED ((bfd_vma) -2)
 
 
#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-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.