1 |
/* BFD XCOFF object file private structure. |
/* BFD XCOFF object file private structure. |
2 |
Copyright (C) 2001, 2002 Free Software Foundation, Inc. |
Copyright 2001, 2002 Free Software Foundation, Inc. |
3 |
Written by Tom Rix, Redhat. |
Written by Tom Rix, Redhat. |
4 |
|
|
5 |
This file is part of BFD, the Binary File Descriptor library. |
This file is part of BFD, the Binary File Descriptor library. |
39 |
long _xcoff_machine; |
long _xcoff_machine; |
40 |
|
|
41 |
/* Function pointers to xcoff specific swap routines. */ |
/* Function pointers to xcoff specific swap routines. */ |
42 |
void (* _xcoff_swap_ldhdr_in)(bfd *, const PTR, struct internal_ldhdr *); |
void (* _xcoff_swap_ldhdr_in) |
43 |
void (* _xcoff_swap_ldhdr_out)(bfd *, const struct internal_ldhdr *, PTR); |
PARAMS ((bfd *, const PTR, struct internal_ldhdr *)); |
44 |
void (* _xcoff_swap_ldsym_in)(bfd *, const PTR, struct internal_ldsym *); |
void (* _xcoff_swap_ldhdr_out) |
45 |
void (* _xcoff_swap_ldsym_out)(bfd *, const struct internal_ldsym *, PTR); |
PARAMS ((bfd *, const struct internal_ldhdr *, PTR)); |
46 |
void (* _xcoff_swap_ldrel_in)(bfd *, const PTR, struct internal_ldrel *); |
void (* _xcoff_swap_ldsym_in) |
47 |
void (* _xcoff_swap_ldrel_out)(bfd *, const struct internal_ldrel *, PTR); |
PARAMS ((bfd *, const PTR, struct internal_ldsym *)); |
48 |
|
void (* _xcoff_swap_ldsym_out) |
49 |
|
PARAMS ((bfd *, const struct internal_ldsym *, PTR)); |
50 |
|
void (* _xcoff_swap_ldrel_in) |
51 |
|
PARAMS ((bfd *, const PTR, struct internal_ldrel *)); |
52 |
|
void (* _xcoff_swap_ldrel_out) |
53 |
|
PARAMS ((bfd *, const struct internal_ldrel *, PTR)); |
54 |
|
|
55 |
/* Size of the external struct. */ |
/* Size of the external struct. */ |
56 |
unsigned int _xcoff_ldhdrsz; |
unsigned int _xcoff_ldhdrsz; |
68 |
2 : XCOFF64. */ |
2 : XCOFF64. */ |
69 |
unsigned long _xcoff_ldhdr_version; |
unsigned long _xcoff_ldhdr_version; |
70 |
|
|
71 |
boolean (* _xcoff_put_symbol_name) |
bfd_boolean (* _xcoff_put_symbol_name) |
72 |
PARAMS ((bfd *, struct bfd_strtab_hash *, struct internal_syment *, |
PARAMS ((bfd *, struct bfd_strtab_hash *, struct internal_syment *, |
73 |
const char *)); |
const char *)); |
74 |
|
|
75 |
boolean (* _xcoff_put_ldsymbol_name) |
bfd_boolean (* _xcoff_put_ldsymbol_name) |
76 |
PARAMS ((bfd *, struct xcoff_loader_info *, struct internal_ldsym *, |
PARAMS ((bfd *, struct xcoff_loader_info *, struct internal_ldsym *, |
77 |
const char *)); |
const char *)); |
78 |
|
|
79 |
reloc_howto_type *_xcoff_dynamic_reloc; |
reloc_howto_type *_xcoff_dynamic_reloc; |
80 |
|
|
81 |
asection * (* _xcoff_create_csect_from_smclas) |
asection * (* _xcoff_create_csect_from_smclas) |
82 |
PARAMS ((bfd *, union internal_auxent *, const char *)); |
PARAMS ((bfd *, union internal_auxent *, const char *)); |
83 |
|
|
84 |
/* Line number and relocation overflow. |
/* Line number and relocation overflow. |
85 |
XCOFF32 overflows to another section when the line number or the |
XCOFF32 overflows to another section when the line number or the |
86 |
relocation count exceeds 0xffff. XCOFF64 does not overflow. */ |
relocation count exceeds 0xffff. XCOFF64 does not overflow. */ |
87 |
boolean (*_xcoff_is_lineno_count_overflow)(bfd *, bfd_vma); |
bfd_boolean (*_xcoff_is_lineno_count_overflow) |
88 |
boolean (*_xcoff_is_reloc_count_overflow)(bfd *, bfd_vma); |
PARAMS ((bfd *, bfd_vma)); |
89 |
|
bfd_boolean (*_xcoff_is_reloc_count_overflow) |
90 |
|
PARAMS ((bfd *, bfd_vma)); |
91 |
|
|
92 |
/* Loader section symbol and relocation table offset |
/* Loader section symbol and relocation table offset |
93 |
XCOFF32 is after the .loader header |
XCOFF32 is after the .loader header |
94 |
XCOFF64 is offset in .loader header. */ |
XCOFF64 is offset in .loader header. */ |
95 |
bfd_vma (*_xcoff_loader_symbol_offset)(bfd *, struct internal_ldhdr *); |
bfd_vma (*_xcoff_loader_symbol_offset) |
96 |
bfd_vma (*_xcoff_loader_reloc_offset)(bfd *, struct internal_ldhdr *); |
PARAMS ((bfd *, struct internal_ldhdr *)); |
97 |
|
bfd_vma (*_xcoff_loader_reloc_offset) |
98 |
|
PARAMS ((bfd *, struct internal_ldhdr *)); |
99 |
|
|
100 |
/* Global linkage. The first word of global linkage code must be be |
/* Global linkage. The first word of global linkage code must be be |
101 |
modified by filling in the correct TOC offset. */ |
modified by filling in the correct TOC offset. */ |
106 |
|
|
107 |
/* rtinit. */ |
/* rtinit. */ |
108 |
unsigned int _xcoff_rtinit_size; |
unsigned int _xcoff_rtinit_size; |
109 |
boolean (*_xcoff_generate_rtinit)(bfd *, const char *, const char *, |
bfd_boolean (*_xcoff_generate_rtinit) |
110 |
boolean); |
PARAMS ((bfd *, const char *, const char *, bfd_boolean)); |
111 |
}; |
}; |
112 |
|
|
113 |
/* Look up an entry in an XCOFF link hash table. */ |
/* Look up an entry in an XCOFF link hash table. */ |
120 |
#define xcoff_link_hash_traverse(table, func, info) \ |
#define xcoff_link_hash_traverse(table, func, info) \ |
121 |
(bfd_link_hash_traverse \ |
(bfd_link_hash_traverse \ |
122 |
(&(table)->root, \ |
(&(table)->root, \ |
123 |
(boolean (*) PARAMS ((struct bfd_link_hash_entry *, PTR))) (func), \ |
(bfd_boolean (*) PARAMS ((struct bfd_link_hash_entry *, PTR))) (func), \ |
124 |
(info))) |
(info))) |
125 |
|
|
126 |
/* Get the XCOFF link hash table from the info structure. This is |
/* Get the XCOFF link hash table from the info structure. This is |
227 |
#define XCOFF_COMPLAIN_FUNCTION_ARGS \ |
#define XCOFF_COMPLAIN_FUNCTION_ARGS \ |
228 |
bfd *, bfd_vma, bfd_vma, struct reloc_howto_struct *howto |
bfd *, bfd_vma, bfd_vma, struct reloc_howto_struct *howto |
229 |
|
|
230 |
extern boolean (*xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION]) |
extern bfd_boolean (*xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION]) |
231 |
(XCOFF_RELOC_FUNCTION_ARGS); |
PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
232 |
extern boolean (*xcoff_complain_overflow[XCOFF_MAX_COMPLAIN_OVERFLOW]) |
extern bfd_boolean (*xcoff_complain_overflow[XCOFF_MAX_COMPLAIN_OVERFLOW]) |
233 |
(XCOFF_COMPLAIN_FUNCTION_ARGS); |
PARAMS ((XCOFF_COMPLAIN_FUNCTION_ARGS)); |
234 |
|
|
235 |
/* Relocation functions */ |
/* Relocation functions */ |
236 |
boolean xcoff_reloc_type_noop PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
bfd_boolean xcoff_reloc_type_noop PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
237 |
boolean xcoff_reloc_type_fail PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
bfd_boolean xcoff_reloc_type_fail PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
238 |
boolean xcoff_reloc_type_pos PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
bfd_boolean xcoff_reloc_type_pos PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
239 |
boolean xcoff_reloc_type_neg PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
bfd_boolean xcoff_reloc_type_neg PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
240 |
boolean xcoff_reloc_type_rel PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
bfd_boolean xcoff_reloc_type_rel PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
241 |
boolean xcoff_reloc_type_toc PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
bfd_boolean xcoff_reloc_type_toc PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
242 |
boolean xcoff_reloc_type_ba PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
bfd_boolean xcoff_reloc_type_ba PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
243 |
boolean xcoff_reloc_type_crel PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
bfd_boolean xcoff_reloc_type_crel PARAMS ((XCOFF_RELOC_FUNCTION_ARGS)); |
244 |
|
|
245 |
#endif /* LIBXCOFF_H */ |
#endif /* LIBXCOFF_H */ |