[BACK]Return to bfd.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / external / gpl3 / binutils.old / lib / libbfd / arch / aarch64eb

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/external/gpl3/binutils.old/lib/libbfd/arch/aarch64eb/bfd.h between version 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2016/10/26 17:03:44 version 1.1.1.2, 2022/12/23 17:02:12
Line 1 
Line 1 
 /* This file is automatically generated.  DO NOT EDIT! */  /* This file is automatically generated.  DO NOT EDIT! */
 /* Generated from: NetBSD: mknative-binutils,v 1.9 2013/10/01 15:41:17 skrll Exp  */  /* Generated from: NetBSD: mknative-binutils,v 1.13 2020/04/04 01:34:53 christos Exp  */
 /* Generated from: NetBSD: mknative.common,v 1.11 2014/02/17 21:39:43 christos Exp  */  /* Generated from: NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp  */
   
 /* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically  /* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically
    generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",     generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
    "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",     "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
    "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",     "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
    "linker.c", "simple.c" and "compress.c".     "linker.c", "simple.c" and "compress.c".
    Run "make headers" in your build bfd/ to regenerate.  */     Run "make headers" in your build bfd/ to regenerate.  */
   
 /* Main header file for the bfd library -- portable access to object files.  /* Main header file for the bfd library -- portable access to object files.
   
    Copyright (C) 1990-2015 Free Software Foundation, Inc.     Copyright (C) 1990-2020 Free Software Foundation, Inc.
   
    Contributed by Cygnus Support.     Contributed by Cygnus Support.
   
Line 45  extern "C" {
Line 45  extern "C" {
   
 #include "ansidecl.h"  #include "ansidecl.h"
 #include "symcat.h"  #include "symcat.h"
   #include "bfd_stdint.h"
   #include "diagnostics.h"
   #include <stdarg.h>
 #include <sys/stat.h>  #include <sys/stat.h>
   
 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)  #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
Line 101  typedef BFD_HOST_64_BIT bfd_int64_t;
Line 104  typedef BFD_HOST_64_BIT bfd_int64_t;
 typedef BFD_HOST_U_64_BIT bfd_uint64_t;  typedef BFD_HOST_U_64_BIT bfd_uint64_t;
 #endif  #endif
   
   #ifdef HAVE_INTTYPES_H
   # include <inttypes.h>
   #else
   # if BFD_HOST_64BIT_LONG
   #  define BFD_PRI64 "l"
   # elif defined (__MSVCRT__)
   #  define BFD_PRI64 "I64"
   # else
   #  define BFD_PRI64 "ll"
   # endif
   # undef PRId64
   # define PRId64 BFD_PRI64 "d"
   # undef PRIu64
   # define PRIu64 BFD_PRI64 "u"
   # undef PRIx64
   # define PRIx64 BFD_PRI64 "x"
   #endif
   
 #if BFD_ARCH_SIZE >= 64  #if BFD_ARCH_SIZE >= 64
 #define BFD64  #define BFD64
 #endif  #endif
Line 114  typedef BFD_HOST_U_64_BIT bfd_uint64_t;
Line 135  typedef BFD_HOST_U_64_BIT bfd_uint64_t;
 #endif  #endif
   
 /* Declaring a type wide enough to hold a host long and a host pointer.  */  /* Declaring a type wide enough to hold a host long and a host pointer.  */
 #define BFD_HOSTPTR_T   unsigned long  #define BFD_HOSTPTR_T unsigned long
 typedef BFD_HOSTPTR_T bfd_hostptr_t;  typedef BFD_HOSTPTR_T bfd_hostptr_t;
   
 /* Forward declaration.  */  /* Forward declaration.  */
Line 225  bfd_format;
Line 246  bfd_format;
 /* A count of carsyms (canonical archive symbols).  */  /* A count of carsyms (canonical archive symbols).  */
 typedef unsigned long symindex;  typedef unsigned long symindex;
   
 /* How to perform a relocation.  */  
 typedef const struct reloc_howto_struct reloc_howto_type;  
   
 #define BFD_NO_MORE_SYMBOLS ((symindex) ~0)  #define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
   
 /* General purpose part of a symbol X;  
    target specific parts are in libcoff.h, libaout.h, etc.  */  
   
 #define bfd_get_section(x) ((x)->section)  
 #define bfd_get_output_section(x) ((x)->section->output_section)  
 #define bfd_set_section(x,y) ((x)->section) = (y)  
 #define bfd_asymbol_base(x) ((x)->section->vma)  
 #define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)  
 #define bfd_asymbol_name(x) ((x)->name)  
 /*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/  
 #define bfd_asymbol_bfd(x) ((x)->the_bfd)  
 #define bfd_asymbol_flavour(x)                  \  
   (((x)->flags & BSF_SYNTHETIC) != 0            \  
    ? bfd_target_unknown_flavour                 \  
    : bfd_asymbol_bfd (x)->xvec->flavour)  
   
 /* A canonical archive symbol.  */  /* A canonical archive symbol.  */
 /* This is a type pun with struct ranlib on purpose!  */  /* This is a type pun with struct ranlib on purpose!  */
 typedef struct carsym  typedef struct carsym
 {  {
   char *name;    const char *name;
   file_ptr file_offset; /* Look here to find the file.  */    file_ptr file_offset; /* Look here to find the file.  */
 }  }
 carsym;                 /* To make these you call a carsymogen.  */  carsym;                 /* To make these you call a carsymogen.  */
   
 /* Used in generating armaps (archive tables of contents).  /* Used in generating armaps (archive tables of contents).
    Perhaps just a forward definition would do?  */     Perhaps just a forward definition would do?  */
 struct orl                      /* Output ranlib.  */  struct orl              /* Output ranlib.  */
 {  {
   char **name;          /* Symbol name.  */    char **name;          /* Symbol name.  */
   union    union
Line 267  struct orl    /* Output ranlib.  */
Line 269  struct orl    /* Output ranlib.  */
   } u;                  /* bfd* or file position.  */    } u;                  /* bfd* or file position.  */
   int namidx;           /* Index into string table.  */    int namidx;           /* Index into string table.  */
 };  };
   
 /* Linenumber stuff.  */  /* Linenumber stuff.  */
 typedef struct lineno_cache_entry  typedef struct lineno_cache_entry
 {  {
Line 275  typedef struct lineno_cache_entry
Line 277  typedef struct lineno_cache_entry
   union    union
   {    {
     struct bfd_symbol *sym;     /* Function name.  */      struct bfd_symbol *sym;     /* Function name.  */
     bfd_vma offset;                     /* Offset into section.  */      bfd_vma offset;             /* Offset into section.  */
   } u;    } u;
 }  }
 alent;  alent;
   
 /* Object and core file sections.  */  /* Object and core file sections.  */
   typedef struct bfd_section *sec_ptr;
   
 #define align_power(addr, align)        \  #define align_power(addr, align)        \
   (((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))    (((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
   
 typedef struct bfd_section *sec_ptr;  /* Align an address upward to a boundary, expressed as a number of bytes.
      E.g. align to an 8-byte boundary with argument of 8.  Take care never
 #define bfd_get_section_name(bfd, ptr) ((void) bfd, (ptr)->name)     to wrap around if the address is within boundary-1 of the end of the
 #define bfd_get_section_vma(bfd, ptr) ((void) bfd, (ptr)->vma)     address space.  */
 #define bfd_get_section_lma(bfd, ptr) ((void) bfd, (ptr)->lma)  #define BFD_ALIGN(this, boundary)                                         \
 #define bfd_get_section_alignment(bfd, ptr) ((void) bfd, \    ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))              \
                                              (ptr)->alignment_power)     ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
 #define bfd_section_name(bfd, ptr) ((ptr)->name)     : ~ (bfd_vma) 0)
 #define bfd_section_size(bfd, ptr) ((ptr)->size)  
 #define bfd_get_section_size(ptr) ((ptr)->size)  
 #define bfd_section_vma(bfd, ptr) ((ptr)->vma)  
 #define bfd_section_lma(bfd, ptr) ((ptr)->lma)  
 #define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)  
 #define bfd_get_section_flags(bfd, ptr) ((void) bfd, (ptr)->flags)  
 #define bfd_get_section_userdata(bfd, ptr) ((void) bfd, (ptr)->userdata)  
   
 #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)  
   
 #define bfd_get_section_limit_octets(bfd, sec)                  \  
   ((bfd)->direction != write_direction && (sec)->rawsize != 0   \  
    ? (sec)->rawsize : (sec)->size)  
   
 /* Find the address one past the end of SEC.  */  
 #define bfd_get_section_limit(bfd, sec) \  
   (bfd_get_section_limit_octets(bfd, sec) / bfd_octets_per_byte (bfd))  
   
 /* Return TRUE if input section SEC has been discarded.  */  
 #define discarded_section(sec)                          \  
   (!bfd_is_abs_section (sec)                                    \  
    && bfd_is_abs_section ((sec)->output_section)                \  
    && (sec)->sec_info_type != SEC_INFO_TYPE_MERGE               \  
    && (sec)->sec_info_type != SEC_INFO_TYPE_JUST_SYMS)  
   
 typedef enum bfd_print_symbol  typedef enum bfd_print_symbol
 {  {
Line 331  typedef struct _symbol_info
Line 310  typedef struct _symbol_info
 {  {
   symvalue value;    symvalue value;
   char type;    char type;
   const char *name;            /* Symbol name.  */    const char *name;             /* Symbol name.  */
   unsigned char stab_type;     /* Stab type.  */    unsigned char stab_type;      /* Stab type.  */
   char stab_other;             /* Stab other.  */    char stab_other;              /* Stab other.  */
   short stab_desc;             /* Stab desc.  */    short stab_desc;              /* Stab desc.  */
   const char *stab_name;       /* String for stab type.  */    const char *stab_name;        /* String for stab type.  */
 } symbol_info;  } symbol_info;
   
 /* Get the name of a stabs type code.  */  /* Get the name of a stabs type code.  */
Line 373  struct bfd_hash_table
Line 352  struct bfd_hash_table
      only if the argument is NULL.  */       only if the argument is NULL.  */
   struct bfd_hash_entry *(*newfunc)    struct bfd_hash_entry *(*newfunc)
     (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);      (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
    /* An objalloc for this hash table.  This is a struct objalloc *,    /* An objalloc for this hash table.  This is a struct objalloc *,
      but we use void * to avoid requiring the inclusion of objalloc.h.  */       but we use void * to avoid requiring the inclusion of objalloc.h.  */
   void *memory;    void *memory;
   /* The number of slots in the hash table.  */    /* The number of slots in the hash table.  */
Line 488  extern int bfd_stat (bfd *, struct stat 
Line 467  extern int bfd_stat (bfd *, struct stat 
 /* Deprecated old routines.  */  /* Deprecated old routines.  */
 #if __GNUC__  #if __GNUC__
 #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)                            \  #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)                            \
   (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),      \    (_bfd_warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
    bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))     bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
 #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)                           \  #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)                           \
   (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),     \    (_bfd_warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
    bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))     bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
 #else  #else
 #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)                            \  #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)                            \
   (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \    (_bfd_warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
    bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))     bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
 #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)                           \  #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)                           \
   (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\    (_bfd_warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
    bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))     bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
 #endif  #endif
 extern void warn_deprecated (const char *, const char *, int, const char *);  extern void _bfd_warn_deprecated (const char *, const char *, int, const char *);
   
 /* Cast from const char * to char * so that caller can assign to  
    a char * without a warning.  */  
 #define bfd_get_filename(abfd) ((char *) (abfd)->filename)  
 #define bfd_get_cacheable(abfd) ((abfd)->cacheable)  
 #define bfd_get_format(abfd) ((abfd)->format)  
 #define bfd_get_target(abfd) ((abfd)->xvec->name)  
 #define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)  
 #define bfd_family_coff(abfd) \  
   (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \  
    bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)  
 #define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)  
 #define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)  
 #define bfd_header_big_endian(abfd) \  
   ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)  
 #define bfd_header_little_endian(abfd) \  
   ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)  
 #define bfd_get_file_flags(abfd) ((abfd)->flags)  
 #define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)  
 #define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)  
 #define bfd_my_archive(abfd) ((abfd)->my_archive)  
 #define bfd_has_map(abfd) ((abfd)->has_armap)  
 #define bfd_is_thin_archive(abfd) ((abfd)->is_thin_archive)  
   
 #define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)  
 #define bfd_usrdata(abfd) ((abfd)->usrdata)  
   
 #define bfd_get_start_address(abfd) ((abfd)->start_address)  
 #define bfd_get_symcount(abfd) ((abfd)->symcount)  
 #define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)  
 #define bfd_count_sections(abfd) ((abfd)->section_count)  
   
 #define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)  
   
 #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)  
   
 extern bfd_boolean bfd_cache_close  extern bfd_boolean bfd_cache_close
   (bfd *abfd);    (bfd *abfd);
Line 566  void bfd_putb64 (bfd_uint64_t, void *);
Line 510  void bfd_putb64 (bfd_uint64_t, void *);
 void bfd_putl64 (bfd_uint64_t, void *);  void bfd_putl64 (bfd_uint64_t, void *);
 void bfd_putb32 (bfd_vma, void *);  void bfd_putb32 (bfd_vma, void *);
 void bfd_putl32 (bfd_vma, void *);  void bfd_putl32 (bfd_vma, void *);
   void bfd_putb24 (bfd_vma, void *);
   void bfd_putl24 (bfd_vma, void *);
 void bfd_putb16 (bfd_vma, void *);  void bfd_putb16 (bfd_vma, void *);
 void bfd_putl16 (bfd_vma, void *);  void bfd_putl16 (bfd_vma, void *);
   
Line 574  void bfd_putl16 (bfd_vma, void *);
Line 520  void bfd_putl16 (bfd_vma, void *);
 bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);  bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
 void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);  void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
   
 #if defined(__STDC__) || defined(ALMOST_STDC)  
 struct ecoff_debug_info;  
 struct ecoff_debug_swap;  
 struct ecoff_extr;  
 struct bfd_symbol;  
 struct bfd_link_info;  
 struct bfd_link_hash_entry;  
 struct bfd_section_already_linked;  
 struct bfd_elf_version_tree;  
 #endif  
   
 extern bfd_boolean bfd_section_already_linked_table_init (void);  
 extern void bfd_section_already_linked_table_free (void);  
 extern bfd_boolean _bfd_handle_already_linked  
   (struct bfd_section *, struct bfd_section_already_linked *,  
    struct bfd_link_info *);  
   
 /* Externally visible ECOFF routines.  */  
   
 extern bfd_vma bfd_ecoff_get_gp_value  
   (bfd * abfd);  
 extern bfd_boolean bfd_ecoff_set_gp_value  
   (bfd *abfd, bfd_vma gp_value);  
 extern bfd_boolean bfd_ecoff_set_regmasks  
   (bfd *abfd, unsigned long gprmask, unsigned long fprmask,  
    unsigned long *cprmask);  
 extern void *bfd_ecoff_debug_init  
   (bfd *output_bfd, struct ecoff_debug_info *output_debug,  
    const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);  
 extern void bfd_ecoff_debug_free  
   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,  
    const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);  
 extern bfd_boolean bfd_ecoff_debug_accumulate  
   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,  
    const struct ecoff_debug_swap *output_swap, bfd *input_bfd,  
    struct ecoff_debug_info *input_debug,  
    const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);  
 extern bfd_boolean bfd_ecoff_debug_accumulate_other  
   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,  
    const struct ecoff_debug_swap *output_swap, bfd *input_bfd,  
    struct bfd_link_info *);  
 extern bfd_boolean bfd_ecoff_debug_externals  
   (bfd *abfd, struct ecoff_debug_info *debug,  
    const struct ecoff_debug_swap *swap, bfd_boolean relocatable,  
    bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),  
    void (*set_index) (struct bfd_symbol *, bfd_size_type));  
 extern bfd_boolean bfd_ecoff_debug_one_external  
   (bfd *abfd, struct ecoff_debug_info *debug,  
    const struct ecoff_debug_swap *swap, const char *name,  
    struct ecoff_extr *esym);  
 extern bfd_size_type bfd_ecoff_debug_size  
   (bfd *abfd, struct ecoff_debug_info *debug,  
    const struct ecoff_debug_swap *swap);  
 extern bfd_boolean bfd_ecoff_write_debug  
   (bfd *abfd, struct ecoff_debug_info *debug,  
    const struct ecoff_debug_swap *swap, file_ptr where);  
 extern bfd_boolean bfd_ecoff_write_accumulated_debug  
   (void *handle, bfd *abfd, struct ecoff_debug_info *debug,  
    const struct ecoff_debug_swap *swap,  
    struct bfd_link_info *info, file_ptr where);  
   
 /* Externally visible ELF routines.  */  
   
 struct bfd_link_needed_list  
 {  
   struct bfd_link_needed_list *next;  
   bfd *by;  
   const char *name;  
 };  
   
 enum dynamic_lib_link_class {  
   DYN_NORMAL = 0,  
   DYN_AS_NEEDED = 1,  
   DYN_DT_NEEDED = 2,  
   DYN_NO_ADD_NEEDED = 4,  
   DYN_NO_NEEDED = 8  
 };  
   
 enum notice_asneeded_action {  
   notice_as_needed,  
   notice_not_needed,  
   notice_needed  
 };  
   
 extern bfd_boolean bfd_elf_record_link_assignment  
   (bfd *, struct bfd_link_info *, const char *, bfd_boolean,  
    bfd_boolean);  
 extern struct bfd_link_needed_list *bfd_elf_get_needed_list  
   (bfd *, struct bfd_link_info *);  
 extern bfd_boolean bfd_elf_get_bfd_needed_list  
   (bfd *, struct bfd_link_needed_list **);  
 extern bfd_boolean bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *,  
                                                const char *, bfd_vma);  
 extern bfd_boolean bfd_elf_size_dynamic_sections  
   (bfd *, const char *, const char *, const char *, const char *, const char *,  
    const char * const *, struct bfd_link_info *, struct bfd_section **);  
 extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr  
   (bfd *, struct bfd_link_info *);  
 extern void bfd_elf_set_dt_needed_name  
   (bfd *, const char *);  
 extern const char *bfd_elf_get_dt_soname  
   (bfd *);  
 extern void bfd_elf_set_dyn_lib_class  
   (bfd *, enum dynamic_lib_link_class);  
 extern int bfd_elf_get_dyn_lib_class  
   (bfd *);  
 extern struct bfd_link_needed_list *bfd_elf_get_runpath_list  
   (bfd *, struct bfd_link_info *);  
 extern int bfd_elf_discard_info  
   (bfd *, struct bfd_link_info *);  
 extern unsigned int _bfd_elf_default_action_discarded  
   (struct bfd_section *);  
   
 /* Return an upper bound on the number of bytes required to store a  
    copy of ABFD's program header table entries.  Return -1 if an error  
    occurs; bfd_get_error will return an appropriate code.  */  
 extern long bfd_get_elf_phdr_upper_bound  
   (bfd *abfd);  
   
 /* Copy ABFD's program header table entries to *PHDRS.  The entries  
    will be stored as an array of Elf_Internal_Phdr structures, as  
    defined in include/elf/internal.h.  To find out how large the  
    buffer needs to be, call bfd_get_elf_phdr_upper_bound.  
   
    Return the number of program header table entries read, or -1 if an  
    error occurs; bfd_get_error will return an appropriate code.  */  
 extern int bfd_get_elf_phdrs  
   (bfd *abfd, void *phdrs);  
   
 /* Create a new BFD as if by bfd_openr.  Rather than opening a file,  
    reconstruct an ELF file by reading the segments out of remote  
    memory based on the ELF file header at EHDR_VMA and the ELF program  
    headers it points to.  If non-zero, SIZE is the known extent of the  
    object.  If not null, *LOADBASEP is filled in with the difference  
    between the VMAs from which the segments were read, and the VMAs  
    the file headers (and hence BFD's idea of each section's VMA) put  
    them at.  
   
    The function TARGET_READ_MEMORY is called to copy LEN bytes from  
    the remote memory at target address VMA into the local buffer at  
    MYADDR; it should return zero on success or an `errno' code on  
    failure.  TEMPL must be a BFD for a target with the word size and  
    byte order found in the remote memory.  */  
 extern bfd *bfd_elf_bfd_from_remote_memory  
   (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,  
    int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,  
                               bfd_size_type len));  
   
 extern struct bfd_section *_bfd_elf_tls_setup  
   (bfd *, struct bfd_link_info *);  
   
 extern struct bfd_section *  
 _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);  
   
 extern void _bfd_fix_excluded_sec_syms  
   (bfd *, struct bfd_link_info *);  
   
 extern unsigned bfd_m68k_mach_to_features (int);  
   
 extern int bfd_m68k_features_to_mach (unsigned);  
   
 extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs  
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,  
    char **);  
   
 extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);  
   
 extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs  
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,  
    char **);  
   
 extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs  
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,  
    char **);  
   
 /* SunOS shared library support routines for the linker.  */  
   
 extern struct bfd_link_needed_list *bfd_sunos_get_needed_list  
   (bfd *, struct bfd_link_info *);  
 extern bfd_boolean bfd_sunos_record_link_assignment  
   (bfd *, struct bfd_link_info *, const char *);  
 extern bfd_boolean bfd_sunos_size_dynamic_sections  
   (bfd *, struct bfd_link_info *, struct bfd_section **,  
    struct bfd_section **, struct bfd_section **);  
   
 /* Linux shared library support routines for the linker.  */  
   
 extern bfd_boolean bfd_i386linux_size_dynamic_sections  
   (bfd *, struct bfd_link_info *);  
 extern bfd_boolean bfd_m68klinux_size_dynamic_sections  
   (bfd *, struct bfd_link_info *);  
 extern bfd_boolean bfd_sparclinux_size_dynamic_sections  
   (bfd *, struct bfd_link_info *);  
   
 /* mmap hacks */  /* mmap hacks */
   
