@ -57,7 +57,7 @@ extern "C" {
# define ELF_DYNAMIC_INTERPRETER " / usr / libexec / ld-elf.so.1"
/* These two lines get substitutions done by commands in Makefile.in. */
/* #define BFD_VERSION "2. 9.5 " */
/* #define BFD_VERSION "2. 11 " */
# define BFD_ARCH_SIZE 32
# define BFD_HOST_64BIT_LONG 0
#if 0
@ -182,8 +182,8 @@ typedef unsigned long symvalue;
typedef unsigned long bfd_size_type ;
/* Print a bfd_vma x on stream s. */
# define fprintf_vma(s,x) fprintf (s, "%08lx", x)
# define sprintf_vma(s,x) sprintf (s, "%08lx", x)
# define fprintf_vma(s,x) fprintf (s, "%08lx", x)
# define sprintf_vma(s,x) sprintf (s, "%08lx", x)
# endif /* not BFD64 */
@ -289,7 +289,6 @@ typedef struct carsym {
file_ptr file_offset ; /* look here to find the file */
} carsym ; /* to make these you call a carsymogen */
/* Used in generating armaps (archive tables of contents).
Perhaps just a forward definition would do ? */
struct orl { /* output ranlib */
@ -298,7 +297,6 @@ struct orl { /* output ranlib */
int namidx ; /* index into string table */
} ;
/* Linenumber stuff */
typedef struct lineno_cache_entry {
unsigned int line_number ; /* Linenumber from start of function*/
@ -486,7 +484,6 @@ extern long bfd_tell PARAMS ((bfd *abfd));
extern int bfd_flush PARAMS ( ( bfd * abfd ) ) ;
extern int bfd_stat PARAMS ( ( bfd * abfd , struct stat * ) ) ;
/* 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)
@ -494,6 +491,9 @@ extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
# 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) \
@ -516,7 +516,7 @@ extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
# define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
# define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean) (bool)), true)
# define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean) (bool)), true)
extern boolean bfd_record_phdr
PARAMS ( ( bfd * , unsigned long , boolean , flagword , boolean , bfd_vma ,
@ -542,6 +542,11 @@ void bfd_putb32 PARAMS ((bfd_vma, unsigned char *));
void bfd_putl32 PARAMS ( ( bfd_vma , unsigned char * ) ) ;
void bfd_putb16 PARAMS ( ( bfd_vma , unsigned char * ) ) ;
void bfd_putl16 PARAMS ( ( bfd_vma , unsigned char * ) ) ;
/* Byte swapping routines which take size and endiannes as arguments. */
bfd_vma bfd_get_bits PARAMS ( ( bfd_byte * , int , boolean ) ) ;
void bfd_put_bits PARAMS ( ( bfd_vma , bfd_byte * , int , boolean ) ) ;
/* Externally visible ECOFF routines. */
@ -629,7 +634,10 @@ extern boolean bfd_elf64_size_dynamic_sections
const char * const * , struct bfd_link_info * , struct sec * * ,
struct bfd_elf_version_tree * ) ) ;
extern void bfd_elf_set_dt_needed_name PARAMS ( ( bfd * , const char * ) ) ;
extern void bfd_elf_set_dt_needed_soname PARAMS ( ( bfd * , const char * ) ) ;
extern const char * bfd_elf_get_dt_soname PARAMS ( ( bfd * ) ) ;
extern struct bfd_link_needed_list * bfd_elf_get_runpath_list
PARAMS ( ( bfd * , struct bfd_link_info * ) ) ;
/* 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
@ -646,7 +654,14 @@ extern long bfd_get_elf_phdr_upper_bound PARAMS ((bfd *abfd));
extern int bfd_get_elf_phdrs PARAMS ( ( bfd * abfd , void * phdrs ) ) ;
/* Return the arch_size field of an elf bfd, or -1 if not elf. */
extern int bfd_elf_get_arch_size PARAMS ( ( bfd * ) ) ;
extern int bfd_get_arch_size PARAMS ( ( bfd * ) ) ;
/* Return true if address "naturally" sign extends, or -1 if not elf. */
extern int bfd_get_sign_extend_vma PARAMS ( ( bfd * ) ) ;
extern boolean bfd_m68k_elf32_create_embedded_relocs
PARAMS ( ( bfd * , struct bfd_link_info * , struct sec * , struct sec * ,
char * * ) ) ;
/* SunOS shared library support routines for the linker. */
@ -726,6 +741,10 @@ extern boolean bfd_coff_get_auxent
extern boolean bfd_coff_set_symbol_class
PARAMS ( ( bfd * , struct symbol_cache_entry * , unsigned int ) ) ;
extern boolean bfd_m68k_coff_create_embedded_relocs
PARAMS ( ( bfd * , struct bfd_link_info * , struct sec * , struct sec * ,
char * * ) ) ;
/* ARM Interworking support. Called from linker. */
extern boolean bfd_arm_allocate_interworking_sections
PARAMS ( ( struct bfd_link_info * ) ) ;
@ -795,16 +814,16 @@ boolean
bfd_make_readable PARAMS ( ( bfd * abfd ) ) ;
/* Byte swapping macros for user section data. */
/* Byte swapping macros for user section data. */
# define bfd_put_8(abfd, val, ptr) \
( ( void ) ( * ( ( unsigned char * ) ( ptr ) ) = ( unsigned char ) ( val ) ) )
( ( void ) ( * ( ( unsigned char * ) ( ptr ) ) = ( unsigned char ) ( val ) ) )
# define bfd_put_signed_8 \
bfd_put_8
# define bfd_get_8(abfd, ptr) \
( * ( unsigned char * ) ( ptr ) )
( * ( unsigned char * ) ( ptr ) )
# define bfd_get_signed_8(abfd, ptr) \
( ( * ( unsigned char * ) ( ptr ) ^ 0x80 ) - 0x80 )
( ( * ( unsigned char * ) ( ptr ) ^ 0x80 ) - 0x80 )
# define bfd_put_16(abfd, val, ptr) \
BFD_SEND ( abfd , bfd_putx16 , ( ( val ) , ( ptr ) ) )
@ -848,7 +867,7 @@ bfd_make_readable PARAMS ((bfd *abfd));
: ( abort ( ) , ( void ) 0 ) )
/* Byte swapping macros for file header data. */
/* Byte swapping macros for file header data. */
# define bfd_h_put_8(abfd, val, ptr) \
bfd_put_8 ( abfd , val , ptr )
@ -886,7 +905,7 @@ bfd_make_readable PARAMS ((bfd *abfd));
# define bfd_h_get_signed_64(abfd, ptr) \
BFD_SEND ( abfd , bfd_h_getx_signed_64 , ( ptr ) )
/* This structure is used for a comdat section, as in PE. A comdat
/* This structure is used for a comdat section, as in PE. A comdat
section is associated with a particular symbol . When the linker
sees a comdat section , it keeps only one of the sections with a
given name and associated with a given symbol . */
@ -901,10 +920,6 @@ struct bfd_comdat_info
specific code ; it is not an index into the list returned by
bfd_canonicalize_symtab . */
long symbol ;
/* If this section is being discarded, the linker uses this field
to point to the input section which is being kept . */
struct sec * sec ;
} ;
typedef struct sec
@ -912,7 +927,11 @@ typedef struct sec
/* The name of the section; the name isn't a copy, the pointer is
the same as that passed to bfd_make_section . */
CONST char * name ;
const char * name ;
/* A unique sequence number. */
int id ;
/* Which section is it; 0..nth. */
@ -931,8 +950,7 @@ typedef struct sec
# define SEC_NO_FLAGS 0x000
/* 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
/* Tells the OS to load the section from the file when loading.
@ -947,8 +965,7 @@ typedef struct sec
# define SEC_BALIGN 0x008
# endif
/* 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 0x010
/* The section contains code only. */
@ -998,6 +1015,14 @@ typedef struct sec
sections . */
# define SEC_COFF_SHARED_LIBRARY 0x800
/* The section has GOT references. This flag is only for the
linker , and is currently only used by the elf32 - hppa back end .
It will be set if global offset table references were detected
in this section , which indicate to the linker that the section
contains PIC code , and must be handled specially when doing a
static link . */
# define SEC_HAS_GOT_REF 0x4000
/* The section contains common symbols (symbols may be defined
multiple times , the value of a symbol is the amount of
space it requires , and the largest symbol value is the one
@ -1012,9 +1037,8 @@ typedef struct sec
# define SEC_DEBUGGING 0x10000
/* The contents of this section are held in memory pointed to
by the contents field . This is checked by
bfd_get_section_contents , and the data is retrieved from
memory if appropriate . */
by the contents field . This is checked by bfd_get_section_contents ,
and the data is retrieved from memory if appropriate . */
# define SEC_IN_MEMORY 0x20000
/* The contents of this section are to be excluded by the
@ -1098,6 +1122,9 @@ typedef struct sec
/* A mark flag used by some linker backends for garbage collection. */
unsigned int gc_mark : 1 ;
/* Used by the ELF code to mark sections which have been allocated to segments. */
unsigned int segment_mark : 1 ;
/* End of internal packed boolean fields. */
/* The virtual memory address of the section - where it will be
@ -1163,19 +1190,19 @@ typedef struct sec
/* Information below is back end specific - and not always used
or updated . */
/* File position of section data */
/* File position of section data. */
file_ptr filepos ;
/* File position of relocation info */
/* File position of relocation info . */
file_ptr rel_filepos ;
/* File position of line data */
/* File position of line data. */
file_ptr line_filepos ;
/* Pointer to data for applications */
/* Pointer to data for applications . */
PTR userdata ;
@ -1183,24 +1210,28 @@ typedef struct sec
contents . */
unsigned char * contents ;
/* Attached line number information */
/* Attached line number information . */
alent * lineno ;
/* Number of line number records */
/* Number of line number records. */
unsigned int lineno_count ;
/* Optional information about a COMDAT entry; NULL if not COMDAT */
/* Optional information about a COMDAT entry; NULL if not COMDAT . */
struct bfd_comdat_info * comdat ;
/* Points to the kept section if this section is a link-once section,
and is discarded . */
struct sec * kept_section ;
/* When a section is being output, this value changes as more
linenumbers are written out */
linenumbers are written out . */
file_ptr moving_line_filepos ;
/* What the section number is in the target world */
/* What the section number is in the target world . */
int target_index ;
@ -1223,7 +1254,7 @@ typedef struct sec
struct bfd_link_order * link_order_tail ;
} asection ;
/* These sections are global, and are managed by BFD. The application
/* These sections are global, and are managed by BFD. The application
and target back end are not permitted to change the values in
these sections . New code should use the section_ptr macros rather
than referring directly to the const sections . The const sections
@ -1233,18 +1264,18 @@ typedef struct sec
# define BFD_COM_SECTION_NAME "*COM*"
# define BFD_IND_SECTION_NAME "*IND*"
/* the absolute section */
/* the absolute section */
extern const asection bfd_abs_section ;
# define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
# define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
/* Pointer to the undefined section */
/* Pointer to the undefined section */
extern const asection bfd_und_section ;
# define bfd_und_section_ptr ((asection *) &bfd_und_section)
# define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
/* Pointer to the common section */
/* Pointer to the common section */
extern const asection bfd_com_section ;
# define bfd_com_section_ptr ((asection *) &bfd_com_section)
/* Pointer to the indirect section */
/* Pointer to the indirect section */
extern const asection bfd_ind_section ;
# define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
# define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
@ -1260,23 +1291,28 @@ extern const struct symbol_cache_entry * const bfd_ind_symbol;
( ( section ) - > reloc_done ? ( section ) - > _cooked_size \
: ( abort ( ) , ( bfd_size_type ) 1 ) )
asection *
bfd_get_section_by_name PARAMS ( ( bfd * abfd , CONST char * name ) ) ;
bfd_get_section_by_name PARAMS ( ( bfd * abfd , const char * name ) ) ;
char *
bfd_get_unique_section_name PARAMS ( ( bfd * abfd ,
const char * templat ,
int * count ) ) ;
asection *
bfd_make_section_old_way PARAMS ( ( bfd * abfd , CONST char * name ) ) ;
bfd_make_section_old_way PARAMS ( ( bfd * abfd , const char * name ) ) ;
asection *
bfd_make_section_anyway PARAMS ( ( bfd * abfd , CONST char * name ) ) ;
bfd_make_section_anyway PARAMS ( ( bfd * abfd , const char * name ) ) ;
asection *
bfd_make_section PARAMS ( ( bfd * , CONST char * name ) ) ;
bfd_make_section PARAMS ( ( bfd * , const char * name ) ) ;
boolean
bfd_set_section_flags PARAMS ( ( bfd * abfd , asection * sec , flagword flags ) ) ;
void
bfd_map_over_sections PARAMS ( ( bfd * abfd ,
void ( * func ) ( bfd * abfd ,
void ( * func ) ( bfd * abfd ,
asection * sect ,
PTR obj ) ,
PTR obj ) ) ;
@ -1285,16 +1321,14 @@ boolean
bfd_set_section_size PARAMS ( ( bfd * abfd , asection * sec , bfd_size_type val ) ) ;
boolean
bfd_set_section_contents
PARAMS ( ( bfd * abfd ,
bfd_set_section_contents PARAMS ( ( bfd * abfd ,
asection * section ,
PTR data ,
file_ptr offset ,
bfd_size_type count ) ) ;
boolean
bfd_get_section_contents
PARAMS ( ( bfd * abfd , asection * section , PTR location ,
bfd_get_section_contents PARAMS ( ( bfd * abfd , asection * section , PTR location ,
file_ptr offset , bfd_size_type count ) ) ;
boolean
@ -1304,8 +1338,7 @@ bfd_copy_private_section_data PARAMS ((bfd *ibfd, asection *isec, bfd *obfd, ase
BFD_SEND ( obfd , _bfd_copy_private_section_data , \
( ibfd , isection , obfd , osection ) )
void
_bfd_strip_section_from_output
PARAMS ( ( struct bfd_link_info * info , asection * section ) ) ;
_bfd_strip_section_from_output PARAMS ( ( struct bfd_link_info * info , asection * section ) ) ;
enum bfd_architecture
{
@ -1342,7 +1375,7 @@ enum bfd_architecture
bfd_arch_a29k , /* AMD 29000 */
bfd_arch_sparc , /* SPARC */
# 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_sparclite 3
# define bfd_mach_sparc_v8plus 4
@ -1350,9 +1383,12 @@ enum bfd_architecture
# define bfd_mach_sparc_sparclite_le 6
# define bfd_mach_sparc_v9 7
# define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns */
/* Nonzero if MACH has the v9 instruction set. */
# define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns */
# define bfd_mach_sparc_v9b 10 /* with cheetah add'ns */
/* Nonzero if MACH has the v9 instruction set. */
# define bfd_mach_sparc_v9_p(mach) \
( ( mach ) > = bfd_mach_sparc_v8plus & & ( mach ) < = bfd_mach_sparc_v9a )
( ( mach ) > = bfd_mach_sparc_v8plus & & ( mach ) < = bfd_mach_sparc_v9b \
& & ( mach ) ! = bfd_mach_sparc_sparclite_le )
bfd_arch_mips , /* MIPS Rxxxx */
# define bfd_mach_mips3000 3000
# define bfd_mach_mips3900 3900
@ -1369,10 +1405,17 @@ enum bfd_architecture
# define bfd_mach_mips8000 8000
# define bfd_mach_mips10000 10000
# define bfd_mach_mips16 16
# define bfd_mach_mips32 32
# define bfd_mach_mips32_4k 3204113 /* 32, 04, octal 'K' */
# define bfd_mach_mips5 5
# define bfd_mach_mips64 64
# define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
bfd_arch_i386 , /* Intel 386 */
# define bfd_mach_i386_i386 0
# define bfd_mach_i386_i8086 1
# define bfd_mach_i386_i386_intel_syntax 2
# define bfd_mach_x86_64 3
# define bfd_mach_x86_64_intel_syntax 4
bfd_arch_we32k , /* AT&T WE32xxx */
bfd_arch_tahoe , /* CCI/Harris Tahoe */
bfd_arch_i860 , /* Intel 860 */
@ -1387,13 +1430,36 @@ enum bfd_architecture
# define bfd_mach_h8300h 2
# define bfd_mach_h8300s 3
bfd_arch_powerpc , /* PowerPC */
# define bfd_mach_ppc 0
# define bfd_mach_ppc_403 403
# define bfd_mach_ppc_403gc 4030
# define bfd_mach_ppc_505 505
# define bfd_mach_ppc_601 601
# define bfd_mach_ppc_602 602
# define bfd_mach_ppc_603 603
# define bfd_mach_ppc_ec603e 6031
# define bfd_mach_ppc_604 604
# define bfd_mach_ppc_620 620
# define bfd_mach_ppc_630 630
# define bfd_mach_ppc_750 750
# define bfd_mach_ppc_860 860
# define bfd_mach_ppc_a35 35
# define bfd_mach_ppc_rs64ii 642
# define bfd_mach_ppc_rs64iii 643
# define bfd_mach_ppc_7400 7400
bfd_arch_rs6000 , /* IBM RS/6000 */
# define bfd_mach_rs6k 0
# define bfd_mach_rs6k_rs1 6001
# define bfd_mach_rs6k_rsc 6003
# define bfd_mach_rs6k_rs2 6002
bfd_arch_hppa , /* HP PA RISC */
bfd_arch_d10v , /* Mitsubishi D10V */
# define bfd_mach_d10v 0
# define bfd_mach_d10v_ts2 2
# define bfd_mach_d10v_ts3 3
bfd_arch_d30v , /* Mitsubishi D30V */
bfd_arch_m68hc11 , /* Motorola 68HC11 */
bfd_arch_m68hc12 , /* Motorola 68HC12 */
bfd_arch_z8k , /* Zilog Z8000 */
# define bfd_mach_z8001 1
# define bfd_mach_z8002 2
@ -1419,6 +1485,8 @@ enum bfd_architecture
# define bfd_mach_arm_4T 6
# define bfd_mach_arm_5 7
# define bfd_mach_arm_5T 8
# define bfd_mach_arm_5TE 9
# define bfd_mach_arm_XScale 10
bfd_arch_ns32k , /* National Semiconductors ns32000 */
bfd_arch_w65 , /* WDC 65816 */
bfd_arch_tic30 , /* Texas Instruments TMS320C30 */
@ -1428,8 +1496,11 @@ enum bfd_architecture
# define bfd_mach_v850 0
# define bfd_mach_v850e 'E'
# define bfd_mach_v850ea 'A'
bfd_arch_arc , /* Argonaut RISC Core */
# define bfd_mach_arc_base 0
bfd_arch_arc , /* ARC Cores */
# define bfd_mach_arc_5 0
# define bfd_mach_arc_6 1
# define bfd_mach_arc_7 2
# define bfd_mach_arc_8 3
bfd_arch_m32r , /* Mitsubishi M32R/D */
# define bfd_mach_m32r 0 /* backwards compatibility */
# define bfd_mach_m32rx 'x'
@ -1441,12 +1512,16 @@ enum bfd_architecture
# define bfd_mach_fr30 0x46523330
bfd_arch_mcore ,
bfd_arch_ia64 , /* HP/Intel ia64 */
# define bfd_mach_ia64_elf64 0
# define bfd_mach_ia64_elf32 1
bfd_arch_pj ,
bfd_arch_avr , /* Atmel AVR microcontrollers */
# define bfd_mach_avr1 1
# define bfd_mach_avr2 2
# define bfd_mach_avr3 3
# define bfd_mach_avr4 4
# define bfd_mach_avr5 5
bfd_arch_cris , /* Axis CRIS */
bfd_arch_last
} ;
@ -1460,7 +1535,7 @@ typedef struct bfd_arch_info
const char * arch_name ;
const char * printable_name ;
unsigned int section_align_power ;
/* t rue if this is the default machine for the architecture */
/* T rue if this is the default machine for the architecture. */
boolean the_default ;
const struct bfd_arch_info * ( * compatible )
PARAMS ( ( const struct bfd_arch_info * a ,
@ -1503,14 +1578,12 @@ const bfd_arch_info_type *
bfd_get_arch_info PARAMS ( ( bfd * abfd ) ) ;
const bfd_arch_info_type *
bfd_lookup_arch
PARAMS ( ( enum bfd_architecture
bfd_lookup_arch PARAMS ( ( enum bfd_architecture
arch ,
unsigned long machine ) ) ;
const char *
bfd_printable_arch_mach
PARAMS ( ( enum bfd_architecture arch , unsigned long machine ) ) ;
bfd_printable_arch_mach PARAMS ( ( enum bfd_architecture arch , unsigned long machine ) ) ;
unsigned int
bfd_octets_per_byte PARAMS ( ( bfd * abfd ) ) ;
@ -1704,18 +1777,14 @@ typedef struct relent_chain {
struct relent_chain * next ;
} arelent_chain ;
bfd_reloc_status_type
bfd_check_overflow
PARAMS ( ( enum complain_overflow how ,
bfd_check_overflow PARAMS ( ( enum complain_overflow how ,
unsigned int bitsize ,
unsigned int rightshift ,
unsigned int addrsize ,
bfd_vma relocation ) ) ;
bfd_reloc_status_type
bfd_perform_relocation
PARAMS ( ( bfd * abfd ,
bfd_perform_relocation PARAMS ( ( bfd * abfd ,
arelent * reloc_entry ,
PTR data ,
asection * input_section ,
@ -1723,9 +1792,7 @@ bfd_perform_relocation
char * * error_message ) ) ;
bfd_reloc_status_type
bfd_install_relocation
PARAMS ( ( bfd * abfd ,
bfd_install_relocation PARAMS ( ( bfd * abfd ,
arelent * reloc_entry ,
PTR data , bfd_vma data_start ,
asection * input_section ,
@ -1999,6 +2066,16 @@ to compensate for the borrow when the low bits are added. */
BFD_RELOC_386_GOTOFF ,
BFD_RELOC_386_GOTPC ,
/* x86-64/elf relocations */
BFD_RELOC_X86_64_GOT32 ,
BFD_RELOC_X86_64_PLT32 ,
BFD_RELOC_X86_64_COPY ,
BFD_RELOC_X86_64_GLOB_DAT ,
BFD_RELOC_X86_64_JUMP_SLOT ,
BFD_RELOC_X86_64_RELATIVE ,
BFD_RELOC_X86_64_GOTPCREL ,
BFD_RELOC_X86_64_32S ,
/* ns32k relocations */
BFD_RELOC_NS32K_IMM_8 ,
BFD_RELOC_NS32K_IMM_16 ,
@ -2125,6 +2202,11 @@ field in the instruction. */
BFD_RELOC_SH_LABEL ,
BFD_RELOC_SH_LOOP_START ,
BFD_RELOC_SH_LOOP_END ,
BFD_RELOC_SH_COPY ,
BFD_RELOC_SH_GLOB_DAT ,
BFD_RELOC_SH_JMP_SLOT ,
BFD_RELOC_SH_RELATIVE ,
BFD_RELOC_SH_GOTPC ,
/* Thumb 23-, 12- and 9-bit pc-relative branches. The lowest bit must
be zero and is not stored in the instruction . */
@ -2132,7 +2214,7 @@ be zero and is not stored in the instruction. */
BFD_RELOC_THUMB_PCREL_BRANCH12 ,
BFD_RELOC_THUMB_PCREL_BRANCH23 ,
/* A rgonaut RISC Core (ARC) relocs.
/* A RC Cores relocs.
ARC 22 bit pc - relative branch . The lowest two bits must be zero and are
not stored in the instruction . The high 20 bits are installed in bits 26
through 7 of the instruction . */
@ -2484,8 +2566,12 @@ this offset in the reloc's section offset. */
BFD_RELOC_IA64_FPTR64MSB ,
BFD_RELOC_IA64_FPTR64LSB ,
BFD_RELOC_IA64_PCREL21B ,
BFD_RELOC_IA64_PCREL21BI ,
BFD_RELOC_IA64_PCREL21M ,
BFD_RELOC_IA64_PCREL21F ,
BFD_RELOC_IA64_PCREL22 ,
BFD_RELOC_IA64_PCREL60B ,
BFD_RELOC_IA64_PCREL64I ,
BFD_RELOC_IA64_PCREL32MSB ,
BFD_RELOC_IA64_PCREL32LSB ,
BFD_RELOC_IA64_PCREL64MSB ,
@ -2494,7 +2580,6 @@ this offset in the reloc's section offset. */
BFD_RELOC_IA64_LTOFF_FPTR64I ,
BFD_RELOC_IA64_LTOFF_FPTR64MSB ,
BFD_RELOC_IA64_LTOFF_FPTR64LSB ,
BFD_RELOC_IA64_SEGBASE ,
BFD_RELOC_IA64_SEGREL32MSB ,
BFD_RELOC_IA64_SEGREL32LSB ,
BFD_RELOC_IA64_SEGREL64MSB ,
@ -2513,8 +2598,6 @@ this offset in the reloc's section offset. */
BFD_RELOC_IA64_LTV64LSB ,
BFD_RELOC_IA64_IPLTMSB ,
BFD_RELOC_IA64_IPLTLSB ,
BFD_RELOC_IA64_EPLTMSB ,
BFD_RELOC_IA64_EPLTLSB ,
BFD_RELOC_IA64_COPY ,
BFD_RELOC_IA64_TPREL22 ,
BFD_RELOC_IA64_TPREL64MSB ,
@ -2522,10 +2605,63 @@ this offset in the reloc's section offset. */
BFD_RELOC_IA64_LTOFF_TP22 ,
BFD_RELOC_IA64_LTOFF22X ,
BFD_RELOC_IA64_LDXMOV ,
/* Motorola 68HC11 reloc.
This is the 8 bits high part of an absolute address . */
BFD_RELOC_M68HC11_HI8 ,
/* Motorola 68HC11 reloc.
This is the 8 bits low part of an absolute address . */
BFD_RELOC_M68HC11_LO8 ,
/* Motorola 68HC11 reloc.
This is the 3 bits of a value . */
BFD_RELOC_M68HC11_3B ,
/* These relocs are only used within the CRIS assembler. They are not
( at present ) written to any object files . */
BFD_RELOC_CRIS_BDISP8 ,
BFD_RELOC_CRIS_UNSIGNED_5 ,
BFD_RELOC_CRIS_SIGNED_6 ,
BFD_RELOC_CRIS_UNSIGNED_6 ,
BFD_RELOC_CRIS_UNSIGNED_4 ,
/* 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 ,
BFD_RELOC_UNUSED } ;
typedef enum bfd_reloc_code_real bfd_reloc_code_real_type ;
reloc_howto_type *
bfd_reloc_type_lookup PARAMS ( ( bfd * abfd , bfd_reloc_code_real_type code ) ) ;
const char *
@ -2899,21 +3035,25 @@ long
bfd_get_reloc_upper_bound PARAMS ( ( bfd * abfd , asection * sect ) ) ;
long
bfd_canonicalize_reloc
PARAMS ( ( bfd * abfd ,
bfd_canonicalize_reloc PARAMS ( ( bfd * abfd ,
asection * sec ,
arelent * * loc ,
asymbol * * syms ) ) ;
void
bfd_set_reloc
PARAMS ( ( bfd * abfd , asection * sec , arelent * * rel , unsigned int count )
bfd_set_reloc PARAMS ( ( bfd * abfd , asection * sec , arelent * * rel , unsigned int count )
) ;
boolean
bfd_set_file_flags PARAMS ( ( bfd * abfd , flagword flags ) ) ;
int
bfd_get_arch_size PARAMS ( ( bfd * abfd ) ) ;
int
bfd_get_sign_extend_vma PARAMS ( ( bfd * abfd ) ) ;
boolean
bfd_set_start_address PARAMS ( ( bfd * abfd , bfd_vma vma ) ) ;
@ -3030,8 +3170,7 @@ int
bfd_core_file_failing_signal PARAMS ( ( bfd * abfd ) ) ;
boolean
core_file_matches_executable_p
PARAMS ( ( bfd * core_bfd , bfd * exec_bfd ) ) ;
core_file_matches_executable_p PARAMS ( ( bfd * core_bfd , bfd * exec_bfd ) ) ;
# define BFD_SEND(bfd, message, arglist) \
( ( * ( ( bfd ) - > xvec - > message ) ) arglist )
@ -3044,13 +3183,13 @@ core_file_matches_executable_p
( bfd_assert ( __FILE__ , __LINE__ ) , NULL ) )
# endif
# define BFD_SEND_FMT(bfd, message, arglist) \
( ( ( bfd ) - > xvec - > message [ ( int ) ( ( bfd ) - > format ) ] ) arglist )
( ( ( bfd ) - > xvec - > message [ ( int ) ( ( bfd ) - > format ) ] ) arglist )
# ifdef DEBUG_BFD_SEND
# undef BFD_SEND_FMT
# define BFD_SEND_FMT(bfd, message, arglist) \
( ( ( bfd ) & & ( bfd ) - > xvec & & ( bfd ) - > xvec - > message ) ? \
( ( ( bfd ) - > xvec - > message [ ( int ) ( ( bfd ) - > format ) ] ) arglist ) : \
( ( ( bfd ) - > xvec - > message [ ( int ) ( ( bfd ) - > format ) ] ) arglist ) : \
( bfd_assert ( __FILE__ , __LINE__ ) , NULL ) )
# endif
enum bfd_flavour {
@ -3058,6 +3197,7 @@ enum bfd_flavour {
bfd_target_aout_flavour ,
bfd_target_coff_flavour ,
bfd_target_ecoff_flavour ,
bfd_target_xcoff_flavour ,
bfd_target_elf_flavour ,
bfd_target_ieee_flavour ,
bfd_target_nlm_flavour ,
@ -3075,7 +3215,7 @@ enum bfd_flavour {
enum bfd_endian { BFD_ENDIAN_BIG , BFD_ENDIAN_LITTLE , BFD_ENDIAN_UNKNOWN } ;
/* Forward declaration. */
/* Forward declaration. */
typedef struct bfd_link_info _bfd_link_info ;
typedef struct bfd_target
@ -3338,7 +3478,7 @@ const char **
bfd_target_list PARAMS ( ( void ) ) ;
const bfd_target *
bfd_search_for_target PARAMS ( ( int ( * search_func ) ( const bfd_target * , void * ) , void * ) ) ;
bfd_search_for_target PARAMS ( ( int ( * search_func ) ( const bfd_target * , void * ) , void * ) ) ;
boolean
bfd_check_format PARAMS ( ( bfd * abfd , bfd_format format ) ) ;