Line 794  extern void bfd_free_window
Line 547  extern void bfd_free_window
   (bfd_window *);    (bfd_window *);
 extern bfd_boolean bfd_get_file_window  extern bfd_boolean bfd_get_file_window
   (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);    (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
   
   /* Externally visible ELF routines.  */
   
 /* XCOFF support routines for the linker.  */  /* Create a new BFD as if by bfd_openr.  Rather than opening a file,
      reconstruct an ELF file by reading the segments out of remote
 extern bfd_boolean bfd_xcoff_split_import_path     memory based on the ELF file header at EHDR_VMA and the ELF program
   (bfd *, const char *, const char **, const char **);     headers it points to.  If non-zero, SIZE is the known extent of the
 extern bfd_boolean bfd_xcoff_set_archive_import_path     object.  If not null, *LOADBASEP is filled in with the difference
   (struct bfd_link_info *, bfd *, const char *);     between the VMAs from which the segments were read, and the VMAs
 extern bfd_boolean bfd_xcoff_link_record_set     the file headers (and hence BFD's idea of each section's VMA) put
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);     them at.
 extern bfd_boolean bfd_xcoff_import_symbol  
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,  
    const char *, const char *, const char *, unsigned int);  
 extern bfd_boolean bfd_xcoff_export_symbol  
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);  
 extern bfd_boolean bfd_xcoff_link_count_reloc  
   (bfd *, struct bfd_link_info *, const char *);  
 extern bfd_boolean bfd_xcoff_record_link_assignment  
   (bfd *, struct bfd_link_info *, const char *);  
 extern bfd_boolean bfd_xcoff_size_dynamic_sections  
   (bfd *, struct bfd_link_info *, const char *, const char *,  
    unsigned long, unsigned long, unsigned long, bfd_boolean,  
    int, bfd_boolean, unsigned int, struct bfd_section **, bfd_boolean);  
 extern bfd_boolean bfd_xcoff_link_generate_rtinit  
   (bfd *, const char *, const char *, bfd_boolean);  
   
 /* XCOFF support routines for ar.  */  
 extern bfd_boolean bfd_xcoff_ar_archive_set_magic  
   (bfd *, char *);  
   
 /* Externally visible COFF routines.  */  
   
 #if defined(__STDC__) || defined(ALMOST_STDC)  
 struct internal_syment;  
 union internal_auxent;  
 #endif  
   
 extern bfd_boolean bfd_coff_set_symbol_class     The function TARGET_READ_MEMORY is called to copy LEN bytes from
   (bfd *, struct bfd_symbol *, unsigned int);     the remote memory at target address VMA into the local buffer at
      MYADDR; it should return zero on success or an `errno' code on
      failure.  TEMPL must be a BFD for a target with the word size and
      byte order found in the remote memory.  */
   extern bfd *bfd_elf_bfd_from_remote_memory
     (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
      int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
                                 bfd_size_type len));
   
 extern bfd_boolean bfd_m68k_coff_create_embedded_relocs  /* Forward declarations.  */
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);  struct ecoff_debug_info;
   struct ecoff_debug_swap;
   struct ecoff_extr;
   struct bfd_link_info;
   struct bfd_link_hash_entry;
   /* Extracted from init.c.  */
   unsigned int bfd_init (void);
   
 /* ARM VFP11 erratum workaround support.  */  
 typedef enum  
 {  
   BFD_ARM_VFP11_FIX_DEFAULT,  
   BFD_ARM_VFP11_FIX_NONE,  
   BFD_ARM_VFP11_FIX_SCALAR,  
   BFD_ARM_VFP11_FIX_VECTOR  
 } bfd_arm_vfp11_fix;  
   
 extern void bfd_elf32_arm_init_maps  
   (bfd *);  
   
 extern void bfd_elf32_arm_set_vfp11_fix  
   (bfd *, struct bfd_link_info *);  
   
 extern void bfd_elf32_arm_set_cortex_a8_fix  
   (bfd *, struct bfd_link_info *);  
   
 extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan  
   (bfd *, struct bfd_link_info *);  
   
 extern void bfd_elf32_arm_vfp11_fix_veneer_locations  
   (bfd *, struct bfd_link_info *);  
   
 /* ARM STM STM32L4XX erratum workaround support.  */  
 typedef enum  
 {  
   BFD_ARM_STM32L4XX_FIX_NONE,  
   BFD_ARM_STM32L4XX_FIX_DEFAULT,  
   BFD_ARM_STM32L4XX_FIX_ALL  
 } bfd_arm_stm32l4xx_fix;  
   
 extern void bfd_elf32_arm_set_stm32l4xx_fix  
   (bfd *, struct bfd_link_info *);  
   
 extern bfd_boolean bfd_elf32_arm_stm32l4xx_erratum_scan  
   (bfd *, struct bfd_link_info *);  
   
 extern void bfd_elf32_arm_stm32l4xx_fix_veneer_locations  
   (bfd *, struct bfd_link_info *);  
   
 /* ARM Interworking support.  Called from linker.  */  
 extern bfd_boolean bfd_arm_allocate_interworking_sections  
   (struct bfd_link_info *);  
   
 extern bfd_boolean bfd_arm_process_before_allocation  
   (bfd *, struct bfd_link_info *, int);  
   
 extern bfd_boolean bfd_arm_get_bfd_for_interworking  
   (bfd *, struct bfd_link_info *);  
   
 /* PE ARM Interworking support.  Called from linker.  */  
 extern bfd_boolean bfd_arm_pe_allocate_interworking_sections  
   (struct bfd_link_info *);  
   
 extern bfd_boolean bfd_arm_pe_process_before_allocation  
   (bfd *, struct bfd_link_info *, int);  
   
 extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking  
   (bfd *, struct bfd_link_info *);  
   
 /* ELF ARM Interworking support.  Called from linker.  */  
 extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections  
   (struct bfd_link_info *);  
   
 extern bfd_boolean bfd_elf32_arm_process_before_allocation  
   (bfd *, struct bfd_link_info *);  
   
 void bfd_elf32_arm_set_target_relocs  
   (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,  
    bfd_arm_stm32l4xx_fix, int, int, int, int, int);  
   
 extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking  
   (bfd *, struct bfd_link_info *);  
   
 extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd  
   (bfd *, struct bfd_link_info *);  
   
 /* ELF ARM mapping symbol support.  */  
 #define BFD_ARM_SPECIAL_SYM_TYPE_MAP    (1 << 0)  
 #define BFD_ARM_SPECIAL_SYM_TYPE_TAG    (1 << 1)  
 #define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)  
 #define BFD_ARM_SPECIAL_SYM_TYPE_ANY    (~0)  
   
 extern bfd_boolean bfd_is_arm_special_symbol_name  
   (const char *, int);  
   
 extern void bfd_elf32_arm_set_byteswap_code  
   (struct bfd_link_info *, int);  
   
 extern void bfd_elf32_arm_use_long_plt (void);  
   
 /* ARM Note section processing.  */  
 extern bfd_boolean bfd_arm_merge_machines  
   (bfd *, bfd *);  
   
 extern bfd_boolean bfd_arm_update_notes  
   (bfd *, const char *);  
   
 extern unsigned int bfd_arm_get_mach_from_notes  
   (bfd *, const char *);  
   
 /* ARM stub generation support.  Called from the linker.  */  
 extern int elf32_arm_setup_section_lists  
   (bfd *, struct bfd_link_info *);  
 extern void elf32_arm_next_input_section  
   (struct bfd_link_info *, struct bfd_section *);  
 extern bfd_boolean elf32_arm_size_stubs  
   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,  
    struct bfd_section * (*) (const char *, struct bfd_section *, unsigned int),  
    void (*) (void));  
 extern bfd_boolean elf32_arm_build_stubs  
   (struct bfd_link_info *);  
   
 /* ARM unwind section editing support.  */  
 extern bfd_boolean elf32_arm_fix_exidx_coverage  
 (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);  
   
 /* C6x unwind section editing support.  */  
 extern bfd_boolean elf32_tic6x_fix_exidx_coverage  
 (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);  
   
 /* PowerPC @tls opcode transform/validate.  */  
 extern unsigned int _bfd_elf_ppc_at_tls_transform  
   (unsigned int, unsigned int);  
 /* PowerPC @tprel opcode transform/validate.  */  
 extern unsigned int _bfd_elf_ppc_at_tprel_transform  
   (unsigned int, unsigned int);  
   
 extern void bfd_elf64_aarch64_init_maps  
   (bfd *);  
   
 extern void bfd_elf32_aarch64_init_maps  
   (bfd *);  
   
 extern void bfd_elf64_aarch64_set_options  
   (bfd *, struct bfd_link_info *, int, int, int, int, int);  
   
 extern void bfd_elf32_aarch64_set_options  
   (bfd *, struct bfd_link_info *, int, int, int, int, int);  
   
 /* ELF AArch64 mapping symbol support.  */  
 #define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP        (1 << 0)  
 #define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG        (1 << 1)  
 #define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER      (1 << 2)  
 #define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY        (~0)  
 extern bfd_boolean bfd_is_aarch64_special_symbol_name  
   (const char * name, int type);  
   
 /* AArch64 stub generation support for ELF64.  Called from the linker.  */  
 extern int elf64_aarch64_setup_section_lists  
   (bfd *, struct bfd_link_info *);  
 extern void elf64_aarch64_next_input_section  
   (struct bfd_link_info *, struct bfd_section *);  
 extern bfd_boolean elf64_aarch64_size_stubs  
   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,  
    struct bfd_section * (*) (const char *, struct bfd_section *),  
    void (*) (void));  
 extern bfd_boolean elf64_aarch64_build_stubs  
   (struct bfd_link_info *);  
 /* AArch64 stub generation support for ELF32.  Called from the linker.  */  
 extern int elf32_aarch64_setup_section_lists  
   (bfd *, struct bfd_link_info *);  
 extern void elf32_aarch64_next_input_section  
   (struct bfd_link_info *, struct bfd_section *);  
 extern bfd_boolean elf32_aarch64_size_stubs  
   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,  
    struct bfd_section * (*) (const char *, struct bfd_section *),  
    void (*) (void));  
 extern bfd_boolean elf32_aarch64_build_stubs  
   (struct bfd_link_info *);  
   
   
 /* TI COFF load page support.  */  
 extern void bfd_ticoff_set_section_load_page  
   (struct bfd_section *, int);  
   
 extern int bfd_ticoff_get_section_load_page  
   (struct bfd_section *);  
   
 /* H8/300 functions.  */  
 extern bfd_vma bfd_h8300_pad_address  
   (bfd *, bfd_vma);  
   
 /* IA64 Itanium code generation.  Called from linker.  */  
 extern void bfd_elf32_ia64_after_parse  
   (int);  
   
 extern void bfd_elf64_ia64_after_parse  
   (int);  
   
 /* V850 Note manipulation routines.  */  
 extern bfd_boolean v850_elf_create_sections  
   (struct bfd_link_info *);  
   
 extern bfd_boolean v850_elf_set_note  /* Value returned by bfd_init.  */
   (bfd *, unsigned int, unsigned int);  
 /* Extracted from init.c.  */  
 void bfd_init (void);  
   
   #define BFD_INIT_MAGIC (sizeof (struct bfd_section))
 /* Extracted from opncls.c.  */  /* Extracted from opncls.c.  */
 /* Set to N to open the next N BFDs using an alternate id space.  */  /* Set to N to open the next N BFDs using an alternate id space.  */
 extern unsigned int bfd_use_reserved_id;  extern unsigned int bfd_use_reserved_id;
Line 1046  bfd *bfd_openr (const char *filename, co
Line 592  bfd *bfd_openr (const char *filename, co
   
 bfd *bfd_fdopenr (const char *filename, const char *target, int fd);  bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
   
 bfd *bfd_openstreamr (const char * filename, const char * target, void * stream);  bfd *bfd_openstreamr (const char * filename, const char * target,
       void * stream);
   
 bfd *bfd_openr_iovec (const char *filename, const char *target,  bfd *bfd_openr_iovec (const char *filename, const char *target,
     void *(*open_func) (struct bfd *nbfd,      void *(*open_func) (struct bfd *nbfd,
Line 1098  struct bfd_section *bfd_create_gnu_debug
Line 645  struct bfd_section *bfd_create_gnu_debug
 bfd_boolean bfd_fill_in_gnu_debuglink_section  bfd_boolean bfd_fill_in_gnu_debuglink_section
    (bfd *abfd, struct bfd_section *sect, const char *filename);     (bfd *abfd, struct bfd_section *sect, const char *filename);
   
   char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir);
   
   void bfd_set_filename (bfd *abfd, char *filename);
   
 /* Extracted from libbfd.c.  */  /* Extracted from libbfd.c.  */
   
 /* Byte swapping macros for user section data.  */  /* Byte swapping macros for user section data.  */
Line 1107  bfd_boolean bfd_fill_in_gnu_debuglink_se
Line 658  bfd_boolean bfd_fill_in_gnu_debuglink_se
 #define bfd_put_signed_8 \  #define bfd_put_signed_8 \
   bfd_put_8    bfd_put_8
 #define bfd_get_8(abfd, ptr) \  #define bfd_get_8(abfd, ptr) \
   (*(const unsigned char *) (ptr) & 0xff)    ((bfd_vma) *(const unsigned char *) (ptr) & 0xff)
 #define bfd_get_signed_8(abfd, ptr) \  #define bfd_get_signed_8(abfd, ptr) \
   (((*(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)    ((((bfd_signed_vma) *(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
   
 #define bfd_put_16(abfd, val, ptr) \  #define bfd_put_16(abfd, val, ptr) \
   BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))    BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
Line 1120  bfd_boolean bfd_fill_in_gnu_debuglink_se
Line 671  bfd_boolean bfd_fill_in_gnu_debuglink_se
 #define bfd_get_signed_16(abfd, ptr) \  #define bfd_get_signed_16(abfd, ptr) \
   BFD_SEND (abfd, bfd_getx_signed_16, (ptr))    BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
   
   #define bfd_put_24(abfd, val, ptr) \
     do                                   \
       if (bfd_big_endian (abfd))         \
         bfd_putb24 ((val), (ptr));       \
       else                               \
         bfd_putl24 ((val), (ptr));       \
     while (0)
   
   bfd_vma bfd_getb24 (const void *p);
   bfd_vma bfd_getl24 (const void *p);
   
   #define bfd_get_24(abfd, ptr) \
     (bfd_big_endian (abfd) ? bfd_getb24 (ptr) : bfd_getl24 (ptr))
   
 #define bfd_put_32(abfd, val, ptr) \  #define bfd_put_32(abfd, val, ptr) \
   BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))    BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
 #define bfd_put_signed_32 \  #define bfd_put_signed_32 \
Line 1139  bfd_boolean bfd_fill_in_gnu_debuglink_se
Line 704  bfd_boolean bfd_fill_in_gnu_debuglink_se
   BFD_SEND (abfd, bfd_getx_signed_64, (ptr))    BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
   
 #define bfd_get(bits, abfd, ptr)                       \  #define bfd_get(bits, abfd, ptr)                       \
   ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \    ((bits) == 8 ? bfd_get_8 (abfd, ptr)                 \
    : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \     : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
    : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \     : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
    : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \     : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
Line 1147  bfd_boolean bfd_fill_in_gnu_debuglink_se
Line 712  bfd_boolean bfd_fill_in_gnu_debuglink_se
   
 #define bfd_put(bits, abfd, val, ptr)                  \  #define bfd_put(bits, abfd, val, ptr)                  \
   ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \    ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
    : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \     : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)        \
    : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \     : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)        \
    : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \     : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)        \
    : (abort (), (void) 0))     : (abort (), (void) 0))
   
   
Line 1214  bfd_boolean bfd_fill_in_gnu_debuglink_se
Line 779  bfd_boolean bfd_fill_in_gnu_debuglink_se
 /* Extracted from bfdio.c.  */  /* Extracted from bfdio.c.  */
 long bfd_get_mtime (bfd *abfd);  long bfd_get_mtime (bfd *abfd);
   
 file_ptr bfd_get_size (bfd *abfd);  ufile_ptr bfd_get_size (bfd *abfd);
   
   ufile_ptr bfd_get_file_size (bfd *abfd);
   
 void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,  void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
     int prot, int flags, file_ptr offset,      int prot, int flags, file_ptr offset,
Line 1246  typedef struct bfd_section
Line 813  typedef struct bfd_section
      synthesized from other information.  */       synthesized from other information.  */
   flagword flags;    flagword flags;
   
 #define SEC_NO_FLAGS   0x000  #define SEC_NO_FLAGS                      0x0
   
   /* Tells the OS to allocate space for this section when loading.    /* Tells the OS to allocate space for this section when loading.
      This is clear for a section containing debug information only.  */       This is clear for a section containing debug information only.  */
 #define SEC_ALLOC      0x001  #define SEC_ALLOC                         0x1
   
   /* Tells the OS to load the section from the file when loading.    /* Tells the OS to load the section from the file when loading.
      This is clear for a .bss section.  */       This is clear for a .bss section.  */
 #define SEC_LOAD       0x002  #define SEC_LOAD                          0x2
   
   /* The section contains data still to be relocated, so there is    /* The section contains data still to be relocated, so there is
      some relocation information too.  */       some relocation information too.  */
 #define SEC_RELOC      0x004  #define SEC_RELOC                         0x4
   
   /* A signal to the OS that the section contains read only data.  */    /* A signal to the OS that the section contains read only data.  */
 #define SEC_READONLY   0x008  #define SEC_READONLY                      0x8
   
   /* The section contains code only.  */    /* The section contains code only.  */
 #define SEC_CODE       0x010  #define SEC_CODE                         0x10
   
   /* The section contains data only.  */    /* The section contains data only.  */
 #define SEC_DATA       0x020  #define SEC_DATA                         0x20
   
   /* The section will reside in ROM.  */    /* The section will reside in ROM.  */
 #define SEC_ROM        0x040  #define SEC_ROM                          0x40
   
   /* The section contains constructor information. This section    /* The section contains constructor information. This section
      type is used by the linker to create lists of constructors and       type is used by the linker to create lists of constructors and
Line 1282  typedef struct bfd_section
Line 849  typedef struct bfd_section
      sections called <<__CTOR_LIST__>> and relocate the data       sections called <<__CTOR_LIST__>> and relocate the data
      contained within - exactly the operations it would peform on       contained within - exactly the operations it would peform on
      standard data.  */       standard data.  */
 #define SEC_CONSTRUCTOR 0x080  #define SEC_CONSTRUCTOR                  0x80
   
   /* The section has contents - a data section could be    /* The section has contents - a data section could be
      <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be       <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
      <<SEC_HAS_CONTENTS>>  */       <<SEC_HAS_CONTENTS>>  */
 #define SEC_HAS_CONTENTS 0x100  #define SEC_HAS_CONTENTS                0x100
   
   /* An instruction to the linker to not output the section    /* An instruction to the linker to not output the section
      even if it has information which would normally be written.  */       even if it has information which would normally be written.  */
 #define SEC_NEVER_LOAD 0x200  #define SEC_NEVER_LOAD                  0x200
   
   /* The section contains thread local data.  */    /* The section contains thread local data.  */
 #define SEC_THREAD_LOCAL 0x400  #define SEC_THREAD_LOCAL                0x400
   
   /* The section has GOT references.  This flag is only for the    /* The section's size is fixed.  Generic linker code will not
      linker, and is currently only used by the elf32-hppa back end.       recalculate it and it is up to whoever has set this flag to
      It will be set if global offset table references were detected       get the size right.  */
      in this section, which indicate to the linker that the section  #define SEC_FIXED_SIZE                  0x800
      contains PIC code, and must be handled specially when doing a  
      static link.  */  
 #define SEC_HAS_GOT_REF 0x800  
   
   /* The section contains common symbols (symbols may be defined    /* The section contains common symbols (symbols may be defined
      multiple times, the value of a symbol is the amount of       multiple times, the value of a symbol is the amount of
      space it requires, and the largest symbol value is the one       space it requires, and the largest symbol value is the one
      used).  Most targets have exactly one of these (which we       used).  Most targets have exactly one of these (which we
      translate to bfd_com_section_ptr), but ECOFF has two.  */       translate to bfd_com_section_ptr), but ECOFF has two.  */
 #define SEC_IS_COMMON 0x1000  #define SEC_IS_COMMON                  0x1000
   
   /* The section contains only debugging information.  For    /* The section contains only debugging information.  For
      example, this is set for ELF .debug and .stab sections.       example, this is set for ELF .debug and .stab sections.
      strip tests this flag to see if a section can be       strip tests this flag to see if a section can be
      discarded.  */       discarded.  */
 #define SEC_DEBUGGING 0x2000  #define SEC_DEBUGGING                  0x2000
   
   /* The contents of this section are held in memory pointed to    /* The contents of this section are held in memory pointed to
      by the contents field.  This is checked by bfd_get_section_contents,       by the contents field.  This is checked by bfd_get_section_contents,
      and the data is retrieved from memory if appropriate.  */       and the data is retrieved from memory if appropriate.  */
 #define SEC_IN_MEMORY 0x4000  #define SEC_IN_MEMORY                  0x4000
   
   /* The contents of this section are to be excluded by the    /* The contents of this section are to be excluded by the
      linker for executable and shared objects unless those       linker for executable and shared objects unless those
      objects are to be further relocated.  */       objects are to be further relocated.  */
 #define SEC_EXCLUDE 0x8000  #define SEC_EXCLUDE                    0x8000
   
   /* The contents of this section are to be sorted based on the sum of    /* The contents of this section are to be sorted based on the sum of
      the symbol and addend values specified by the associated relocation       the symbol and addend values specified by the associated relocation
      entries.  Entries without associated relocation entries will be       entries.  Entries without associated relocation entries will be
      appended to the end of the section in an unspecified order.  */       appended to the end of the section in an unspecified order.  */
 #define SEC_SORT_ENTRIES 0x10000  #define SEC_SORT_ENTRIES              0x10000
   
   /* When linking, duplicate sections of the same name should be    /* When linking, duplicate sections of the same name should be
      discarded, rather than being combined into a single section as       discarded, rather than being combined into a single section as
      is usually done.  This is similar to how common symbols are       is usually done.  This is similar to how common symbols are
      handled.  See SEC_LINK_DUPLICATES below.  */       handled.  See SEC_LINK_DUPLICATES below.  */
 #define SEC_LINK_ONCE 0x20000  #define SEC_LINK_ONCE                 0x20000
   
   /* If SEC_LINK_ONCE is set, this bitfield describes how the linker    /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
      should handle duplicate sections.  */       should handle duplicate sections.  */
 #define SEC_LINK_DUPLICATES 0xc0000  #define SEC_LINK_DUPLICATES           0xc0000
   
   /* This value for SEC_LINK_DUPLICATES means that duplicate    /* This value for SEC_LINK_DUPLICATES means that duplicate
      sections with the same name should simply be discarded.  */       sections with the same name should simply be discarded.  */
 #define SEC_LINK_DUPLICATES_DISCARD 0x0  #define SEC_LINK_DUPLICATES_DISCARD       0x0
   
   /* This value for SEC_LINK_DUPLICATES means that the linker    /* This value for SEC_LINK_DUPLICATES means that the linker
      should warn if there are any duplicate sections, although       should warn if there are any duplicate sections, although
      it should still only link one copy.  */       it should still only link one copy.  */
 #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000  #define SEC_LINK_DUPLICATES_ONE_ONLY  0x40000
   
   /* This value for SEC_LINK_DUPLICATES means that the linker    /* This value for SEC_LINK_DUPLICATES means that the linker
      should warn if any duplicate sections are a different size.  */       should warn if any duplicate sections are a different size.  */
Line 1366  typedef struct bfd_section
Line 930  typedef struct bfd_section
      relocation or other arcane processing.  It is skipped when       relocation or other arcane processing.  It is skipped when
      going through the first-pass output, trusting that someone       going through the first-pass output, trusting that someone
      else up the line will take care of it later.  */       else up the line will take care of it later.  */
 #define SEC_LINKER_CREATED 0x100000  #define SEC_LINKER_CREATED           0x100000
   
   /* This section should not be subject to garbage collection.    /* This section should not be subject to garbage collection.
      Also set to inform the linker that this section should not be       Also set to inform the linker that this section should not be
      listed in the link map as discarded.  */       listed in the link map as discarded.  */
 #define SEC_KEEP 0x200000  #define SEC_KEEP                     0x200000
   
   /* This section contains "short" data, and should be placed    /* This section contains "short" data, and should be placed
      "near" the GP.  */       "near" the GP.  */
 #define SEC_SMALL_DATA 0x400000  #define SEC_SMALL_DATA               0x400000
   
   /* Attempt to merge identical entities in the section.    /* Attempt to merge identical entities in the section.
      Entity size is given in the entsize field.  */       Entity size is given in the entsize field.  */
 #define SEC_MERGE 0x800000  #define SEC_MERGE                    0x800000
   
   /* If given with SEC_MERGE, entities to merge are zero terminated    /* If given with SEC_MERGE, entities to merge are zero terminated
      strings where entsize specifies character size instead of fixed       strings where entsize specifies character size instead of fixed
      size entries.  */       size entries.  */
 #define SEC_STRINGS 0x1000000  #define SEC_STRINGS                 0x1000000
   
   /* This section contains data about section groups.  */    /* This section contains data about section groups.  */
 #define SEC_GROUP 0x2000000  #define SEC_GROUP                   0x2000000
   
   /* The section is a COFF shared library section.  This flag is    /* The section is a COFF shared library section.  This flag is
      only for the linker.  If this type of section appears in       only for the linker.  If this type of section appears in
Line 1398  typedef struct bfd_section
Line 962  typedef struct bfd_section
      might be cleaner to have some more general mechanism to       might be cleaner to have some more general mechanism to
      allow the back end to control what the linker does with       allow the back end to control what the linker does with
      sections.  */       sections.  */
 #define SEC_COFF_SHARED_LIBRARY 0x4000000  #define SEC_COFF_SHARED_LIBRARY     0x4000000
   
   /* This input section should be copied to output in reverse order    /* This input section should be copied to output in reverse order
      as an array of pointers.  This is for ELF linker internal use       as an array of pointers.  This is for ELF linker internal use
      only.  */       only.  */
 #define SEC_ELF_REVERSE_COPY 0x4000000  #define SEC_ELF_REVERSE_COPY        0x4000000
   
   /* This section contains data which may be shared with other    /* This section contains data which may be shared with other
      executables or shared objects. This is for COFF only.  */       executables or shared objects. This is for COFF only.  */
 #define SEC_COFF_SHARED 0x8000000  #define SEC_COFF_SHARED             0x8000000
   
   /* This section should be compressed.  This is for ELF linker    /* This section should be compressed.  This is for ELF linker
      internal use only.  */       internal use only.  */
 #define SEC_ELF_COMPRESS 0x8000000  #define SEC_ELF_COMPRESS            0x8000000
   
   /* When a section with this flag is being linked, then if the size of    /* When a section with this flag is being linked, then if the size of
      the input section is less than a page, it should not cross a page       the input section is less than a page, it should not cross a page
      boundary.  If the size of the input section is one page or more,       boundary.  If the size of the input section is one page or more,
      it should be aligned on a page boundary.  This is for TI       it should be aligned on a page boundary.  This is for TI
      TMS320C54X only.  */       TMS320C54X only.  */
 #define SEC_TIC54X_BLOCK 0x10000000  #define SEC_TIC54X_BLOCK           0x10000000
   
   /* This section should be renamed.  This is for ELF linker    /* This section should be renamed.  This is for ELF linker
      internal use only.  */       internal use only.  */
 #define SEC_ELF_RENAME 0x10000000  #define SEC_ELF_RENAME             0x10000000
   
   /* Conditionally link this section; do not link if there are no    /* Conditionally link this section; do not link if there are no
      references found to any symbol in the section.  This is for TI       references found to any symbol in the section.  This is for TI
      TMS320C54X only.  */       TMS320C54X only.  */
 #define SEC_TIC54X_CLINK 0x20000000  #define SEC_TIC54X_CLINK           0x20000000
   
   /* This section contains vliw code.  This is for Toshiba MeP only.  */    /* This section contains vliw code.  This is for Toshiba MeP only.  */
 #define SEC_MEP_VLIW 0x20000000  #define SEC_MEP_VLIW               0x20000000
   
     /* All symbols, sizes and relocations in this section are octets
        instead of bytes.  Required for DWARF debug sections as DWARF
        information is organized in octets, not bytes.  */
   #define SEC_ELF_OCTETS             0x40000000
   
   /* Indicate that section has the no read flag set. This happens    /* Indicate that section has the no read flag set. This happens
      when memory read flag isn't set. */       when memory read flag isn't set. */
 #define SEC_COFF_NOREAD 0x40000000  #define SEC_COFF_NOREAD            0x40000000
   
     /* Indicate that section has the purecode flag set.  */
   #define SEC_ELF_PURECODE           0x80000000
   
   /*  End of section flags.  */    /*  End of section flags.  */
   
Line 1502  typedef struct bfd_section
Line 1074  typedef struct bfd_section
       information.  */        information.  */
   bfd_vma lma;    bfd_vma lma;
   
   /* The size of the section in octets, as it will be output.    /* The size of the section in *octets*, as it will be output.
      Contains a value even if the section has no contents (e.g., the       Contains a value even if the section has no contents (e.g., the
      size of <<.bss>>).  */       size of <<.bss>>).  */
   bfd_size_type size;    bfd_size_type size;
Line 1627  struct relax_table {
Line 1199  struct relax_table {
   int size;    int size;
 };  };
   
   static inline const char *
   bfd_section_name (const asection *sec)
   {
     return sec->name;
   }
   
   static inline bfd_size_type
   bfd_section_size (const asection *sec)
   {
     return sec->size;
   }
   
   static inline bfd_vma
   bfd_section_vma (const asection *sec)
   {
     return sec->vma;
   }
   
   static inline bfd_vma
   bfd_section_lma (const asection *sec)
   {
     return sec->lma;
   }
   
   static inline unsigned int
   bfd_section_alignment (const asection *sec)
   {
     return sec->alignment_power;
   }
   
   static inline flagword
   bfd_section_flags (const asection *sec)
   {
     return sec->flags;
   }
   
   static inline void *
   bfd_section_userdata (const asection *sec)
   {
     return sec->userdata;
   }
   static inline bfd_boolean
   bfd_is_com_section (const asection *sec)
   {
     return (sec->flags & SEC_IS_COMMON) != 0;
   }
   
 /* Note: the following are provided as inline functions rather than macros  /* Note: the following are provided as inline functions rather than macros
    because not all callers use the return value.  A macro implementation     because not all callers use the return value.  A macro implementation
    would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some     would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
    compilers will complain about comma expressions that have no effect.  */     compilers will complain about comma expressions that have no effect.  */
 static inline bfd_boolean  static inline bfd_boolean
 bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val)  bfd_set_section_userdata (asection *sec, void *val)
 {  {
   ptr->userdata = val;    sec->userdata = val;
   return TRUE;    return TRUE;
 }  }
   
 static inline bfd_boolean  static inline bfd_boolean
 bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)  bfd_set_section_vma (asection *sec, bfd_vma val)
 {  {
   ptr->vma = ptr->lma = val;    sec->vma = sec->lma = val;
   ptr->user_set_vma = TRUE;    sec->user_set_vma = TRUE;
   return TRUE;    return TRUE;
 }  }
   
 static inline bfd_boolean  static inline bfd_boolean
 bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val)  bfd_set_section_lma (asection *sec, bfd_vma val)
 {  {
   ptr->alignment_power = val;    sec->lma = val;
     return TRUE;
   }
   
   static inline bfd_boolean
   bfd_set_section_alignment (asection *sec, unsigned int val)
   {
     sec->alignment_power = val;
   return TRUE;    return TRUE;
 }  }
   
Line 1672  extern asection _bfd_std_section[4];
Line 1298  extern asection _bfd_std_section[4];
 /* Pointer to the indirect section.  */  /* Pointer to the indirect section.  */
 #define bfd_ind_section_ptr (&_bfd_std_section[3])  #define bfd_ind_section_ptr (&_bfd_std_section[3])
   
 #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)  static inline bfd_boolean
 #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)  bfd_is_und_section (const asection *sec)
 #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)  {
     return sec == bfd_und_section_ptr;
 #define bfd_is_const_section(SEC)              \  }
  (   ((SEC) == bfd_abs_section_ptr)            \  
   || ((SEC) == bfd_und_section_ptr)            \  static inline bfd_boolean
   || ((SEC) == bfd_com_section_ptr)            \  bfd_is_abs_section (const asection *sec)
   || ((SEC) == bfd_ind_section_ptr))  {
     return sec == bfd_abs_section_ptr;
   }
   
 /* Macros to handle insertion and deletion of a bfd's sections.  These  static inline bfd_boolean
    only handle the list pointers, ie. do not adjust section_count,  bfd_is_ind_section (const asection *sec)
    target_index etc.  */  {
 #define bfd_section_list_remove(ABFD, S) \    return sec == bfd_ind_section_ptr;
   do                                                   \  }
     {                                                  \  
       asection *_s = S;                                \  static inline bfd_boolean
       asection *_next = _s->next;                      \  bfd_is_const_section (const asection *sec)
       asection *_prev = _s->prev;                      \  {
       if (_prev)                                       \    return sec >= bfd_abs_section_ptr && sec <= bfd_ind_section_ptr;
         _prev->next = _next;                           \  }
       else                                             \  
         (ABFD)->sections = _next;                      \  /* Return TRUE if input section SEC has been discarded.  */
       if (_next)                                       \  static inline bfd_boolean
         _next->prev = _prev;                           \  discarded_section (const asection *sec)
       else                                             \  {
         (ABFD)->section_last = _prev;                  \    return (!bfd_is_abs_section (sec)
     }                                                  \            && bfd_is_abs_section (sec->output_section)
   while (0)            && sec->sec_info_type != SEC_INFO_TYPE_MERGE
 #define bfd_section_list_append(ABFD, S) \            && sec->sec_info_type != SEC_INFO_TYPE_JUST_SYMS);
   do                                                   \  }
     {                                                  \  
       asection *_s = S;                                \  
       bfd *_abfd = ABFD;                               \  
       _s->next = NULL;                                 \  
       if (_abfd->section_last)                         \  
         {                                              \  
           _s->prev = _abfd->section_last;              \  
           _abfd->section_last->next = _s;              \  
         }                                              \  
       else                                             \  
         {                                              \  
           _s->prev = NULL;                             \  
           _abfd->sections = _s;                        \  
         }                                              \  
       _abfd->section_last = _s;                        \  
     }                                                  \  
   while (0)  
 #define bfd_section_list_prepend(ABFD, S) \  
   do                                                   \  
     {                                                  \  
       asection *_s = S;                                \  
       bfd *_abfd = ABFD;                               \  
       _s->prev = NULL;                                 \  
       if (_abfd->sections)                             \  
         {                                              \  
           _s->next = _abfd->sections;                  \  
           _abfd->sections->prev = _s;                  \  
         }                                              \  
       else                                             \  
         {                                              \  
           _s->next = NULL;                             \  
           _abfd->section_last = _s;                    \  
         }                                              \  
       _abfd->sections = _s;                            \  
     }                                                  \  
   while (0)  
 #define bfd_section_list_insert_after(ABFD, A, S) \  
   do                                                   \  
     {                                                  \  
       asection *_a = A;                                \  
       asection *_s = S;                                \  
       asection *_next = _a->next;                      \  
       _s->next = _next;                                \  
       _s->prev = _a;                                   \  
       _a->next = _s;                                   \  
       if (_next)                                       \  
         _next->prev = _s;                              \  
       else                                             \  
         (ABFD)->section_last = _s;                     \  
     }                                                  \  
   while (0)  
 #define bfd_section_list_insert_before(ABFD, B, S) \  
   do                                                   \  
     {                                                  \  
       asection *_b = B;                                \  
       asection *_s = S;                                \  
       asection *_prev = _b->prev;                      \  
       _s->prev = _prev;                                \  
       _s->next = _b;                                   \  
       _b->prev = _s;                                   \  
       if (_prev)                                       \  
         _prev->next = _s;                              \  
       else                                             \  
         (ABFD)->sections = _s;                         \  
     }                                                  \  
   while (0)  
 #define bfd_section_removed_from_list(ABFD, S) \  
   ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))  
   
 #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \  #define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS)                   \
   /* name, id,  index, next, prev, flags, user_set_vma,            */  \    /* name, id,  index, next, prev, flags, user_set_vma,            */  \
   { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \    {  NAME, IDX, 0,     NULL, NULL, FLAGS, 0,                           \
                                                                        \                                                                         \
   /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \    /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
      0,           0,                1,       0,                        \       0,           0,                1,       0,                        \
Line 1810  extern asection _bfd_std_section[4];
Line 1370  extern asection _bfd_std_section[4];
      { NULL }, { NULL }                                                \       { NULL }, { NULL }                                                \
     }      }
   
   /* We use a macro to initialize the static asymbol structures because
      traditional C does not permit us to initialize a union member while
      gcc warns if we don't initialize it.
      the_bfd, name, value, attr, section [, udata]  */
   #ifdef __STDC__
   #define GLOBAL_SYM_INIT(NAME, SECTION) \
     { 0, NAME, 0, BSF_SECTION_SYM, SECTION, { 0 }}
   #else
   #define GLOBAL_SYM_INIT(NAME, SECTION) \
     { 0, NAME, 0, BSF_SECTION_SYM, SECTION }
   #endif
   
 void bfd_section_list_clear (bfd *);  void bfd_section_list_clear (bfd *);
   
 asection *bfd_get_section_by_name (bfd *abfd, const char *name);  asection *bfd_get_section_by_name (bfd *abfd, const char *name);
Line 1839  asection *bfd_make_section_with_flags
Line 1411  asection *bfd_make_section_with_flags
   
 asection *bfd_make_section (bfd *, const char *name);  asection *bfd_make_section (bfd *, const char *name);
   
 int bfd_get_next_section_id (void);  bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
   
 bfd_boolean bfd_set_section_flags  
    (bfd *abfd, asection *sec, flagword flags);  
   
 void bfd_rename_section  void bfd_rename_section
    (bfd *abfd, asection *sec, const char *newname);     (asection *sec, const char *newname);
   
 void bfd_map_over_sections  void bfd_map_over_sections
    (bfd *abfd,     (bfd *abfd,
Line 1857  asection *bfd_sections_find_if
Line 1426  asection *bfd_sections_find_if
     bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),      bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
     void *obj);      void *obj);
   
 bfd_boolean bfd_set_section_size  bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
    (bfd *abfd, asection *sec, bfd_size_type val);  
   
 bfd_boolean bfd_set_section_contents  bfd_boolean bfd_set_section_contents
    (bfd *abfd, asection *section, const void *data,     (bfd *abfd, asection *section, const void *data,
Line 1875  bfd_boolean bfd_copy_private_section_dat
Line 1443  bfd_boolean bfd_copy_private_section_dat
    (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);     (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
   
 #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \  #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
      BFD_SEND (obfd, _bfd_copy_private_section_data, \         BFD_SEND (obfd, _bfd_copy_private_section_data, \
                (ibfd, isection, obfd, osection))                   (ibfd, isection, obfd, osection))
 bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);  bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
   
   const char *bfd_generic_group_name (bfd *, const asection *sec);
   
 bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);  bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
   
 /* Extracted from archures.c.  */  /* Extracted from archures.c.  */
Line 1886  enum bfd_architecture
Line 1456  enum bfd_architecture
 {  {
   bfd_arch_unknown,   /* File arch not known.  */    bfd_arch_unknown,   /* File arch not known.  */
   bfd_arch_obscure,   /* Arch known, not one of these.  */    bfd_arch_obscure,   /* Arch known, not one of these.  */
   bfd_arch_m68k,      /* Motorola 68xxx */    bfd_arch_m68k,      /* Motorola 68xxx.  */
 #define bfd_mach_m68000 1  #define bfd_mach_m68000                1
 #define bfd_mach_m68008 2  #define bfd_mach_m68008                2
 #define bfd_mach_m68010 3  #define bfd_mach_m68010                3
 #define bfd_mach_m68020 4  #define bfd_mach_m68020                4
 #define bfd_mach_m68030 5  #define bfd_mach_m68030                5
 #define bfd_mach_m68040 6  #define bfd_mach_m68040                6
 #define bfd_mach_m68060 7  #define bfd_mach_m68060                7
 #define bfd_mach_cpu32  8  #define bfd_mach_cpu32                 8
 #define bfd_mach_fido   9  #define bfd_mach_fido                  9
 #define bfd_mach_mcf_isa_a_nodiv 10  #define bfd_mach_mcf_isa_a_nodiv       10
 #define bfd_mach_mcf_isa_a 11  #define bfd_mach_mcf_isa_a             11
 #define bfd_mach_mcf_isa_a_mac 12  #define bfd_mach_mcf_isa_a_mac         12
 #define bfd_mach_mcf_isa_a_emac 13  #define bfd_mach_mcf_isa_a_emac        13
 #define bfd_mach_mcf_isa_aplus 14  #define bfd_mach_mcf_isa_aplus         14
 #define bfd_mach_mcf_isa_aplus_mac 15  #define bfd_mach_mcf_isa_aplus_mac     15
 #define bfd_mach_mcf_isa_aplus_emac 16  #define bfd_mach_mcf_isa_aplus_emac    16
 #define bfd_mach_mcf_isa_b_nousp 17  #define bfd_mach_mcf_isa_b_nousp       17
 #define bfd_mach_mcf_isa_b_nousp_mac 18  #define bfd_mach_mcf_isa_b_nousp_mac   18
 #define bfd_mach_mcf_isa_b_nousp_emac 19  #define bfd_mach_mcf_isa_b_nousp_emac  19
 #define bfd_mach_mcf_isa_b 20  #define bfd_mach_mcf_isa_b             20
 #define bfd_mach_mcf_isa_b_mac 21  #define bfd_mach_mcf_isa_b_mac         21
 #define bfd_mach_mcf_isa_b_emac 22  #define bfd_mach_mcf_isa_b_emac        22
 #define bfd_mach_mcf_isa_b_float 23  #define bfd_mach_mcf_isa_b_float       23
 #define bfd_mach_mcf_isa_b_float_mac 24  #define bfd_mach_mcf_isa_b_float_mac   24
 #define bfd_mach_mcf_isa_b_float_emac 25  #define bfd_mach_mcf_isa_b_float_emac  25
 #define bfd_mach_mcf_isa_c 26  #define bfd_mach_mcf_isa_c             26
 #define bfd_mach_mcf_isa_c_mac 27  #define bfd_mach_mcf_isa_c_mac         27
 #define bfd_mach_mcf_isa_c_emac 28  #define bfd_mach_mcf_isa_c_emac        28
 #define bfd_mach_mcf_isa_c_nodiv 29  #define bfd_mach_mcf_isa_c_nodiv       29
 #define bfd_mach_mcf_isa_c_nodiv_mac 30  #define bfd_mach_mcf_isa_c_nodiv_mac   30
 #define bfd_mach_mcf_isa_c_nodiv_emac 31  #define bfd_mach_mcf_isa_c_nodiv_emac  31
   bfd_arch_vax,       /* DEC Vax */    bfd_arch_vax,       /* DEC Vax.  */
   bfd_arch_i960,      /* Intel 960 */  
     /* The order of the following is important.    bfd_arch_or1k,      /* OpenRISC 1000.  */
        lower number indicates a machine type that  #define bfd_mach_or1k          1
        only accepts a subset of the instructions  #define bfd_mach_or1knd        2
        available to machines with higher numbers.  
        The exception is the "ca", which is  
        incompatible with all other machines except  
        "core".  */  
   
 #define bfd_mach_i960_core      1  
 #define bfd_mach_i960_ka_sa     2  
 #define bfd_mach_i960_kb_sb     3  
 #define bfd_mach_i960_mc        4  
 #define bfd_mach_i960_xa        5  
 #define bfd_mach_i960_ca        6  
 #define bfd_mach_i960_jx        7  
 #define bfd_mach_i960_hx        8  
   
   bfd_arch_or1k,      /* OpenRISC 1000 */  
 #define bfd_mach_or1k           1  
 #define bfd_mach_or1knd         2  
   
   bfd_arch_sparc,     /* SPARC */    bfd_arch_sparc,     /* SPARC.  */
 #define bfd_mach_sparc                 1  #define bfd_mach_sparc                 1
 /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */  /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
 #define bfd_mach_sparc_sparclet        2  #define bfd_mach_sparc_sparclet        2
Line 1953  enum bfd_architecture
Line 1506  enum bfd_architecture
 #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */  #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
 #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */  #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
 #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */  #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
   #define bfd_mach_sparc_v8plusc         11 /* with UA2005 and T1 add'ns.  */
   #define bfd_mach_sparc_v9c             12 /* with UA2005 and T1 add'ns.  */
   #define bfd_mach_sparc_v8plusd         13 /* with UA2007 and T3 add'ns.  */
   #define bfd_mach_sparc_v9d             14 /* with UA2007 and T3 add'ns.  */
   #define bfd_mach_sparc_v8pluse         15 /* with OSA2001 and T4 add'ns (no IMA).  */
   #define bfd_mach_sparc_v9e             16 /* with OSA2001 and T4 add'ns (no IMA).  */
   #define bfd_mach_sparc_v8plusv         17 /* with OSA2011 and T4 and IMA and FJMAU add'ns.  */
   #define bfd_mach_sparc_v9v             18 /* with OSA2011 and T4 and IMA and FJMAU add'ns.  */
   #define bfd_mach_sparc_v8plusm         19 /* with OSA2015 and M7 add'ns.  */
   #define bfd_mach_sparc_v9m             20 /* with OSA2015 and M7 add'ns.  */
   #define bfd_mach_sparc_v8plusm8        21 /* with OSA2017 and M8 add'ns.  */
   #define bfd_mach_sparc_v9m8            22 /* with OSA2017 and M8 add'ns.  */
 /* Nonzero if MACH has the v9 instruction set.  */  /* Nonzero if MACH has the v9 instruction set.  */
 #define bfd_mach_sparc_v9_p(mach) \  #define bfd_mach_sparc_v9_p(mach) \
   ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \    ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9m8 \
    && (mach) != bfd_mach_sparc_sparclite_le)     && (mach) != bfd_mach_sparc_sparclite_le)
 /* Nonzero if MACH is a 64 bit sparc architecture.  */  /* Nonzero if MACH is a 64 bit sparc architecture.  */
 #define bfd_mach_sparc_64bit_p(mach) \  #define bfd_mach_sparc_64bit_p(mach) \
   ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)    ((mach) >= bfd_mach_sparc_v9 \
   bfd_arch_spu,       /* PowerPC SPU */     && (mach) != bfd_mach_sparc_v8plusb \
      && (mach) != bfd_mach_sparc_v8plusc \
      && (mach) != bfd_mach_sparc_v8plusd \
      && (mach) != bfd_mach_sparc_v8pluse \
      && (mach) != bfd_mach_sparc_v8plusv \
      && (mach) != bfd_mach_sparc_v8plusm \
      && (mach) != bfd_mach_sparc_v8plusm8)
     bfd_arch_spu,       /* PowerPC SPU.  */
 #define bfd_mach_spu           256  #define bfd_mach_spu           256
   bfd_arch_mips,      /* MIPS Rxxxx */    bfd_arch_mips,      /* MIPS Rxxxx.  */
 #define bfd_mach_mips3000              3000  #define bfd_mach_mips3000              3000
 #define bfd_mach_mips3900              3900  #define bfd_mach_mips3900              3900
 #define bfd_mach_mips4000              4000  #define bfd_mach_mips4000              4000
Line 1990  enum bfd_architecture
Line 1562  enum bfd_architecture
 #define bfd_mach_mips5                 5  #define bfd_mach_mips5                 5
 #define bfd_mach_mips_loongson_2e      3001  #define bfd_mach_mips_loongson_2e      3001
 #define bfd_mach_mips_loongson_2f      3002  #define bfd_mach_mips_loongson_2f      3002
 #define bfd_mach_mips_loongson_3a      3003  #define bfd_mach_mips_gs464            3003
 #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */  #define bfd_mach_mips_gs464e           3004
   #define bfd_mach_mips_gs264e           3005
   #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01.  */
 #define bfd_mach_mips_octeon           6501  #define bfd_mach_mips_octeon           6501
 #define bfd_mach_mips_octeonp          6601  #define bfd_mach_mips_octeonp          6601
 #define bfd_mach_mips_octeon2          6502  #define bfd_mach_mips_octeon2          6502
 #define bfd_mach_mips_octeon3          6503  #define bfd_mach_mips_octeon3          6503
 #define bfd_mach_mips_xlr              887682   /* decimal 'XLR'  */  #define bfd_mach_mips_xlr              887682   /* decimal 'XLR'.  */
   #define bfd_mach_mips_interaptiv_mr2   736550   /* decimal 'IA2'.  */
 #define bfd_mach_mipsisa32             32  #define bfd_mach_mipsisa32             32
 #define bfd_mach_mipsisa32r2           33  #define bfd_mach_mipsisa32r2           33
 #define bfd_mach_mipsisa32r3           34  #define bfd_mach_mipsisa32r3           34
Line 2008  enum bfd_architecture
Line 1583  enum bfd_architecture
 #define bfd_mach_mipsisa64r5           68  #define bfd_mach_mipsisa64r5           68
 #define bfd_mach_mipsisa64r6           69  #define bfd_mach_mipsisa64r6           69
 #define bfd_mach_mips_micromips        96  #define bfd_mach_mips_micromips        96
   bfd_arch_i386,      /* Intel 386 */    bfd_arch_i386,      /* Intel 386.  */
 #define bfd_mach_i386_intel_syntax     (1 << 0)  #define bfd_mach_i386_intel_syntax     (1 << 0)
 #define bfd_mach_i386_i8086            (1 << 1)  #define bfd_mach_i386_i8086            (1 << 1)
 #define bfd_mach_i386_i386             (1 << 2)  #define bfd_mach_i386_i386             (1 << 2)
Line 2017  enum bfd_architecture
Line 1592  enum bfd_architecture
 #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)  #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
 #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)  #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
 #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)  #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
   bfd_arch_l1om,   /* Intel L1OM */    bfd_arch_l1om,      /* Intel L1OM.  */
 #define bfd_mach_l1om                  (1 << 5)  #define bfd_mach_l1om                  (1 << 5)
 #define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)  #define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
   bfd_arch_k1om,   /* Intel K1OM */    bfd_arch_k1om,      /* Intel K1OM.  */
 #define bfd_mach_k1om                  (1 << 6)  #define bfd_mach_k1om                  (1 << 6)
 #define bfd_mach_k1om_intel_syntax     (bfd_mach_k1om | bfd_mach_i386_intel_syntax)  #define bfd_mach_k1om_intel_syntax     (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
 #define bfd_mach_i386_nacl             (1 << 7)  #define bfd_mach_i386_nacl             (1 << 7)
 #define bfd_mach_i386_i386_nacl        (bfd_mach_i386_i386 | bfd_mach_i386_nacl)  #define bfd_mach_i386_i386_nacl        (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
 #define bfd_mach_x86_64_nacl           (bfd_mach_x86_64 | bfd_mach_i386_nacl)  #define bfd_mach_x86_64_nacl           (bfd_mach_x86_64 | bfd_mach_i386_nacl)
 #define bfd_mach_x64_32_nacl           (bfd_mach_x64_32 | bfd_mach_i386_nacl)  #define bfd_mach_x64_32_nacl           (bfd_mach_x64_32 | bfd_mach_i386_nacl)
   bfd_arch_iamcu,   /* Intel MCU */    bfd_arch_iamcu,     /* Intel MCU.  */
 #define bfd_mach_iamcu                 (1 << 8)  #define bfd_mach_iamcu                 (1 << 8)
 #define bfd_mach_i386_iamcu            (bfd_mach_i386_i386 | bfd_mach_iamcu)  #define bfd_mach_i386_iamcu            (bfd_mach_i386_i386 | bfd_mach_iamcu)
 #define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax)  #define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax)
   bfd_arch_we32k,     /* AT&T WE32xxx */    bfd_arch_romp,      /* IBM ROMP PC/RT.  */
   bfd_arch_tahoe,     /* CCI/Harris Tahoe */    bfd_arch_convex,    /* Convex.  */
   bfd_arch_i860,      /* Intel 860 */    bfd_arch_m98k,      /* Motorola 98xxx.  */
   bfd_arch_i370,      /* IBM 360/370 Mainframes */    bfd_arch_pyramid,   /* Pyramid Technology.  */
   bfd_arch_romp,      /* IBM ROMP PC/RT */    bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300).  */
   bfd_arch_convex,    /* Convex */  #define bfd_mach_h8300         1
   bfd_arch_m88k,      /* Motorola 88xxx */  #define bfd_mach_h8300h        2
   bfd_arch_m98k,      /* Motorola 98xxx */  #define bfd_mach_h8300s        3
   bfd_arch_pyramid,   /* Pyramid Technology */  #define bfd_mach_h8300hn       4
   bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */  #define bfd_mach_h8300sn       5
 #define bfd_mach_h8300    1  #define bfd_mach_h8300sx       6
 #define bfd_mach_h8300h   2  #define bfd_mach_h8300sxn      7
 #define bfd_mach_h8300s   3    bfd_arch_pdp11,     /* DEC PDP-11.  */
 #define bfd_mach_h8300hn  4  
 #define bfd_mach_h8300sn  5  
 #define bfd_mach_h8300sx  6  
 #define bfd_mach_h8300sxn 7  
   bfd_arch_pdp11,     /* DEC PDP-11 */  
   bfd_arch_plugin,    bfd_arch_plugin,
   bfd_arch_powerpc,   /* PowerPC */    bfd_arch_powerpc,   /* PowerPC.  */
 #define bfd_mach_ppc           32  #define bfd_mach_ppc           32
 #define bfd_mach_ppc64         64  #define bfd_mach_ppc64         64
 #define bfd_mach_ppc_403       403  #define bfd_mach_ppc_403       403
Line 2077  enum bfd_architecture
Line 1647  enum bfd_architecture
 #define bfd_mach_ppc_e6500     5007  #define bfd_mach_ppc_e6500     5007
 #define bfd_mach_ppc_titan     83  #define bfd_mach_ppc_titan     83
 #define bfd_mach_ppc_vle       84  #define bfd_mach_ppc_vle       84
   bfd_arch_riscv,     /* RISC-V */    bfd_arch_rs6000,    /* IBM RS/6000.  */
 #define bfd_mach_riscv32       132  
 #define bfd_mach_riscv64       164  
   bfd_arch_rs6000,    /* IBM RS/6000 */  
 #define bfd_mach_rs6k          6000  #define bfd_mach_rs6k          6000
 #define bfd_mach_rs6k_rs1      6001  #define bfd_mach_rs6k_rs1      6001
 #define bfd_mach_rs6k_rsc      6003  #define bfd_mach_rs6k_rsc      6003
 #define bfd_mach_rs6k_rs2      6002  #define bfd_mach_rs6k_rs2      6002
   bfd_arch_hppa,      /* HP PA RISC */    bfd_arch_hppa,      /* HP PA RISC.  */
 #define bfd_mach_hppa10        10  #define bfd_mach_hppa10        10
 #define bfd_mach_hppa11        11  #define bfd_mach_hppa11        11
 #define bfd_mach_hppa20        20  #define bfd_mach_hppa20        20
 #define bfd_mach_hppa20w       25  #define bfd_mach_hppa20w       25
   bfd_arch_d10v,      /* Mitsubishi D10V */    bfd_arch_d10v,      /* Mitsubishi D10V.  */
 #define bfd_mach_d10v          1  #define bfd_mach_d10v          1
 #define bfd_mach_d10v_ts2      2  #define bfd_mach_d10v_ts2      2
 #define bfd_mach_d10v_ts3      3  #define bfd_mach_d10v_ts3      3
   bfd_arch_d30v,      /* Mitsubishi D30V */    bfd_arch_d30v,      /* Mitsubishi D30V.  */
   bfd_arch_dlx,       /* DLX */    bfd_arch_dlx,       /* DLX.  */
   bfd_arch_m68hc11,   /* Motorola 68HC11 */    bfd_arch_m68hc11,   /* Motorola 68HC11.  */
   bfd_arch_m68hc12,   /* Motorola 68HC12 */    bfd_arch_m68hc12,   /* Motorola 68HC12.  */
 #define bfd_mach_m6812_default 0  #define bfd_mach_m6812_default 0
 #define bfd_mach_m6812         1  #define bfd_mach_m6812         1
 #define bfd_mach_m6812s        2  #define bfd_mach_m6812s        2
   bfd_arch_m9s12x,   /* Freescale S12X */    bfd_arch_m9s12x,    /* Freescale S12X.  */
   bfd_arch_m9s12xg,  /* Freescale XGATE */    bfd_arch_m9s12xg,   /* Freescale XGATE.  */
   bfd_arch_z8k,       /* Zilog Z8000 */    bfd_arch_s12z,    /* Freescale S12Z.  */
   #define bfd_mach_s12z_default 0
     bfd_arch_z8k,       /* Zilog Z8000.  */
 #define bfd_mach_z8001         1  #define bfd_mach_z8001         1
 #define bfd_mach_z8002         2  #define bfd_mach_z8002         2
   bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */    bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH).  */
   bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */  #define bfd_mach_sh                            1
 #define bfd_mach_sh            1  #define bfd_mach_sh2                           0x20
 #define bfd_mach_sh2        0x20  #define bfd_mach_sh_dsp                        0x2d
 #define bfd_mach_sh_dsp     0x2d  #define bfd_mach_sh2a                          0x2a
 #define bfd_mach_sh2a       0x2a  #define bfd_mach_sh2a_nofpu                    0x2b
 #define bfd_mach_sh2a_nofpu 0x2b  
 #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1  #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
 #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2  #define bfd_mach_sh2a_nofpu_or_sh3_nommu       0x2a2
 #define bfd_mach_sh2a_or_sh4  0x2a3  #define bfd_mach_sh2a_or_sh4                   0x2a3
 #define bfd_mach_sh2a_or_sh3e 0x2a4  #define bfd_mach_sh2a_or_sh3e                  0x2a4
 #define bfd_mach_sh2e       0x2e  #define bfd_mach_sh2e                          0x2e
 #define bfd_mach_sh3        0x30  #define bfd_mach_sh3                           0x30
 #define bfd_mach_sh3_nommu  0x31  #define bfd_mach_sh3_nommu                     0x31
 #define bfd_mach_sh3_dsp    0x3d  #define bfd_mach_sh3_dsp                       0x3d
 #define bfd_mach_sh3e       0x3e  #define bfd_mach_sh3e                          0x3e
 #define bfd_mach_sh4        0x40  #define bfd_mach_sh4                           0x40
 #define bfd_mach_sh4_nofpu  0x41  #define bfd_mach_sh4_nofpu                     0x41
 #define bfd_mach_sh4_nommu_nofpu  0x42  #define bfd_mach_sh4_nommu_nofpu               0x42
 #define bfd_mach_sh4a       0x4a  #define bfd_mach_sh4a                          0x4a
 #define bfd_mach_sh4a_nofpu 0x4b  #define bfd_mach_sh4a_nofpu                    0x4b
 #define bfd_mach_sh4al_dsp  0x4d  #define bfd_mach_sh4al_dsp                     0x4d
 #define bfd_mach_sh5        0x50    bfd_arch_alpha,     /* Dec Alpha.  */
   bfd_arch_alpha,     /* Dec Alpha */  #define bfd_mach_alpha_ev4     0x10
 #define bfd_mach_alpha_ev4  0x10  #define bfd_mach_alpha_ev5     0x20
 #define bfd_mach_alpha_ev5  0x20  #define bfd_mach_alpha_ev6     0x30
 #define bfd_mach_alpha_ev6  0x30  
   bfd_arch_arm,       /* Advanced Risc Machines ARM.  */    bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
 #define bfd_mach_arm_unknown   0  #define bfd_mach_arm_unknown   0
 #define bfd_mach_arm_2         1  #define bfd_mach_arm_2         1
Line 2148  enum bfd_architecture
Line 1715  enum bfd_architecture
 #define bfd_mach_arm_ep9312    11  #define bfd_mach_arm_ep9312    11
 #define bfd_mach_arm_iWMMXt    12  #define bfd_mach_arm_iWMMXt    12
 #define bfd_mach_arm_iWMMXt2   13  #define bfd_mach_arm_iWMMXt2   13
   bfd_arch_nds32,     /* Andes NDS32 */  #define bfd_mach_arm_5TEJ      14
   #define bfd_mach_arm_6         15
   #define bfd_mach_arm_6KZ       16
   #define bfd_mach_arm_6T2       17
   #define bfd_mach_arm_6K        18
   #define bfd_mach_arm_7         19
   #define bfd_mach_arm_6M        20
   #define bfd_mach_arm_6SM       21
   #define bfd_mach_arm_7EM       22
   #define bfd_mach_arm_8         23
   #define bfd_mach_arm_8R        24
   #define bfd_mach_arm_8M_BASE   25
   #define bfd_mach_arm_8M_MAIN   26
   #define bfd_mach_arm_8_1M_MAIN 27
     bfd_arch_nds32,     /* Andes NDS32.  */
 #define bfd_mach_n1            1  #define bfd_mach_n1            1
 #define bfd_mach_n1h           2  #define bfd_mach_n1h           2
 #define bfd_mach_n1h_v2        3  #define bfd_mach_n1h_v2        3
 #define bfd_mach_n1h_v3        4  #define bfd_mach_n1h_v3        4
 #define bfd_mach_n1h_v3m       5  #define bfd_mach_n1h_v3m       5
   bfd_arch_ns32k,     /* National Semiconductors ns32000 */    bfd_arch_ns32k,     /* National Semiconductors ns32000.  */
   bfd_arch_w65,       /* WDC 65816 */    bfd_arch_tic30,     /* Texas Instruments TMS320C30.  */
   bfd_arch_tic30,     /* Texas Instruments TMS320C30 */    bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X.  */
   bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */  
 #define bfd_mach_tic3x         30  #define bfd_mach_tic3x         30
 #define bfd_mach_tic4x         40  #define bfd_mach_tic4x         40
   bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */    bfd_arch_tic54x,    /* Texas Instruments TMS320C54X.  */
   bfd_arch_tic6x,     /* Texas Instruments TMS320C6X */    bfd_arch_tic6x,     /* Texas Instruments TMS320C6X.  */
   bfd_arch_tic80,     /* TI TMS320c80 (MVP) */    bfd_arch_v850,      /* NEC V850.  */
   bfd_arch_v850,      /* NEC V850 */    bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI).  */
   bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI) */  
 #define bfd_mach_v850          1  #define bfd_mach_v850          1
 #define bfd_mach_v850e         'E'  #define bfd_mach_v850e         'E'
 #define bfd_mach_v850e1        '1'  #define bfd_mach_v850e1        '1'
 #define bfd_mach_v850e2        0x4532  #define bfd_mach_v850e2        0x4532
 #define bfd_mach_v850e2v3      0x45325633  #define bfd_mach_v850e2v3      0x45325633
 #define bfd_mach_v850e3v5      0x45335635 /* ('E'|'3'|'V'|'5') */  #define bfd_mach_v850e3v5      0x45335635 /* ('E'|'3'|'V'|'5').  */
   bfd_arch_arc,       /* ARC Cores */    bfd_arch_arc,       /* ARC Cores.  */
 #define bfd_mach_arc_a4        0  #define bfd_mach_arc_a4        0
 #define bfd_mach_arc_a5        1  #define bfd_mach_arc_a5        1
 #define bfd_mach_arc_arc600    2  #define bfd_mach_arc_arc600    2
 #define bfd_mach_arc_arc601    4  #define bfd_mach_arc_arc601    4
 #define bfd_mach_arc_arc700    3  #define bfd_mach_arc_arc700    3
 #define bfd_mach_arc_arcv2     5  #define bfd_mach_arc_arcv2     5
  bfd_arch_m32c,     /* Renesas M16C/M32C.  */   bfd_arch_m32c,       /* Renesas M16C/M32C.  */
 #define bfd_mach_m16c        0x75  #define bfd_mach_m16c          0x75
 #define bfd_mach_m32c        0x78  #define bfd_mach_m32c          0x78
   bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */    bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D).  */
 #define bfd_mach_m32r          1 /* For backwards compatibility.  */  #define bfd_mach_m32r          1 /* For backwards compatibility.  */
 #define bfd_mach_m32rx         'x'  #define bfd_mach_m32rx         'x'
 #define bfd_mach_m32r2         '2'  #define bfd_mach_m32r2         '2'
   bfd_arch_mn10200,   /* Matsushita MN10200 */    bfd_arch_mn10200,   /* Matsushita MN10200.  */
   bfd_arch_mn10300,   /* Matsushita MN10300 */    bfd_arch_mn10300,   /* Matsushita MN10300.  */
 #define bfd_mach_mn10300               300  #define bfd_mach_mn10300       300
 #define bfd_mach_am33          330  #define bfd_mach_am33          330
 #define bfd_mach_am33_2        332  #define bfd_mach_am33_2        332
   bfd_arch_fr30,    bfd_arch_fr30,
Line 2198  enum bfd_architecture
Line 1777  enum bfd_architecture
 #define bfd_mach_fr300         300  #define bfd_mach_fr300         300
 #define bfd_mach_fr400         400  #define bfd_mach_fr400         400
 #define bfd_mach_fr450         450  #define bfd_mach_fr450         450
 #define bfd_mach_frvtomcat     499     /* fr500 prototype */  #define bfd_mach_frvtomcat     499     /* fr500 prototype.  */
 #define bfd_mach_fr500         500  #define bfd_mach_fr500         500
 #define bfd_mach_fr550         550  #define bfd_mach_fr550         550
   bfd_arch_moxie,       /* The moxie processor */    bfd_arch_moxie,     /* The moxie processor.  */
 #define bfd_mach_moxie         1  #define bfd_mach_moxie         1
   bfd_arch_ft32,       /* The ft32 processor */    bfd_arch_ft32,      /* The ft32 processor.  */
 #define bfd_mach_ft32          1  #define bfd_mach_ft32          1
   #define bfd_mach_ft32b         2
   bfd_arch_mcore,    bfd_arch_mcore,
   bfd_arch_mep,    bfd_arch_mep,
 #define bfd_mach_mep           1  #define bfd_mach_mep           1
Line 2212  enum bfd_architecture
Line 1792  enum bfd_architecture
 #define bfd_mach_mep_c5        0x6335  #define bfd_mach_mep_c5        0x6335
   bfd_arch_metag,    bfd_arch_metag,
 #define bfd_mach_metag         1  #define bfd_mach_metag         1
   bfd_arch_ia64,      /* HP/Intel ia64 */    bfd_arch_ia64,      /* HP/Intel ia64.  */
 #define bfd_mach_ia64_elf64    64  #define bfd_mach_ia64_elf64    64
 #define bfd_mach_ia64_elf32    32  #define bfd_mach_ia64_elf32    32
   bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */    bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
Line 2221  enum bfd_architecture
Line 1801  enum bfd_architecture
  bfd_arch_iq2000,     /* Vitesse IQ2000.  */   bfd_arch_iq2000,     /* Vitesse IQ2000.  */
 #define bfd_mach_iq2000        1  #define bfd_mach_iq2000        1
 #define bfd_mach_iq10          2  #define bfd_mach_iq10          2
   bfd_arch_epiphany,   /* Adapteva EPIPHANY */    bfd_arch_bpf,       /* Linux eBPF.  */
   #define bfd_mach_bpf           1
     bfd_arch_epiphany,  /* Adapteva EPIPHANY.  */
 #define bfd_mach_epiphany16    1  #define bfd_mach_epiphany16    1
 #define bfd_mach_epiphany32    2  #define bfd_mach_epiphany32    2
   bfd_arch_mt,    bfd_arch_mt,
Line 2240  enum bfd_architecture
Line 1822  enum bfd_architecture
 #define bfd_mach_avr5          5  #define bfd_mach_avr5          5
 #define bfd_mach_avr51         51  #define bfd_mach_avr51         51
 #define bfd_mach_avr6          6  #define bfd_mach_avr6          6
 #define bfd_mach_avrtiny   100  #define bfd_mach_avrtiny       100
 #define bfd_mach_avrxmega1 101  #define bfd_mach_avrxmega1     101
 #define bfd_mach_avrxmega2 102  #define bfd_mach_avrxmega2     102
 #define bfd_mach_avrxmega3 103  #define bfd_mach_avrxmega3     103
 #define bfd_mach_avrxmega4 104  #define bfd_mach_avrxmega4     104
 #define bfd_mach_avrxmega5 105  #define bfd_mach_avrxmega5     105
 #define bfd_mach_avrxmega6 106  #define bfd_mach_avrxmega6     106
 #define bfd_mach_avrxmega7 107  #define bfd_mach_avrxmega7     107
   bfd_arch_bfin,        /* ADI Blackfin */    bfd_arch_bfin,      /* ADI Blackfin.  */
 #define bfd_mach_bfin          1  #define bfd_mach_bfin          1
   bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */    bfd_arch_cr16,      /* National Semiconductor CompactRISC (ie CR16).  */
 #define bfd_mach_cr16          1  #define bfd_mach_cr16          1
   bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */  
 #define bfd_mach_cr16c         1  
   bfd_arch_crx,       /*  National Semiconductor CRX.  */    bfd_arch_crx,       /*  National Semiconductor CRX.  */
 #define bfd_mach_crx           1  #define bfd_mach_crx           1
   bfd_arch_cris,      /* Axis CRIS */    bfd_arch_cris,      /* Axis CRIS.  */
 #define bfd_mach_cris_v0_v10   255  #define bfd_mach_cris_v0_v10   255
 #define bfd_mach_cris_v32      32  #define bfd_mach_cris_v32      32
 #define bfd_mach_cris_v10_v32  1032  #define bfd_mach_cris_v10_v32  1032
     bfd_arch_riscv,
   #define bfd_mach_riscv32       132
   #define bfd_mach_riscv64       164
   bfd_arch_rl78,    bfd_arch_rl78,
 #define bfd_mach_rl78  0x75  #define bfd_mach_rl78          0x75
   bfd_arch_rx,        /* Renesas RX.  */    bfd_arch_rx,        /* Renesas RX.  */
 #define bfd_mach_rx            0x75  #define bfd_mach_rx            0x75
   bfd_arch_s390,      /* IBM s390 */  #define bfd_mach_rx_v2         0x76
   #define bfd_mach_rx_v3         0x77
     bfd_arch_s390,      /* IBM s390.  */
 #define bfd_mach_s390_31       31  #define bfd_mach_s390_31       31
 #define bfd_mach_s390_64       64  #define bfd_mach_s390_64       64
   bfd_arch_score,     /* Sunplus score */    bfd_arch_score,     /* Sunplus score.  */
 #define bfd_mach_score3         3  #define bfd_mach_score3        3
 #define bfd_mach_score7         7  #define bfd_mach_score7        7
   bfd_arch_mmix,      /* Donald Knuth's educational processor.  */    bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
   bfd_arch_xstormy16,    bfd_arch_xstormy16,
 #define bfd_mach_xstormy16     1  #define bfd_mach_xstormy16     1
   bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */    bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
 #define bfd_mach_msp11          11  #define bfd_mach_msp11         11
 #define bfd_mach_msp110         110  #define bfd_mach_msp110        110
 #define bfd_mach_msp12          12  #define bfd_mach_msp12         12
 #define bfd_mach_msp13          13  #define bfd_mach_msp13         13
 #define bfd_mach_msp14          14  #define bfd_mach_msp14         14
 #define bfd_mach_msp15          15  #define bfd_mach_msp15         15
 #define bfd_mach_msp16          16  #define bfd_mach_msp16         16
 #define bfd_mach_msp20          20  #define bfd_mach_msp20         20
 #define bfd_mach_msp21          21  #define bfd_mach_msp21         21
 #define bfd_mach_msp22          22  #define bfd_mach_msp22         22
 #define bfd_mach_msp23          23  #define bfd_mach_msp23         23
 #define bfd_mach_msp24          24  #define bfd_mach_msp24         24
 #define bfd_mach_msp26          26  #define bfd_mach_msp26         26
 #define bfd_mach_msp31          31  #define bfd_mach_msp31         31
 #define bfd_mach_msp32          32  #define bfd_mach_msp32         32
 #define bfd_mach_msp33          33  #define bfd_mach_msp33         33
 #define bfd_mach_msp41          41  #define bfd_mach_msp41         41
 #define bfd_mach_msp42          42  #define bfd_mach_msp42         42
 #define bfd_mach_msp43          43  #define bfd_mach_msp43         43
 #define bfd_mach_msp44          44  #define bfd_mach_msp44         44
 #define bfd_mach_msp430x        45  #define bfd_mach_msp430x       45
 #define bfd_mach_msp46          46  #define bfd_mach_msp46         46
 #define bfd_mach_msp47          47  #define bfd_mach_msp47         47
 #define bfd_mach_msp54          54  #define bfd_mach_msp54         54
   bfd_arch_xc16x,     /* Infineon's XC16X Series.               */    bfd_arch_xc16x,     /* Infineon's XC16X Series.  */
 #define bfd_mach_xc16x         1  #define bfd_mach_xc16x         1
 #define bfd_mach_xc16xl        2  #define bfd_mach_xc16xl        2
 #define bfd_mach_xc16xs        3  #define bfd_mach_xc16xs        3
   bfd_arch_xgate,   /* Freescale XGATE */    bfd_arch_xgate,     /* Freescale XGATE.  */
 #define bfd_mach_xgate         1  #define bfd_mach_xgate         1
   bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */    bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
 #define bfd_mach_xtensa        1  #define bfd_mach_xtensa        1
   bfd_arch_z80,    bfd_arch_z80,
 #define bfd_mach_z80strict      1 /* No undocumented opcodes.  */  #define bfd_mach_gbz80         0 /* GameBoy Z80 (reduced instruction set) */
 #define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */  #define bfd_mach_z80strict     1 /* Z80 without undocumented opcodes.  */
 #define bfd_mach_z80full        7 /* All undocumented instructions.  */  #define bfd_mach_z180          2 /* Z180: successor with additional instructions, but without halves of ix and iy */
 #define bfd_mach_r800           11 /* R800: successor with multiplication.  */  #define bfd_mach_z80           3 /* Z80 with ixl, ixh, iyl, and iyh.  */
   bfd_arch_lm32,      /* Lattice Mico32 */  #define bfd_mach_ez80_z80      4 /* eZ80 (successor of Z80 & Z180) in Z80 (16-bit address) mode */
 #define bfd_mach_lm32      1  #define bfd_mach_ez80_adl      5 /* eZ80 (successor of Z80 & Z180) in ADL (24-bit address) mode */
   bfd_arch_microblaze,/* Xilinx MicroBlaze. */  #define bfd_mach_z80full       7 /* Z80 with all undocumented instructions.  */
   bfd_arch_tilepro,   /* Tilera TILEPro */  #define bfd_mach_r800          11 /* R800: successor with multiplication.  */
   bfd_arch_tilegx, /* Tilera TILE-Gx */    bfd_arch_lm32,      /* Lattice Mico32.  */
 #define bfd_mach_tilepro   1  #define bfd_mach_lm32          1
 #define bfd_mach_tilegx    1    bfd_arch_microblaze,/* Xilinx MicroBlaze.  */
 #define bfd_mach_tilegx32  2    bfd_arch_tilepro,   /* Tilera TILEPro.  */
   bfd_arch_aarch64,   /* AArch64  */    bfd_arch_tilegx,    /* Tilera TILE-Gx.  */
   #define bfd_mach_tilepro       1
   #define bfd_mach_tilegx        1
   #define bfd_mach_tilegx32      2
     bfd_arch_aarch64,   /* AArch64.  */
 #define bfd_mach_aarch64 0  #define bfd_mach_aarch64 0
 #define bfd_mach_aarch64_ilp32 32  #define bfd_mach_aarch64_ilp32 32
   bfd_arch_nios2,      /* Nios II */    bfd_arch_nios2,     /* Nios II.  */
 #define bfd_mach_nios2         0  #define bfd_mach_nios2         0
 #define bfd_mach_nios2r1       1  #define bfd_mach_nios2r1       1
 #define bfd_mach_nios2r2       2  #define bfd_mach_nios2r2       2
   bfd_arch_visium,     /* Visium */    bfd_arch_visium,    /* Visium.  */
 #define bfd_mach_visium        1  #define bfd_mach_visium        1
     bfd_arch_wasm32,    /* WebAssembly.  */
   #define bfd_mach_wasm32        1
     bfd_arch_pru,       /* PRU.  */
   #define bfd_mach_pru           0
     bfd_arch_nfp,       /* Netronome Flow Processor */
   #define bfd_mach_nfp3200       0x3200
   #define bfd_mach_nfp6000       0x6000
     bfd_arch_csky,      /* C-SKY.  */
   #define bfd_mach_ck_unknown    0
   #define bfd_mach_ck510         1
   #define bfd_mach_ck610         2
   #define bfd_mach_ck801         3
   #define bfd_mach_ck802         4
   #define bfd_mach_ck803         5
   #define bfd_mach_ck807         6
   #define bfd_mach_ck810         7
   bfd_arch_last    bfd_arch_last
   };    };
   
Line 2345  typedef struct bfd_arch_info
Line 1950  typedef struct bfd_arch_info
      The default arch should be the first entry for an arch so that       The default arch should be the first entry for an arch so that
      all the entries for that arch can be accessed via <<next>>.  */       all the entries for that arch can be accessed via <<next>>.  */
   bfd_boolean the_default;    bfd_boolean the_default;
   const struct bfd_arch_info * (*compatible)    const struct bfd_arch_info * (*compatible) (const struct bfd_arch_info *,
     (const struct bfd_arch_info *a, const struct bfd_arch_info *b);                                                const struct bfd_arch_info *);
   
   bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);    bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
   
Line 2357  typedef struct bfd_arch_info
Line 1962  typedef struct bfd_arch_info
                  bfd_boolean code);                   bfd_boolean code);
   
   const struct bfd_arch_info *next;    const struct bfd_arch_info *next;
   
     /* On some architectures the offset for a relocation can point into
        the middle of an instruction.  This field specifies the maximum
        offset such a relocation can have (in octets).  This affects the
        behaviour of the disassembler, since a value greater than zero
        means that it may need to disassemble an instruction twice, once
        to get its length and then a second time to display it.  If the
        value is negative then this has to be done for every single
        instruction, regardless of the offset of the reloc.  */
     signed int max_reloc_offset_into_insn;
 }  }
 bfd_arch_info_type;  bfd_arch_info_type;
   
Line 2371  const bfd_arch_info_type *bfd_arch_get_c
Line 1986  const bfd_arch_info_type *bfd_arch_get_c
   
 void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);  void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
   
 enum bfd_architecture bfd_get_arch (bfd *abfd);  bfd_boolean bfd_default_set_arch_mach
      (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
   
   enum bfd_architecture bfd_get_arch (const bfd *abfd);
   
 unsigned long bfd_get_mach (bfd *abfd);  unsigned long bfd_get_mach (const bfd *abfd);
   
 unsigned int bfd_arch_bits_per_byte (bfd *abfd);  unsigned int bfd_arch_bits_per_byte (const bfd *abfd);
   
 unsigned int bfd_arch_bits_per_address (bfd *abfd);  unsigned int bfd_arch_bits_per_address (const bfd *abfd);
   
 const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);  const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
   
Line 2387  const bfd_arch_info_type *bfd_lookup_arc
Line 2005  const bfd_arch_info_type *bfd_lookup_arc
 const char *bfd_printable_arch_mach  const char *bfd_printable_arch_mach
    (enum bfd_architecture arch, unsigned long machine);     (enum bfd_architecture arch, unsigned long machine);
   
 unsigned int bfd_octets_per_byte (bfd *abfd);  unsigned int bfd_octets_per_byte (const bfd *abfd,
       const asection *sec);
   
 unsigned int bfd_arch_mach_octets_per_byte  unsigned int bfd_arch_mach_octets_per_byte
    (enum bfd_architecture arch, unsigned long machine);     (enum bfd_architecture arch, unsigned long machine);
Line 2396  unsigned int bfd_arch_mach_octets_per_by
Line 2015  unsigned int bfd_arch_mach_octets_per_by
   
 typedef enum bfd_reloc_status  typedef enum bfd_reloc_status
 {  {
   /* No errors detected.  */    /* No errors detected.  Note - the value 2 is used so that it
   bfd_reloc_ok,       will not be mistaken for the boolean TRUE or FALSE values.  */
     bfd_reloc_ok = 2,
   
   /* The relocation was performed, but there was an overflow.  */    /* The relocation was performed, but there was an overflow.  */
   bfd_reloc_overflow,    bfd_reloc_overflow,
Line 2417  typedef enum bfd_reloc_status
Line 2037  typedef enum bfd_reloc_status
   /* The symbol to relocate against was undefined.  */    /* The symbol to relocate against was undefined.  */
   bfd_reloc_undefined,    bfd_reloc_undefined,
   
   /* The relocation was performed, but may not be ok - presently    /* The relocation was performed, but may not be ok.  If this type is
      generated only when linking i960 coff files with i960 b.out       returned, the error_message argument to bfd_perform_relocation
      symbols.  If this type is returned, the error_message argument       will be set.  */
      to bfd_perform_relocation will be set.  */  
   bfd_reloc_dangerous    bfd_reloc_dangerous
  }   }
  bfd_reloc_status_type;   bfd_reloc_status_type;
   
   typedef const struct reloc_howto_struct reloc_howto_type;
   
 typedef struct reloc_cache_entry  typedef struct reloc_cache_entry
 {  {
Line 2462  enum complain_overflow
Line 2082  enum complain_overflow
      unsigned number.  */       unsigned number.  */
   complain_overflow_unsigned    complain_overflow_unsigned
 };  };
 struct bfd_symbol;             /* Forward declaration.  */  
   
 struct reloc_howto_struct  struct reloc_howto_struct
 {  {
   /*  The type field has mainly a documentary use - the back end can    /* The type field has mainly a documentary use - the back end can
       do what it wants with it, though normally the back end's       do what it wants with it, though normally the back end's idea of
       external idea of what a reloc number is stored       an external reloc number is stored in this field.  */
       in this field.  For example, a PC relative word relocation  
       in a coff environment has the type 023 - because that's  
       what the outside world calls a R_PCRWORD reloc.  */  
   unsigned int type;    unsigned int type;
   
   /*  The value the final relocation is shifted right by.  This drops    /* The encoded size of the item to be relocated.  This is *not* a
       unwanted data from the relocation.  */       power-of-two measure.  Use bfd_get_reloc_size to find the size
   unsigned int rightshift;       of the item in bytes.  */
     unsigned int size:3;
   /*  The size of the item to be relocated.  This is *not* a  
       power-of-two measure.  To get the number of bytes operated    /* The number of bits in the field to be relocated.  This is used
       on by a type of relocation, use bfd_get_reloc_size.  */       when doing overflow checking.  */
   int size;    unsigned int bitsize:7;
   
   /*  The number of bits in the item to be relocated.  This is used    /* The value the final relocation is shifted right by.  This drops
       when doing overflow checking.  */       unwanted data from the relocation.  */
   unsigned int bitsize;    unsigned int rightshift:6;
   
   /*  The relocation is relative to the field being relocated.  */    /* The bit position of the reloc value in the destination.
   bfd_boolean pc_relative;       The relocated value is left shifted by this amount.  */
     unsigned int bitpos:6;
   /*  The bit position of the reloc value in the destination.  
       The relocated value is left shifted by this amount.  */  
   unsigned int bitpos;  
   
   /* What type of overflow error should be checked for when    /* What type of overflow error should be checked for when
      relocating.  */       relocating.  */
   enum complain_overflow complain_on_overflow;    ENUM_BITFIELD (complain_overflow) complain_on_overflow:2;
   
   /* If this field is non null, then the supplied function is    /* The relocation value should be negated before applying.  */
      called rather than the normal function.  This allows really    unsigned int negate:1;
      strange relocation methods to be accommodated (e.g., i960 callj  
      instructions).  */  
   bfd_reloc_status_type (*special_function)  
     (bfd *, arelent *, struct bfd_symbol *, void *, asection *,  
      bfd *, char **);  
   
   /* The textual name of the relocation type.  */    /* The relocation is relative to the item being relocated.  */
   char *name;    unsigned int pc_relative:1;
   
   /* Some formats record a relocation addend in the section contents    /* Some formats record a relocation addend in the section contents
      rather than with the relocation.  For ELF formats this is the       rather than with the relocation.  For ELF formats this is the
Line 2524  struct reloc_howto_struct
Line 2131  struct reloc_howto_struct
      USE_REL targets set this field to TRUE.  Why this is so is peculiar       USE_REL targets set this field to TRUE.  Why this is so is peculiar
      to each particular target.  For relocs that aren't used in partial       to each particular target.  For relocs that aren't used in partial
      links (e.g. GOT stuff) it doesn't matter what this is set to.  */       links (e.g. GOT stuff) it doesn't matter what this is set to.  */
   bfd_boolean partial_inplace;    unsigned int partial_inplace:1;
   
     /* When some formats create PC relative instructions, they leave
        the value of the pc of the place being relocated in the offset
        slot of the instruction, so that a PC relative relocation can
        be made just by adding in an ordinary offset (e.g., sun3 a.out).
        Some formats leave the displacement part of an instruction
        empty (e.g., ELF); this flag signals the fact.  */
     unsigned int pcrel_offset:1;
   
   /* src_mask selects the part of the instruction (or data) to be used    /* src_mask selects the part of the instruction (or data) to be used
      in the relocation sum.  If the target relocations don't have an       in the relocation sum.  If the target relocations don't have an
      addend in the reloc, eg. ELF USE_REL, src_mask will normally equal       addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
      dst_mask to extract the addend from the section contents.  If       dst_mask to extract the addend from the section contents.  If
      relocations do have an addend in the reloc, eg. ELF USE_RELA, this       relocations do have an addend in the reloc, eg. ELF USE_RELA, this
      field should be zero.  Non-zero values for ELF USE_RELA targets are       field should normally be zero.  Non-zero values for ELF USE_RELA
      bogus as in those cases the value in the dst_mask part of the       targets should be viewed with suspicion as normally the value in
      section contents should be treated as garbage.  */       the dst_mask part of the section contents should be ignored.  */
   bfd_vma src_mask;    bfd_vma src_mask;
   
   /* dst_mask selects which parts of the instruction (or data) are    /* dst_mask selects which parts of the instruction (or data) are
      replaced with a relocated value.  */       replaced with a relocated value.  */
   bfd_vma dst_mask;    bfd_vma dst_mask;
   
   /* When some formats create PC relative instructions, they leave    /* If this field is non null, then the supplied function is
      the value of the pc of the place being relocated in the offset       called rather than the normal function.  This allows really
      slot of the instruction, so that a PC relative relocation can       strange relocation methods to be accommodated.  */
      be made just by adding in an ordinary offset (e.g., sun3 a.out).    bfd_reloc_status_type (*special_function)
      Some formats leave the displacement part of an instruction      (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
      empty (e.g., m88k bcs); this flag signals the fact.  */       bfd *, char **);
   bfd_boolean pcrel_offset;  
 };  
   
 #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \    /* The textual name of the relocation type.  */
   { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }    const char *name;
 #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \  };
   HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \  
          NAME, FALSE, 0, 0, IN)  
   
   #define HOWTO(type, right, size, bits, pcrel, left, ovf, func, name,   \
                 inplace, src_mask, dst_mask, pcrel_off)                  \
     { (unsigned) type, size < 0 ? -size : size, bits, right, left, ovf,  \
       size < 0, pcrel, inplace, pcrel_off, src_mask, dst_mask, func, name }
 #define EMPTY_HOWTO(C) \  #define EMPTY_HOWTO(C) \
   HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \    HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
          NULL, FALSE, 0, 0, FALSE)           NULL, FALSE, 0, 0, FALSE)
   
 #define HOWTO_PREPARE(relocation, symbol)               \  
   {                                                     \  
     if (symbol != NULL)                                 \  
       {                                                 \  
         if (bfd_is_com_section (symbol->section))       \  
           {                                             \  
             relocation = 0;                             \  
           }                                             \  
         else                                            \  
           {                                             \  
             relocation = symbol->value;                 \  
           }                                             \  
       }                                                 \  
   }  
   
 unsigned int bfd_get_reloc_size (reloc_howto_type *);  unsigned int bfd_get_reloc_size (reloc_howto_type *);
   
 typedef struct relent_chain  typedef struct relent_chain
Line 2590  bfd_reloc_status_type bfd_check_overflow
Line 2190  bfd_reloc_status_type bfd_check_overflow
     unsigned int addrsize,      unsigned int addrsize,
     bfd_vma relocation);      bfd_vma relocation);
   
   bfd_boolean bfd_reloc_offset_in_range
      (reloc_howto_type *howto,
       bfd *abfd,
       asection *section,
       bfd_size_type offset);
   
 bfd_reloc_status_type bfd_perform_relocation  bfd_reloc_status_type bfd_perform_relocation
    (bfd *abfd,     (bfd *abfd,
     arelent *reloc_entry,      arelent *reloc_entry,
Line 2620  enum bfd_reloc_code_real {
Line 2226  enum bfd_reloc_code_real {
   
 /* PC-relative relocations.  Sometimes these are relative to the address  /* PC-relative relocations.  Sometimes these are relative to the address
 of the relocation itself; sometimes they are relative to the start of  of the relocation itself; sometimes they are relative to the start of
 the section containing the relocation.  It depends on the specific target.  the section containing the relocation.  It depends on the specific target.  */
   
 The 24-bit relocation is used in some Intel 960 configurations.  */  
   BFD_RELOC_64_PCREL,    BFD_RELOC_64_PCREL,
   BFD_RELOC_32_PCREL,    BFD_RELOC_32_PCREL,
   BFD_RELOC_24_PCREL,    BFD_RELOC_24_PCREL,
Line 2714  decided relatively late.  */
Line 2318  decided relatively late.  */
   BFD_RELOC_GPREL16,    BFD_RELOC_GPREL16,
   BFD_RELOC_GPREL32,    BFD_RELOC_GPREL32,
   
 /* Reloc types used for i960/b.out.  */  
   BFD_RELOC_I960_CALLJ,  
   
 /* SPARC ELF relocations.  There is probably some overlap with other  /* SPARC ELF relocations.  There is probably some overlap with other
 relocation types already defined.  */  relocation types already defined.  */
   BFD_RELOC_NONE,    BFD_RELOC_NONE,
Line 2990  to compensate for the borrow when the lo
Line 2591  to compensate for the borrow when the lo
   BFD_RELOC_MICROMIPS_10_PCREL_S1,    BFD_RELOC_MICROMIPS_10_PCREL_S1,
   BFD_RELOC_MICROMIPS_16_PCREL_S1,    BFD_RELOC_MICROMIPS_16_PCREL_S1,
   
   /* MIPS16 PC-relative relocation.  */
     BFD_RELOC_MIPS16_16_PCREL_S1,
   
 /* MIPS PC-relative relocations.  */  /* MIPS PC-relative relocations.  */
   BFD_RELOC_MIPS_21_PCREL_S2,    BFD_RELOC_MIPS_21_PCREL_S2,
   BFD_RELOC_MIPS_26_PCREL_S2,    BFD_RELOC_MIPS_26_PCREL_S2,
Line 3075  to compensate for the borrow when the lo
Line 2679  to compensate for the borrow when the lo
   BFD_RELOC_FT32_20,    BFD_RELOC_FT32_20,
   BFD_RELOC_FT32_17,    BFD_RELOC_FT32_17,
   BFD_RELOC_FT32_18,    BFD_RELOC_FT32_18,
     BFD_RELOC_FT32_RELAX,
     BFD_RELOC_FT32_SC0,
     BFD_RELOC_FT32_SC1,
     BFD_RELOC_FT32_15,
     BFD_RELOC_FT32_DIFF32,
   
   
 /* Fujitsu Frv Relocations.  */  /* Fujitsu Frv Relocations.  */
Line 3310  instruction.  */
Line 2919  instruction.  */
   BFD_RELOC_PPC_VLE_SDAREL_HI16D,    BFD_RELOC_PPC_VLE_SDAREL_HI16D,
   BFD_RELOC_PPC_VLE_SDAREL_HA16A,    BFD_RELOC_PPC_VLE_SDAREL_HA16A,
   BFD_RELOC_PPC_VLE_SDAREL_HA16D,    BFD_RELOC_PPC_VLE_SDAREL_HA16D,
     BFD_RELOC_PPC_16DX_HA,
   BFD_RELOC_PPC_REL16DX_HA,    BFD_RELOC_PPC_REL16DX_HA,
   BFD_RELOC_PPC64_HIGHER,    BFD_RELOC_PPC64_HIGHER,
   BFD_RELOC_PPC64_HIGHER_S,    BFD_RELOC_PPC64_HIGHER_S,
Line 3336  instruction.  */
Line 2946  instruction.  */
   BFD_RELOC_PPC64_PLTGOT16_LO_DS,    BFD_RELOC_PPC64_PLTGOT16_LO_DS,
   BFD_RELOC_PPC64_ADDR16_HIGH,    BFD_RELOC_PPC64_ADDR16_HIGH,
   BFD_RELOC_PPC64_ADDR16_HIGHA,    BFD_RELOC_PPC64_ADDR16_HIGHA,
     BFD_RELOC_PPC64_REL16_HIGH,
     BFD_RELOC_PPC64_REL16_HIGHA,
     BFD_RELOC_PPC64_REL16_HIGHER,
     BFD_RELOC_PPC64_REL16_HIGHERA,
     BFD_RELOC_PPC64_REL16_HIGHEST,
     BFD_RELOC_PPC64_REL16_HIGHESTA,
   BFD_RELOC_PPC64_ADDR64_LOCAL,    BFD_RELOC_PPC64_ADDR64_LOCAL,
   BFD_RELOC_PPC64_ENTRY,    BFD_RELOC_PPC64_ENTRY,
     BFD_RELOC_PPC64_REL24_NOTOC,
     BFD_RELOC_PPC64_D34,
     BFD_RELOC_PPC64_D34_LO,
     BFD_RELOC_PPC64_D34_HI30,
     BFD_RELOC_PPC64_D34_HA30,
     BFD_RELOC_PPC64_PCREL34,
     BFD_RELOC_PPC64_GOT_PCREL34,
     BFD_RELOC_PPC64_PLT_PCREL34,
     BFD_RELOC_PPC64_ADDR16_HIGHER34,
     BFD_RELOC_PPC64_ADDR16_HIGHERA34,
     BFD_RELOC_PPC64_ADDR16_HIGHEST34,
     BFD_RELOC_PPC64_ADDR16_HIGHESTA34,
     BFD_RELOC_PPC64_REL16_HIGHER34,
     BFD_RELOC_PPC64_REL16_HIGHERA34,
     BFD_RELOC_PPC64_REL16_HIGHEST34,
     BFD_RELOC_PPC64_REL16_HIGHESTA34,
     BFD_RELOC_PPC64_D28,
     BFD_RELOC_PPC64_PCREL28,
   
 /* PowerPC and PowerPC64 thread-local storage relocations.  */  /* PowerPC and PowerPC64 thread-local storage relocations.  */
   BFD_RELOC_PPC_TLS,    BFD_RELOC_PPC_TLS,
Line 3372  instruction.  */
Line 3006  instruction.  */
   BFD_RELOC_PPC_GOT_DTPREL16_HA,    BFD_RELOC_PPC_GOT_DTPREL16_HA,
   BFD_RELOC_PPC64_TPREL16_DS,    BFD_RELOC_PPC64_TPREL16_DS,
   BFD_RELOC_PPC64_TPREL16_LO_DS,    BFD_RELOC_PPC64_TPREL16_LO_DS,
     BFD_RELOC_PPC64_TPREL16_HIGH,
     BFD_RELOC_PPC64_TPREL16_HIGHA,
   BFD_RELOC_PPC64_TPREL16_HIGHER,    BFD_RELOC_PPC64_TPREL16_HIGHER,
   BFD_RELOC_PPC64_TPREL16_HIGHERA,    BFD_RELOC_PPC64_TPREL16_HIGHERA,
   BFD_RELOC_PPC64_TPREL16_HIGHEST,    BFD_RELOC_PPC64_TPREL16_HIGHEST,
   BFD_RELOC_PPC64_TPREL16_HIGHESTA,    BFD_RELOC_PPC64_TPREL16_HIGHESTA,
   BFD_RELOC_PPC64_DTPREL16_DS,    BFD_RELOC_PPC64_DTPREL16_DS,
   BFD_RELOC_PPC64_DTPREL16_LO_DS,    BFD_RELOC_PPC64_DTPREL16_LO_DS,
     BFD_RELOC_PPC64_DTPREL16_HIGH,
     BFD_RELOC_PPC64_DTPREL16_HIGHA,
   BFD_RELOC_PPC64_DTPREL16_HIGHER,    BFD_RELOC_PPC64_DTPREL16_HIGHER,
   BFD_RELOC_PPC64_DTPREL16_HIGHERA,    BFD_RELOC_PPC64_DTPREL16_HIGHERA,
   BFD_RELOC_PPC64_DTPREL16_HIGHEST,    BFD_RELOC_PPC64_DTPREL16_HIGHEST,
   BFD_RELOC_PPC64_DTPREL16_HIGHESTA,    BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
   BFD_RELOC_PPC64_TPREL16_HIGH,    BFD_RELOC_PPC64_TPREL34,
   BFD_RELOC_PPC64_TPREL16_HIGHA,    BFD_RELOC_PPC64_DTPREL34,
   BFD_RELOC_PPC64_DTPREL16_HIGH,    BFD_RELOC_PPC64_GOT_TLSGD34,
   BFD_RELOC_PPC64_DTPREL16_HIGHA,    BFD_RELOC_PPC64_GOT_TLSLD34,
     BFD_RELOC_PPC64_GOT_TPREL34,
     BFD_RELOC_PPC64_GOT_DTPREL34,
     BFD_RELOC_PPC64_TLS_PCREL,
   
 /* IBM 370/390 relocations  */  /* IBM 370/390 relocations  */
   BFD_RELOC_I370_D12,    BFD_RELOC_I370_D12,
Line 3415  field in the instruction.  */
Line 3056  field in the instruction.  */
 /* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */  /* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
   BFD_RELOC_ARM_PCREL_JUMP,    BFD_RELOC_ARM_PCREL_JUMP,
   
   /* ARM 5-bit pc-relative branch for Branch Future instructions.  */
     BFD_RELOC_THUMB_PCREL_BRANCH5,
   
   /* ARM 6-bit pc-relative branch for BFCSEL instruction.  */
     BFD_RELOC_THUMB_PCREL_BFCSEL,
   
   /* ARM 17-bit pc-relative branch for Branch Future instructions.  */
     BFD_RELOC_ARM_THUMB_BF17,
   
   /* ARM 13-bit pc-relative branch for BFCSEL instruction.  */
     BFD_RELOC_ARM_THUMB_BF13,
   
   /* ARM 19-bit pc-relative branch for Branch Future Link instruction.  */
     BFD_RELOC_ARM_THUMB_BF19,
   
   /* ARM 12-bit pc-relative branch for Low Overhead Loop instructions.  */
     BFD_RELOC_ARM_THUMB_LOOP12,
   
 /* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.  /* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
 The lowest bit must be zero and is not stored in the instruction.  The lowest bit must be zero and is not stored in the instruction.
 Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an  Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
Line 3461  pc-relative or some form of GOT-indirect
Line 3120  pc-relative or some form of GOT-indirect
   BFD_RELOC_ARM_THUMB_MOVW_PCREL,    BFD_RELOC_ARM_THUMB_MOVW_PCREL,
   BFD_RELOC_ARM_THUMB_MOVT_PCREL,    BFD_RELOC_ARM_THUMB_MOVT_PCREL,
   
   /* ARM FDPIC specific relocations.  */
     BFD_RELOC_ARM_GOTFUNCDESC,
     BFD_RELOC_ARM_GOTOFFFUNCDESC,
     BFD_RELOC_ARM_FUNCDESC,
     BFD_RELOC_ARM_FUNCDESC_VALUE,
     BFD_RELOC_ARM_TLS_GD32_FDPIC,
     BFD_RELOC_ARM_TLS_LDM32_FDPIC,
     BFD_RELOC_ARM_TLS_IE32_FDPIC,
   
 /* Relocations for setting up GOTs and PLTs for shared libraries.  */  /* Relocations for setting up GOTs and PLTs for shared libraries.  */
   BFD_RELOC_ARM_JUMP_SLOT,    BFD_RELOC_ARM_JUMP_SLOT,
   BFD_RELOC_ARM_GLOB_DAT,    BFD_RELOC_ARM_GLOB_DAT,
Line 3523  pc-relative or some form of GOT-indirect
Line 3191  pc-relative or some form of GOT-indirect
 /* ARM support for STT_GNU_IFUNC.  */  /* ARM support for STT_GNU_IFUNC.  */
   BFD_RELOC_ARM_IRELATIVE,    BFD_RELOC_ARM_IRELATIVE,
   
   /* Thumb1 relocations to support execute-only code.  */
     BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC,
     BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC,
     BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC,
     BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC,
   
 /* These relocs are only used within the ARM assembler.  They are not  /* These relocs are only used within the ARM assembler.  They are not
 (at present) written to any object files.  */  (at present) written to any object files.  */
   BFD_RELOC_ARM_IMMEDIATE,    BFD_RELOC_ARM_IMMEDIATE,
Line 3540  pc-relative or some form of GOT-indirect
Line 3214  pc-relative or some form of GOT-indirect
   BFD_RELOC_ARM_CP_OFF_IMM_S2,    BFD_RELOC_ARM_CP_OFF_IMM_S2,
   BFD_RELOC_ARM_T32_CP_OFF_IMM,    BFD_RELOC_ARM_T32_CP_OFF_IMM,
   BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,    BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
     BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM,
   BFD_RELOC_ARM_ADR_IMM,    BFD_RELOC_ARM_ADR_IMM,
   BFD_RELOC_ARM_LDR_IMM,    BFD_RELOC_ARM_LDR_IMM,
   BFD_RELOC_ARM_LITERAL,    BFD_RELOC_ARM_LITERAL,
Line 3685  pc-relative or some form of GOT-indirect
Line 3360  pc-relative or some form of GOT-indirect
   BFD_RELOC_AC_SECTOFF_U8,    BFD_RELOC_AC_SECTOFF_U8,
   BFD_RELOC_AC_SECTOFF_U8_1,    BFD_RELOC_AC_SECTOFF_U8_1,
   BFD_RELOC_AC_SECTOFF_U8_2,    BFD_RELOC_AC_SECTOFF_U8_2,
   BFD_RELOC_AC_SECTFOFF_S9,    BFD_RELOC_AC_SECTOFF_S9,
   BFD_RELOC_AC_SECTFOFF_S9_1,    BFD_RELOC_AC_SECTOFF_S9_1,
   BFD_RELOC_AC_SECTFOFF_S9_2,    BFD_RELOC_AC_SECTOFF_S9_2,
   BFD_RELOC_ARC_SECTOFF_ME_1,    BFD_RELOC_ARC_SECTOFF_ME_1,
   BFD_RELOC_ARC_SECTOFF_ME_2,    BFD_RELOC_ARC_SECTOFF_ME_2,
   BFD_RELOC_ARC_SECTOFF_1,    BFD_RELOC_ARC_SECTOFF_1,
   BFD_RELOC_ARC_SECTOFF_2,    BFD_RELOC_ARC_SECTOFF_2,
     BFD_RELOC_ARC_SDA_12,
   BFD_RELOC_ARC_SDA16_ST2,    BFD_RELOC_ARC_SDA16_ST2,
   BFD_RELOC_ARC_32_PCREL,    BFD_RELOC_ARC_32_PCREL,
   BFD_RELOC_ARC_PC32,    BFD_RELOC_ARC_PC32,
Line 3718  pc-relative or some form of GOT-indirect
Line 3394  pc-relative or some form of GOT-indirect
   BFD_RELOC_ARC_TLS_LE_32,    BFD_RELOC_ARC_TLS_LE_32,
   BFD_RELOC_ARC_S25W_PCREL_PLT,    BFD_RELOC_ARC_S25W_PCREL_PLT,
   BFD_RELOC_ARC_S21H_PCREL_PLT,    BFD_RELOC_ARC_S21H_PCREL_PLT,
     BFD_RELOC_ARC_NPS_CMEM16,
     BFD_RELOC_ARC_JLI_SECTOFF,
   
 /* ADI Blackfin 16 bit immediate absolute reloc.  */  /* ADI Blackfin 16 bit immediate absolute reloc.  */
   BFD_RELOC_BFIN_16_IMM,    BFD_RELOC_BFIN_16_IMM,
Line 4150  This is a 5 bit absolute address.  */
Line 3828  This is a 5 bit absolute address.  */
   
 /* For TLS.  */  /* For TLS.  */
   BFD_RELOC_NDS32_TPOFF,    BFD_RELOC_NDS32_TPOFF,
     BFD_RELOC_NDS32_GOTTPOFF,
   BFD_RELOC_NDS32_TLS_LE_HI20,    BFD_RELOC_NDS32_TLS_LE_HI20,
   BFD_RELOC_NDS32_TLS_LE_LO12,    BFD_RELOC_NDS32_TLS_LE_LO12,
   BFD_RELOC_NDS32_TLS_LE_ADD,  
   BFD_RELOC_NDS32_TLS_LE_LS,  
   BFD_RELOC_NDS32_GOTTPOFF,  
   BFD_RELOC_NDS32_TLS_IE_HI20,  
   BFD_RELOC_NDS32_TLS_IE_LO12S2,  
   BFD_RELOC_NDS32_TLS_TPOFF,  
   BFD_RELOC_NDS32_TLS_LE_20,    BFD_RELOC_NDS32_TLS_LE_20,
   BFD_RELOC_NDS32_TLS_LE_15S0,    BFD_RELOC_NDS32_TLS_LE_15S0,
   BFD_RELOC_NDS32_TLS_LE_15S1,    BFD_RELOC_NDS32_TLS_LE_15S1,
   BFD_RELOC_NDS32_TLS_LE_15S2,    BFD_RELOC_NDS32_TLS_LE_15S2,
     BFD_RELOC_NDS32_TLS_LE_ADD,
     BFD_RELOC_NDS32_TLS_LE_LS,
     BFD_RELOC_NDS32_TLS_IE_HI20,
     BFD_RELOC_NDS32_TLS_IE_LO12,
     BFD_RELOC_NDS32_TLS_IE_LO12S2,
     BFD_RELOC_NDS32_TLS_IEGP_HI20,
     BFD_RELOC_NDS32_TLS_IEGP_LO12,
     BFD_RELOC_NDS32_TLS_IEGP_LO12S2,
     BFD_RELOC_NDS32_TLS_IEGP_LW,
     BFD_RELOC_NDS32_TLS_DESC,
     BFD_RELOC_NDS32_TLS_DESC_HI20,
     BFD_RELOC_NDS32_TLS_DESC_LO12,
     BFD_RELOC_NDS32_TLS_DESC_20,
     BFD_RELOC_NDS32_TLS_DESC_SDA17S2,
     BFD_RELOC_NDS32_TLS_DESC_ADD,
     BFD_RELOC_NDS32_TLS_DESC_FUNC,
     BFD_RELOC_NDS32_TLS_DESC_CALL,
     BFD_RELOC_NDS32_TLS_DESC_MEM,
     BFD_RELOC_NDS32_REMOVE,
     BFD_RELOC_NDS32_GROUP,
   
   /* For floating load store relaxation.  */
     BFD_RELOC_NDS32_LSI,
   
 /* This is a 9-bit reloc  */  /* This is a 9-bit reloc  */
   BFD_RELOC_V850_9_PCREL,    BFD_RELOC_V850_9_PCREL,
Line 4642  number for the IN and OUT instructions  
Line 4338  number for the IN and OUT instructions  
 number for the SBIC, SBIS, SBI and CBI instructions  */  number for the SBIC, SBIS, SBI and CBI instructions  */
   BFD_RELOC_AVR_PORT5,    BFD_RELOC_AVR_PORT5,
   
 /* Renesas RL78 Relocations.  */  /* RISC-V relocations.  */
   BFD_RELOC_RL78_NEG8,    BFD_RELOC_RISCV_HI20,
   BFD_RELOC_RL78_NEG16,    BFD_RELOC_RISCV_PCREL_HI20,
   BFD_RELOC_RL78_NEG24,    BFD_RELOC_RISCV_PCREL_LO12_I,
   BFD_RELOC_RL78_NEG32,    BFD_RELOC_RISCV_PCREL_LO12_S,
   BFD_RELOC_RL78_16_OP,    BFD_RELOC_RISCV_LO12_I,
   BFD_RELOC_RL78_24_OP,    BFD_RELOC_RISCV_LO12_S,
   BFD_RELOC_RL78_32_OP,    BFD_RELOC_RISCV_GPREL12_I,
   BFD_RELOC_RL78_8U,    BFD_RELOC_RISCV_GPREL12_S,
   BFD_RELOC_RL78_16U,    BFD_RELOC_RISCV_TPREL_HI20,
   BFD_RELOC_RL78_24U,    BFD_RELOC_RISCV_TPREL_LO12_I,
   BFD_RELOC_RL78_DIR3U_PCREL,    BFD_RELOC_RISCV_TPREL_LO12_S,
   BFD_RELOC_RL78_DIFF,    BFD_RELOC_RISCV_TPREL_ADD,
   BFD_RELOC_RL78_GPRELB,    BFD_RELOC_RISCV_CALL,
   BFD_RELOC_RL78_GPRELW,    BFD_RELOC_RISCV_CALL_PLT,
     BFD_RELOC_RISCV_ADD8,
     BFD_RELOC_RISCV_ADD16,
     BFD_RELOC_RISCV_ADD32,
     BFD_RELOC_RISCV_ADD64,
     BFD_RELOC_RISCV_SUB8,
     BFD_RELOC_RISCV_SUB16,
     BFD_RELOC_RISCV_SUB32,
     BFD_RELOC_RISCV_SUB64,
     BFD_RELOC_RISCV_GOT_HI20,
     BFD_RELOC_RISCV_TLS_GOT_HI20,
     BFD_RELOC_RISCV_TLS_GD_HI20,
     BFD_RELOC_RISCV_JMP,
     BFD_RELOC_RISCV_TLS_DTPMOD32,
     BFD_RELOC_RISCV_TLS_DTPREL32,
     BFD_RELOC_RISCV_TLS_DTPMOD64,
     BFD_RELOC_RISCV_TLS_DTPREL64,
     BFD_RELOC_RISCV_TLS_TPREL32,
     BFD_RELOC_RISCV_TLS_TPREL64,
     BFD_RELOC_RISCV_ALIGN,
     BFD_RELOC_RISCV_RVC_BRANCH,
     BFD_RELOC_RISCV_RVC_JUMP,
     BFD_RELOC_RISCV_RVC_LUI,
     BFD_RELOC_RISCV_GPREL_I,
     BFD_RELOC_RISCV_GPREL_S,
     BFD_RELOC_RISCV_TPREL_I,
     BFD_RELOC_RISCV_TPREL_S,
     BFD_RELOC_RISCV_RELAX,
     BFD_RELOC_RISCV_CFA,
     BFD_RELOC_RISCV_SUB6,
     BFD_RELOC_RISCV_SET6,
     BFD_RELOC_RISCV_SET8,
     BFD_RELOC_RISCV_SET16,
     BFD_RELOC_RISCV_SET32,
     BFD_RELOC_RISCV_32_PCREL,
   
   /* Renesas RL78 Relocations.  */
     BFD_RELOC_RL78_NEG8,
     BFD_RELOC_RL78_NEG16,
     BFD_RELOC_RL78_NEG24,
     BFD_RELOC_RL78_NEG32,
     BFD_RELOC_RL78_16_OP,
     BFD_RELOC_RL78_24_OP,
     BFD_RELOC_RL78_32_OP,
     BFD_RELOC_RL78_8U,
     BFD_RELOC_RL78_16U,
     BFD_RELOC_RL78_24U,
     BFD_RELOC_RL78_DIR3U_PCREL,
     BFD_RELOC_RL78_DIFF,
     BFD_RELOC_RL78_GPRELB,
     BFD_RELOC_RL78_GPRELW,
   BFD_RELOC_RL78_GPRELL,    BFD_RELOC_RL78_GPRELL,
   BFD_RELOC_RL78_SYM,    BFD_RELOC_RL78_SYM,
   BFD_RELOC_RL78_OP_SUBTRACT,    BFD_RELOC_RL78_OP_SUBTRACT,
Line 5119  This is the 8 bit high part of an absolu
Line 4865  This is the 8 bit high part of an absolu
 a matching LO8XG part.  */  a matching LO8XG part.  */
   BFD_RELOC_M68HC12_HI8XG,    BFD_RELOC_M68HC12_HI8XG,
   
 /* NS CR16C Relocations.  */  /* Freescale S12Z reloc.
   BFD_RELOC_16C_NUM08,  This is a 15 bit relative address.  If the most significant bits are all zero
   BFD_RELOC_16C_NUM08_C,  then it may be truncated to 8 bits.  */
   BFD_RELOC_16C_NUM16,    BFD_RELOC_S12Z_15_PCREL,
   BFD_RELOC_16C_NUM16_C,  
   BFD_RELOC_16C_NUM32,  
   BFD_RELOC_16C_NUM32_C,  
   BFD_RELOC_16C_DISP04,  
   BFD_RELOC_16C_DISP04_C,  
   BFD_RELOC_16C_DISP08,  
   BFD_RELOC_16C_DISP08_C,  
   BFD_RELOC_16C_DISP16,  
   BFD_RELOC_16C_DISP16_C,  
   BFD_RELOC_16C_DISP24,  
   BFD_RELOC_16C_DISP24_C,  
   BFD_RELOC_16C_DISP24a,  
   BFD_RELOC_16C_DISP24a_C,  
   BFD_RELOC_16C_REG04,  
   BFD_RELOC_16C_REG04_C,  
   BFD_RELOC_16C_REG04a,  
   BFD_RELOC_16C_REG04a_C,  
   BFD_RELOC_16C_REG14,  
   BFD_RELOC_16C_REG14_C,  
   BFD_RELOC_16C_REG16,  
   BFD_RELOC_16C_REG16_C,  
   BFD_RELOC_16C_REG20,  
   BFD_RELOC_16C_REG20_C,  
   BFD_RELOC_16C_ABS20,  
   BFD_RELOC_16C_ABS20_C,  
   BFD_RELOC_16C_ABS24,  
   BFD_RELOC_16C_ABS24_C,  
   BFD_RELOC_16C_IMM04,  
   BFD_RELOC_16C_IMM04_C,  
   BFD_RELOC_16C_IMM16,  
   BFD_RELOC_16C_IMM16_C,  
   BFD_RELOC_16C_IMM20,  
   BFD_RELOC_16C_IMM20_C,  
   BFD_RELOC_16C_IMM24,  
   BFD_RELOC_16C_IMM24_C,  
   BFD_RELOC_16C_IMM32,  
   BFD_RELOC_16C_IMM32_C,  
   
 /* NS CR16 Relocations.  */  /* NS CR16 Relocations.  */
   BFD_RELOC_CR16_NUM8,    BFD_RELOC_CR16_NUM8,
Line 5272  a matching LO8XG part.  */
Line 4981  a matching LO8XG part.  */
   BFD_RELOC_CRIS_DTPMOD,    BFD_RELOC_CRIS_DTPMOD,
   BFD_RELOC_CRIS_32_IE,    BFD_RELOC_CRIS_32_IE,
   
 /* Intel i860 Relocations.  */  
   BFD_RELOC_860_COPY,  
   BFD_RELOC_860_GLOB_DAT,  
   BFD_RELOC_860_JUMP_SLOT,  
   BFD_RELOC_860_RELATIVE,  
   BFD_RELOC_860_PC26,  
   BFD_RELOC_860_PLT26,  
   BFD_RELOC_860_PC16,  
   BFD_RELOC_860_LOW0,  
   BFD_RELOC_860_SPLIT0,  
   BFD_RELOC_860_LOW1,  
   BFD_RELOC_860_SPLIT1,  
   BFD_RELOC_860_LOW2,  
   BFD_RELOC_860_SPLIT2,  
   BFD_RELOC_860_LOW3,  
   BFD_RELOC_860_LOGOT0,  
   BFD_RELOC_860_SPGOT0,  
   BFD_RELOC_860_LOGOT1,  
   BFD_RELOC_860_SPGOT1,  
   BFD_RELOC_860_LOGOTOFF0,  
   BFD_RELOC_860_SPGOTOFF0,  
   BFD_RELOC_860_LOGOTOFF1,  
   BFD_RELOC_860_SPGOTOFF1,  
   BFD_RELOC_860_LOGOTOFF2,  
   BFD_RELOC_860_LOGOTOFF3,  
   BFD_RELOC_860_LOPC,  
   BFD_RELOC_860_HIGHADJ,  
   BFD_RELOC_860_HAGOT,  
   BFD_RELOC_860_HAGOTOFF,  
   BFD_RELOC_860_HAPC,  
   BFD_RELOC_860_HIGH,  
   BFD_RELOC_860_HIGOT,  
   BFD_RELOC_860_HIGOTOFF,  
   
 /* OpenRISC 1000 Relocations.  */  /* OpenRISC 1000 Relocations.  */
   BFD_RELOC_OR1K_REL_26,    BFD_RELOC_OR1K_REL_26,
     BFD_RELOC_OR1K_SLO16,
     BFD_RELOC_OR1K_PCREL_PG21,
     BFD_RELOC_OR1K_LO13,
     BFD_RELOC_OR1K_SLO13,
   BFD_RELOC_OR1K_GOTPC_HI16,    BFD_RELOC_OR1K_GOTPC_HI16,
   BFD_RELOC_OR1K_GOTPC_LO16,    BFD_RELOC_OR1K_GOTPC_LO16,
   BFD_RELOC_OR1K_GOT16,    BFD_RELOC_OR1K_GOT16,
     BFD_RELOC_OR1K_GOT_PG21,
     BFD_RELOC_OR1K_GOT_LO13,
   BFD_RELOC_OR1K_PLT26,    BFD_RELOC_OR1K_PLT26,
   BFD_RELOC_OR1K_GOTOFF_HI16,    BFD_RELOC_OR1K_PLTA26,
   BFD_RELOC_OR1K_GOTOFF_LO16,    BFD_RELOC_OR1K_GOTOFF_SLO16,
   BFD_RELOC_OR1K_COPY,    BFD_RELOC_OR1K_COPY,
   BFD_RELOC_OR1K_GLOB_DAT,    BFD_RELOC_OR1K_GLOB_DAT,
   BFD_RELOC_OR1K_JMP_SLOT,    BFD_RELOC_OR1K_JMP_SLOT,
   BFD_RELOC_OR1K_RELATIVE,    BFD_RELOC_OR1K_RELATIVE,
   BFD_RELOC_OR1K_TLS_GD_HI16,    BFD_RELOC_OR1K_TLS_GD_HI16,
   BFD_RELOC_OR1K_TLS_GD_LO16,    BFD_RELOC_OR1K_TLS_GD_LO16,
     BFD_RELOC_OR1K_TLS_GD_PG21,
     BFD_RELOC_OR1K_TLS_GD_LO13,
   BFD_RELOC_OR1K_TLS_LDM_HI16,    BFD_RELOC_OR1K_TLS_LDM_HI16,
   BFD_RELOC_OR1K_TLS_LDM_LO16,    BFD_RELOC_OR1K_TLS_LDM_LO16,
     BFD_RELOC_OR1K_TLS_LDM_PG21,
     BFD_RELOC_OR1K_TLS_LDM_LO13,
   BFD_RELOC_OR1K_TLS_LDO_HI16,    BFD_RELOC_OR1K_TLS_LDO_HI16,
   BFD_RELOC_OR1K_TLS_LDO_LO16,    BFD_RELOC_OR1K_TLS_LDO_LO16,
   BFD_RELOC_OR1K_TLS_IE_HI16,    BFD_RELOC_OR1K_TLS_IE_HI16,
     BFD_RELOC_OR1K_TLS_IE_AHI16,
   BFD_RELOC_OR1K_TLS_IE_LO16,    BFD_RELOC_OR1K_TLS_IE_LO16,
     BFD_RELOC_OR1K_TLS_IE_PG21,
     BFD_RELOC_OR1K_TLS_IE_LO13,
   BFD_RELOC_OR1K_TLS_LE_HI16,    BFD_RELOC_OR1K_TLS_LE_HI16,
     BFD_RELOC_OR1K_TLS_LE_AHI16,
   BFD_RELOC_OR1K_TLS_LE_LO16,    BFD_RELOC_OR1K_TLS_LE_LO16,
     BFD_RELOC_OR1K_TLS_LE_SLO16,
   BFD_RELOC_OR1K_TLS_TPOFF,    BFD_RELOC_OR1K_TLS_TPOFF,
   BFD_RELOC_OR1K_TLS_DTPOFF,    BFD_RELOC_OR1K_TLS_DTPOFF,
   BFD_RELOC_OR1K_TLS_DTPMOD,    BFD_RELOC_OR1K_TLS_DTPMOD,
   
 /* RISC-V relocations.  */  
   BFD_RELOC_RISCV_HI20,  
   BFD_RELOC_RISCV_PCREL_HI20,  
   BFD_RELOC_RISCV_PCREL_LO12_I,  
   BFD_RELOC_RISCV_PCREL_LO12_S,  
   BFD_RELOC_RISCV_LO12_I,  
   BFD_RELOC_RISCV_LO12_S,  
   BFD_RELOC_RISCV_GPREL12_I,  
   BFD_RELOC_RISCV_GPREL12_S,  
   BFD_RELOC_RISCV_TPREL_HI20,  
   BFD_RELOC_RISCV_TPREL_LO12_I,  
   BFD_RELOC_RISCV_TPREL_LO12_S,  
   BFD_RELOC_RISCV_TPREL_ADD,  
   BFD_RELOC_RISCV_CALL,  
   BFD_RELOC_RISCV_CALL_PLT,  
   BFD_RELOC_RISCV_ADD8,  
   BFD_RELOC_RISCV_ADD16,  
   BFD_RELOC_RISCV_ADD32,  
   BFD_RELOC_RISCV_ADD64,  
   BFD_RELOC_RISCV_SUB8,  
   BFD_RELOC_RISCV_SUB16,  
   BFD_RELOC_RISCV_SUB32,  
   BFD_RELOC_RISCV_SUB64,  
   BFD_RELOC_RISCV_GOT_HI20,  
   BFD_RELOC_RISCV_TLS_GOT_HI20,  
   BFD_RELOC_RISCV_TLS_GD_HI20,  
   BFD_RELOC_RISCV_JMP,  
   BFD_RELOC_RISCV_TLS_DTPMOD32,  
   BFD_RELOC_RISCV_TLS_DTPREL32,  
   BFD_RELOC_RISCV_TLS_DTPMOD64,  
   BFD_RELOC_RISCV_TLS_DTPREL64,  
   BFD_RELOC_RISCV_TLS_TPREL32,  
   BFD_RELOC_RISCV_TLS_TPREL64,  
   BFD_RELOC_RISCV_ALIGN,  
   
 /* H8 elf Relocations.  */  /* H8 elf Relocations.  */
   BFD_RELOC_H8_DIR16A8,    BFD_RELOC_H8_DIR16A8,
   BFD_RELOC_H8_DIR16R8,    BFD_RELOC_H8_DIR16R8,
Line 5492  a matching LO8XG part.  */
Line 5147  a matching LO8XG part.  */
   BFD_RELOC_NIOS2_R2_T1X1I6,    BFD_RELOC_NIOS2_R2_T1X1I6,
   BFD_RELOC_NIOS2_R2_T1X1I6_2,    BFD_RELOC_NIOS2_R2_T1X1I6_2,
   
   /* PRU LDI 16-bit unsigned data-memory relocation.  */
     BFD_RELOC_PRU_U16,
   
   /* PRU LDI 16-bit unsigned instruction-memory relocation.  */
     BFD_RELOC_PRU_U16_PMEMIMM,
   
   /* PRU relocation for two consecutive LDI load instructions that load a
   32 bit value into a register. If the higher bits are all zero, then
   the second instruction may be relaxed.  */
     BFD_RELOC_PRU_LDI32,
   
   /* PRU QBBx 10-bit signed PC-relative relocation.  */
     BFD_RELOC_PRU_S10_PCREL,
   
   /* PRU 8-bit unsigned relocation used for the LOOP instruction.  */
     BFD_RELOC_PRU_U8_PCREL,
   
   /* PRU Program Memory relocations.  Used to convert from byte addressing to
   32-bit word addressing.  */
     BFD_RELOC_PRU_32_PMEM,
     BFD_RELOC_PRU_16_PMEM,
   
   /* PRU relocations to mark the difference of two local symbols.
   These are only needed to support linker relaxation and can be ignored
   when not relaxing.  The field is set to the value of the difference
   assuming no relaxation.  The relocation encodes the position of the
   second symbol so the linker can determine whether to adjust the field
   value. The PMEM variants encode the word difference, instead of byte
   difference between symbols.  */
     BFD_RELOC_PRU_GNU_DIFF8,
     BFD_RELOC_PRU_GNU_DIFF16,
     BFD_RELOC_PRU_GNU_DIFF32,
     BFD_RELOC_PRU_GNU_DIFF16_PMEM,
     BFD_RELOC_PRU_GNU_DIFF32_PMEM,
   
 /* IQ2000 Relocations.  */  /* IQ2000 Relocations.  */
   BFD_RELOC_IQ2000_OFFSET_16,    BFD_RELOC_IQ2000_OFFSET_16,
   BFD_RELOC_IQ2000_OFFSET_21,    BFD_RELOC_IQ2000_OFFSET_21,
Line 5588  BFD_RELOC_XTENSA_ASM_EXPAND.  */
Line 5278  BFD_RELOC_XTENSA_ASM_EXPAND.  */
 /* 8 bit signed offset in (ix+d) or (iy+d).  */  /* 8 bit signed offset in (ix+d) or (iy+d).  */
   BFD_RELOC_Z80_DISP8,    BFD_RELOC_Z80_DISP8,
   
   /* First 8 bits of multibyte (32, 24 or 16 bit) value.  */
     BFD_RELOC_Z80_BYTE0,
   
   /* Second 8 bits of multibyte (32, 24 or 16 bit) value.  */
     BFD_RELOC_Z80_BYTE1,
   
   /* Third 8 bits of multibyte (32 or 24 bit) value.  */
     BFD_RELOC_Z80_BYTE2,
   
   /* Fourth 8 bits of multibyte (32 bit) value.  */
     BFD_RELOC_Z80_BYTE3,
   
   /* Lowest 16 bits of multibyte (32 or 24 bit) value.  */
     BFD_RELOC_Z80_WORD0,
   
   /* Highest 16 bits of multibyte (32 or 24 bit) value.  */
     BFD_RELOC_Z80_WORD1,
   
 /* DJNZ offset.  */  /* DJNZ offset.  */
   BFD_RELOC_Z8K_DISP7,    BFD_RELOC_Z8K_DISP7,
   
Line 5618  BFD_RELOC_MACH_O_PAIR.  */
Line 5326  BFD_RELOC_MACH_O_PAIR.  */
 /* Pair of relocation.  Contains the first symbol.  */  /* Pair of relocation.  Contains the first symbol.  */
   BFD_RELOC_MACH_O_PAIR,    BFD_RELOC_MACH_O_PAIR,
   
   /* Symbol will be substracted.  Must be followed by a BFD_RELOC_32.  */
     BFD_RELOC_MACH_O_SUBTRACTOR32,
   
   /* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
     BFD_RELOC_MACH_O_SUBTRACTOR64,
   
 /* PCREL relocations.  They are marked as branch to create PLT entry if  /* PCREL relocations.  They are marked as branch to create PLT entry if
 required.  */  required.  */
   BFD_RELOC_MACH_O_X86_64_BRANCH32,    BFD_RELOC_MACH_O_X86_64_BRANCH32,
Line 5630  required.  */
Line 5344  required.  */
 the linker could optimize the movq to a leaq if possible.  */  the linker could optimize the movq to a leaq if possible.  */
   BFD_RELOC_MACH_O_X86_64_GOT_LOAD,    BFD_RELOC_MACH_O_X86_64_GOT_LOAD,
   
 /* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */  
   BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32,  
   
 /* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */  
   BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64,  
   
 /* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.  */  /* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.  */
   BFD_RELOC_MACH_O_X86_64_PCREL32_1,    BFD_RELOC_MACH_O_X86_64_PCREL32_1,
   
Line 5645  the linker could optimize the movq to a 
Line 5353  the linker could optimize the movq to a 
 /* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.  */  /* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.  */
   BFD_RELOC_MACH_O_X86_64_PCREL32_4,    BFD_RELOC_MACH_O_X86_64_PCREL32_4,
   
   /* Used when referencing a TLV entry.  */
     BFD_RELOC_MACH_O_X86_64_TLV,
   
   /* Addend for PAGE or PAGEOFF.  */
     BFD_RELOC_MACH_O_ARM64_ADDEND,
   
   /* Relative offset to page of GOT slot.  */
     BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21,
   
   /* Relative offset within page of GOT slot.  */
     BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12,
   
   /* Address of a GOT entry.  */
     BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT,
   
 /* This is a 32 bit reloc for the microblaze that stores the  /* This is a 32 bit reloc for the microblaze that stores the
 low 16 bits of a value  */  low 16 bits of a value  */
   BFD_RELOC_MICROBLAZE_32_LO,    BFD_RELOC_MICROBLAZE_32_LO,
Line 5729  to two words (uses imm instruction).  */
Line 5452  to two words (uses imm instruction).  */
 to two words (uses imm instruction).  */  to two words (uses imm instruction).  */
   BFD_RELOC_MICROBLAZE_64_TLSTPREL,    BFD_RELOC_MICROBLAZE_64_TLSTPREL,
   
   /* This is a 64 bit reloc that stores the 32 bit pc relative
   value in two words (with an imm instruction).  The relocation is
   PC-relative offset from start of TEXT.  */
     BFD_RELOC_MICROBLAZE_64_TEXTPCREL,
   
   /* This is a 64 bit reloc that stores the 32 bit offset
   value in two words (with an imm instruction).  The relocation is
   relative offset from start of TEXT.  */
     BFD_RELOC_MICROBLAZE_64_TEXTREL,
   
 /* AArch64 pseudo relocation code to mark the start of the AArch64  /* AArch64 pseudo relocation code to mark the start of the AArch64
 relocation enumerators.  N.B. the order of the enumerators is  relocation enumerators.  N.B. the order of the enumerators is
 important as several tables in the AArch64 bfd backend are indexed  important as several tables in the AArch64 bfd backend are indexed
 by these enumerators; make sure they are all synced.  */  by these enumerators; make sure they are all synced.  */
   BFD_RELOC_AARCH64_RELOC_START,    BFD_RELOC_AARCH64_RELOC_START,
   
   /* Deprecated AArch64 null relocation code.  */
     BFD_RELOC_AARCH64_NULL,
   
 /* AArch64 null relocation code.  */  /* AArch64 null relocation code.  */
   BFD_RELOC_AARCH64_NONE,    BFD_RELOC_AARCH64_NONE,
   
Line 5794  of a signed value.  Changes instruction 
Line 5530  of a signed value.  Changes instruction 
 value's sign.  */  value's sign.  */
   BFD_RELOC_AARCH64_MOVW_G2_S,    BFD_RELOC_AARCH64_MOVW_G2_S,
   
   /* AArch64 MOV[NZ] instruction with most significant bits 0 to 15
   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
   value's sign.  */
     BFD_RELOC_AARCH64_MOVW_PREL_G0,
   
   /* AArch64 MOV[NZ] instruction with most significant bits 0 to 15
   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
   value's sign.  */
     BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
   
   /* AArch64 MOVK instruction with most significant bits 16 to 31
   of a signed value.  */
     BFD_RELOC_AARCH64_MOVW_PREL_G1,
   
   /* AArch64 MOVK instruction with most significant bits 16 to 31
   of a signed value.  */
     BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
   
   /* AArch64 MOVK instruction with most significant bits 32 to 47
   of a signed value.  */
     BFD_RELOC_AARCH64_MOVW_PREL_G2,
   
   /* AArch64 MOVK instruction with most significant bits 32 to 47
   of a signed value.  */
     BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
   
   /* AArch64 MOVK instruction with most significant bits 47 to 63
   of a signed value.  */
     BFD_RELOC_AARCH64_MOVW_PREL_G3,
   
 /* AArch64 Load Literal instruction, holding a 19 bit pc-relative word  /* AArch64 Load Literal instruction, holding a 19 bit pc-relative word
 offset.  The lowest two bits must be zero and are not stored in the  offset.  The lowest two bits must be zero and are not stored in the
 instruction, giving a 21 bit signed byte offset.  */  instruction, giving a 21 bit signed byte offset.  */
Line 5869  conjunction with BFD_RELOC_AARCH64_LD64_
Line 5635  conjunction with BFD_RELOC_AARCH64_LD64_
   
 /* Unsigned 12 bit byte offset for 64 bit load/store from the page of  /* Unsigned 12 bit byte offset for 64 bit load/store from the page of
 the GOT entry for this symbol.  Used in conjunction with  the GOT entry for this symbol.  Used in conjunction with
 BFD_RELOC_AARCH64_ADR_GOTPAGE.  Valid in LP64 ABI only.  */  BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in LP64 ABI only.  */
   BFD_RELOC_AARCH64_LD64_GOT_LO12_NC,    BFD_RELOC_AARCH64_LD64_GOT_LO12_NC,
   
 /* Unsigned 12 bit byte offset for 32 bit load/store from the page of  /* Unsigned 12 bit byte offset for 32 bit load/store from the page of
 the GOT entry for this symbol.  Used in conjunction with  the GOT entry for this symbol.  Used in conjunction with
 BFD_RELOC_AARCH64_ADR_GOTPAGE.  Valid in ILP32 ABI only.  */  BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in ILP32 ABI only.  */
   BFD_RELOC_AARCH64_LD32_GOT_LO12_NC,    BFD_RELOC_AARCH64_LD32_GOT_LO12_NC,
   
 /* Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry  /* Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry
Line 6021  instructions.  */
Line 5787  instructions.  */
 /* AArch64 TLS LOCAL EXEC relocation.  */  /* AArch64 TLS LOCAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC,    BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC,
   
   /* bit[11:1] of byte offset to module TLS base address, encoded in ldst
   instructions.  */
     BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12,
   
   /* Similar as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no overflow check.  */
     BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC,
   
   /* bit[11:2] of byte offset to module TLS base address, encoded in ldst
   instructions.  */
     BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12,
   
   /* Similar as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no overflow check.  */
     BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC,
   
   /* bit[11:3] of byte offset to module TLS base address, encoded in ldst
   instructions.  */
     BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12,
   
   /* Similar as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no overflow check.  */
     BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC,
   
   /* bit[11:0] of byte offset to module TLS base address, encoded in ldst
   instructions.  */
     BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12,
   
   /* Similar as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow check.  */
     BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC,
   
 /* AArch64 TLS DESC relocation.  */  /* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_LD_PREL19,    BFD_RELOC_AARCH64_TLSDESC_LD_PREL19,
   
Line 6031  instructions.  */
Line 5825  instructions.  */
   BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21,    BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21,
   
 /* AArch64 TLS DESC relocation.  */  /* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC,    BFD_RELOC_AARCH64_TLSDESC_LD64_LO12,
   
 /* AArch64 TLS DESC relocation.  */  /* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC,    BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC,
   
 /* AArch64 TLS DESC relocation.  */  /* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC,    BFD_RELOC_AARCH64_TLSDESC_ADD_LO12,
   
 /* AArch64 TLS DESC relocation.  */  /* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_OFF_G1,    BFD_RELOC_AARCH64_TLSDESC_OFF_G1,
Line 6104  any object files.  */
Line 5898  any object files.  */
 /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check.  */  /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check.  */
   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC,    BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC,
   
   /* AArch64 pseudo relocation code for TLS local exec mode.  It's to be
   used internally by the AArch64 assembler and not (currently) written to
   any object files.  */
     BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12,
   
   /* Similar as BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow check.  */
     BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC,
   
 /* AArch64 pseudo relocation code to be used internally by the AArch64  /* AArch64 pseudo relocation code to be used internally by the AArch64
 assembler and not (currently) written to any object files.  */  assembler and not (currently) written to any object files.  */
   BFD_RELOC_AARCH64_LD_GOT_LO12_NC,    BFD_RELOC_AARCH64_LD_GOT_LO12_NC,
Line 6308  assembler and not (currently) written to
Line 6110  assembler and not (currently) written to
   BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD,    BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD,
   BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD,    BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD,
   
   /* Linux eBPF relocations.  */
     BFD_RELOC_BPF_64,
     BFD_RELOC_BPF_32,
     BFD_RELOC_BPF_16,
     BFD_RELOC_BPF_DISP16,
     BFD_RELOC_BPF_DISP32,
   
 /* Adapteva EPIPHANY - 8 bit signed pc-relative displacement  */  /* Adapteva EPIPHANY - 8 bit signed pc-relative displacement  */
   BFD_RELOC_EPIPHANY_SIMM8,    BFD_RELOC_EPIPHANY_SIMM8,
   
Line 6337  assembler and not (currently) written to
Line 6146  assembler and not (currently) written to
   BFD_RELOC_VISIUM_HI16_PCREL,    BFD_RELOC_VISIUM_HI16_PCREL,
   BFD_RELOC_VISIUM_LO16_PCREL,    BFD_RELOC_VISIUM_LO16_PCREL,
   BFD_RELOC_VISIUM_IM16_PCREL,    BFD_RELOC_VISIUM_IM16_PCREL,
   
   /* WebAssembly relocations.  */
     BFD_RELOC_WASM32_LEB128,
     BFD_RELOC_WASM32_LEB128_GOT,
     BFD_RELOC_WASM32_LEB128_GOT_CODE,
     BFD_RELOC_WASM32_LEB128_PLT,
     BFD_RELOC_WASM32_PLT_INDEX,
     BFD_RELOC_WASM32_ABS32_CODE,
     BFD_RELOC_WASM32_COPY,
     BFD_RELOC_WASM32_CODE_POINTER,
     BFD_RELOC_WASM32_INDEX,
     BFD_RELOC_WASM32_PLT_SIG,
   
   /* C-SKY relocations.  */
     BFD_RELOC_CKCORE_NONE,
     BFD_RELOC_CKCORE_ADDR32,
     BFD_RELOC_CKCORE_PCREL_IMM8BY4,
     BFD_RELOC_CKCORE_PCREL_IMM11BY2,
     BFD_RELOC_CKCORE_PCREL_IMM4BY2,
     BFD_RELOC_CKCORE_PCREL32,
     BFD_RELOC_CKCORE_PCREL_JSR_IMM11BY2,
     BFD_RELOC_CKCORE_GNU_VTINHERIT,
     BFD_RELOC_CKCORE_GNU_VTENTRY,
     BFD_RELOC_CKCORE_RELATIVE,
     BFD_RELOC_CKCORE_COPY,
     BFD_RELOC_CKCORE_GLOB_DAT,
     BFD_RELOC_CKCORE_JUMP_SLOT,
     BFD_RELOC_CKCORE_GOTOFF,
     BFD_RELOC_CKCORE_GOTPC,
     BFD_RELOC_CKCORE_GOT32,
     BFD_RELOC_CKCORE_PLT32,
     BFD_RELOC_CKCORE_ADDRGOT,
     BFD_RELOC_CKCORE_ADDRPLT,
     BFD_RELOC_CKCORE_PCREL_IMM26BY2,
     BFD_RELOC_CKCORE_PCREL_IMM16BY2,
     BFD_RELOC_CKCORE_PCREL_IMM16BY4,
     BFD_RELOC_CKCORE_PCREL_IMM10BY2,
     BFD_RELOC_CKCORE_PCREL_IMM10BY4,
     BFD_RELOC_CKCORE_ADDR_HI16,
     BFD_RELOC_CKCORE_ADDR_LO16,
     BFD_RELOC_CKCORE_GOTPC_HI16,
     BFD_RELOC_CKCORE_GOTPC_LO16,
     BFD_RELOC_CKCORE_GOTOFF_HI16,
     BFD_RELOC_CKCORE_GOTOFF_LO16,
     BFD_RELOC_CKCORE_GOT12,
     BFD_RELOC_CKCORE_GOT_HI16,
     BFD_RELOC_CKCORE_GOT_LO16,
     BFD_RELOC_CKCORE_PLT12,
     BFD_RELOC_CKCORE_PLT_HI16,
     BFD_RELOC_CKCORE_PLT_LO16,
     BFD_RELOC_CKCORE_ADDRGOT_HI16,
     BFD_RELOC_CKCORE_ADDRGOT_LO16,
     BFD_RELOC_CKCORE_ADDRPLT_HI16,
     BFD_RELOC_CKCORE_ADDRPLT_LO16,
     BFD_RELOC_CKCORE_PCREL_JSR_IMM26BY2,
     BFD_RELOC_CKCORE_TOFFSET_LO16,
     BFD_RELOC_CKCORE_DOFFSET_LO16,
     BFD_RELOC_CKCORE_PCREL_IMM18BY2,
     BFD_RELOC_CKCORE_DOFFSET_IMM18,
     BFD_RELOC_CKCORE_DOFFSET_IMM18BY2,
     BFD_RELOC_CKCORE_DOFFSET_IMM18BY4,
     BFD_RELOC_CKCORE_GOTOFF_IMM18,
     BFD_RELOC_CKCORE_GOT_IMM18BY4,
     BFD_RELOC_CKCORE_PLT_IMM18BY4,
     BFD_RELOC_CKCORE_PCREL_IMM7BY4,
     BFD_RELOC_CKCORE_TLS_LE32,
     BFD_RELOC_CKCORE_TLS_IE32,
     BFD_RELOC_CKCORE_TLS_GD32,
     BFD_RELOC_CKCORE_TLS_LDM32,
     BFD_RELOC_CKCORE_TLS_LDO32,
     BFD_RELOC_CKCORE_TLS_DTPMOD32,
     BFD_RELOC_CKCORE_TLS_DTPOFF32,
     BFD_RELOC_CKCORE_TLS_TPOFF32,
     BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4,
     BFD_RELOC_CKCORE_NOJSRI,
     BFD_RELOC_CKCORE_CALLGRAPH,
     BFD_RELOC_CKCORE_IRELATIVE,
     BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4,
     BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4,
   
   /* S12Z relocations.  */
     BFD_RELOC_S12Z_OPR,
   BFD_RELOC_UNUSED };    BFD_RELOC_UNUSED };
   
 typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;  typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
Line 6372  typedef struct bfd_symbol
Line 6263  typedef struct bfd_symbol
   symvalue value;    symvalue value;
   
   /* Attributes of a symbol.  */    /* Attributes of a symbol.  */
 #define BSF_NO_FLAGS           0x00  #define BSF_NO_FLAGS            0
   
   /* The symbol has local scope; <<static>> in <<C>>. The value    /* The symbol has local scope; <<static>> in <<C>>. The value
      is the offset into the section of the data.  */       is the offset into the section of the data.  */
 #define BSF_LOCAL              (1 << 0)  #define BSF_LOCAL               (1 << 0)
   
   /* The symbol has global scope; initialized data in <<C>>. The    /* The symbol has global scope; initialized data in <<C>>. The
      value is the offset into the section of the data.  */       value is the offset into the section of the data.  */
 #define BSF_GLOBAL             (1 << 1)  #define BSF_GLOBAL              (1 << 1)
   
   /* The symbol has global scope and is exported. The value is    /* The symbol has global scope and is exported. The value is
      the offset into the section of the data.  */       the offset into the section of the data.  */
 #define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */  #define BSF_EXPORT              BSF_GLOBAL /* No real difference.  */
   
   /* A normal C symbol would be one of:    /* A normal C symbol would be one of:
      <<BSF_LOCAL>>, <<BSF_COMMON>>,  <<BSF_UNDEFINED>> or       <<BSF_LOCAL>>, <<BSF_UNDEFINED>> or <<BSF_GLOBAL>>.  */
      <<BSF_GLOBAL>>.  */  
   
   /* The symbol is a debugging record. The value has an arbitrary    /* The symbol is a debugging record. The value has an arbitrary
      meaning, unless BSF_DEBUGGING_RELOC is also set.  */       meaning, unless BSF_DEBUGGING_RELOC is also set.  */
 #define BSF_DEBUGGING          (1 << 2)  #define BSF_DEBUGGING           (1 << 2)
   
   /* The symbol denotes a function entry point.  Used in ELF,    /* The symbol denotes a function entry point.  Used in ELF,
      perhaps others someday.  */       perhaps others someday.  */
 #define BSF_FUNCTION           (1 << 3)  #define BSF_FUNCTION            (1 << 3)
   
   /* Used by the linker.  */    /* Used by the linker.  */
 #define BSF_KEEP               (1 << 5)  #define BSF_KEEP                (1 << 5)
 #define BSF_KEEP_G             (1 << 6)  
     /* An ELF common symbol.  */
   #define BSF_ELF_COMMON          (1 << 6)
   
   /* A weak global symbol, overridable without warnings by    /* A weak global symbol, overridable without warnings by
      a regular global symbol of the same name.  */       a regular global symbol of the same name.  */
 #define BSF_WEAK               (1 << 7)  #define BSF_WEAK                (1 << 7)
   
   /* This symbol was created to point to a section, e.g. ELF's    /* This symbol was created to point to a section, e.g. ELF's
      STT_SECTION symbols.  */       STT_SECTION symbols.  */
 #define BSF_SECTION_SYM        (1 << 8)  #define BSF_SECTION_SYM         (1 << 8)
   
   /* The symbol used to be a common symbol, but now it is    /* The symbol used to be a common symbol, but now it is
      allocated.  */       allocated.  */
 #define BSF_OLD_COMMON         (1 << 9)  #define BSF_OLD_COMMON          (1 << 9)
   
   /* In some files the type of a symbol sometimes alters its    /* In some files the type of a symbol sometimes alters its
      location in an output file - ie in coff a <<ISFCN>> symbol       location in an output file - ie in coff a <<ISFCN>> symbol
      which is also <<C_EXT>> symbol appears where it was       which is also <<C_EXT>> symbol appears where it was
      declared and not at the end of a section.  This bit is set       declared and not at the end of a section.  This bit is set
      by the target BFD part to convey this information.  */       by the target BFD part to convey this information.  */
 #define BSF_NOT_AT_END         (1 << 10)  #define BSF_NOT_AT_END          (1 << 10)
   
   /* Signal that the symbol is the label of constructor section.  */    /* Signal that the symbol is the label of constructor section.  */
 #define BSF_CONSTRUCTOR        (1 << 11)  #define BSF_CONSTRUCTOR         (1 << 11)
   
   /* Signal that the symbol is a warning symbol.  The name is a    /* Signal that the symbol is a warning symbol.  The name is a
      warning.  The name of the next symbol is the one to warn about;       warning.  The name of the next symbol is the one to warn about;
      if a reference is made to a symbol with the same name as the next       if a reference is made to a symbol with the same name as the next
      symbol, a warning is issued by the linker.  */       symbol, a warning is issued by the linker.  */
 #define BSF_WARNING            (1 << 12)  #define BSF_WARNING             (1 << 12)
   
   /* Signal that the symbol is indirect.  This symbol is an indirect    /* Signal that the symbol is indirect.  This symbol is an indirect
      pointer to the symbol with the same name as the next symbol.  */       pointer to the symbol with the same name as the next symbol.  */
 #define BSF_INDIRECT           (1 << 13)  #define BSF_INDIRECT            (1 << 13)
   
   /* BSF_FILE marks symbols that contain a file name.  This is used    /* BSF_FILE marks symbols that contain a file name.  This is used
      for ELF STT_FILE symbols.  */       for ELF STT_FILE symbols.  */
 #define BSF_FILE               (1 << 14)  #define BSF_FILE                (1 << 14)
   
   /* Symbol is from dynamic linking information.  */    /* Symbol is from dynamic linking information.  */
 #define BSF_DYNAMIC            (1 << 15)  #define BSF_DYNAMIC             (1 << 15)
   
   /* The symbol denotes a data object.  Used in ELF, and perhaps    /* The symbol denotes a data object.  Used in ELF, and perhaps
      others someday.  */       others someday.  */
 #define BSF_OBJECT             (1 << 16)  #define BSF_OBJECT              (1 << 16)
   
   /* This symbol is a debugging symbol.  The value is the offset    /* This symbol is a debugging symbol.  The value is the offset
      into the section of the data.  BSF_DEBUGGING should be set       into the section of the data.  BSF_DEBUGGING should be set
      as well.  */       as well.  */
 #define BSF_DEBUGGING_RELOC    (1 << 17)  #define BSF_DEBUGGING_RELOC     (1 << 17)
   
   /* This symbol is thread local.  Used in ELF.  */    /* This symbol is thread local.  Used in ELF.  */
 #define BSF_THREAD_LOCAL       (1 << 18)  #define BSF_THREAD_LOCAL        (1 << 18)
   
   /* This symbol represents a complex relocation expression,    /* This symbol represents a complex relocation expression,
      with the expression tree serialized in the symbol name.  */       with the expression tree serialized in the symbol name.  */
 #define BSF_RELC               (1 << 19)  #define BSF_RELC                (1 << 19)
   
   /* This symbol represents a signed complex relocation expression,    /* This symbol represents a signed complex relocation expression,
      with the expression tree serialized in the symbol name.  */       with the expression tree serialized in the symbol name.  */
 #define BSF_SRELC              (1 << 20)  #define BSF_SRELC               (1 << 20)
   
   /* This symbol was created by bfd_get_synthetic_symtab.  */    /* This symbol was created by bfd_get_synthetic_symtab.  */
 #define BSF_SYNTHETIC          (1 << 21)  #define BSF_SYNTHETIC           (1 << 21)
   
   /* This symbol is an indirect code object.  Unrelated to BSF_INDIRECT.    /* This symbol is an indirect code object.  Unrelated to BSF_INDIRECT.
      The dynamic linker will compute the value of this symbol by       The dynamic linker will compute the value of this symbol by
Line 6472  typedef struct bfd_symbol
Line 6364  typedef struct bfd_symbol
   /* This symbol is a globally unique data object.  The dynamic linker    /* This symbol is a globally unique data object.  The dynamic linker
      will make sure that in the entire process there is just one symbol       will make sure that in the entire process there is just one symbol
      with this name and type in use.  BSF_OBJECT must also be set.  */       with this name and type in use.  BSF_OBJECT must also be set.  */
 #define BSF_GNU_UNIQUE         (1 << 23)  #define BSF_GNU_UNIQUE          (1 << 23)
   
   flagword flags;    flagword flags;
   
Line 6492  typedef struct bfd_symbol
Line 6384  typedef struct bfd_symbol
 asymbol;  asymbol;
   
 #define bfd_get_symtab_upper_bound(abfd) \  #define bfd_get_symtab_upper_bound(abfd) \
      BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))         BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
   
 bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);  bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
   
 bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);  bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
   
 #define bfd_is_local_label_name(abfd, name) \  #define bfd_is_local_label_name(abfd, name) \
   BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))         BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
   
 bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);  bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
   
 #define bfd_is_target_special_symbol(abfd, sym) \  #define bfd_is_target_special_symbol(abfd, sym) \
   BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))         BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
   
 #define bfd_canonicalize_symtab(abfd, location) \  #define bfd_canonicalize_symtab(abfd, location) \
   BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))         BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
   
 bfd_boolean bfd_set_symtab  bfd_boolean bfd_set_symtab
    (bfd *abfd, asymbol **location, unsigned int count);     (bfd *abfd, asymbol **location, unsigned int count);
Line 6515  bfd_boolean bfd_set_symtab
Line 6407  bfd_boolean bfd_set_symtab
 void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);  void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
   
 #define bfd_make_empty_symbol(abfd) \  #define bfd_make_empty_symbol(abfd) \
   BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))         BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
   
 asymbol *_bfd_generic_make_empty_symbol (bfd *);  asymbol *_bfd_generic_make_empty_symbol (bfd *);
   
 #define bfd_make_debug_symbol(abfd,ptr,size) \  #define bfd_make_debug_symbol(abfd,ptr,size) \
   BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))         BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
   
 int bfd_decode_symclass (asymbol *symbol);  int bfd_decode_symclass (asymbol *symbol);
   
Line 6532  bfd_boolean bfd_copy_private_symbol_data
Line 6424  bfd_boolean bfd_copy_private_symbol_data
    (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);     (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
   
 #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \  #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
   BFD_SEND (obfd, _bfd_copy_private_symbol_data, \         BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
             (ibfd, isymbol, obfd, osymbol))                   (ibfd, isymbol, obfd, osymbol))
   
 /* Extracted from bfd.c.  */  /* Extracted from bfd.c.  */
   
Line 6547  enum bfd_direction
Line 6439  enum bfd_direction
   
 enum bfd_plugin_format  enum bfd_plugin_format
   {    {
     bfd_plugin_uknown = 0,      bfd_plugin_unknown = 0,
     bfd_plugin_yes = 1,      bfd_plugin_yes = 1,
     bfd_plugin_no = 2      bfd_plugin_no = 2
   };    };
Line 6575  struct bfd
Line 6467  struct bfd
      least-recently-used list of BFDs.  */       least-recently-used list of BFDs.  */
   struct bfd *lru_prev, *lru_next;    struct bfd *lru_prev, *lru_next;
   
   /* When a file is closed by the caching routines, BFD retains    /* Track current file position (or current buffer offset for
      state information on the file here...  */       in-memory BFDs).  When a file is closed by the caching routines,
        BFD retains state information on the file here.  */
   ufile_ptr where;    ufile_ptr where;
   
   /* File modified time, if mtime_set is TRUE.  */    /* File modified time, if mtime_set is TRUE.  */
Line 6592  struct bfd
Line 6485  struct bfd
   ENUM_BITFIELD (bfd_direction) direction : 2;    ENUM_BITFIELD (bfd_direction) direction : 2;
   
   /* Format_specific flags.  */    /* Format_specific flags.  */
   flagword flags : 18;    flagword flags;
   
   /* Values that may appear in the flags field of a BFD.  These also    /* Values that may appear in the flags field of a BFD.  These also
      appear in the object_flags field of the bfd_target structure, where       appear in the object_flags field of the bfd_target structure, where
Line 6601  struct bfd
Line 6494  struct bfd
      the object_flags values have mostly just been copied from backend       the object_flags values have mostly just been copied from backend
      to another, and are not necessarily correct).  */       to another, and are not necessarily correct).  */
   
 #define BFD_NO_FLAGS   0x00  #define BFD_NO_FLAGS                0x0
   
   /* BFD contains relocation entries.  */    /* BFD contains relocation entries.  */
 #define HAS_RELOC      0x01  #define HAS_RELOC                   0x1
   
   /* BFD is directly executable.  */    /* BFD is directly executable.  */
 #define EXEC_P         0x02  #define EXEC_P                      0x2
   
   /* BFD has line number information (basically used for F_LNNO in a    /* BFD has line number information (basically used for F_LNNO in a
      COFF header).  */       COFF header).  */
 #define HAS_LINENO     0x04  #define HAS_LINENO                  0x4
   
   /* BFD has debugging information.  */    /* BFD has debugging information.  */
 #define HAS_DEBUG      0x08  #define HAS_DEBUG                  0x08
   
   /* BFD has symbols.  */    /* BFD has symbols.  */
 #define HAS_SYMS       0x10  #define HAS_SYMS                   0x10
   
   /* BFD has local symbols (basically used for F_LSYMS in a COFF    /* BFD has local symbols (basically used for F_LSYMS in a COFF
      header).  */       header).  */
 #define HAS_LOCALS     0x20  #define HAS_LOCALS                 0x20
   
   /* BFD is a dynamic object.  */    /* BFD is a dynamic object.  */
 #define DYNAMIC        0x40  #define DYNAMIC                    0x40
   
   /* Text section is write protected (if D_PAGED is not set, this is    /* Text section is write protected (if D_PAGED is not set, this is
      like an a.out NMAGIC file) (the linker sets this by default, but       like an a.out NMAGIC file) (the linker sets this by default, but
      clears it for -r or -N).  */       clears it for -r or -N).  */
 #define WP_TEXT        0x80  #define WP_TEXT                    0x80
   
   /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the    /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
      linker sets this by default, but clears it for -r or -n or -N).  */       linker sets this by default, but clears it for -r or -n or -N).  */
 #define D_PAGED        0x100  #define D_PAGED                   0x100
   
   /* BFD is relaxable (this means that bfd_relax_section may be able to    /* BFD is relaxable (this means that bfd_relax_section may be able to
      do something) (sometimes bfd_relax_section can do something even if       do something) (sometimes bfd_relax_section can do something even if
      this is not set).  */       this is not set).  */
 #define BFD_IS_RELAXABLE 0x200  #define BFD_IS_RELAXABLE          0x200
   
   /* This may be set before writing out a BFD to request using a    /* This may be set before writing out a BFD to request using a
      traditional format.  For example, this is used to request that when       traditional format.  For example, this is used to request that when
      writing out an a.out object the symbols not be hashed to eliminate       writing out an a.out object the symbols not be hashed to eliminate
      duplicates.  */       duplicates.  */
 #define BFD_TRADITIONAL_FORMAT 0x400  #define BFD_TRADITIONAL_FORMAT    0x400
   
   /* This flag indicates that the BFD contents are actually cached    /* This flag indicates that the BFD contents are actually cached
      in memory.  If this is set, iostream points to a bfd_in_memory       in memory.  If this is set, iostream points to a bfd_in_memory
      struct.  */       struct.  */
 #define BFD_IN_MEMORY 0x800  #define BFD_IN_MEMORY             0x800
   
   /* This BFD has been created by the linker and doesn't correspond    /* This BFD has been created by the linker and doesn't correspond
      to any input file.  */       to any input file.  */
 #define BFD_LINKER_CREATED 0x1000  #define BFD_LINKER_CREATED       0x1000
   
   /* This may be set before writing out a BFD to request that it    /* This may be set before writing out a BFD to request that it
      be written using values for UIDs, GIDs, timestamps, etc. that       be written using values for UIDs, GIDs, timestamps, etc. that
Line 6661  struct bfd
Line 6554  struct bfd
 #define BFD_DETERMINISTIC_OUTPUT 0x2000  #define BFD_DETERMINISTIC_OUTPUT 0x2000
   
   /* Compress sections in this BFD.  */    /* Compress sections in this BFD.  */
 #define BFD_COMPRESS 0x4000  #define BFD_COMPRESS             0x4000
   
   /* Decompress sections in this BFD.  */    /* Decompress sections in this BFD.  */
 #define BFD_DECOMPRESS 0x8000  #define BFD_DECOMPRESS           0x8000
   
   /* BFD is a dummy, for plugins.  */    /* BFD is a dummy, for plugins.  */
 #define BFD_PLUGIN 0x10000  #define BFD_PLUGIN              0x10000
   
   /* Compress sections in this BFD with SHF_COMPRESSED from gABI.  */    /* Compress sections in this BFD with SHF_COMPRESSED from gABI.  */
 #define BFD_COMPRESS_GABI 0x20000  #define BFD_COMPRESS_GABI       0x20000
   
     /* Convert ELF common symbol type to STT_COMMON or STT_OBJECT in this
        BFD.  */
   #define BFD_CONVERT_ELF_COMMON  0x40000
   
     /* Use the ELF STT_COMMON type in this BFD.  */
   #define BFD_USE_ELF_STT_COMMON  0x80000
   
     /* Put pathnames into archives (non-POSIX).  */
   #define BFD_ARCHIVE_FULL_PATH  0x100000
   
   /* Flags bits to be saved in bfd_preserve_save.  */    /* Flags bits to be saved in bfd_preserve_save.  */
 #define BFD_FLAGS_SAVED \  #define BFD_FLAGS_SAVED \
   (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN \    (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
    | BFD_COMPRESS_GABI)     | BFD_PLUGIN | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON \
      | BFD_USE_ELF_STT_COMMON)
   
   /* Flags bits which are for BFD use only.  */    /* Flags bits which are for BFD use only.  */
 #define BFD_FLAGS_FOR_BFD_USE_MASK \  #define BFD_FLAGS_FOR_BFD_USE_MASK \
   (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \    (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
    | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \     | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
    | BFD_COMPRESS_GABI)     | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
   
   /* Is the file descriptor being cached?  That is, can it be closed as    /* Is the file descriptor being cached?  That is, can it be closed as
      needed, and re-opened when accessed later?  */       needed, and re-opened when accessed later?  */
Line 6712  struct bfd
Line 6616  struct bfd
   /* Set if this is a thin archive.  */    /* Set if this is a thin archive.  */
   unsigned int is_thin_archive : 1;    unsigned int is_thin_archive : 1;
   
     /* Set if this archive should not cache element positions.  */
     unsigned int no_element_cache : 1;
   
   /* Set if only required symbols should be added in the link hash table for    /* Set if only required symbols should be added in the link hash table for
      this object.  Used by VMS linkers.  */       this object.  Used by VMS linkers.  */
   unsigned int selective_search : 1;    unsigned int selective_search : 1;
Line 6728  struct bfd
Line 6635  struct bfd
   /* Set if this is a plugin output file.  */    /* Set if this is a plugin output file.  */
   unsigned int lto_output : 1;    unsigned int lto_output : 1;
   
     /* Set if this is a slim LTO object not loaded with a compiler plugin.  */
     unsigned int lto_slim_object : 1;
   
   /* Set to dummy BFD created when claimed by a compiler plug-in    /* Set to dummy BFD created when claimed by a compiler plug-in
      library.  */       library.  */
   bfd *plugin_dummy_bfd;    bfd *plugin_dummy_bfd;
Line 6797  struct bfd
Line 6707  struct bfd
     {      {
       struct aout_data_struct *aout_data;        struct aout_data_struct *aout_data;
       struct artdata *aout_ar_data;        struct artdata *aout_ar_data;
       struct _oasys_data *oasys_obj_data;  
       struct _oasys_ar_data *oasys_ar_data;  
       struct coff_tdata *coff_obj_data;        struct coff_tdata *coff_obj_data;
       struct pe_tdata *pe_obj_data;        struct pe_tdata *pe_obj_data;
       struct xcoff_tdata *xcoff_obj_data;        struct xcoff_tdata *xcoff_obj_data;
       struct ecoff_tdata *ecoff_obj_data;        struct ecoff_tdata *ecoff_obj_data;
       struct ieee_data_struct *ieee_data;  
       struct ieee_ar_data_struct *ieee_ar_data;  
       struct srec_data_struct *srec_data;        struct srec_data_struct *srec_data;
       struct verilog_data_struct *verilog_data;        struct verilog_data_struct *verilog_data;
       struct ihex_data_struct *ihex_data;        struct ihex_data_struct *ihex_data;
       struct tekhex_data_struct *tekhex_data;        struct tekhex_data_struct *tekhex_data;
       struct elf_obj_tdata *elf_obj_data;        struct elf_obj_tdata *elf_obj_data;
       struct nlm_obj_tdata *nlm_obj_data;  
       struct bout_data_struct *bout_data;  
       struct mmo_data_struct *mmo_data;        struct mmo_data_struct *mmo_data;
       struct sun_core_struct *sun_core_data;        struct sun_core_struct *sun_core_data;
       struct sco5_core_struct *sco5_core_data;        struct sco5_core_struct *sco5_core_data;
Line 6847  struct bfd
Line 6751  struct bfd
   const struct bfd_build_id *build_id;    const struct bfd_build_id *build_id;
 };  };
   
   static inline const char *
   bfd_get_filename (const bfd *abfd)
   {
     return abfd->filename;
   }
   
   static inline bfd_boolean
   bfd_get_cacheable (const bfd *abfd)
   {
     return abfd->cacheable;
   }
   
   static inline enum bfd_format
   bfd_get_format (const bfd *abfd)
   {
     return abfd->format;
   }
   
   static inline flagword
   bfd_get_file_flags (const bfd *abfd)
   {
     return abfd->flags;
   }
   
   static inline bfd_vma
   bfd_get_start_address (const bfd *abfd)
   {
     return abfd->start_address;
   }
   
   static inline unsigned int
   bfd_get_symcount (const bfd *abfd)
   {
     return abfd->symcount;
   }
   
   static inline unsigned int
   bfd_get_dynamic_symcount (const bfd *abfd)
   {
     return abfd->dynsymcount;
   }
   
   static inline struct bfd_symbol **
   bfd_get_outsymbols (const bfd *abfd)
   {
     return abfd->outsymbols;
   }
   
   static inline unsigned int
   bfd_count_sections (const bfd *abfd)
   {
     return abfd->section_count;
   }
   
   static inline bfd_boolean
   bfd_has_map (const bfd *abfd)
   {
     return abfd->has_armap;
   }
   
   static inline bfd_boolean
   bfd_is_thin_archive (const bfd *abfd)
   {
     return abfd->is_thin_archive;
   }
   
   static inline void *
   bfd_usrdata (const bfd *abfd)
   {
     return abfd->usrdata;
   }
   
 /* See note beside bfd_set_section_userdata.  */  /* See note beside bfd_set_section_userdata.  */
 static inline bfd_boolean  static inline bfd_boolean
 bfd_set_cacheable (bfd * abfd, bfd_boolean val)  bfd_set_cacheable (bfd * abfd, bfd_boolean val)
Line 6855  bfd_set_cacheable (bfd * abfd, bfd_boole
Line 6831  bfd_set_cacheable (bfd * abfd, bfd_boole
   return TRUE;    return TRUE;
 }  }
   
   static inline void
   bfd_set_thin_archive (bfd *abfd, bfd_boolean val)
   {
     abfd->is_thin_archive = val;
   }
   
   static inline void
   bfd_set_usrdata (bfd *abfd, void *val)
   {
     abfd->usrdata = val;
   }
   
   static inline asection *
   bfd_asymbol_section (const asymbol *sy)
   {
     return sy->section;
   }
   
   static inline bfd_vma
   bfd_asymbol_value (const asymbol *sy)
   {
     return sy->section->vma + sy->value;
   }
   
   static inline const char *
   bfd_asymbol_name (const asymbol *sy)
   {
     return sy->name;
   }
   
   static inline struct bfd *
   bfd_asymbol_bfd (const asymbol *sy)
   {
     return sy->the_bfd;
   }
   
   static inline void
   bfd_set_asymbol_name (asymbol *sy, const char *name)
   {
     sy->name = name;
   }
   
   static inline bfd_size_type
   bfd_get_section_limit_octets (const bfd *abfd, const asection *sec)
   {
     if (abfd->direction != write_direction && sec->rawsize != 0)
       return sec->rawsize;
     return sec->size;
   }
   
   /* Find the address one past the end of SEC.  */
   static inline bfd_size_type
   bfd_get_section_limit (const bfd *abfd, const asection *sec)
   {
     return (bfd_get_section_limit_octets (abfd, sec)
             / bfd_octets_per_byte (abfd, sec));
   }
   
   /* Functions to handle insertion and deletion of a bfd's sections.  These
      only handle the list pointers, ie. do not adjust section_count,
      target_index etc.  */
   static inline void
   bfd_section_list_remove (bfd *abfd, asection *s)
   {
     asection *next = s->next;
     asection *prev = s->prev;
     if (prev)
       prev->next = next;
     else
       abfd->sections = next;
     if (next)
       next->prev = prev;
     else
       abfd->section_last = prev;
   }
   
   static inline void
   bfd_section_list_append (bfd *abfd, asection *s)
   {
     s->next = 0;
     if (abfd->section_last)
       {
         s->prev = abfd->section_last;
         abfd->section_last->next = s;
       }
     else
       {
         s->prev = 0;
         abfd->sections = s;
       }
     abfd->section_last = s;
   }
   
   static inline void
   bfd_section_list_prepend (bfd *abfd, asection *s)
   {
     s->prev = 0;
     if (abfd->sections)
       {
         s->next = abfd->sections;
         abfd->sections->prev = s;
       }
     else
       {
         s->next = 0;
         abfd->section_last = s;
       }
     abfd->sections = s;
   }
   
   static inline void
   bfd_section_list_insert_after (bfd *abfd, asection *a, asection *s)
   {
     asection *next = a->next;
     s->next = next;
     s->prev = a;
     a->next = s;
     if (next)
       next->prev = s;
     else
       abfd->section_last = s;
   }
   
   static inline void
   bfd_section_list_insert_before (bfd *abfd, asection *b, asection *s)
   {
     asection *prev = b->prev;
     s->prev = prev;
     s->next = b;
     b->prev = s;
     if (prev)
       prev->next = s;
     else
       abfd->sections = s;
   }
   
   static inline bfd_boolean
   bfd_section_removed_from_list (const bfd *abfd, const asection *s)
   {
     return s->next ? s->next->prev != s : abfd->section_last != s;
   }
   
   
 typedef enum bfd_error  typedef enum bfd_error
 {  {
Line 6878  typedef enum bfd_error
Line 6996  typedef enum bfd_error
   bfd_error_bad_value,    bfd_error_bad_value,
   bfd_error_file_truncated,    bfd_error_file_truncated,
   bfd_error_file_too_big,    bfd_error_file_too_big,
     bfd_error_sorry,
   bfd_error_on_input,    bfd_error_on_input,
   bfd_error_invalid_error_code    bfd_error_invalid_error_code
 }  }
Line 6885  bfd_error_type;
Line 7004  bfd_error_type;
   
 bfd_error_type bfd_get_error (void);  bfd_error_type bfd_get_error (void);
   
 void bfd_set_error (bfd_error_type error_tag, ...);  void bfd_set_error (bfd_error_type error_tag);
   
   void bfd_set_input_error (bfd *input, bfd_error_type error_tag);
   
 const char *bfd_errmsg (bfd_error_type error_tag);  const char *bfd_errmsg (bfd_error_type error_tag);
   
 void bfd_perror (const char *message);  void bfd_perror (const char *message);
   
   
 typedef void (*bfd_error_handler_type) (const char *, ...);  typedef void (*bfd_error_handler_type) (const char *, va_list);
   
   void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1;
   
 bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);  bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
   
 void bfd_set_error_program_name (const char *);  void bfd_set_error_program_name (const char *);
   
 bfd_error_handler_type bfd_get_error_handler (void);  
   
   
 typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,  typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
                                          const char *bfd_version,                                           const char *bfd_version,
Line 6908  typedef void (*bfd_assert_handler_type) 
Line 7029  typedef void (*bfd_assert_handler_type) 
   
 bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);  bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
   
 bfd_assert_handler_type bfd_get_assert_handler (void);  
   
 long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);  long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
   
 long bfd_canonicalize_reloc  long bfd_canonicalize_reloc
Line 6918  long bfd_canonicalize_reloc
Line 7037  long bfd_canonicalize_reloc
 void bfd_set_reloc  void bfd_set_reloc
    (bfd *abfd, asection *sec, arelent **rel, unsigned int count);     (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
   
   #define bfd_set_reloc(abfd, asect, location, count) \
          BFD_SEND (abfd, _bfd_set_reloc, (abfd, asect, location, count))
 bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);  bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
   
 int bfd_get_arch_size (bfd *abfd);  int bfd_get_arch_size (bfd *abfd);
Line 6935  bfd_vma bfd_scan_vma (const char *string
Line 7056  bfd_vma bfd_scan_vma (const char *string
 bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);  bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
   
 #define bfd_copy_private_header_data(ibfd, obfd) \  #define bfd_copy_private_header_data(ibfd, obfd) \
      BFD_SEND (obfd, _bfd_copy_private_header_data, \         BFD_SEND (obfd, _bfd_copy_private_header_data, \
                (ibfd, obfd))                   (ibfd, obfd))
 bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);  bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
   
 #define bfd_copy_private_bfd_data(ibfd, obfd) \  #define bfd_copy_private_bfd_data(ibfd, obfd) \
      BFD_SEND (obfd, _bfd_copy_private_bfd_data, \         BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
                (ibfd, obfd))                   (ibfd, obfd))
 bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);  
   
 #define bfd_merge_private_bfd_data(ibfd, obfd) \  
      BFD_SEND (obfd, _bfd_merge_private_bfd_data, \  
                (ibfd, obfd))  
 bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);  bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
   
 #define bfd_set_private_flags(abfd, flags) \  #define bfd_set_private_flags(abfd, flags) \
      BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))         BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
 #define bfd_sizeof_headers(abfd, info) \  #define bfd_sizeof_headers(abfd, info) \
        BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))         BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
   
Line 6959  bfd_boolean bfd_set_private_flags (bfd *
Line 7075  bfd_boolean bfd_set_private_flags (bfd *
                  (abfd, syms, sec, off, file, func, line, NULL))                   (abfd, syms, sec, off, file, func, line, NULL))
   
 #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \  #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
                                             line, disc) \                                             line, disc) \
        BFD_SEND (abfd, _bfd_find_nearest_line, \         BFD_SEND (abfd, _bfd_find_nearest_line, \
                  (abfd, syms, sec, off, file, func, line, disc))                   (abfd, syms, sec, off, file, func, line, disc))
   
Line 7004  bfd_boolean bfd_set_private_flags (bfd *
Line 7120  bfd_boolean bfd_set_private_flags (bfd *
 #define bfd_is_group_section(abfd, sec) \  #define bfd_is_group_section(abfd, sec) \
        BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))         BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
   
   #define bfd_group_name(abfd, sec) \
          BFD_SEND (abfd, _bfd_group_name, (abfd, sec))
   
 #define bfd_discard_group(abfd, sec) \  #define bfd_discard_group(abfd, sec) \
        BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))         BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
   
Line 7051  bfd_vma bfd_emul_get_maxpagesize (const 
Line 7170  bfd_vma bfd_emul_get_maxpagesize (const 
   
 void bfd_emul_set_maxpagesize (const char *, bfd_vma);  void bfd_emul_set_maxpagesize (const char *, bfd_vma);
   
 bfd_vma bfd_emul_get_commonpagesize (const char *);  bfd_vma bfd_emul_get_commonpagesize (const char *, bfd_boolean);
   
 void bfd_emul_set_commonpagesize (const char *, bfd_vma);  void bfd_emul_set_commonpagesize (const char *, bfd_vma);
   
Line 7062  void bfd_update_compression_header
Line 7181  void bfd_update_compression_header
   
 bfd_boolean bfd_check_compression_header  bfd_boolean bfd_check_compression_header
    (bfd *abfd, bfd_byte *contents, asection *sec,     (bfd *abfd, bfd_byte *contents, asection *sec,
     bfd_size_type *uncompressed_size);      bfd_size_type *uncompressed_size,
       unsigned int *uncompressed_alignment_power);
   
 int bfd_get_compression_header_size (bfd *abfd, asection *sec);  int bfd_get_compression_header_size (bfd *abfd, asection *sec);
   
Line 7125  enum bfd_flavour
Line 7245  enum bfd_flavour
   bfd_target_ecoff_flavour,    bfd_target_ecoff_flavour,
   bfd_target_xcoff_flavour,    bfd_target_xcoff_flavour,
   bfd_target_elf_flavour,    bfd_target_elf_flavour,
   bfd_target_ieee_flavour,  
   bfd_target_nlm_flavour,  
   bfd_target_oasys_flavour,  
   bfd_target_tekhex_flavour,    bfd_target_tekhex_flavour,
   bfd_target_srec_flavour,    bfd_target_srec_flavour,
   bfd_target_verilog_flavour,    bfd_target_verilog_flavour,
Line 7156  typedef struct flag_info flag_info;
Line 7273  typedef struct flag_info flag_info;
 typedef struct bfd_target  typedef struct bfd_target
 {  {
   /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */    /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
   char *name;    const char *name;
   
  /* The "flavour" of a back end is a general indication about   /* The "flavour" of a back end is a general indication about
     the contents of a file.  */      the contents of a file.  */
Line 7218  typedef struct bfd_target
Line 7335  typedef struct bfd_target
      within the target vector structure, one for each format to check.  */       within the target vector structure, one for each format to check.  */
   
   /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */    /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
   const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);    const struct bfd_target *
                 (*_bfd_check_format[bfd_type_end]) (bfd *);
   
   /* Set the format of a file being written.  */    /* Set the format of a file being written.  */
   bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);    bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
Line 7242  typedef struct bfd_target
Line 7360  typedef struct bfd_target
   /* Called when a new section is created.  */    /* Called when a new section is created.  */
   bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);    bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
   /* Read the contents of a section.  */    /* Read the contents of a section.  */
   bfd_boolean (*_bfd_get_section_contents)    bfd_boolean (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr,
     (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);                                              bfd_size_type);
   bfd_boolean (*_bfd_get_section_contents_in_window)    bfd_boolean (*_bfd_get_section_contents_in_window) (bfd *, sec_ptr,
     (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);                                                        bfd_window *, file_ptr,
                                                         bfd_size_type);
   
   /* Entry points to copy private data.  */    /* Entry points to copy private data.  */
 #define BFD_JUMP_TABLE_COPY(NAME) \  #define BFD_JUMP_TABLE_COPY(NAME) \
Line 7263  typedef struct bfd_target
Line 7382  typedef struct bfd_target
   bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);    bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
   /* Called to merge BFD general private data from one object file    /* Called to merge BFD general private data from one object file
      to a common output file when linking.  */       to a common output file when linking.  */
   bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);    bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *);
   /* Called to initialize BFD private section data from one object file    /* Called to initialize BFD private section data from one object file
      to another.  */       to another.  */
 #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \  #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
   BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))         BFD_SEND (obfd, _bfd_init_private_section_data, \
   bfd_boolean (*_bfd_init_private_section_data)                   (ibfd, isec, obfd, osec, link_info))
     (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);    bfd_boolean (*_bfd_init_private_section_data) (bfd *, sec_ptr, bfd *,
                                                    sec_ptr,
                                                    struct bfd_link_info *);
   /* Called to copy BFD private section data from one object file    /* Called to copy BFD private section data from one object file
      to another.  */       to another.  */
   bfd_boolean (*_bfd_copy_private_section_data)    bfd_boolean (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *,
     (bfd *, sec_ptr, bfd *, sec_ptr);                                                   sec_ptr);
   /* Called to copy BFD private symbol data from one symbol    /* Called to copy BFD private symbol data from one symbol
      to another.  */       to another.  */
   bfd_boolean (*_bfd_copy_private_symbol_data)    bfd_boolean (*_bfd_copy_private_symbol_data) (bfd *, asymbol *, bfd *,
     (bfd *, asymbol *, bfd *, asymbol *);                                                  asymbol *);
   /* Called to copy BFD private header data from one object file    /* Called to copy BFD private header data from one object file
      to another.  */       to another.  */
   bfd_boolean (*_bfd_copy_private_header_data)    bfd_boolean (*_bfd_copy_private_header_data) (bfd *, bfd *);
     (bfd *, bfd *);  
   /* Called to set private backend flags.  */    /* Called to set private backend flags.  */
   bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);    bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
   
Line 7316  typedef struct bfd_target
Line 7436  typedef struct bfd_target
   
   bfd_boolean (*_bfd_slurp_armap) (bfd *);    bfd_boolean (*_bfd_slurp_armap) (bfd *);
   bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);    bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
   bfd_boolean (*_bfd_construct_extended_name_table)    bfd_boolean (*_bfd_construct_extended_name_table) (bfd *, char **,
     (bfd *, char **, bfd_size_type *, const char **);                                                       bfd_size_type *,
                                                        const char **);
   void        (*_bfd_truncate_arname) (bfd *, const char *, char *);    void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
   bfd_boolean (*write_armap)    bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *,
     (bfd *, unsigned int, struct orl *, unsigned int, int);                                unsigned int, int);
   void *      (*_bfd_read_ar_hdr_fn) (bfd *);    void *      (*_bfd_read_ar_hdr_fn) (bfd *);
   bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);    bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
   bfd *       (*openr_next_archived_file) (bfd *, bfd *);    bfd *       (*openr_next_archived_file) (bfd *, bfd *);
 #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))  #define bfd_get_elt_at_index(b,i) \
          BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
   bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);    bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
   int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);    int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
   bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);    bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
Line 7348  typedef struct bfd_target
Line 7470  typedef struct bfd_target
   NAME##_minisymbol_to_symbol    NAME##_minisymbol_to_symbol
   
   long        (*_bfd_get_symtab_upper_bound) (bfd *);    long        (*_bfd_get_symtab_upper_bound) (bfd *);
   long        (*_bfd_canonicalize_symtab)    long        (*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **);
     (bfd *, struct bfd_symbol **);  
   struct bfd_symbol *    struct bfd_symbol *
               (*_bfd_make_empty_symbol) (bfd *);                (*_bfd_make_empty_symbol) (bfd *);
   void        (*_bfd_print_symbol)    void        (*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *,
     (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);                                      bfd_print_symbol_type);
 #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))  #define bfd_print_symbol(b,p,s,e) \
   void        (*_bfd_get_symbol_info)         BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
     (bfd *, struct bfd_symbol *, symbol_info *);    void        (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *,
 #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))                                         symbol_info *);
   const char *(*_bfd_get_symbol_version_string)  #define bfd_get_symbol_info(b,p,e) \
     (bfd *, struct bfd_symbol *, bfd_boolean *);         BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
 #define bfd_get_symbol_version_string(b,s,h) BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))    const char *(*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *,
                                                    bfd_boolean *);
   #define bfd_get_symbol_version_string(b,s,h) \
          BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))
   bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);    bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
   bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);    bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
   alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);    alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
   bfd_boolean (*_bfd_find_nearest_line)    bfd_boolean (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **,
     (bfd *, struct bfd_symbol **, struct bfd_section *, bfd_vma,                                           struct bfd_section *, bfd_vma,
      const char **, const char **, unsigned int *, unsigned int *);                                           const char **, const char **,
   bfd_boolean (*_bfd_find_line)                                           unsigned int *, unsigned int *);
     (bfd *, struct bfd_symbol **, struct bfd_symbol *,    bfd_boolean (*_bfd_find_line) (bfd *, struct bfd_symbol **,
      const char **, unsigned int *);                                   struct bfd_symbol *, const char **,
                                    unsigned int *);
   bfd_boolean (*_bfd_find_inliner_info)    bfd_boolean (*_bfd_find_inliner_info)
     (bfd *, const char **, const char **, unsigned int *);      (bfd *, const char **, const char **, unsigned int *);
  /* Back-door to allow format-aware applications to create debug symbols   /* Back-door to allow format-aware applications to create debug symbols
     while using BFD for everything else.  Currently used by the assembler      while using BFD for everything else.  Currently used by the assembler
     when creating COFF files.  */      when creating COFF files.  */
   asymbol *   (*_bfd_make_debug_symbol)    asymbol *   (*_bfd_make_debug_symbol) (bfd *, void *, unsigned long size);
     (bfd *, void *, unsigned long size);  
 #define bfd_read_minisymbols(b, d, m, s) \  #define bfd_read_minisymbols(b, d, m, s) \
   BFD_SEND (b, _read_minisymbols, (b, d, m, s))         BFD_SEND (b, _read_minisymbols, (b, d, m, s))
   long        (*_read_minisymbols)    long        (*_read_minisymbols) (bfd *, bfd_boolean, void **,
     (bfd *, bfd_boolean, void **, unsigned int *);                                      unsigned int *);
 #define bfd_minisymbol_to_symbol(b, d, m, f) \  #define bfd_minisymbol_to_symbol(b, d, m, f) \
   BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))         BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
   asymbol *   (*_minisymbol_to_symbol)    asymbol *   (*_minisymbol_to_symbol) (bfd *, bfd_boolean, const void *,
     (bfd *, bfd_boolean, const void *, asymbol *);                                          asymbol *);
   
   /* Routines for relocs.  */    /* Routines for relocs.  */
 #define BFD_JUMP_TABLE_RELOCS(NAME) \  #define BFD_JUMP_TABLE_RELOCS(NAME) \
   NAME##_get_reloc_upper_bound, \    NAME##_get_reloc_upper_bound, \
   NAME##_canonicalize_reloc, \    NAME##_canonicalize_reloc, \
     NAME##_set_reloc, \
   NAME##_bfd_reloc_type_lookup, \    NAME##_bfd_reloc_type_lookup, \
   NAME##_bfd_reloc_name_lookup    NAME##_bfd_reloc_name_lookup
   
   long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);    long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
   long        (*_bfd_canonicalize_reloc)    long        (*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **,
     (bfd *, sec_ptr, arelent **, struct bfd_symbol **);                                            struct bfd_symbol **);
     void        (*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int);
   /* See documentation on reloc types.  */    /* See documentation on reloc types.  */
   reloc_howto_type *    reloc_howto_type *
               (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);                (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
   reloc_howto_type *    reloc_howto_type *
               (*reloc_name_lookup) (bfd *, const char *);                (*reloc_name_lookup) (bfd *, const char *);
   
   
   /* Routines used when writing an object file.  */    /* Routines used when writing an object file.  */
 #define BFD_JUMP_TABLE_WRITE(NAME) \  #define BFD_JUMP_TABLE_WRITE(NAME) \
   NAME##_set_arch_mach, \    NAME##_set_arch_mach, \
   NAME##_set_section_contents    NAME##_set_section_contents
   
   bfd_boolean (*_bfd_set_arch_mach)    bfd_boolean (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture,
     (bfd *, enum bfd_architecture, unsigned long);                                       unsigned long);
   bfd_boolean (*_bfd_set_section_contents)    bfd_boolean (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *,
     (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);                                              file_ptr, bfd_size_type);
   
   /* Routines used by the linker.  */    /* Routines used by the linker.  */
 #define BFD_JUMP_TABLE_LINK(NAME) \  #define BFD_JUMP_TABLE_LINK(NAME) \
Line 7424  typedef struct bfd_target
Line 7549  typedef struct bfd_target
   NAME##_bfd_copy_link_hash_symbol_type, \    NAME##_bfd_copy_link_hash_symbol_type, \
   NAME##_bfd_final_link, \    NAME##_bfd_final_link, \
   NAME##_bfd_link_split_section, \    NAME##_bfd_link_split_section, \
     NAME##_bfd_link_check_relocs, \
   NAME##_bfd_gc_sections, \    NAME##_bfd_gc_sections, \
   NAME##_bfd_lookup_section_flags, \    NAME##_bfd_lookup_section_flags, \
   NAME##_bfd_merge_sections, \    NAME##_bfd_merge_sections, \
   NAME##_bfd_is_group_section, \    NAME##_bfd_is_group_section, \
     NAME##_bfd_group_name, \
   NAME##_bfd_discard_group, \    NAME##_bfd_discard_group, \
   NAME##_section_already_linked, \    NAME##_section_already_linked, \
   NAME##_bfd_define_common_symbol    NAME##_bfd_define_common_symbol, \
     NAME##_bfd_link_hide_symbol, \
     NAME##_bfd_define_start_stop
   
   int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);    int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
   bfd_byte *  (*_bfd_get_relocated_section_contents)    bfd_byte *  (*_bfd_get_relocated_section_contents) (bfd *,
     (bfd *, struct bfd_link_info *, struct bfd_link_order *,                                                        struct bfd_link_info *,
      bfd_byte *, bfd_boolean, struct bfd_symbol **);                                                        struct bfd_link_order *,
                                                         bfd_byte *, bfd_boolean,
                                                         struct bfd_symbol **);
   
   bfd_boolean (*_bfd_relax_section)    bfd_boolean (*_bfd_relax_section) (bfd *, struct bfd_section *,
     (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);                                       struct bfd_link_info *, bfd_boolean *);
   
   /* Create a hash table for the linker.  Different backends store    /* Create a hash table for the linker.  Different backends store
      different information in this table.  */       different information in this table.  */
Line 7454  typedef struct bfd_target
Line 7585  typedef struct bfd_target
   /* Copy the symbol type and other attributes for a linker script    /* Copy the symbol type and other attributes for a linker script
      assignment of one symbol to another.  */       assignment of one symbol to another.  */
 #define bfd_copy_link_hash_symbol_type(b, t, f) \  #define bfd_copy_link_hash_symbol_type(b, t, f) \
   BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))         BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
   void (*_bfd_copy_link_hash_symbol_type)    void        (*_bfd_copy_link_hash_symbol_type) (bfd *,
     (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);                                                    struct bfd_link_hash_entry *,
                                                     struct bfd_link_hash_entry *);
   
   /* Do a link based on the link_order structures attached to each    /* Do a link based on the link_order structures attached to each
      section of the BFD.  */       section of the BFD.  */
Line 7465  typedef struct bfd_target
Line 7597  typedef struct bfd_target
   /* Should this section be split up into smaller pieces during linking.  */    /* Should this section be split up into smaller pieces during linking.  */
   bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);    bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
   
     /* Check the relocations in the bfd for validity.  */
     bfd_boolean (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
   
   /* Remove sections that are not referenced from the output.  */    /* Remove sections that are not referenced from the output.  */
   bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);    bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
   
   /* Sets the bitmask of allowed and disallowed section flags.  */    /* Sets the bitmask of allowed and disallowed section flags.  */
   bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,    bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
                                             struct flag_info *,                                              struct flag_info *, asection *);
                                             asection *);  
   
   /* Attempt to merge SEC_MERGE sections.  */    /* Attempt to merge SEC_MERGE sections.  */
   bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);    bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
Line 7479  typedef struct bfd_target
Line 7613  typedef struct bfd_target
   /* Is this section a member of a group?  */    /* Is this section a member of a group?  */
   bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);    bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
   
     /* The group name, if section is a member of a group.  */
     const char *(*_bfd_group_name) (bfd *, const struct bfd_section *);
   
   /* Discard members of a group.  */    /* Discard members of a group.  */
   bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);    bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
   
Line 7491  typedef struct bfd_target
Line 7628  typedef struct bfd_target
   bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,    bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
                                             struct bfd_link_hash_entry *);                                              struct bfd_link_hash_entry *);
   
     /* Hide a symbol.  */
     void (*_bfd_link_hide_symbol) (bfd *, struct bfd_link_info *,
                                    struct bfd_link_hash_entry *);
   
     /* Define a __start, __stop, .startof. or .sizeof. symbol.  */
     struct bfd_link_hash_entry *
                 (*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
                                            asection *);
   
   /* Routines to handle dynamic symbols and relocs.  */    /* Routines to handle dynamic symbols and relocs.  */
 #define BFD_JUMP_TABLE_DYNAMIC(NAME) \  #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
   NAME##_get_dynamic_symtab_upper_bound, \    NAME##_get_dynamic_symtab_upper_bound, \
Line 7502  typedef struct bfd_target
Line 7648  typedef struct bfd_target
   /* Get the amount of memory required to hold the dynamic symbols.  */    /* Get the amount of memory required to hold the dynamic symbols.  */
   long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);    long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
   /* Read in the dynamic symbols.  */    /* Read in the dynamic symbols.  */
   long        (*_bfd_canonicalize_dynamic_symtab)    long        (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **);
     (bfd *, struct bfd_symbol **);  
   /* Create synthetized symbols.  */    /* Create synthetized symbols.  */
   long        (*_bfd_get_synthetic_symtab)    long        (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **,
     (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,                                              long, struct bfd_symbol **,
      struct bfd_symbol **);                                              struct bfd_symbol **);
   /* Get the amount of memory required to hold the dynamic relocs.  */    /* Get the amount of memory required to hold the dynamic relocs.  */
   long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);    long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
   /* Read in the dynamic relocs.  */    /* Read in the dynamic relocs.  */
   long        (*_bfd_canonicalize_dynamic_reloc)    long        (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **,
     (bfd *, arelent **, struct bfd_symbol **);                                                    struct bfd_symbol **);
   
   /* Opposite endian version of this target.  */    /* Opposite endian version of this target.  */
   const struct bfd_target * alternative_target;    const struct bfd_target *alternative_target;
   
   /* Data for use by back-end routines, which isn't    /* Data for use by back-end routines, which isn't
      generic enough to belong in this structure.  */       generic enough to belong in this structure.  */
Line 7523  typedef struct bfd_target
Line 7668  typedef struct bfd_target
   
 } bfd_target;  } bfd_target;
   
   static inline const char *
   bfd_get_target (const bfd *abfd)
   {
     return abfd->xvec->name;
   }
   
   static inline enum bfd_flavour
   bfd_get_flavour (const bfd *abfd)
   {
     return abfd->xvec->flavour;
   }
   
   static inline flagword
   bfd_applicable_file_flags (const bfd *abfd)
   {
     return abfd->xvec->object_flags;
   }
   
   static inline bfd_boolean
   bfd_family_coff (const bfd *abfd)
   {
     return (bfd_get_flavour (abfd) == bfd_target_coff_flavour
             || bfd_get_flavour (abfd) == bfd_target_xcoff_flavour);
   }
   
   static inline bfd_boolean
   bfd_big_endian (const bfd *abfd)
   {
     return abfd->xvec->byteorder == BFD_ENDIAN_BIG;
   }
   static inline bfd_boolean
   bfd_little_endian (const bfd *abfd)
   {
     return abfd->xvec->byteorder == BFD_ENDIAN_LITTLE;
   }
   
   static inline bfd_boolean
   bfd_header_big_endian (const bfd *abfd)
   {
     return abfd->xvec->header_byteorder == BFD_ENDIAN_BIG;
   }
   
   static inline bfd_boolean
   bfd_header_little_endian (const bfd *abfd)
   {
     return abfd->xvec->header_byteorder == BFD_ENDIAN_LITTLE;
   }
   
   static inline flagword
   bfd_applicable_section_flags (const bfd *abfd)
   {
     return abfd->xvec->section_flags;
   }
   
   static inline char
   bfd_get_symbol_leading_char (const bfd *abfd)
   {
     return abfd->xvec->symbol_leading_char;
   }
   
   static inline enum bfd_flavour
   bfd_asymbol_flavour (const asymbol *sy)
   {
     if ((sy->flags & BSF_SYNTHETIC) != 0)
       return bfd_target_unknown_flavour;
     return sy->the_bfd->xvec->flavour;
   }
   
 bfd_boolean bfd_set_default_target (const char *name);  bfd_boolean bfd_set_default_target (const char *name);
   
 const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);  const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
Line 7534  const bfd_target *bfd_get_target_info (c
Line 7747  const bfd_target *bfd_get_target_info (c
     const char **def_target_arch);      const char **def_target_arch);
 const char ** bfd_target_list (void);  const char ** bfd_target_list (void);
   
 const bfd_target *bfd_search_for_target  const bfd_target *bfd_iterate_over_targets
    (int (*search_func) (const bfd_target *, void *),     (int (*func) (const bfd_target *, void *),
     void *);      void *data);
   
 const char *bfd_flavour_name (enum bfd_flavour flavour);  const char *bfd_flavour_name (enum bfd_flavour flavour);
   
Line 7551  bfd_boolean bfd_set_format (bfd *abfd, b
Line 7764  bfd_boolean bfd_set_format (bfd *abfd, b
 const char *bfd_format_string (bfd_format format);  const char *bfd_format_string (bfd_format format);
   
 /* Extracted from linker.c.  */  /* Extracted from linker.c.  */
   /* Return TRUE if the symbol described by a linker hash entry H
      is going to be absolute.  Linker-script defined symbols can be
      converted from absolute to section-relative ones late in the
      link.  Use this macro to correctly determine whether the symbol
      will actually end up absolute in output.  */
   #define bfd_is_abs_symbol(H) \
     (((H)->type == bfd_link_hash_defined \
       || (H)->type == bfd_link_hash_defweak) \
      && bfd_is_abs_section ((H)->u.def.section) \
      && !(H)->rel_from_abs)
   
 bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);  bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
   
 #define bfd_link_split_section(abfd, sec) \  #define bfd_link_split_section(abfd, sec) \
Line 7570  bfd_boolean bfd_generic_define_common_sy
Line 7794  bfd_boolean bfd_generic_define_common_sy
 #define bfd_define_common_symbol(output_bfd, info, h) \  #define bfd_define_common_symbol(output_bfd, info, h) \
        BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))         BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
   
   void _bfd_generic_link_hide_symbol
      (bfd *output_bfd, struct bfd_link_info *info,
       struct bfd_link_hash_entry *h);
   
   #define bfd_link_hide_symbol(output_bfd, info, h) \
          BFD_SEND (output_bfd, _bfd_link_hide_symbol, (output_bfd, info, h))
   
   struct bfd_link_hash_entry *bfd_generic_define_start_stop
      (struct bfd_link_info *info,
       const char *symbol, asection *sec);
   
   #define bfd_define_start_stop(output_bfd, info, symbol, sec) \
          BFD_SEND (output_bfd, _bfd_define_start_stop, (info, symbol, sec))
   
 struct bfd_elf_version_tree * bfd_find_version_for_sym  struct bfd_elf_version_tree * bfd_find_version_for_sym
    (struct bfd_elf_version_tree *verdefs,     (struct bfd_elf_version_tree *verdefs,
     const char *sym_name, bfd_boolean *hide);      const char *sym_name, bfd_boolean *hide);
Line 7577  struct bfd_elf_version_tree * bfd_find_v
Line 7815  struct bfd_elf_version_tree * bfd_find_v
 bfd_boolean bfd_hide_sym_by_version  bfd_boolean bfd_hide_sym_by_version
    (struct bfd_elf_version_tree *verdefs, const char *sym_name);     (struct bfd_elf_version_tree *verdefs, const char *sym_name);
   
   bfd_boolean bfd_link_check_relocs
      (bfd *abfd, struct bfd_link_info *info);
   
   bfd_boolean _bfd_generic_link_check_relocs
      (bfd *abfd, struct bfd_link_info *info);
   
   bfd_boolean bfd_merge_private_bfd_data
      (bfd *ibfd, struct bfd_link_info *info);
   
   #define bfd_merge_private_bfd_data(ibfd, info) \
          BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
                    (ibfd, info))
 /* Extracted from simple.c.  */  /* Extracted from simple.c.  */
 bfd_byte *bfd_simple_get_relocated_section_contents  bfd_byte *bfd_simple_get_relocated_section_contents
    (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);     (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
Line 7591  void bfd_cache_section_contents
Line 7841  void bfd_cache_section_contents
 bfd_boolean bfd_is_section_compressed_with_header  bfd_boolean bfd_is_section_compressed_with_header
    (bfd *abfd, asection *section,     (bfd *abfd, asection *section,
     int *compression_header_size_p,      int *compression_header_size_p,
     bfd_size_type *uncompressed_size_p);      bfd_size_type *uncompressed_size_p,
       unsigned int *uncompressed_alignment_power_p);
   
 bfd_boolean bfd_is_section_compressed  bfd_boolean bfd_is_section_compressed
    (bfd *abfd, asection *section);     (bfd *abfd, asection *section);

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2

CVSweb <webmaster@jp.NetBSD.org>