|
1 /* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically |
|
2 generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c", |
|
3 "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c", |
|
4 "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c", |
|
5 "linker.c" and "simple.c". |
|
6 Run "make headers" in your build bfd/ to regenerate. */ |
|
7 |
|
8 /* Main header file for the bfd library -- portable access to object files. |
|
9 |
|
10 Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, |
|
11 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 |
|
12 Free Software Foundation, Inc. |
|
13 |
|
14 Contributed by Cygnus Support. |
|
15 |
|
16 This file is part of BFD, the Binary File Descriptor library. |
|
17 |
|
18 This program is free software; you can redistribute it and/or modify |
|
19 it under the terms of the GNU General Public License as published by |
|
20 the Free Software Foundation; either version 3 of the License, or |
|
21 (at your option) any later version. |
|
22 |
|
23 This program is distributed in the hope that it will be useful, |
|
24 but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
25 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
26 GNU General Public License for more details. |
|
27 |
|
28 You should have received a copy of the GNU General Public License |
|
29 along with this program; if not, write to the Free Software |
|
30 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ |
|
31 |
|
32 #ifndef __BFD_H_SEEN__ |
|
33 #define __BFD_H_SEEN__ |
|
34 |
|
35 #ifdef __cplusplus |
|
36 extern "C" { |
|
37 #endif |
|
38 |
|
39 #include "ansidecl.h" |
|
40 #include "symcat.h" |
|
41 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) |
|
42 #ifndef SABER |
|
43 /* This hack is to avoid a problem with some strict ANSI C preprocessors. |
|
44 The problem is, "32_" is not a valid preprocessing token, and we don't |
|
45 want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will |
|
46 cause the inner CONCAT2 macros to be evaluated first, producing |
|
47 still-valid pp-tokens. Then the final concatenation can be done. */ |
|
48 #undef CONCAT4 |
|
49 #define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d)) |
|
50 #endif |
|
51 #endif |
|
52 |
|
53 /* This is a utility macro to handle the situation where the code |
|
54 wants to place a constant string into the code, followed by a |
|
55 comma and then the length of the string. Doing this by hand |
|
56 is error prone, so using this macro is safer. */ |
|
57 #define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1) |
|
58 /* Unfortunately it is not possible to use the STRING_COMMA_LEN macro |
|
59 to create the arguments to another macro, since the preprocessor |
|
60 will mis-count the number of arguments to the outer macro (by not |
|
61 evaluating STRING_COMMA_LEN and so missing the comma). This is a |
|
62 problem for example when trying to use STRING_COMMA_LEN to build |
|
63 the arguments to the strncmp() macro. Hence this alternative |
|
64 definition of strncmp is provided here. |
|
65 |
|
66 Note - these macros do NOT work if STR2 is not a constant string. */ |
|
67 #define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0) |
|
68 /* strcpy() can have a similar problem, but since we know we are |
|
69 copying a constant string, we can use memcpy which will be faster |
|
70 since there is no need to check for a NUL byte inside STR. We |
|
71 can also save time if we do not need to copy the terminating NUL. */ |
|
72 #define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1) |
|
73 #define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2)) |
|
74 |
|
75 |
|
76 /* The word size used by BFD on the host. This may be 64 with a 32 |
|
77 bit target if the host is 64 bit, or if other 64 bit targets have |
|
78 been selected with --enable-targets, or if --enable-64-bit-bfd. */ |
|
79 #define BFD_ARCH_SIZE 32 |
|
80 |
|
81 /* The word size of the default bfd target. */ |
|
82 #define BFD_DEFAULT_TARGET_SIZE 32 |
|
83 |
|
84 #define BFD_HOST_64BIT_LONG 0 |
|
85 #define BFD_HOST_64BIT_LONG_LONG 1 |
|
86 #define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@ |
|
87 #if 1 |
|
88 #define BFD_HOST_64_BIT long long |
|
89 #define BFD_HOST_U_64_BIT unsigned long long |
|
90 typedef BFD_HOST_64_BIT bfd_int64_t; |
|
91 typedef BFD_HOST_U_64_BIT bfd_uint64_t; |
|
92 #endif |
|
93 |
|
94 #if BFD_ARCH_SIZE >= 64 |
|
95 #define BFD64 |
|
96 #endif |
|
97 |
|
98 #ifndef INLINE |
|
99 #if __GNUC__ >= 2 |
|
100 #define INLINE __inline__ |
|
101 #else |
|
102 #define INLINE |
|
103 #endif |
|
104 #endif |
|
105 |
|
106 /* Declaring a type wide enough to hold a host long and a host pointer. */ |
|
107 #define BFD_HOSTPTR_T unsigned long |
|
108 typedef BFD_HOSTPTR_T bfd_hostptr_t; |
|
109 |
|
110 /* Forward declaration. */ |
|
111 typedef struct bfd bfd; |
|
112 |
|
113 /* Boolean type used in bfd. Too many systems define their own |
|
114 versions of "boolean" for us to safely typedef a "boolean" of |
|
115 our own. Using an enum for "bfd_boolean" has its own set of |
|
116 problems, with strange looking casts required to avoid warnings |
|
117 on some older compilers. Thus we just use an int. |
|
118 |
|
119 General rule: Functions which are bfd_boolean return TRUE on |
|
120 success and FALSE on failure (unless they're a predicate). */ |
|
121 |
|
122 typedef int bfd_boolean; |
|
123 #undef FALSE |
|
124 #undef TRUE |
|
125 #define FALSE 0 |
|
126 #define TRUE 1 |
|
127 |
|
128 #ifdef BFD64 |
|
129 |
|
130 #ifndef BFD_HOST_64_BIT |
|
131 #error No 64 bit integer type available |
|
132 #endif /* ! defined (BFD_HOST_64_BIT) */ |
|
133 |
|
134 typedef BFD_HOST_U_64_BIT bfd_vma; |
|
135 typedef BFD_HOST_64_BIT bfd_signed_vma; |
|
136 typedef BFD_HOST_U_64_BIT bfd_size_type; |
|
137 typedef BFD_HOST_U_64_BIT symvalue; |
|
138 |
|
139 #ifndef fprintf_vma |
|
140 #if BFD_HOST_64BIT_LONG |
|
141 #define sprintf_vma(s,x) sprintf (s, "%016lx", x) |
|
142 #define fprintf_vma(f,x) fprintf (f, "%016lx", x) |
|
143 #elif BFD_HOST_64BIT_LONG_LONG |
|
144 #define sprintf_vma(s,x) sprintf (s, "%016llx", x) |
|
145 #define fprintf_vma(f,x) fprintf (f, "%016llx", x) |
|
146 #else |
|
147 #define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff))) |
|
148 #define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff)) |
|
149 #define fprintf_vma(s,x) \ |
|
150 fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x)) |
|
151 #define sprintf_vma(s,x) \ |
|
152 sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x)) |
|
153 #endif |
|
154 #endif |
|
155 |
|
156 #else /* not BFD64 */ |
|
157 |
|
158 /* Represent a target address. Also used as a generic unsigned type |
|
159 which is guaranteed to be big enough to hold any arithmetic types |
|
160 we need to deal with. */ |
|
161 typedef unsigned long bfd_vma; |
|
162 |
|
163 /* A generic signed type which is guaranteed to be big enough to hold any |
|
164 arithmetic types we need to deal with. Can be assumed to be compatible |
|
165 with bfd_vma in the same way that signed and unsigned ints are compatible |
|
166 (as parameters, in assignment, etc). */ |
|
167 typedef long bfd_signed_vma; |
|
168 |
|
169 typedef unsigned long symvalue; |
|
170 typedef unsigned long bfd_size_type; |
|
171 |
|
172 /* Print a bfd_vma x on stream s. */ |
|
173 #define fprintf_vma(s,x) fprintf (s, "%08lx", x) |
|
174 #define sprintf_vma(s,x) sprintf (s, "%08lx", x) |
|
175 |
|
176 #endif /* not BFD64 */ |
|
177 |
|
178 #define HALF_BFD_SIZE_TYPE \ |
|
179 (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2)) |
|
180 |
|
181 #ifndef BFD_HOST_64_BIT |
|
182 /* Fall back on a 32 bit type. The idea is to make these types always |
|
183 available for function return types, but in the case that |
|
184 BFD_HOST_64_BIT is undefined such a function should abort or |
|
185 otherwise signal an error. */ |
|
186 typedef bfd_signed_vma bfd_int64_t; |
|
187 typedef bfd_vma bfd_uint64_t; |
|
188 #endif |
|
189 |
|
190 /* An offset into a file. BFD always uses the largest possible offset |
|
191 based on the build time availability of fseek, fseeko, or fseeko64. */ |
|
192 typedef BFD_HOST_64_BIT file_ptr; |
|
193 typedef unsigned BFD_HOST_64_BIT ufile_ptr; |
|
194 |
|
195 extern void bfd_sprintf_vma (bfd *, char *, bfd_vma); |
|
196 extern void bfd_fprintf_vma (bfd *, void *, bfd_vma); |
|
197 |
|
198 #define printf_vma(x) fprintf_vma(stdout,x) |
|
199 #define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x) |
|
200 |
|
201 typedef unsigned int flagword; /* 32 bits of flags */ |
|
202 typedef unsigned char bfd_byte; |
|
203 |
|
204 /* File formats. */ |
|
205 |
|
206 typedef enum bfd_format |
|
207 { |
|
208 bfd_unknown = 0, /* File format is unknown. */ |
|
209 bfd_object, /* Linker/assembler/compiler output. */ |
|
210 bfd_archive, /* Object archive file. */ |
|
211 bfd_core, /* Core dump. */ |
|
212 bfd_type_end /* Marks the end; don't use it! */ |
|
213 } |
|
214 bfd_format; |
|
215 |
|
216 /* Values that may appear in the flags field of a BFD. These also |
|
217 appear in the object_flags field of the bfd_target structure, where |
|
218 they indicate the set of flags used by that backend (not all flags |
|
219 are meaningful for all object file formats) (FIXME: at the moment, |
|
220 the object_flags values have mostly just been copied from backend |
|
221 to another, and are not necessarily correct). */ |
|
222 |
|
223 /* No flags. */ |
|
224 #define BFD_NO_FLAGS 0x00 |
|
225 |
|
226 /* BFD contains relocation entries. */ |
|
227 #define HAS_RELOC 0x01 |
|
228 |
|
229 /* BFD is directly executable. */ |
|
230 #define EXEC_P 0x02 |
|
231 |
|
232 /* BFD has line number information (basically used for F_LNNO in a |
|
233 COFF header). */ |
|
234 #define HAS_LINENO 0x04 |
|
235 |
|
236 /* BFD has debugging information. */ |
|
237 #define HAS_DEBUG 0x08 |
|
238 |
|
239 /* BFD has symbols. */ |
|
240 #define HAS_SYMS 0x10 |
|
241 |
|
242 /* BFD has local symbols (basically used for F_LSYMS in a COFF |
|
243 header). */ |
|
244 #define HAS_LOCALS 0x20 |
|
245 |
|
246 /* BFD is a dynamic object. */ |
|
247 #define DYNAMIC 0x40 |
|
248 |
|
249 /* Text section is write protected (if D_PAGED is not set, this is |
|
250 like an a.out NMAGIC file) (the linker sets this by default, but |
|
251 clears it for -r or -N). */ |
|
252 #define WP_TEXT 0x80 |
|
253 |
|
254 /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the |
|
255 linker sets this by default, but clears it for -r or -n or -N). */ |
|
256 #define D_PAGED 0x100 |
|
257 |
|
258 /* BFD is relaxable (this means that bfd_relax_section may be able to |
|
259 do something) (sometimes bfd_relax_section can do something even if |
|
260 this is not set). */ |
|
261 #define BFD_IS_RELAXABLE 0x200 |
|
262 |
|
263 /* This may be set before writing out a BFD to request using a |
|
264 traditional format. For example, this is used to request that when |
|
265 writing out an a.out object the symbols not be hashed to eliminate |
|
266 duplicates. */ |
|
267 #define BFD_TRADITIONAL_FORMAT 0x400 |
|
268 |
|
269 /* This flag indicates that the BFD contents are actually cached in |
|
270 memory. If this is set, iostream points to a bfd_in_memory struct. */ |
|
271 #define BFD_IN_MEMORY 0x800 |
|
272 |
|
273 /* The sections in this BFD specify a memory page. */ |
|
274 #define HAS_LOAD_PAGE 0x1000 |
|
275 |
|
276 /* This BFD has been created by the linker and doesn't correspond |
|
277 to any input file. */ |
|
278 #define BFD_LINKER_CREATED 0x2000 |
|
279 |
|
280 /* Symbols and relocation. */ |
|
281 |
|
282 /* A count of carsyms (canonical archive symbols). */ |
|
283 typedef unsigned long symindex; |
|
284 |
|
285 /* How to perform a relocation. */ |
|
286 typedef const struct reloc_howto_struct reloc_howto_type; |
|
287 |
|
288 #define BFD_NO_MORE_SYMBOLS ((symindex) ~0) |
|
289 |
|
290 /* General purpose part of a symbol X; |
|
291 target specific parts are in libcoff.h, libaout.h, etc. */ |
|
292 |
|
293 #define bfd_get_section(x) ((x)->section) |
|
294 #define bfd_get_output_section(x) ((x)->section->output_section) |
|
295 #define bfd_set_section(x,y) ((x)->section) = (y) |
|
296 #define bfd_asymbol_base(x) ((x)->section->vma) |
|
297 #define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value) |
|
298 #define bfd_asymbol_name(x) ((x)->name) |
|
299 /*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/ |
|
300 #define bfd_asymbol_bfd(x) ((x)->the_bfd) |
|
301 #define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour) |
|
302 |
|
303 /* A canonical archive symbol. */ |
|
304 /* This is a type pun with struct ranlib on purpose! */ |
|
305 typedef struct carsym |
|
306 { |
|
307 char *name; |
|
308 file_ptr file_offset; /* Look here to find the file. */ |
|
309 } |
|
310 carsym; /* To make these you call a carsymogen. */ |
|
311 |
|
312 /* Used in generating armaps (archive tables of contents). |
|
313 Perhaps just a forward definition would do? */ |
|
314 struct orl /* Output ranlib. */ |
|
315 { |
|
316 char **name; /* Symbol name. */ |
|
317 union |
|
318 { |
|
319 file_ptr pos; |
|
320 bfd *abfd; |
|
321 } u; /* bfd* or file position. */ |
|
322 int namidx; /* Index into string table. */ |
|
323 }; |
|
324 |
|
325 /* Linenumber stuff. */ |
|
326 typedef struct lineno_cache_entry |
|
327 { |
|
328 unsigned int line_number; /* Linenumber from start of function. */ |
|
329 union |
|
330 { |
|
331 struct bfd_symbol *sym; /* Function name. */ |
|
332 bfd_vma offset; /* Offset into section. */ |
|
333 } u; |
|
334 } |
|
335 alent; |
|
336 |
|
337 /* Object and core file sections. */ |
|
338 |
|
339 #define align_power(addr, align) \ |
|
340 (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align))) |
|
341 |
|
342 typedef struct bfd_section *sec_ptr; |
|
343 |
|
344 #define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0) |
|
345 #define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0) |
|
346 #define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0) |
|
347 #define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0) |
|
348 #define bfd_section_name(bfd, ptr) ((ptr)->name) |
|
349 #define bfd_section_size(bfd, ptr) ((ptr)->size) |
|
350 #define bfd_get_section_size(ptr) ((ptr)->size) |
|
351 #define bfd_section_vma(bfd, ptr) ((ptr)->vma) |
|
352 #define bfd_section_lma(bfd, ptr) ((ptr)->lma) |
|
353 #define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power) |
|
354 #define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0) |
|
355 #define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata) |
|
356 |
|
357 #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0) |
|
358 |
|
359 #define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE) |
|
360 #define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE) |
|
361 #define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE) |
|
362 /* Find the address one past the end of SEC. */ |
|
363 #define bfd_get_section_limit(bfd, sec) \ |
|
364 (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \ |
|
365 / bfd_octets_per_byte (bfd)) |
|
366 |
|
367 /* Return TRUE if section has been discarded. */ |
|
368 #define elf_discarded_section(sec) \ |
|
369 (!bfd_is_abs_section (sec) \ |
|
370 && bfd_is_abs_section ((sec)->output_section) \ |
|
371 && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \ |
|
372 && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS) |
|
373 |
|
374 /* Forward define. */ |
|
375 struct stat; |
|
376 |
|
377 typedef enum bfd_print_symbol |
|
378 { |
|
379 bfd_print_symbol_name, |
|
380 bfd_print_symbol_more, |
|
381 bfd_print_symbol_all |
|
382 } bfd_print_symbol_type; |
|
383 |
|
384 /* Information about a symbol that nm needs. */ |
|
385 |
|
386 typedef struct _symbol_info |
|
387 { |
|
388 symvalue value; |
|
389 char type; |
|
390 const char *name; /* Symbol name. */ |
|
391 unsigned char stab_type; /* Stab type. */ |
|
392 char stab_other; /* Stab other. */ |
|
393 short stab_desc; /* Stab desc. */ |
|
394 const char *stab_name; /* String for stab type. */ |
|
395 } symbol_info; |
|
396 |
|
397 /* Get the name of a stabs type code. */ |
|
398 |
|
399 extern const char *bfd_get_stab_name (int); |
|
400 |
|
401 /* Hash table routines. There is no way to free up a hash table. */ |
|
402 |
|
403 /* An element in the hash table. Most uses will actually use a larger |
|
404 structure, and an instance of this will be the first field. */ |
|
405 |
|
406 struct bfd_hash_entry |
|
407 { |
|
408 /* Next entry for this hash code. */ |
|
409 struct bfd_hash_entry *next; |
|
410 /* String being hashed. */ |
|
411 const char *string; |
|
412 /* Hash code. This is the full hash code, not the index into the |
|
413 table. */ |
|
414 unsigned long hash; |
|
415 }; |
|
416 |
|
417 /* A hash table. */ |
|
418 |
|
419 struct bfd_hash_table |
|
420 { |
|
421 /* The hash array. */ |
|
422 struct bfd_hash_entry **table; |
|
423 /* A function used to create new elements in the hash table. The |
|
424 first entry is itself a pointer to an element. When this |
|
425 function is first invoked, this pointer will be NULL. However, |
|
426 having the pointer permits a hierarchy of method functions to be |
|
427 built each of which calls the function in the superclass. Thus |
|
428 each function should be written to allocate a new block of memory |
|
429 only if the argument is NULL. */ |
|
430 struct bfd_hash_entry *(*newfunc) |
|
431 (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); |
|
432 /* An objalloc for this hash table. This is a struct objalloc *, |
|
433 but we use void * to avoid requiring the inclusion of objalloc.h. */ |
|
434 void *memory; |
|
435 /* The number of slots in the hash table. */ |
|
436 unsigned int size; |
|
437 /* The number of entries in the hash table. */ |
|
438 unsigned int count; |
|
439 /* The size of elements. */ |
|
440 unsigned int entsize; |
|
441 /* If non-zero, don't grow the hash table. */ |
|
442 unsigned int frozen:1; |
|
443 }; |
|
444 |
|
445 /* Initialize a hash table. */ |
|
446 extern bfd_boolean bfd_hash_table_init |
|
447 (struct bfd_hash_table *, |
|
448 struct bfd_hash_entry *(*) (struct bfd_hash_entry *, |
|
449 struct bfd_hash_table *, |
|
450 const char *), |
|
451 unsigned int); |
|
452 |
|
453 /* Initialize a hash table specifying a size. */ |
|
454 extern bfd_boolean bfd_hash_table_init_n |
|
455 (struct bfd_hash_table *, |
|
456 struct bfd_hash_entry *(*) (struct bfd_hash_entry *, |
|
457 struct bfd_hash_table *, |
|
458 const char *), |
|
459 unsigned int, unsigned int); |
|
460 |
|
461 /* Free up a hash table. */ |
|
462 extern void bfd_hash_table_free |
|
463 (struct bfd_hash_table *); |
|
464 |
|
465 /* Look up a string in a hash table. If CREATE is TRUE, a new entry |
|
466 will be created for this string if one does not already exist. The |
|
467 COPY argument must be TRUE if this routine should copy the string |
|
468 into newly allocated memory when adding an entry. */ |
|
469 extern struct bfd_hash_entry *bfd_hash_lookup |
|
470 (struct bfd_hash_table *, const char *, bfd_boolean create, |
|
471 bfd_boolean copy); |
|
472 |
|
473 /* Insert an entry in a hash table. */ |
|
474 extern struct bfd_hash_entry *bfd_hash_insert |
|
475 (struct bfd_hash_table *, const char *, unsigned long); |
|
476 |
|
477 /* Replace an entry in a hash table. */ |
|
478 extern void bfd_hash_replace |
|
479 (struct bfd_hash_table *, struct bfd_hash_entry *old, |
|
480 struct bfd_hash_entry *nw); |
|
481 |
|
482 /* Base method for creating a hash table entry. */ |
|
483 extern struct bfd_hash_entry *bfd_hash_newfunc |
|
484 (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); |
|
485 |
|
486 /* Grab some space for a hash table entry. */ |
|
487 extern void *bfd_hash_allocate |
|
488 (struct bfd_hash_table *, unsigned int); |
|
489 |
|
490 /* Traverse a hash table in a random order, calling a function on each |
|
491 element. If the function returns FALSE, the traversal stops. The |
|
492 INFO argument is passed to the function. */ |
|
493 extern void bfd_hash_traverse |
|
494 (struct bfd_hash_table *, |
|
495 bfd_boolean (*) (struct bfd_hash_entry *, void *), |
|
496 void *info); |
|
497 |
|
498 /* Allows the default size of a hash table to be configured. New hash |
|
499 tables allocated using bfd_hash_table_init will be created with |
|
500 this size. */ |
|
501 extern void bfd_hash_set_default_size (bfd_size_type); |
|
502 |
|
503 /* This structure is used to keep track of stabs in sections |
|
504 information while linking. */ |
|
505 |
|
506 struct stab_info |
|
507 { |
|
508 /* A hash table used to hold stabs strings. */ |
|
509 struct bfd_strtab_hash *strings; |
|
510 /* The header file hash table. */ |
|
511 struct bfd_hash_table includes; |
|
512 /* The first .stabstr section. */ |
|
513 struct bfd_section *stabstr; |
|
514 }; |
|
515 |
|
516 #define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table |
|
517 |
|
518 /* User program access to BFD facilities. */ |
|
519 |
|
520 /* Direct I/O routines, for programs which know more about the object |
|
521 file than BFD does. Use higher level routines if possible. */ |
|
522 |
|
523 extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *); |
|
524 extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *); |
|
525 extern int bfd_seek (bfd *, file_ptr, int); |
|
526 extern file_ptr bfd_tell (bfd *); |
|
527 extern int bfd_flush (bfd *); |
|
528 extern int bfd_stat (bfd *, struct stat *); |
|
529 |
|
530 /* Deprecated old routines. */ |
|
531 #if __GNUC__ |
|
532 #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \ |
|
533 (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \ |
|
534 bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD))) |
|
535 #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \ |
|
536 (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \ |
|
537 bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD))) |
|
538 #else |
|
539 #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \ |
|
540 (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \ |
|
541 bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD))) |
|
542 #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \ |
|
543 (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\ |
|
544 bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD))) |
|
545 #endif |
|
546 extern void warn_deprecated (const char *, const char *, int, const char *); |
|
547 |
|
548 /* Cast from const char * to char * so that caller can assign to |
|
549 a char * without a warning. */ |
|
550 #define bfd_get_filename(abfd) ((char *) (abfd)->filename) |
|
551 #define bfd_get_cacheable(abfd) ((abfd)->cacheable) |
|
552 #define bfd_get_format(abfd) ((abfd)->format) |
|
553 #define bfd_get_target(abfd) ((abfd)->xvec->name) |
|
554 #define bfd_get_flavour(abfd) ((abfd)->xvec->flavour) |
|
555 #define bfd_family_coff(abfd) \ |
|
556 (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \ |
|
557 bfd_get_flavour (abfd) == bfd_target_xcoff_flavour) |
|
558 #define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG) |
|
559 #define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE) |
|
560 #define bfd_header_big_endian(abfd) \ |
|
561 ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG) |
|
562 #define bfd_header_little_endian(abfd) \ |
|
563 ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE) |
|
564 #define bfd_get_file_flags(abfd) ((abfd)->flags) |
|
565 #define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags) |
|
566 #define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags) |
|
567 #define bfd_my_archive(abfd) ((abfd)->my_archive) |
|
568 #define bfd_has_map(abfd) ((abfd)->has_armap) |
|
569 |
|
570 #define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types) |
|
571 #define bfd_usrdata(abfd) ((abfd)->usrdata) |
|
572 |
|
573 #define bfd_get_start_address(abfd) ((abfd)->start_address) |
|
574 #define bfd_get_symcount(abfd) ((abfd)->symcount) |
|
575 #define bfd_get_outsymbols(abfd) ((abfd)->outsymbols) |
|
576 #define bfd_count_sections(abfd) ((abfd)->section_count) |
|
577 |
|
578 #define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount) |
|
579 |
|
580 #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char) |
|
581 |
|
582 #define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE) |
|
583 |
|
584 extern bfd_boolean bfd_cache_close |
|
585 (bfd *abfd); |
|
586 /* NB: This declaration should match the autogenerated one in libbfd.h. */ |
|
587 |
|
588 extern bfd_boolean bfd_cache_close_all (void); |
|
589 |
|
590 extern bfd_boolean bfd_record_phdr |
|
591 (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma, |
|
592 bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **); |
|
593 |
|
594 /* Byte swapping routines. */ |
|
595 |
|
596 bfd_uint64_t bfd_getb64 (const void *); |
|
597 bfd_uint64_t bfd_getl64 (const void *); |
|
598 bfd_int64_t bfd_getb_signed_64 (const void *); |
|
599 bfd_int64_t bfd_getl_signed_64 (const void *); |
|
600 bfd_vma bfd_getb32 (const void *); |
|
601 bfd_vma bfd_getl32 (const void *); |
|
602 bfd_signed_vma bfd_getb_signed_32 (const void *); |
|
603 bfd_signed_vma bfd_getl_signed_32 (const void *); |
|
604 bfd_vma bfd_getb16 (const void *); |
|
605 bfd_vma bfd_getl16 (const void *); |
|
606 bfd_signed_vma bfd_getb_signed_16 (const void *); |
|
607 bfd_signed_vma bfd_getl_signed_16 (const void *); |
|
608 void bfd_putb64 (bfd_uint64_t, void *); |
|
609 void bfd_putl64 (bfd_uint64_t, void *); |
|
610 void bfd_putb32 (bfd_vma, void *); |
|
611 void bfd_putl32 (bfd_vma, void *); |
|
612 void bfd_putb16 (bfd_vma, void *); |
|
613 void bfd_putl16 (bfd_vma, void *); |
|
614 |
|
615 /* Byte swapping routines which take size and endiannes as arguments. */ |
|
616 |
|
617 bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean); |
|
618 void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean); |
|
619 |
|
620 extern bfd_boolean bfd_section_already_linked_table_init (void); |
|
621 extern void bfd_section_already_linked_table_free (void); |
|
622 |
|
623 /* Externally visible ECOFF routines. */ |
|
624 |
|
625 #if defined(__STDC__) || defined(ALMOST_STDC) |
|
626 struct ecoff_debug_info; |
|
627 struct ecoff_debug_swap; |
|
628 struct ecoff_extr; |
|
629 struct bfd_symbol; |
|
630 struct bfd_link_info; |
|
631 struct bfd_link_hash_entry; |
|
632 struct bfd_elf_version_tree; |
|
633 #endif |
|
634 extern bfd_vma bfd_ecoff_get_gp_value |
|
635 (bfd * abfd); |
|
636 extern bfd_boolean bfd_ecoff_set_gp_value |
|
637 (bfd *abfd, bfd_vma gp_value); |
|
638 extern bfd_boolean bfd_ecoff_set_regmasks |
|
639 (bfd *abfd, unsigned long gprmask, unsigned long fprmask, |
|
640 unsigned long *cprmask); |
|
641 extern void *bfd_ecoff_debug_init |
|
642 (bfd *output_bfd, struct ecoff_debug_info *output_debug, |
|
643 const struct ecoff_debug_swap *output_swap, struct bfd_link_info *); |
|
644 extern void bfd_ecoff_debug_free |
|
645 (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug, |
|
646 const struct ecoff_debug_swap *output_swap, struct bfd_link_info *); |
|
647 extern bfd_boolean bfd_ecoff_debug_accumulate |
|
648 (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug, |
|
649 const struct ecoff_debug_swap *output_swap, bfd *input_bfd, |
|
650 struct ecoff_debug_info *input_debug, |
|
651 const struct ecoff_debug_swap *input_swap, struct bfd_link_info *); |
|
652 extern bfd_boolean bfd_ecoff_debug_accumulate_other |
|
653 (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug, |
|
654 const struct ecoff_debug_swap *output_swap, bfd *input_bfd, |
|
655 struct bfd_link_info *); |
|
656 extern bfd_boolean bfd_ecoff_debug_externals |
|
657 (bfd *abfd, struct ecoff_debug_info *debug, |
|
658 const struct ecoff_debug_swap *swap, bfd_boolean relocatable, |
|
659 bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *), |
|
660 void (*set_index) (struct bfd_symbol *, bfd_size_type)); |
|
661 extern bfd_boolean bfd_ecoff_debug_one_external |
|
662 (bfd *abfd, struct ecoff_debug_info *debug, |
|
663 const struct ecoff_debug_swap *swap, const char *name, |
|
664 struct ecoff_extr *esym); |
|
665 extern bfd_size_type bfd_ecoff_debug_size |
|
666 (bfd *abfd, struct ecoff_debug_info *debug, |
|
667 const struct ecoff_debug_swap *swap); |
|
668 extern bfd_boolean bfd_ecoff_write_debug |
|
669 (bfd *abfd, struct ecoff_debug_info *debug, |
|
670 const struct ecoff_debug_swap *swap, file_ptr where); |
|
671 extern bfd_boolean bfd_ecoff_write_accumulated_debug |
|
672 (void *handle, bfd *abfd, struct ecoff_debug_info *debug, |
|
673 const struct ecoff_debug_swap *swap, |
|
674 struct bfd_link_info *info, file_ptr where); |
|
675 |
|
676 /* Externally visible ELF routines. */ |
|
677 |
|
678 struct bfd_link_needed_list |
|
679 { |
|
680 struct bfd_link_needed_list *next; |
|
681 bfd *by; |
|
682 const char *name; |
|
683 }; |
|
684 |
|
685 enum dynamic_lib_link_class { |
|
686 DYN_NORMAL = 0, |
|
687 DYN_AS_NEEDED = 1, |
|
688 DYN_DT_NEEDED = 2, |
|
689 DYN_NO_ADD_NEEDED = 4, |
|
690 DYN_NO_NEEDED = 8 |
|
691 }; |
|
692 |
|
693 enum notice_asneeded_action { |
|
694 notice_as_needed, |
|
695 notice_not_needed, |
|
696 notice_needed |
|
697 }; |
|
698 |
|
699 extern bfd_boolean bfd_elf_record_link_assignment |
|
700 (bfd *, struct bfd_link_info *, const char *, bfd_boolean, |
|
701 bfd_boolean); |
|
702 extern struct bfd_link_needed_list *bfd_elf_get_needed_list |
|
703 (bfd *, struct bfd_link_info *); |
|
704 extern bfd_boolean bfd_elf_get_bfd_needed_list |
|
705 (bfd *, struct bfd_link_needed_list **); |
|
706 extern bfd_boolean bfd_elf_size_dynamic_sections |
|
707 (bfd *, const char *, const char *, const char *, const char * const *, |
|
708 struct bfd_link_info *, struct bfd_section **, |
|
709 struct bfd_elf_version_tree *); |
|
710 extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr |
|
711 (bfd *, struct bfd_link_info *); |
|
712 extern void bfd_elf_set_dt_needed_name |
|
713 (bfd *, const char *); |
|
714 extern const char *bfd_elf_get_dt_soname |
|
715 (bfd *); |
|
716 extern void bfd_elf_set_dyn_lib_class |
|
717 (bfd *, enum dynamic_lib_link_class); |
|
718 extern int bfd_elf_get_dyn_lib_class |
|
719 (bfd *); |
|
720 extern struct bfd_link_needed_list *bfd_elf_get_runpath_list |
|
721 (bfd *, struct bfd_link_info *); |
|
722 extern bfd_boolean bfd_elf_discard_info |
|
723 (bfd *, struct bfd_link_info *); |
|
724 extern unsigned int _bfd_elf_default_action_discarded |
|
725 (struct bfd_section *); |
|
726 |
|
727 /* Return an upper bound on the number of bytes required to store a |
|
728 copy of ABFD's program header table entries. Return -1 if an error |
|
729 occurs; bfd_get_error will return an appropriate code. */ |
|
730 extern long bfd_get_elf_phdr_upper_bound |
|
731 (bfd *abfd); |
|
732 |
|
733 /* Copy ABFD's program header table entries to *PHDRS. The entries |
|
734 will be stored as an array of Elf_Internal_Phdr structures, as |
|
735 defined in include/elf/internal.h. To find out how large the |
|
736 buffer needs to be, call bfd_get_elf_phdr_upper_bound. |
|
737 |
|
738 Return the number of program header table entries read, or -1 if an |
|
739 error occurs; bfd_get_error will return an appropriate code. */ |
|
740 extern int bfd_get_elf_phdrs |
|
741 (bfd *abfd, void *phdrs); |
|
742 |
|
743 /* Create a new BFD as if by bfd_openr. Rather than opening a file, |
|
744 reconstruct an ELF file by reading the segments out of remote memory |
|
745 based on the ELF file header at EHDR_VMA and the ELF program headers it |
|
746 points to. If not null, *LOADBASEP is filled in with the difference |
|
747 between the VMAs from which the segments were read, and the VMAs the |
|
748 file headers (and hence BFD's idea of each section's VMA) put them at. |
|
749 |
|
750 The function TARGET_READ_MEMORY is called to copy LEN bytes from the |
|
751 remote memory at target address VMA into the local buffer at MYADDR; it |
|
752 should return zero on success or an `errno' code on failure. TEMPL must |
|
753 be a BFD for an ELF target with the word size and byte order found in |
|
754 the remote memory. */ |
|
755 extern bfd *bfd_elf_bfd_from_remote_memory |
|
756 (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep, |
|
757 int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len)); |
|
758 |
|
759 /* Return the arch_size field of an elf bfd, or -1 if not elf. */ |
|
760 extern int bfd_get_arch_size |
|
761 (bfd *); |
|
762 |
|
763 /* Return TRUE if address "naturally" sign extends, or -1 if not elf. */ |
|
764 extern int bfd_get_sign_extend_vma |
|
765 (bfd *); |
|
766 |
|
767 extern struct bfd_section *_bfd_elf_tls_setup |
|
768 (bfd *, struct bfd_link_info *); |
|
769 |
|
770 extern void _bfd_fix_excluded_sec_syms |
|
771 (bfd *, struct bfd_link_info *); |
|
772 |
|
773 extern unsigned bfd_m68k_mach_to_features (int); |
|
774 |
|
775 extern int bfd_m68k_features_to_mach (unsigned); |
|
776 |
|
777 extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs |
|
778 (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, |
|
779 char **); |
|
780 |
|
781 extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs |
|
782 (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, |
|
783 char **); |
|
784 |
|
785 /* SunOS shared library support routines for the linker. */ |
|
786 |
|
787 extern struct bfd_link_needed_list *bfd_sunos_get_needed_list |
|
788 (bfd *, struct bfd_link_info *); |
|
789 extern bfd_boolean bfd_sunos_record_link_assignment |
|
790 (bfd *, struct bfd_link_info *, const char *); |
|
791 extern bfd_boolean bfd_sunos_size_dynamic_sections |
|
792 (bfd *, struct bfd_link_info *, struct bfd_section **, |
|
793 struct bfd_section **, struct bfd_section **); |
|
794 |
|
795 /* Linux shared library support routines for the linker. */ |
|
796 |
|
797 extern bfd_boolean bfd_i386linux_size_dynamic_sections |
|
798 (bfd *, struct bfd_link_info *); |
|
799 extern bfd_boolean bfd_m68klinux_size_dynamic_sections |
|
800 (bfd *, struct bfd_link_info *); |
|
801 extern bfd_boolean bfd_sparclinux_size_dynamic_sections |
|
802 (bfd *, struct bfd_link_info *); |
|
803 |
|
804 /* mmap hacks */ |
|
805 |
|
806 struct _bfd_window_internal; |
|
807 typedef struct _bfd_window_internal bfd_window_internal; |
|
808 |
|
809 typedef struct _bfd_window |
|
810 { |
|
811 /* What the user asked for. */ |
|
812 void *data; |
|
813 bfd_size_type size; |
|
814 /* The actual window used by BFD. Small user-requested read-only |
|
815 regions sharing a page may share a single window into the object |
|
816 file. Read-write versions shouldn't until I've fixed things to |
|
817 keep track of which portions have been claimed by the |
|
818 application; don't want to give the same region back when the |
|
819 application wants two writable copies! */ |
|
820 struct _bfd_window_internal *i; |
|
821 } |
|
822 bfd_window; |
|
823 |
|
824 extern void bfd_init_window |
|
825 (bfd_window *); |
|
826 extern void bfd_free_window |
|
827 (bfd_window *); |
|
828 extern bfd_boolean bfd_get_file_window |
|
829 (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean); |
|
830 |
|
831 /* XCOFF support routines for the linker. */ |
|
832 |
|
833 extern bfd_boolean bfd_xcoff_link_record_set |
|
834 (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type); |
|
835 extern bfd_boolean bfd_xcoff_import_symbol |
|
836 (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma, |
|
837 const char *, const char *, const char *, unsigned int); |
|
838 extern bfd_boolean bfd_xcoff_export_symbol |
|
839 (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *); |
|
840 extern bfd_boolean bfd_xcoff_link_count_reloc |
|
841 (bfd *, struct bfd_link_info *, const char *); |
|
842 extern bfd_boolean bfd_xcoff_record_link_assignment |
|
843 (bfd *, struct bfd_link_info *, const char *); |
|
844 extern bfd_boolean bfd_xcoff_size_dynamic_sections |
|
845 (bfd *, struct bfd_link_info *, const char *, const char *, |
|
846 unsigned long, unsigned long, unsigned long, bfd_boolean, |
|
847 int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean); |
|
848 extern bfd_boolean bfd_xcoff_link_generate_rtinit |
|
849 (bfd *, const char *, const char *, bfd_boolean); |
|
850 |
|
851 /* XCOFF support routines for ar. */ |
|
852 extern bfd_boolean bfd_xcoff_ar_archive_set_magic |
|
853 (bfd *, char *); |
|
854 |
|
855 /* Externally visible COFF routines. */ |
|
856 |
|
857 #if defined(__STDC__) || defined(ALMOST_STDC) |
|
858 struct internal_syment; |
|
859 union internal_auxent; |
|
860 #endif |
|
861 |
|
862 extern bfd_boolean bfd_coff_get_syment |
|
863 (bfd *, struct bfd_symbol *, struct internal_syment *); |
|
864 |
|
865 extern bfd_boolean bfd_coff_get_auxent |
|
866 (bfd *, struct bfd_symbol *, int, union internal_auxent *); |
|
867 |
|
868 extern bfd_boolean bfd_coff_set_symbol_class |
|
869 (bfd *, struct bfd_symbol *, unsigned int); |
|
870 |
|
871 extern bfd_boolean bfd_m68k_coff_create_embedded_relocs |
|
872 (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **); |
|
873 |
|
874 /* ARM VFP11 erratum workaround support. */ |
|
875 typedef enum |
|
876 { |
|
877 BFD_ARM_VFP11_FIX_DEFAULT, |
|
878 BFD_ARM_VFP11_FIX_NONE, |
|
879 BFD_ARM_VFP11_FIX_SCALAR, |
|
880 BFD_ARM_VFP11_FIX_VECTOR |
|
881 } bfd_arm_vfp11_fix; |
|
882 |
|
883 extern void bfd_elf32_arm_init_maps |
|
884 (bfd *); |
|
885 |
|
886 extern void bfd_elf32_arm_set_vfp11_fix |
|
887 (bfd *, struct bfd_link_info *); |
|
888 |
|
889 extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan |
|
890 (bfd *, struct bfd_link_info *); |
|
891 |
|
892 extern void bfd_elf32_arm_vfp11_fix_veneer_locations |
|
893 (bfd *, struct bfd_link_info *); |
|
894 |
|
895 /* ARM Interworking support. Called from linker. */ |
|
896 extern bfd_boolean bfd_arm_allocate_interworking_sections |
|
897 (struct bfd_link_info *); |
|
898 |
|
899 extern bfd_boolean bfd_arm_process_before_allocation |
|
900 (bfd *, struct bfd_link_info *, int); |
|
901 |
|
902 extern bfd_boolean bfd_arm_get_bfd_for_interworking |
|
903 (bfd *, struct bfd_link_info *); |
|
904 |
|
905 /* PE ARM Interworking support. Called from linker. */ |
|
906 extern bfd_boolean bfd_arm_pe_allocate_interworking_sections |
|
907 (struct bfd_link_info *); |
|
908 |
|
909 extern bfd_boolean bfd_arm_pe_process_before_allocation |
|
910 (bfd *, struct bfd_link_info *, int); |
|
911 |
|
912 extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking |
|
913 (bfd *, struct bfd_link_info *); |
|
914 |
|
915 /* ELF ARM Interworking support. Called from linker. */ |
|
916 extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections |
|
917 (struct bfd_link_info *); |
|
918 |
|
919 extern bfd_boolean bfd_elf32_arm_process_before_allocation |
|
920 (bfd *, struct bfd_link_info *); |
|
921 |
|
922 void bfd_elf32_arm_set_target_relocs |
|
923 (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix, |
|
924 int, int); |
|
925 |
|
926 extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking |
|
927 (bfd *, struct bfd_link_info *); |
|
928 |
|
929 extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd |
|
930 (bfd *, struct bfd_link_info *); |
|
931 |
|
932 /* ELF ARM mapping symbol support */ |
|
933 #define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0) |
|
934 #define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1) |
|
935 #define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2) |
|
936 #define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0) |
|
937 extern bfd_boolean bfd_is_arm_special_symbol_name |
|
938 (const char * name, int type); |
|
939 |
|
940 extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int); |
|
941 |
|
942 /* ARM Note section processing. */ |
|
943 extern bfd_boolean bfd_arm_merge_machines |
|
944 (bfd *, bfd *); |
|
945 |
|
946 extern bfd_boolean bfd_arm_update_notes |
|
947 (bfd *, const char *); |
|
948 |
|
949 extern unsigned int bfd_arm_get_mach_from_notes |
|
950 (bfd *, const char *); |
|
951 |
|
952 /* TI COFF load page support. */ |
|
953 extern void bfd_ticoff_set_section_load_page |
|
954 (struct bfd_section *, int); |
|
955 |
|
956 extern int bfd_ticoff_get_section_load_page |
|
957 (struct bfd_section *); |
|
958 |
|
959 /* H8/300 functions. */ |
|
960 extern bfd_vma bfd_h8300_pad_address |
|
961 (bfd *, bfd_vma); |
|
962 |
|
963 /* IA64 Itanium code generation. Called from linker. */ |
|
964 extern void bfd_elf32_ia64_after_parse |
|
965 (int); |
|
966 |
|
967 extern void bfd_elf64_ia64_after_parse |
|
968 (int); |
|
969 |
|
970 /* This structure is used for a comdat section, as in PE. A comdat |
|
971 section is associated with a particular symbol. When the linker |
|
972 sees a comdat section, it keeps only one of the sections with a |
|
973 given name and associated with a given symbol. */ |
|
974 |
|
975 struct coff_comdat_info |
|
976 { |
|
977 /* The name of the symbol associated with a comdat section. */ |
|
978 const char *name; |
|
979 |
|
980 /* The local symbol table index of the symbol associated with a |
|
981 comdat section. This is only meaningful to the object file format |
|
982 specific code; it is not an index into the list returned by |
|
983 bfd_canonicalize_symtab. */ |
|
984 long symbol; |
|
985 }; |
|
986 |
|
987 extern struct coff_comdat_info *bfd_coff_get_comdat_section |
|
988 (bfd *, struct bfd_section *); |
|
989 |
|
990 /* Extracted from init.c. */ |
|
991 void bfd_init (void); |
|
992 |
|
993 /* Extracted from opncls.c. */ |
|
994 bfd *bfd_fopen (const char *filename, const char *target, |
|
995 const char *mode, int fd); |
|
996 |
|
997 bfd *bfd_openr (const char *filename, const char *target); |
|
998 |
|
999 bfd *bfd_fdopenr (const char *filename, const char *target, int fd); |
|
1000 |
|
1001 bfd *bfd_openstreamr (const char *, const char *, void *); |
|
1002 |
|
1003 bfd *bfd_openr_iovec (const char *filename, const char *target, |
|
1004 void *(*open) (struct bfd *nbfd, |
|
1005 void *open_closure), |
|
1006 void *open_closure, |
|
1007 file_ptr (*pread) (struct bfd *nbfd, |
|
1008 void *stream, |
|
1009 void *buf, |
|
1010 file_ptr nbytes, |
|
1011 file_ptr offset), |
|
1012 int (*close) (struct bfd *nbfd, |
|
1013 void *stream), |
|
1014 int (*stat) (struct bfd *abfd, |
|
1015 void *stream, |
|
1016 struct stat *sb)); |
|
1017 |
|
1018 bfd *bfd_openw (const char *filename, const char *target); |
|
1019 |
|
1020 bfd_boolean bfd_close (bfd *abfd); |
|
1021 |
|
1022 bfd_boolean bfd_close_all_done (bfd *); |
|
1023 |
|
1024 bfd *bfd_create (const char *filename, bfd *templ); |
|
1025 |
|
1026 bfd_boolean bfd_make_writable (bfd *abfd); |
|
1027 |
|
1028 bfd_boolean bfd_make_readable (bfd *abfd); |
|
1029 |
|
1030 unsigned long bfd_calc_gnu_debuglink_crc32 |
|
1031 (unsigned long crc, const unsigned char *buf, bfd_size_type len); |
|
1032 |
|
1033 char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir); |
|
1034 |
|
1035 struct bfd_section *bfd_create_gnu_debuglink_section |
|
1036 (bfd *abfd, const char *filename); |
|
1037 |
|
1038 bfd_boolean bfd_fill_in_gnu_debuglink_section |
|
1039 (bfd *abfd, struct bfd_section *sect, const char *filename); |
|
1040 |
|
1041 /* Extracted from libbfd.c. */ |
|
1042 |
|
1043 /* Byte swapping macros for user section data. */ |
|
1044 |
|
1045 #define bfd_put_8(abfd, val, ptr) \ |
|
1046 ((void) (*((unsigned char *) (ptr)) = (val) & 0xff)) |
|
1047 #define bfd_put_signed_8 \ |
|
1048 bfd_put_8 |
|
1049 #define bfd_get_8(abfd, ptr) \ |
|
1050 (*(unsigned char *) (ptr) & 0xff) |
|
1051 #define bfd_get_signed_8(abfd, ptr) \ |
|
1052 (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80) |
|
1053 |
|
1054 #define bfd_put_16(abfd, val, ptr) \ |
|
1055 BFD_SEND (abfd, bfd_putx16, ((val),(ptr))) |
|
1056 #define bfd_put_signed_16 \ |
|
1057 bfd_put_16 |
|
1058 #define bfd_get_16(abfd, ptr) \ |
|
1059 BFD_SEND (abfd, bfd_getx16, (ptr)) |
|
1060 #define bfd_get_signed_16(abfd, ptr) \ |
|
1061 BFD_SEND (abfd, bfd_getx_signed_16, (ptr)) |
|
1062 |
|
1063 #define bfd_put_32(abfd, val, ptr) \ |
|
1064 BFD_SEND (abfd, bfd_putx32, ((val),(ptr))) |
|
1065 #define bfd_put_signed_32 \ |
|
1066 bfd_put_32 |
|
1067 #define bfd_get_32(abfd, ptr) \ |
|
1068 BFD_SEND (abfd, bfd_getx32, (ptr)) |
|
1069 #define bfd_get_signed_32(abfd, ptr) \ |
|
1070 BFD_SEND (abfd, bfd_getx_signed_32, (ptr)) |
|
1071 |
|
1072 #define bfd_put_64(abfd, val, ptr) \ |
|
1073 BFD_SEND (abfd, bfd_putx64, ((val), (ptr))) |
|
1074 #define bfd_put_signed_64 \ |
|
1075 bfd_put_64 |
|
1076 #define bfd_get_64(abfd, ptr) \ |
|
1077 BFD_SEND (abfd, bfd_getx64, (ptr)) |
|
1078 #define bfd_get_signed_64(abfd, ptr) \ |
|
1079 BFD_SEND (abfd, bfd_getx_signed_64, (ptr)) |
|
1080 |
|
1081 #define bfd_get(bits, abfd, ptr) \ |
|
1082 ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \ |
|
1083 : (bits) == 16 ? bfd_get_16 (abfd, ptr) \ |
|
1084 : (bits) == 32 ? bfd_get_32 (abfd, ptr) \ |
|
1085 : (bits) == 64 ? bfd_get_64 (abfd, ptr) \ |
|
1086 : (abort (), (bfd_vma) - 1)) |
|
1087 |
|
1088 #define bfd_put(bits, abfd, val, ptr) \ |
|
1089 ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \ |
|
1090 : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \ |
|
1091 : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \ |
|
1092 : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \ |
|
1093 : (abort (), (void) 0)) |
|
1094 |
|
1095 |
|
1096 /* Byte swapping macros for file header data. */ |
|
1097 |
|
1098 #define bfd_h_put_8(abfd, val, ptr) \ |
|
1099 bfd_put_8 (abfd, val, ptr) |
|
1100 #define bfd_h_put_signed_8(abfd, val, ptr) \ |
|
1101 bfd_put_8 (abfd, val, ptr) |
|
1102 #define bfd_h_get_8(abfd, ptr) \ |
|
1103 bfd_get_8 (abfd, ptr) |
|
1104 #define bfd_h_get_signed_8(abfd, ptr) \ |
|
1105 bfd_get_signed_8 (abfd, ptr) |
|
1106 |
|
1107 #define bfd_h_put_16(abfd, val, ptr) \ |
|
1108 BFD_SEND (abfd, bfd_h_putx16, (val, ptr)) |
|
1109 #define bfd_h_put_signed_16 \ |
|
1110 bfd_h_put_16 |
|
1111 #define bfd_h_get_16(abfd, ptr) \ |
|
1112 BFD_SEND (abfd, bfd_h_getx16, (ptr)) |
|
1113 #define bfd_h_get_signed_16(abfd, ptr) \ |
|
1114 BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr)) |
|
1115 |
|
1116 #define bfd_h_put_32(abfd, val, ptr) \ |
|
1117 BFD_SEND (abfd, bfd_h_putx32, (val, ptr)) |
|
1118 #define bfd_h_put_signed_32 \ |
|
1119 bfd_h_put_32 |
|
1120 #define bfd_h_get_32(abfd, ptr) \ |
|
1121 BFD_SEND (abfd, bfd_h_getx32, (ptr)) |
|
1122 #define bfd_h_get_signed_32(abfd, ptr) \ |
|
1123 BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr)) |
|
1124 |
|
1125 #define bfd_h_put_64(abfd, val, ptr) \ |
|
1126 BFD_SEND (abfd, bfd_h_putx64, (val, ptr)) |
|
1127 #define bfd_h_put_signed_64 \ |
|
1128 bfd_h_put_64 |
|
1129 #define bfd_h_get_64(abfd, ptr) \ |
|
1130 BFD_SEND (abfd, bfd_h_getx64, (ptr)) |
|
1131 #define bfd_h_get_signed_64(abfd, ptr) \ |
|
1132 BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr)) |
|
1133 |
|
1134 /* Aliases for the above, which should eventually go away. */ |
|
1135 |
|
1136 #define H_PUT_64 bfd_h_put_64 |
|
1137 #define H_PUT_32 bfd_h_put_32 |
|
1138 #define H_PUT_16 bfd_h_put_16 |
|
1139 #define H_PUT_8 bfd_h_put_8 |
|
1140 #define H_PUT_S64 bfd_h_put_signed_64 |
|
1141 #define H_PUT_S32 bfd_h_put_signed_32 |
|
1142 #define H_PUT_S16 bfd_h_put_signed_16 |
|
1143 #define H_PUT_S8 bfd_h_put_signed_8 |
|
1144 #define H_GET_64 bfd_h_get_64 |
|
1145 #define H_GET_32 bfd_h_get_32 |
|
1146 #define H_GET_16 bfd_h_get_16 |
|
1147 #define H_GET_8 bfd_h_get_8 |
|
1148 #define H_GET_S64 bfd_h_get_signed_64 |
|
1149 #define H_GET_S32 bfd_h_get_signed_32 |
|
1150 #define H_GET_S16 bfd_h_get_signed_16 |
|
1151 #define H_GET_S8 bfd_h_get_signed_8 |
|
1152 |
|
1153 |
|
1154 /* Extracted from bfdio.c. */ |
|
1155 long bfd_get_mtime (bfd *abfd); |
|
1156 |
|
1157 file_ptr bfd_get_size (bfd *abfd); |
|
1158 |
|
1159 /* Extracted from bfdwin.c. */ |
|
1160 /* Extracted from section.c. */ |
|
1161 typedef struct bfd_section |
|
1162 { |
|
1163 /* The name of the section; the name isn't a copy, the pointer is |
|
1164 the same as that passed to bfd_make_section. */ |
|
1165 const char *name; |
|
1166 |
|
1167 /* A unique sequence number. */ |
|
1168 int id; |
|
1169 |
|
1170 /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */ |
|
1171 int index; |
|
1172 |
|
1173 /* The next section in the list belonging to the BFD, or NULL. */ |
|
1174 struct bfd_section *next; |
|
1175 |
|
1176 /* The previous section in the list belonging to the BFD, or NULL. */ |
|
1177 struct bfd_section *prev; |
|
1178 |
|
1179 /* The field flags contains attributes of the section. Some |
|
1180 flags are read in from the object file, and some are |
|
1181 synthesized from other information. */ |
|
1182 flagword flags; |
|
1183 |
|
1184 #define SEC_NO_FLAGS 0x000 |
|
1185 |
|
1186 /* Tells the OS to allocate space for this section when loading. |
|
1187 This is clear for a section containing debug information only. */ |
|
1188 #define SEC_ALLOC 0x001 |
|
1189 |
|
1190 /* Tells the OS to load the section from the file when loading. |
|
1191 This is clear for a .bss section. */ |
|
1192 #define SEC_LOAD 0x002 |
|
1193 |
|
1194 /* The section contains data still to be relocated, so there is |
|
1195 some relocation information too. */ |
|
1196 #define SEC_RELOC 0x004 |
|
1197 |
|
1198 /* A signal to the OS that the section contains read only data. */ |
|
1199 #define SEC_READONLY 0x008 |
|
1200 |
|
1201 /* The section contains code only. */ |
|
1202 #define SEC_CODE 0x010 |
|
1203 |
|
1204 /* The section contains data only. */ |
|
1205 #define SEC_DATA 0x020 |
|
1206 |
|
1207 /* The section will reside in ROM. */ |
|
1208 #define SEC_ROM 0x040 |
|
1209 |
|
1210 /* The section contains constructor information. This section |
|
1211 type is used by the linker to create lists of constructors and |
|
1212 destructors used by <<g++>>. When a back end sees a symbol |
|
1213 which should be used in a constructor list, it creates a new |
|
1214 section for the type of name (e.g., <<__CTOR_LIST__>>), attaches |
|
1215 the symbol to it, and builds a relocation. To build the lists |
|
1216 of constructors, all the linker has to do is catenate all the |
|
1217 sections called <<__CTOR_LIST__>> and relocate the data |
|
1218 contained within - exactly the operations it would peform on |
|
1219 standard data. */ |
|
1220 #define SEC_CONSTRUCTOR 0x080 |
|
1221 |
|
1222 /* The section has contents - a data section could be |
|
1223 <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be |
|
1224 <<SEC_HAS_CONTENTS>> */ |
|
1225 #define SEC_HAS_CONTENTS 0x100 |
|
1226 |
|
1227 /* An instruction to the linker to not output the section |
|
1228 even if it has information which would normally be written. */ |
|
1229 #define SEC_NEVER_LOAD 0x200 |
|
1230 |
|
1231 /* The section contains thread local data. */ |
|
1232 #define SEC_THREAD_LOCAL 0x400 |
|
1233 |
|
1234 /* The section has GOT references. This flag is only for the |
|
1235 linker, and is currently only used by the elf32-hppa back end. |
|
1236 It will be set if global offset table references were detected |
|
1237 in this section, which indicate to the linker that the section |
|
1238 contains PIC code, and must be handled specially when doing a |
|
1239 static link. */ |
|
1240 #define SEC_HAS_GOT_REF 0x800 |
|
1241 |
|
1242 /* The section contains common symbols (symbols may be defined |
|
1243 multiple times, the value of a symbol is the amount of |
|
1244 space it requires, and the largest symbol value is the one |
|
1245 used). Most targets have exactly one of these (which we |
|
1246 translate to bfd_com_section_ptr), but ECOFF has two. */ |
|
1247 #define SEC_IS_COMMON 0x1000 |
|
1248 |
|
1249 /* The section contains only debugging information. For |
|
1250 example, this is set for ELF .debug and .stab sections. |
|
1251 strip tests this flag to see if a section can be |
|
1252 discarded. */ |
|
1253 #define SEC_DEBUGGING 0x2000 |
|
1254 |
|
1255 /* The contents of this section are held in memory pointed to |
|
1256 by the contents field. This is checked by bfd_get_section_contents, |
|
1257 and the data is retrieved from memory if appropriate. */ |
|
1258 #define SEC_IN_MEMORY 0x4000 |
|
1259 |
|
1260 /* The contents of this section are to be excluded by the |
|
1261 linker for executable and shared objects unless those |
|
1262 objects are to be further relocated. */ |
|
1263 #define SEC_EXCLUDE 0x8000 |
|
1264 |
|
1265 /* The contents of this section are to be sorted based on the sum of |
|
1266 the symbol and addend values specified by the associated relocation |
|
1267 entries. Entries without associated relocation entries will be |
|
1268 appended to the end of the section in an unspecified order. */ |
|
1269 #define SEC_SORT_ENTRIES 0x10000 |
|
1270 |
|
1271 /* When linking, duplicate sections of the same name should be |
|
1272 discarded, rather than being combined into a single section as |
|
1273 is usually done. This is similar to how common symbols are |
|
1274 handled. See SEC_LINK_DUPLICATES below. */ |
|
1275 #define SEC_LINK_ONCE 0x20000 |
|
1276 |
|
1277 /* If SEC_LINK_ONCE is set, this bitfield describes how the linker |
|
1278 should handle duplicate sections. */ |
|
1279 #define SEC_LINK_DUPLICATES 0x40000 |
|
1280 |
|
1281 /* This value for SEC_LINK_DUPLICATES means that duplicate |
|
1282 sections with the same name should simply be discarded. */ |
|
1283 #define SEC_LINK_DUPLICATES_DISCARD 0x0 |
|
1284 |
|
1285 /* This value for SEC_LINK_DUPLICATES means that the linker |
|
1286 should warn if there are any duplicate sections, although |
|
1287 it should still only link one copy. */ |
|
1288 #define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000 |
|
1289 |
|
1290 /* This value for SEC_LINK_DUPLICATES means that the linker |
|
1291 should warn if any duplicate sections are a different size. */ |
|
1292 #define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000 |
|
1293 |
|
1294 /* This value for SEC_LINK_DUPLICATES means that the linker |
|
1295 should warn if any duplicate sections contain different |
|
1296 contents. */ |
|
1297 #define SEC_LINK_DUPLICATES_SAME_CONTENTS \ |
|
1298 (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE) |
|
1299 |
|
1300 /* This section was created by the linker as part of dynamic |
|
1301 relocation or other arcane processing. It is skipped when |
|
1302 going through the first-pass output, trusting that someone |
|
1303 else up the line will take care of it later. */ |
|
1304 #define SEC_LINKER_CREATED 0x200000 |
|
1305 |
|
1306 /* This section should not be subject to garbage collection. |
|
1307 Also set to inform the linker that this section should not be |
|
1308 listed in the link map as discarded. */ |
|
1309 #define SEC_KEEP 0x400000 |
|
1310 |
|
1311 /* This section contains "short" data, and should be placed |
|
1312 "near" the GP. */ |
|
1313 #define SEC_SMALL_DATA 0x800000 |
|
1314 |
|
1315 /* Attempt to merge identical entities in the section. |
|
1316 Entity size is given in the entsize field. */ |
|
1317 #define SEC_MERGE 0x1000000 |
|
1318 |
|
1319 /* If given with SEC_MERGE, entities to merge are zero terminated |
|
1320 strings where entsize specifies character size instead of fixed |
|
1321 size entries. */ |
|
1322 #define SEC_STRINGS 0x2000000 |
|
1323 |
|
1324 /* This section contains data about section groups. */ |
|
1325 #define SEC_GROUP 0x4000000 |
|
1326 |
|
1327 /* The section is a COFF shared library section. This flag is |
|
1328 only for the linker. If this type of section appears in |
|
1329 the input file, the linker must copy it to the output file |
|
1330 without changing the vma or size. FIXME: Although this |
|
1331 was originally intended to be general, it really is COFF |
|
1332 specific (and the flag was renamed to indicate this). It |
|
1333 might be cleaner to have some more general mechanism to |
|
1334 allow the back end to control what the linker does with |
|
1335 sections. */ |
|
1336 #define SEC_COFF_SHARED_LIBRARY 0x10000000 |
|
1337 |
|
1338 /* This section contains data which may be shared with other |
|
1339 executables or shared objects. This is for COFF only. */ |
|
1340 #define SEC_COFF_SHARED 0x20000000 |
|
1341 |
|
1342 /* When a section with this flag is being linked, then if the size of |
|
1343 the input section is less than a page, it should not cross a page |
|
1344 boundary. If the size of the input section is one page or more, |
|
1345 it should be aligned on a page boundary. This is for TI |
|
1346 TMS320C54X only. */ |
|
1347 #define SEC_TIC54X_BLOCK 0x40000000 |
|
1348 |
|
1349 /* Conditionally link this section; do not link if there are no |
|
1350 references found to any symbol in the section. This is for TI |
|
1351 TMS320C54X only. */ |
|
1352 #define SEC_TIC54X_CLINK 0x80000000 |
|
1353 |
|
1354 /* End of section flags. */ |
|
1355 |
|
1356 /* Some internal packed boolean fields. */ |
|
1357 |
|
1358 /* See the vma field. */ |
|
1359 unsigned int user_set_vma : 1; |
|
1360 |
|
1361 /* A mark flag used by some of the linker backends. */ |
|
1362 unsigned int linker_mark : 1; |
|
1363 |
|
1364 /* Another mark flag used by some of the linker backends. Set for |
|
1365 output sections that have an input section. */ |
|
1366 unsigned int linker_has_input : 1; |
|
1367 |
|
1368 /* Mark flag used by some linker backends for garbage collection. */ |
|
1369 unsigned int gc_mark : 1; |
|
1370 |
|
1371 /* The following flags are used by the ELF linker. */ |
|
1372 |
|
1373 /* Mark sections which have been allocated to segments. */ |
|
1374 unsigned int segment_mark : 1; |
|
1375 |
|
1376 /* Type of sec_info information. */ |
|
1377 unsigned int sec_info_type:3; |
|
1378 #define ELF_INFO_TYPE_NONE 0 |
|
1379 #define ELF_INFO_TYPE_STABS 1 |
|
1380 #define ELF_INFO_TYPE_MERGE 2 |
|
1381 #define ELF_INFO_TYPE_EH_FRAME 3 |
|
1382 #define ELF_INFO_TYPE_JUST_SYMS 4 |
|
1383 |
|
1384 /* Nonzero if this section uses RELA relocations, rather than REL. */ |
|
1385 unsigned int use_rela_p:1; |
|
1386 |
|
1387 /* Bits used by various backends. The generic code doesn't touch |
|
1388 these fields. */ |
|
1389 |
|
1390 /* Nonzero if this section has TLS related relocations. */ |
|
1391 unsigned int has_tls_reloc:1; |
|
1392 |
|
1393 /* Nonzero if this section has a gp reloc. */ |
|
1394 unsigned int has_gp_reloc:1; |
|
1395 |
|
1396 /* Nonzero if this section needs the relax finalize pass. */ |
|
1397 unsigned int need_finalize_relax:1; |
|
1398 |
|
1399 /* Whether relocations have been processed. */ |
|
1400 unsigned int reloc_done : 1; |
|
1401 |
|
1402 /* End of internal packed boolean fields. */ |
|
1403 |
|
1404 /* The virtual memory address of the section - where it will be |
|
1405 at run time. The symbols are relocated against this. The |
|
1406 user_set_vma flag is maintained by bfd; if it's not set, the |
|
1407 backend can assign addresses (for example, in <<a.out>>, where |
|
1408 the default address for <<.data>> is dependent on the specific |
|
1409 target and various flags). */ |
|
1410 bfd_vma vma; |
|
1411 |
|
1412 /* The load address of the section - where it would be in a |
|
1413 rom image; really only used for writing section header |
|
1414 information. */ |
|
1415 bfd_vma lma; |
|
1416 |
|
1417 /* The size of the section in octets, as it will be output. |
|
1418 Contains a value even if the section has no contents (e.g., the |
|
1419 size of <<.bss>>). */ |
|
1420 bfd_size_type size; |
|
1421 |
|
1422 /* For input sections, the original size on disk of the section, in |
|
1423 octets. This field should be set for any section whose size is |
|
1424 changed by linker relaxation. It is required for sections where |
|
1425 the linker relaxation scheme doesn't cache altered section and |
|
1426 reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing |
|
1427 targets), and thus the original size needs to be kept to read the |
|
1428 section multiple times. For output sections, rawsize holds the |
|
1429 section size calculated on a previous linker relaxation pass. */ |
|
1430 bfd_size_type rawsize; |
|
1431 |
|
1432 /* If this section is going to be output, then this value is the |
|
1433 offset in *bytes* into the output section of the first byte in the |
|
1434 input section (byte ==> smallest addressable unit on the |
|
1435 target). In most cases, if this was going to start at the |
|
1436 100th octet (8-bit quantity) in the output section, this value |
|
1437 would be 100. However, if the target byte size is 16 bits |
|
1438 (bfd_octets_per_byte is "2"), this value would be 50. */ |
|
1439 bfd_vma output_offset; |
|
1440 |
|
1441 /* The output section through which to map on output. */ |
|
1442 struct bfd_section *output_section; |
|
1443 |
|
1444 /* The alignment requirement of the section, as an exponent of 2 - |
|
1445 e.g., 3 aligns to 2^3 (or 8). */ |
|
1446 unsigned int alignment_power; |
|
1447 |
|
1448 /* If an input section, a pointer to a vector of relocation |
|
1449 records for the data in this section. */ |
|
1450 struct reloc_cache_entry *relocation; |
|
1451 |
|
1452 /* If an output section, a pointer to a vector of pointers to |
|
1453 relocation records for the data in this section. */ |
|
1454 struct reloc_cache_entry **orelocation; |
|
1455 |
|
1456 /* The number of relocation records in one of the above. */ |
|
1457 unsigned reloc_count; |
|
1458 |
|
1459 /* Information below is back end specific - and not always used |
|
1460 or updated. */ |
|
1461 |
|
1462 /* File position of section data. */ |
|
1463 file_ptr filepos; |
|
1464 |
|
1465 /* File position of relocation info. */ |
|
1466 file_ptr rel_filepos; |
|
1467 |
|
1468 /* File position of line data. */ |
|
1469 file_ptr line_filepos; |
|
1470 |
|
1471 /* Pointer to data for applications. */ |
|
1472 void *userdata; |
|
1473 |
|
1474 /* If the SEC_IN_MEMORY flag is set, this points to the actual |
|
1475 contents. */ |
|
1476 unsigned char *contents; |
|
1477 |
|
1478 /* Attached line number information. */ |
|
1479 alent *lineno; |
|
1480 |
|
1481 /* Number of line number records. */ |
|
1482 unsigned int lineno_count; |
|
1483 |
|
1484 /* Entity size for merging purposes. */ |
|
1485 unsigned int entsize; |
|
1486 |
|
1487 /* Points to the kept section if this section is a link-once section, |
|
1488 and is discarded. */ |
|
1489 struct bfd_section *kept_section; |
|
1490 |
|
1491 /* When a section is being output, this value changes as more |
|
1492 linenumbers are written out. */ |
|
1493 file_ptr moving_line_filepos; |
|
1494 |
|
1495 /* What the section number is in the target world. */ |
|
1496 int target_index; |
|
1497 |
|
1498 void *used_by_bfd; |
|
1499 |
|
1500 /* If this is a constructor section then here is a list of the |
|
1501 relocations created to relocate items within it. */ |
|
1502 struct relent_chain *constructor_chain; |
|
1503 |
|
1504 /* The BFD which owns the section. */ |
|
1505 bfd *owner; |
|
1506 |
|
1507 /* A symbol which points at this section only. */ |
|
1508 struct bfd_symbol *symbol; |
|
1509 struct bfd_symbol **symbol_ptr_ptr; |
|
1510 |
|
1511 /* Early in the link process, map_head and map_tail are used to build |
|
1512 a list of input sections attached to an output section. Later, |
|
1513 output sections use these fields for a list of bfd_link_order |
|
1514 structs. */ |
|
1515 union { |
|
1516 struct bfd_link_order *link_order; |
|
1517 struct bfd_section *s; |
|
1518 } map_head, map_tail; |
|
1519 } asection; |
|
1520 |
|
1521 /* These sections are global, and are managed by BFD. The application |
|
1522 and target back end are not permitted to change the values in |
|
1523 these sections. New code should use the section_ptr macros rather |
|
1524 than referring directly to the const sections. The const sections |
|
1525 may eventually vanish. */ |
|
1526 #define BFD_ABS_SECTION_NAME "*ABS*" |
|
1527 #define BFD_UND_SECTION_NAME "*UND*" |
|
1528 #define BFD_COM_SECTION_NAME "*COM*" |
|
1529 #define BFD_IND_SECTION_NAME "*IND*" |
|
1530 |
|
1531 /* The absolute section. */ |
|
1532 extern asection bfd_abs_section; |
|
1533 #define bfd_abs_section_ptr ((asection *) &bfd_abs_section) |
|
1534 #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr) |
|
1535 /* Pointer to the undefined section. */ |
|
1536 extern asection bfd_und_section; |
|
1537 #define bfd_und_section_ptr ((asection *) &bfd_und_section) |
|
1538 #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr) |
|
1539 /* Pointer to the common section. */ |
|
1540 extern asection bfd_com_section; |
|
1541 #define bfd_com_section_ptr ((asection *) &bfd_com_section) |
|
1542 /* Pointer to the indirect section. */ |
|
1543 extern asection bfd_ind_section; |
|
1544 #define bfd_ind_section_ptr ((asection *) &bfd_ind_section) |
|
1545 #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr) |
|
1546 |
|
1547 #define bfd_is_const_section(SEC) \ |
|
1548 ( ((SEC) == bfd_abs_section_ptr) \ |
|
1549 || ((SEC) == bfd_und_section_ptr) \ |
|
1550 || ((SEC) == bfd_com_section_ptr) \ |
|
1551 || ((SEC) == bfd_ind_section_ptr)) |
|
1552 |
|
1553 /* Macros to handle insertion and deletion of a bfd's sections. These |
|
1554 only handle the list pointers, ie. do not adjust section_count, |
|
1555 target_index etc. */ |
|
1556 #define bfd_section_list_remove(ABFD, S) \ |
|
1557 do \ |
|
1558 { \ |
|
1559 asection *_s = S; \ |
|
1560 asection *_next = _s->next; \ |
|
1561 asection *_prev = _s->prev; \ |
|
1562 if (_prev) \ |
|
1563 _prev->next = _next; \ |
|
1564 else \ |
|
1565 (ABFD)->sections = _next; \ |
|
1566 if (_next) \ |
|
1567 _next->prev = _prev; \ |
|
1568 else \ |
|
1569 (ABFD)->section_last = _prev; \ |
|
1570 } \ |
|
1571 while (0) |
|
1572 #define bfd_section_list_append(ABFD, S) \ |
|
1573 do \ |
|
1574 { \ |
|
1575 asection *_s = S; \ |
|
1576 bfd *_abfd = ABFD; \ |
|
1577 _s->next = NULL; \ |
|
1578 if (_abfd->section_last) \ |
|
1579 { \ |
|
1580 _s->prev = _abfd->section_last; \ |
|
1581 _abfd->section_last->next = _s; \ |
|
1582 } \ |
|
1583 else \ |
|
1584 { \ |
|
1585 _s->prev = NULL; \ |
|
1586 _abfd->sections = _s; \ |
|
1587 } \ |
|
1588 _abfd->section_last = _s; \ |
|
1589 } \ |
|
1590 while (0) |
|
1591 #define bfd_section_list_prepend(ABFD, S) \ |
|
1592 do \ |
|
1593 { \ |
|
1594 asection *_s = S; \ |
|
1595 bfd *_abfd = ABFD; \ |
|
1596 _s->prev = NULL; \ |
|
1597 if (_abfd->sections) \ |
|
1598 { \ |
|
1599 _s->next = _abfd->sections; \ |
|
1600 _abfd->sections->prev = _s; \ |
|
1601 } \ |
|
1602 else \ |
|
1603 { \ |
|
1604 _s->next = NULL; \ |
|
1605 _abfd->section_last = _s; \ |
|
1606 } \ |
|
1607 _abfd->sections = _s; \ |
|
1608 } \ |
|
1609 while (0) |
|
1610 #define bfd_section_list_insert_after(ABFD, A, S) \ |
|
1611 do \ |
|
1612 { \ |
|
1613 asection *_a = A; \ |
|
1614 asection *_s = S; \ |
|
1615 asection *_next = _a->next; \ |
|
1616 _s->next = _next; \ |
|
1617 _s->prev = _a; \ |
|
1618 _a->next = _s; \ |
|
1619 if (_next) \ |
|
1620 _next->prev = _s; \ |
|
1621 else \ |
|
1622 (ABFD)->section_last = _s; \ |
|
1623 } \ |
|
1624 while (0) |
|
1625 #define bfd_section_list_insert_before(ABFD, B, S) \ |
|
1626 do \ |
|
1627 { \ |
|
1628 asection *_b = B; \ |
|
1629 asection *_s = S; \ |
|
1630 asection *_prev = _b->prev; \ |
|
1631 _s->prev = _prev; \ |
|
1632 _s->next = _b; \ |
|
1633 _b->prev = _s; \ |
|
1634 if (_prev) \ |
|
1635 _prev->next = _s; \ |
|
1636 else \ |
|
1637 (ABFD)->sections = _s; \ |
|
1638 } \ |
|
1639 while (0) |
|
1640 #define bfd_section_removed_from_list(ABFD, S) \ |
|
1641 ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S)) |
|
1642 |
|
1643 #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \ |
|
1644 /* name, id, index, next, prev, flags, user_set_vma, */ \ |
|
1645 { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ |
|
1646 \ |
|
1647 /* linker_mark, linker_has_input, gc_mark, */ \ |
|
1648 0, 0, 1, \ |
|
1649 \ |
|
1650 /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \ |
|
1651 0, 0, 0, 0, \ |
|
1652 \ |
|
1653 /* has_gp_reloc, need_finalize_relax, reloc_done, */ \ |
|
1654 0, 0, 0, \ |
|
1655 \ |
|
1656 /* vma, lma, size, rawsize */ \ |
|
1657 0, 0, 0, 0, \ |
|
1658 \ |
|
1659 /* output_offset, output_section, alignment_power, */ \ |
|
1660 0, (struct bfd_section *) &SEC, 0, \ |
|
1661 \ |
|
1662 /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \ |
|
1663 NULL, NULL, 0, 0, 0, \ |
|
1664 \ |
|
1665 /* line_filepos, userdata, contents, lineno, lineno_count, */ \ |
|
1666 0, NULL, NULL, NULL, 0, \ |
|
1667 \ |
|
1668 /* entsize, kept_section, moving_line_filepos, */ \ |
|
1669 0, NULL, 0, \ |
|
1670 \ |
|
1671 /* target_index, used_by_bfd, constructor_chain, owner, */ \ |
|
1672 0, NULL, NULL, NULL, \ |
|
1673 \ |
|
1674 /* symbol, symbol_ptr_ptr, */ \ |
|
1675 (struct bfd_symbol *) SYM, &SEC.symbol, \ |
|
1676 \ |
|
1677 /* map_head, map_tail */ \ |
|
1678 { NULL }, { NULL } \ |
|
1679 } |
|
1680 |
|
1681 void bfd_section_list_clear (bfd *); |
|
1682 |
|
1683 asection *bfd_get_section_by_name (bfd *abfd, const char *name); |
|
1684 |
|
1685 asection *bfd_get_section_by_name_if |
|
1686 (bfd *abfd, |
|
1687 const char *name, |
|
1688 bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj), |
|
1689 void *obj); |
|
1690 |
|
1691 char *bfd_get_unique_section_name |
|
1692 (bfd *abfd, const char *templat, int *count); |
|
1693 |
|
1694 asection *bfd_make_section_old_way (bfd *abfd, const char *name); |
|
1695 |
|
1696 asection *bfd_make_section_anyway_with_flags |
|
1697 (bfd *abfd, const char *name, flagword flags); |
|
1698 |
|
1699 asection *bfd_make_section_anyway (bfd *abfd, const char *name); |
|
1700 |
|
1701 asection *bfd_make_section_with_flags |
|
1702 (bfd *, const char *name, flagword flags); |
|
1703 |
|
1704 asection *bfd_make_section (bfd *, const char *name); |
|
1705 |
|
1706 bfd_boolean bfd_set_section_flags |
|
1707 (bfd *abfd, asection *sec, flagword flags); |
|
1708 |
|
1709 void bfd_map_over_sections |
|
1710 (bfd *abfd, |
|
1711 void (*func) (bfd *abfd, asection *sect, void *obj), |
|
1712 void *obj); |
|
1713 |
|
1714 asection *bfd_sections_find_if |
|
1715 (bfd *abfd, |
|
1716 bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj), |
|
1717 void *obj); |
|
1718 |
|
1719 bfd_boolean bfd_set_section_size |
|
1720 (bfd *abfd, asection *sec, bfd_size_type val); |
|
1721 |
|
1722 bfd_boolean bfd_set_section_contents |
|
1723 (bfd *abfd, asection *section, const void *data, |
|
1724 file_ptr offset, bfd_size_type count); |
|
1725 |
|
1726 bfd_boolean bfd_get_section_contents |
|
1727 (bfd *abfd, asection *section, void *location, file_ptr offset, |
|
1728 bfd_size_type count); |
|
1729 |
|
1730 bfd_boolean bfd_malloc_and_get_section |
|
1731 (bfd *abfd, asection *section, bfd_byte **buf); |
|
1732 |
|
1733 bfd_boolean bfd_copy_private_section_data |
|
1734 (bfd *ibfd, asection *isec, bfd *obfd, asection *osec); |
|
1735 |
|
1736 #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \ |
|
1737 BFD_SEND (obfd, _bfd_copy_private_section_data, \ |
|
1738 (ibfd, isection, obfd, osection)) |
|
1739 bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec); |
|
1740 |
|
1741 bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group); |
|
1742 |
|
1743 /* Extracted from archures.c. */ |
|
1744 enum bfd_architecture |
|
1745 { |
|
1746 bfd_arch_unknown, /* File arch not known. */ |
|
1747 bfd_arch_obscure, /* Arch known, not one of these. */ |
|
1748 bfd_arch_m68k, /* Motorola 68xxx */ |
|
1749 #define bfd_mach_m68000 1 |
|
1750 #define bfd_mach_m68008 2 |
|
1751 #define bfd_mach_m68010 3 |
|
1752 #define bfd_mach_m68020 4 |
|
1753 #define bfd_mach_m68030 5 |
|
1754 #define bfd_mach_m68040 6 |
|
1755 #define bfd_mach_m68060 7 |
|
1756 #define bfd_mach_cpu32 8 |
|
1757 #define bfd_mach_fido 9 |
|
1758 #define bfd_mach_mcf_isa_a_nodiv 10 |
|
1759 #define bfd_mach_mcf_isa_a 11 |
|
1760 #define bfd_mach_mcf_isa_a_mac 12 |
|
1761 #define bfd_mach_mcf_isa_a_emac 13 |
|
1762 #define bfd_mach_mcf_isa_aplus 14 |
|
1763 #define bfd_mach_mcf_isa_aplus_mac 15 |
|
1764 #define bfd_mach_mcf_isa_aplus_emac 16 |
|
1765 #define bfd_mach_mcf_isa_b_nousp 17 |
|
1766 #define bfd_mach_mcf_isa_b_nousp_mac 18 |
|
1767 #define bfd_mach_mcf_isa_b_nousp_emac 19 |
|
1768 #define bfd_mach_mcf_isa_b 20 |
|
1769 #define bfd_mach_mcf_isa_b_mac 21 |
|
1770 #define bfd_mach_mcf_isa_b_emac 22 |
|
1771 #define bfd_mach_mcf_isa_b_float 23 |
|
1772 #define bfd_mach_mcf_isa_b_float_mac 24 |
|
1773 #define bfd_mach_mcf_isa_b_float_emac 25 |
|
1774 #define bfd_mach_mcf_isa_c 26 |
|
1775 #define bfd_mach_mcf_isa_c_mac 27 |
|
1776 #define bfd_mach_mcf_isa_c_emac 28 |
|
1777 #define bfd_mach_mcf_isa_c_nodiv 29 |
|
1778 #define bfd_mach_mcf_isa_c_nodiv_mac 30 |
|
1779 #define bfd_mach_mcf_isa_c_nodiv_emac 31 |
|
1780 bfd_arch_vax, /* DEC Vax */ |
|
1781 bfd_arch_i960, /* Intel 960 */ |
|
1782 /* The order of the following is important. |
|
1783 lower number indicates a machine type that |
|
1784 only accepts a subset of the instructions |
|
1785 available to machines with higher numbers. |
|
1786 The exception is the "ca", which is |
|
1787 incompatible with all other machines except |
|
1788 "core". */ |
|
1789 |
|
1790 #define bfd_mach_i960_core 1 |
|
1791 #define bfd_mach_i960_ka_sa 2 |
|
1792 #define bfd_mach_i960_kb_sb 3 |
|
1793 #define bfd_mach_i960_mc 4 |
|
1794 #define bfd_mach_i960_xa 5 |
|
1795 #define bfd_mach_i960_ca 6 |
|
1796 #define bfd_mach_i960_jx 7 |
|
1797 #define bfd_mach_i960_hx 8 |
|
1798 |
|
1799 bfd_arch_or32, /* OpenRISC 32 */ |
|
1800 |
|
1801 bfd_arch_sparc, /* SPARC */ |
|
1802 #define bfd_mach_sparc 1 |
|
1803 /* The difference between v8plus and v9 is that v9 is a true 64 bit env. */ |
|
1804 #define bfd_mach_sparc_sparclet 2 |
|
1805 #define bfd_mach_sparc_sparclite 3 |
|
1806 #define bfd_mach_sparc_v8plus 4 |
|
1807 #define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */ |
|
1808 #define bfd_mach_sparc_sparclite_le 6 |
|
1809 #define bfd_mach_sparc_v9 7 |
|
1810 #define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */ |
|
1811 #define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */ |
|
1812 #define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */ |
|
1813 /* Nonzero if MACH has the v9 instruction set. */ |
|
1814 #define bfd_mach_sparc_v9_p(mach) \ |
|
1815 ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \ |
|
1816 && (mach) != bfd_mach_sparc_sparclite_le) |
|
1817 /* Nonzero if MACH is a 64 bit sparc architecture. */ |
|
1818 #define bfd_mach_sparc_64bit_p(mach) \ |
|
1819 ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb) |
|
1820 bfd_arch_spu, /* PowerPC SPU */ |
|
1821 #define bfd_mach_spu 256 |
|
1822 bfd_arch_mips, /* MIPS Rxxxx */ |
|
1823 #define bfd_mach_mips3000 3000 |
|
1824 #define bfd_mach_mips3900 3900 |
|
1825 #define bfd_mach_mips4000 4000 |
|
1826 #define bfd_mach_mips4010 4010 |
|
1827 #define bfd_mach_mips4100 4100 |
|
1828 #define bfd_mach_mips4111 4111 |
|
1829 #define bfd_mach_mips4120 4120 |
|
1830 #define bfd_mach_mips4300 4300 |
|
1831 #define bfd_mach_mips4400 4400 |
|
1832 #define bfd_mach_mips4600 4600 |
|
1833 #define bfd_mach_mips4650 4650 |
|
1834 #define bfd_mach_mips5000 5000 |
|
1835 #define bfd_mach_mips5400 5400 |
|
1836 #define bfd_mach_mips5500 5500 |
|
1837 #define bfd_mach_mips6000 6000 |
|
1838 #define bfd_mach_mips7000 7000 |
|
1839 #define bfd_mach_mips8000 8000 |
|
1840 #define bfd_mach_mips9000 9000 |
|
1841 #define bfd_mach_mips10000 10000 |
|
1842 #define bfd_mach_mips12000 12000 |
|
1843 #define bfd_mach_mips16 16 |
|
1844 #define bfd_mach_mips5 5 |
|
1845 #define bfd_mach_mips_loongson_2e 3001 |
|
1846 #define bfd_mach_mips_loongson_2f 3002 |
|
1847 #define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */ |
|
1848 #define bfd_mach_mipsisa32 32 |
|
1849 #define bfd_mach_mipsisa32r2 33 |
|
1850 #define bfd_mach_mipsisa64 64 |
|
1851 #define bfd_mach_mipsisa64r2 65 |
|
1852 bfd_arch_i386, /* Intel 386 */ |
|
1853 #define bfd_mach_i386_i386 1 |
|
1854 #define bfd_mach_i386_i8086 2 |
|
1855 #define bfd_mach_i386_i386_intel_syntax 3 |
|
1856 #define bfd_mach_x86_64 64 |
|
1857 #define bfd_mach_x86_64_intel_syntax 65 |
|
1858 bfd_arch_we32k, /* AT&T WE32xxx */ |
|
1859 bfd_arch_tahoe, /* CCI/Harris Tahoe */ |
|
1860 bfd_arch_i860, /* Intel 860 */ |
|
1861 bfd_arch_i370, /* IBM 360/370 Mainframes */ |
|
1862 bfd_arch_romp, /* IBM ROMP PC/RT */ |
|
1863 bfd_arch_convex, /* Convex */ |
|
1864 bfd_arch_m88k, /* Motorola 88xxx */ |
|
1865 bfd_arch_m98k, /* Motorola 98xxx */ |
|
1866 bfd_arch_pyramid, /* Pyramid Technology */ |
|
1867 bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */ |
|
1868 #define bfd_mach_h8300 1 |
|
1869 #define bfd_mach_h8300h 2 |
|
1870 #define bfd_mach_h8300s 3 |
|
1871 #define bfd_mach_h8300hn 4 |
|
1872 #define bfd_mach_h8300sn 5 |
|
1873 #define bfd_mach_h8300sx 6 |
|
1874 #define bfd_mach_h8300sxn 7 |
|
1875 bfd_arch_pdp11, /* DEC PDP-11 */ |
|
1876 bfd_arch_powerpc, /* PowerPC */ |
|
1877 #define bfd_mach_ppc 32 |
|
1878 #define bfd_mach_ppc64 64 |
|
1879 #define bfd_mach_ppc_403 403 |
|
1880 #define bfd_mach_ppc_403gc 4030 |
|
1881 #define bfd_mach_ppc_505 505 |
|
1882 #define bfd_mach_ppc_601 601 |
|
1883 #define bfd_mach_ppc_602 602 |
|
1884 #define bfd_mach_ppc_603 603 |
|
1885 #define bfd_mach_ppc_ec603e 6031 |
|
1886 #define bfd_mach_ppc_604 604 |
|
1887 #define bfd_mach_ppc_620 620 |
|
1888 #define bfd_mach_ppc_630 630 |
|
1889 #define bfd_mach_ppc_750 750 |
|
1890 #define bfd_mach_ppc_860 860 |
|
1891 #define bfd_mach_ppc_a35 35 |
|
1892 #define bfd_mach_ppc_rs64ii 642 |
|
1893 #define bfd_mach_ppc_rs64iii 643 |
|
1894 #define bfd_mach_ppc_7400 7400 |
|
1895 #define bfd_mach_ppc_e500 500 |
|
1896 bfd_arch_rs6000, /* IBM RS/6000 */ |
|
1897 #define bfd_mach_rs6k 6000 |
|
1898 #define bfd_mach_rs6k_rs1 6001 |
|
1899 #define bfd_mach_rs6k_rsc 6003 |
|
1900 #define bfd_mach_rs6k_rs2 6002 |
|
1901 bfd_arch_hppa, /* HP PA RISC */ |
|
1902 #define bfd_mach_hppa10 10 |
|
1903 #define bfd_mach_hppa11 11 |
|
1904 #define bfd_mach_hppa20 20 |
|
1905 #define bfd_mach_hppa20w 25 |
|
1906 bfd_arch_d10v, /* Mitsubishi D10V */ |
|
1907 #define bfd_mach_d10v 1 |
|
1908 #define bfd_mach_d10v_ts2 2 |
|
1909 #define bfd_mach_d10v_ts3 3 |
|
1910 bfd_arch_d30v, /* Mitsubishi D30V */ |
|
1911 bfd_arch_dlx, /* DLX */ |
|
1912 bfd_arch_m68hc11, /* Motorola 68HC11 */ |
|
1913 bfd_arch_m68hc12, /* Motorola 68HC12 */ |
|
1914 #define bfd_mach_m6812_default 0 |
|
1915 #define bfd_mach_m6812 1 |
|
1916 #define bfd_mach_m6812s 2 |
|
1917 bfd_arch_z8k, /* Zilog Z8000 */ |
|
1918 #define bfd_mach_z8001 1 |
|
1919 #define bfd_mach_z8002 2 |
|
1920 bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */ |
|
1921 bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */ |
|
1922 #define bfd_mach_sh 1 |
|
1923 #define bfd_mach_sh2 0x20 |
|
1924 #define bfd_mach_sh_dsp 0x2d |
|
1925 #define bfd_mach_sh2a 0x2a |
|
1926 #define bfd_mach_sh2a_nofpu 0x2b |
|
1927 #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1 |
|
1928 #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2 |
|
1929 #define bfd_mach_sh2a_or_sh4 0x2a3 |
|
1930 #define bfd_mach_sh2a_or_sh3e 0x2a4 |
|
1931 #define bfd_mach_sh2e 0x2e |
|
1932 #define bfd_mach_sh3 0x30 |
|
1933 #define bfd_mach_sh3_nommu 0x31 |
|
1934 #define bfd_mach_sh3_dsp 0x3d |
|
1935 #define bfd_mach_sh3e 0x3e |
|
1936 #define bfd_mach_sh4 0x40 |
|
1937 #define bfd_mach_sh4_nofpu 0x41 |
|
1938 #define bfd_mach_sh4_nommu_nofpu 0x42 |
|
1939 #define bfd_mach_sh4a 0x4a |
|
1940 #define bfd_mach_sh4a_nofpu 0x4b |
|
1941 #define bfd_mach_sh4al_dsp 0x4d |
|
1942 #define bfd_mach_sh5 0x50 |
|
1943 bfd_arch_alpha, /* Dec Alpha */ |
|
1944 #define bfd_mach_alpha_ev4 0x10 |
|
1945 #define bfd_mach_alpha_ev5 0x20 |
|
1946 #define bfd_mach_alpha_ev6 0x30 |
|
1947 bfd_arch_arm, /* Advanced Risc Machines ARM. */ |
|
1948 #define bfd_mach_arm_unknown 0 |
|
1949 #define bfd_mach_arm_2 1 |
|
1950 #define bfd_mach_arm_2a 2 |
|
1951 #define bfd_mach_arm_3 3 |
|
1952 #define bfd_mach_arm_3M 4 |
|
1953 #define bfd_mach_arm_4 5 |
|
1954 #define bfd_mach_arm_4T 6 |
|
1955 #define bfd_mach_arm_5 7 |
|
1956 #define bfd_mach_arm_5T 8 |
|
1957 #define bfd_mach_arm_5TE 9 |
|
1958 #define bfd_mach_arm_XScale 10 |
|
1959 #define bfd_mach_arm_ep9312 11 |
|
1960 #define bfd_mach_arm_iWMMXt 12 |
|
1961 #define bfd_mach_arm_iWMMXt2 13 |
|
1962 bfd_arch_ns32k, /* National Semiconductors ns32000 */ |
|
1963 bfd_arch_w65, /* WDC 65816 */ |
|
1964 bfd_arch_tic30, /* Texas Instruments TMS320C30 */ |
|
1965 bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */ |
|
1966 #define bfd_mach_tic3x 30 |
|
1967 #define bfd_mach_tic4x 40 |
|
1968 bfd_arch_tic54x, /* Texas Instruments TMS320C54X */ |
|
1969 bfd_arch_tic80, /* TI TMS320c80 (MVP) */ |
|
1970 bfd_arch_v850, /* NEC V850 */ |
|
1971 #define bfd_mach_v850 1 |
|
1972 #define bfd_mach_v850e 'E' |
|
1973 #define bfd_mach_v850e1 '1' |
|
1974 bfd_arch_arc, /* ARC Cores */ |
|
1975 #define bfd_mach_arc_5 5 |
|
1976 #define bfd_mach_arc_6 6 |
|
1977 #define bfd_mach_arc_7 7 |
|
1978 #define bfd_mach_arc_8 8 |
|
1979 bfd_arch_m32c, /* Renesas M16C/M32C. */ |
|
1980 #define bfd_mach_m16c 0x75 |
|
1981 #define bfd_mach_m32c 0x78 |
|
1982 bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */ |
|
1983 #define bfd_mach_m32r 1 /* For backwards compatibility. */ |
|
1984 #define bfd_mach_m32rx 'x' |
|
1985 #define bfd_mach_m32r2 '2' |
|
1986 bfd_arch_mn10200, /* Matsushita MN10200 */ |
|
1987 bfd_arch_mn10300, /* Matsushita MN10300 */ |
|
1988 #define bfd_mach_mn10300 300 |
|
1989 #define bfd_mach_am33 330 |
|
1990 #define bfd_mach_am33_2 332 |
|
1991 bfd_arch_fr30, |
|
1992 #define bfd_mach_fr30 0x46523330 |
|
1993 bfd_arch_frv, |
|
1994 #define bfd_mach_frv 1 |
|
1995 #define bfd_mach_frvsimple 2 |
|
1996 #define bfd_mach_fr300 300 |
|
1997 #define bfd_mach_fr400 400 |
|
1998 #define bfd_mach_fr450 450 |
|
1999 #define bfd_mach_frvtomcat 499 /* fr500 prototype */ |
|
2000 #define bfd_mach_fr500 500 |
|
2001 #define bfd_mach_fr550 550 |
|
2002 bfd_arch_mcore, |
|
2003 bfd_arch_mep, |
|
2004 #define bfd_mach_mep 1 |
|
2005 #define bfd_mach_mep_h1 0x6831 |
|
2006 bfd_arch_ia64, /* HP/Intel ia64 */ |
|
2007 #define bfd_mach_ia64_elf64 64 |
|
2008 #define bfd_mach_ia64_elf32 32 |
|
2009 bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */ |
|
2010 #define bfd_mach_ip2022 1 |
|
2011 #define bfd_mach_ip2022ext 2 |
|
2012 bfd_arch_iq2000, /* Vitesse IQ2000. */ |
|
2013 #define bfd_mach_iq2000 1 |
|
2014 #define bfd_mach_iq10 2 |
|
2015 bfd_arch_mt, |
|
2016 #define bfd_mach_ms1 1 |
|
2017 #define bfd_mach_mrisc2 2 |
|
2018 #define bfd_mach_ms2 3 |
|
2019 bfd_arch_pj, |
|
2020 bfd_arch_avr, /* Atmel AVR microcontrollers. */ |
|
2021 #define bfd_mach_avr1 1 |
|
2022 #define bfd_mach_avr2 2 |
|
2023 #define bfd_mach_avr3 3 |
|
2024 #define bfd_mach_avr4 4 |
|
2025 #define bfd_mach_avr5 5 |
|
2026 #define bfd_mach_avr6 6 |
|
2027 bfd_arch_bfin, /* ADI Blackfin */ |
|
2028 #define bfd_mach_bfin 1 |
|
2029 bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */ |
|
2030 #define bfd_mach_cr16 1 |
|
2031 bfd_arch_cr16c, /* National Semiconductor CompactRISC. */ |
|
2032 #define bfd_mach_cr16c 1 |
|
2033 bfd_arch_crx, /* National Semiconductor CRX. */ |
|
2034 #define bfd_mach_crx 1 |
|
2035 bfd_arch_cris, /* Axis CRIS */ |
|
2036 #define bfd_mach_cris_v0_v10 255 |
|
2037 #define bfd_mach_cris_v32 32 |
|
2038 #define bfd_mach_cris_v10_v32 1032 |
|
2039 bfd_arch_s390, /* IBM s390 */ |
|
2040 #define bfd_mach_s390_31 31 |
|
2041 #define bfd_mach_s390_64 64 |
|
2042 bfd_arch_score, /* Sunplus score */ |
|
2043 bfd_arch_openrisc, /* OpenRISC */ |
|
2044 bfd_arch_mmix, /* Donald Knuth's educational processor. */ |
|
2045 bfd_arch_xstormy16, |
|
2046 #define bfd_mach_xstormy16 1 |
|
2047 bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */ |
|
2048 #define bfd_mach_msp11 11 |
|
2049 #define bfd_mach_msp110 110 |
|
2050 #define bfd_mach_msp12 12 |
|
2051 #define bfd_mach_msp13 13 |
|
2052 #define bfd_mach_msp14 14 |
|
2053 #define bfd_mach_msp15 15 |
|
2054 #define bfd_mach_msp16 16 |
|
2055 #define bfd_mach_msp21 21 |
|
2056 #define bfd_mach_msp31 31 |
|
2057 #define bfd_mach_msp32 32 |
|
2058 #define bfd_mach_msp33 33 |
|
2059 #define bfd_mach_msp41 41 |
|
2060 #define bfd_mach_msp42 42 |
|
2061 #define bfd_mach_msp43 43 |
|
2062 #define bfd_mach_msp44 44 |
|
2063 bfd_arch_xc16x, /* Infineon's XC16X Series. */ |
|
2064 #define bfd_mach_xc16x 1 |
|
2065 #define bfd_mach_xc16xl 2 |
|
2066 #define bfd_mach_xc16xs 3 |
|
2067 bfd_arch_xtensa, /* Tensilica's Xtensa cores. */ |
|
2068 #define bfd_mach_xtensa 1 |
|
2069 bfd_arch_maxq, /* Dallas MAXQ 10/20 */ |
|
2070 #define bfd_mach_maxq10 10 |
|
2071 #define bfd_mach_maxq20 20 |
|
2072 bfd_arch_z80, |
|
2073 #define bfd_mach_z80strict 1 /* No undocumented opcodes. */ |
|
2074 #define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */ |
|
2075 #define bfd_mach_z80full 7 /* All undocumented instructions. */ |
|
2076 #define bfd_mach_r800 11 /* R800: successor with multiplication. */ |
|
2077 bfd_arch_last |
|
2078 }; |
|
2079 |
|
2080 typedef struct bfd_arch_info |
|
2081 { |
|
2082 int bits_per_word; |
|
2083 int bits_per_address; |
|
2084 int bits_per_byte; |
|
2085 enum bfd_architecture arch; |
|
2086 unsigned long mach; |
|
2087 const char *arch_name; |
|
2088 const char *printable_name; |
|
2089 unsigned int section_align_power; |
|
2090 /* TRUE if this is the default machine for the architecture. |
|
2091 The default arch should be the first entry for an arch so that |
|
2092 all the entries for that arch can be accessed via <<next>>. */ |
|
2093 bfd_boolean the_default; |
|
2094 const struct bfd_arch_info * (*compatible) |
|
2095 (const struct bfd_arch_info *a, const struct bfd_arch_info *b); |
|
2096 |
|
2097 bfd_boolean (*scan) (const struct bfd_arch_info *, const char *); |
|
2098 |
|
2099 const struct bfd_arch_info *next; |
|
2100 } |
|
2101 bfd_arch_info_type; |
|
2102 |
|
2103 const char *bfd_printable_name (bfd *abfd); |
|
2104 |
|
2105 const bfd_arch_info_type *bfd_scan_arch (const char *string); |
|
2106 |
|
2107 const char **bfd_arch_list (void); |
|
2108 |
|
2109 const bfd_arch_info_type *bfd_arch_get_compatible |
|
2110 (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns); |
|
2111 |
|
2112 void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg); |
|
2113 |
|
2114 enum bfd_architecture bfd_get_arch (bfd *abfd); |
|
2115 |
|
2116 unsigned long bfd_get_mach (bfd *abfd); |
|
2117 |
|
2118 unsigned int bfd_arch_bits_per_byte (bfd *abfd); |
|
2119 |
|
2120 unsigned int bfd_arch_bits_per_address (bfd *abfd); |
|
2121 |
|
2122 const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd); |
|
2123 |
|
2124 const bfd_arch_info_type *bfd_lookup_arch |
|
2125 (enum bfd_architecture arch, unsigned long machine); |
|
2126 |
|
2127 const char *bfd_printable_arch_mach |
|
2128 (enum bfd_architecture arch, unsigned long machine); |
|
2129 |
|
2130 unsigned int bfd_octets_per_byte (bfd *abfd); |
|
2131 |
|
2132 unsigned int bfd_arch_mach_octets_per_byte |
|
2133 (enum bfd_architecture arch, unsigned long machine); |
|
2134 |
|
2135 /* Extracted from reloc.c. */ |
|
2136 typedef enum bfd_reloc_status |
|
2137 { |
|
2138 /* No errors detected. */ |
|
2139 bfd_reloc_ok, |
|
2140 |
|
2141 /* The relocation was performed, but there was an overflow. */ |
|
2142 bfd_reloc_overflow, |
|
2143 |
|
2144 /* The address to relocate was not within the section supplied. */ |
|
2145 bfd_reloc_outofrange, |
|
2146 |
|
2147 /* Used by special functions. */ |
|
2148 bfd_reloc_continue, |
|
2149 |
|
2150 /* Unsupported relocation size requested. */ |
|
2151 bfd_reloc_notsupported, |
|
2152 |
|
2153 /* Unused. */ |
|
2154 bfd_reloc_other, |
|
2155 |
|
2156 /* The symbol to relocate against was undefined. */ |
|
2157 bfd_reloc_undefined, |
|
2158 |
|
2159 /* The relocation was performed, but may not be ok - presently |
|
2160 generated only when linking i960 coff files with i960 b.out |
|
2161 symbols. If this type is returned, the error_message argument |
|
2162 to bfd_perform_relocation will be set. */ |
|
2163 bfd_reloc_dangerous |
|
2164 } |
|
2165 bfd_reloc_status_type; |
|
2166 |
|
2167 |
|
2168 typedef struct reloc_cache_entry |
|
2169 { |
|
2170 /* A pointer into the canonical table of pointers. */ |
|
2171 struct bfd_symbol **sym_ptr_ptr; |
|
2172 |
|
2173 /* offset in section. */ |
|
2174 bfd_size_type address; |
|
2175 |
|
2176 /* addend for relocation value. */ |
|
2177 bfd_vma addend; |
|
2178 |
|
2179 /* Pointer to how to perform the required relocation. */ |
|
2180 reloc_howto_type *howto; |
|
2181 |
|
2182 } |
|
2183 arelent; |
|
2184 |
|
2185 enum complain_overflow |
|
2186 { |
|
2187 /* Do not complain on overflow. */ |
|
2188 complain_overflow_dont, |
|
2189 |
|
2190 /* Complain if the value overflows when considered as a signed |
|
2191 number one bit larger than the field. ie. A bitfield of N bits |
|
2192 is allowed to represent -2**n to 2**n-1. */ |
|
2193 complain_overflow_bitfield, |
|
2194 |
|
2195 /* Complain if the value overflows when considered as a signed |
|
2196 number. */ |
|
2197 complain_overflow_signed, |
|
2198 |
|
2199 /* Complain if the value overflows when considered as an |
|
2200 unsigned number. */ |
|
2201 complain_overflow_unsigned |
|
2202 }; |
|
2203 |
|
2204 struct reloc_howto_struct |
|
2205 { |
|
2206 /* The type field has mainly a documentary use - the back end can |
|
2207 do what it wants with it, though normally the back end's |
|
2208 external idea of what a reloc number is stored |
|
2209 in this field. For example, a PC relative word relocation |
|
2210 in a coff environment has the type 023 - because that's |
|
2211 what the outside world calls a R_PCRWORD reloc. */ |
|
2212 unsigned int type; |
|
2213 |
|
2214 /* The value the final relocation is shifted right by. This drops |
|
2215 unwanted data from the relocation. */ |
|
2216 unsigned int rightshift; |
|
2217 |
|
2218 /* The size of the item to be relocated. This is *not* a |
|
2219 power-of-two measure. To get the number of bytes operated |
|
2220 on by a type of relocation, use bfd_get_reloc_size. */ |
|
2221 int size; |
|
2222 |
|
2223 /* The number of bits in the item to be relocated. This is used |
|
2224 when doing overflow checking. */ |
|
2225 unsigned int bitsize; |
|
2226 |
|
2227 /* Notes that the relocation is relative to the location in the |
|
2228 data section of the addend. The relocation function will |
|
2229 subtract from the relocation value the address of the location |
|
2230 being relocated. */ |
|
2231 bfd_boolean pc_relative; |
|
2232 |
|
2233 /* The bit position of the reloc value in the destination. |
|
2234 The relocated value is left shifted by this amount. */ |
|
2235 unsigned int bitpos; |
|
2236 |
|
2237 /* What type of overflow error should be checked for when |
|
2238 relocating. */ |
|
2239 enum complain_overflow complain_on_overflow; |
|
2240 |
|
2241 /* If this field is non null, then the supplied function is |
|
2242 called rather than the normal function. This allows really |
|
2243 strange relocation methods to be accommodated (e.g., i960 callj |
|
2244 instructions). */ |
|
2245 bfd_reloc_status_type (*special_function) |
|
2246 (bfd *, arelent *, struct bfd_symbol *, void *, asection *, |
|
2247 bfd *, char **); |
|
2248 |
|
2249 /* The textual name of the relocation type. */ |
|
2250 char *name; |
|
2251 |
|
2252 /* Some formats record a relocation addend in the section contents |
|
2253 rather than with the relocation. For ELF formats this is the |
|
2254 distinction between USE_REL and USE_RELA (though the code checks |
|
2255 for USE_REL == 1/0). The value of this field is TRUE if the |
|
2256 addend is recorded with the section contents; when performing a |
|
2257 partial link (ld -r) the section contents (the data) will be |
|
2258 modified. The value of this field is FALSE if addends are |
|
2259 recorded with the relocation (in arelent.addend); when performing |
|
2260 a partial link the relocation will be modified. |
|
2261 All relocations for all ELF USE_RELA targets should set this field |
|
2262 to FALSE (values of TRUE should be looked on with suspicion). |
|
2263 However, the converse is not true: not all relocations of all ELF |
|
2264 USE_REL targets set this field to TRUE. Why this is so is peculiar |
|
2265 to each particular target. For relocs that aren't used in partial |
|
2266 links (e.g. GOT stuff) it doesn't matter what this is set to. */ |
|
2267 bfd_boolean partial_inplace; |
|
2268 |
|
2269 /* src_mask selects the part of the instruction (or data) to be used |
|
2270 in the relocation sum. If the target relocations don't have an |
|
2271 addend in the reloc, eg. ELF USE_REL, src_mask will normally equal |
|
2272 dst_mask to extract the addend from the section contents. If |
|
2273 relocations do have an addend in the reloc, eg. ELF USE_RELA, this |
|
2274 field should be zero. Non-zero values for ELF USE_RELA targets are |
|
2275 bogus as in those cases the value in the dst_mask part of the |
|
2276 section contents should be treated as garbage. */ |
|
2277 bfd_vma src_mask; |
|
2278 |
|
2279 /* dst_mask selects which parts of the instruction (or data) are |
|
2280 replaced with a relocated value. */ |
|
2281 bfd_vma dst_mask; |
|
2282 |
|
2283 /* When some formats create PC relative instructions, they leave |
|
2284 the value of the pc of the place being relocated in the offset |
|
2285 slot of the instruction, so that a PC relative relocation can |
|
2286 be made just by adding in an ordinary offset (e.g., sun3 a.out). |
|
2287 Some formats leave the displacement part of an instruction |
|
2288 empty (e.g., m88k bcs); this flag signals the fact. */ |
|
2289 bfd_boolean pcrel_offset; |
|
2290 }; |
|
2291 |
|
2292 #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \ |
|
2293 { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC } |
|
2294 #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \ |
|
2295 HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \ |
|
2296 NAME, FALSE, 0, 0, IN) |
|
2297 |
|
2298 #define EMPTY_HOWTO(C) \ |
|
2299 HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \ |
|
2300 NULL, FALSE, 0, 0, FALSE) |
|
2301 |
|
2302 #define HOWTO_PREPARE(relocation, symbol) \ |
|
2303 { \ |
|
2304 if (symbol != NULL) \ |
|
2305 { \ |
|
2306 if (bfd_is_com_section (symbol->section)) \ |
|
2307 { \ |
|
2308 relocation = 0; \ |
|
2309 } \ |
|
2310 else \ |
|
2311 { \ |
|
2312 relocation = symbol->value; \ |
|
2313 } \ |
|
2314 } \ |
|
2315 } |
|
2316 |
|
2317 unsigned int bfd_get_reloc_size (reloc_howto_type *); |
|
2318 |
|
2319 typedef struct relent_chain |
|
2320 { |
|
2321 arelent relent; |
|
2322 struct relent_chain *next; |
|
2323 } |
|
2324 arelent_chain; |
|
2325 |
|
2326 bfd_reloc_status_type bfd_check_overflow |
|
2327 (enum complain_overflow how, |
|
2328 unsigned int bitsize, |
|
2329 unsigned int rightshift, |
|
2330 unsigned int addrsize, |
|
2331 bfd_vma relocation); |
|
2332 |
|
2333 bfd_reloc_status_type bfd_perform_relocation |
|
2334 (bfd *abfd, |
|
2335 arelent *reloc_entry, |
|
2336 void *data, |
|
2337 asection *input_section, |
|
2338 bfd *output_bfd, |
|
2339 char **error_message); |
|
2340 |
|
2341 bfd_reloc_status_type bfd_install_relocation |
|
2342 (bfd *abfd, |
|
2343 arelent *reloc_entry, |
|
2344 void *data, bfd_vma data_start, |
|
2345 asection *input_section, |
|
2346 char **error_message); |
|
2347 |
|
2348 enum bfd_reloc_code_real { |
|
2349 _dummy_first_bfd_reloc_code_real, |
|
2350 |
|
2351 |
|
2352 /* Basic absolute relocations of N bits. */ |
|
2353 BFD_RELOC_64, |
|
2354 BFD_RELOC_32, |
|
2355 BFD_RELOC_26, |
|
2356 BFD_RELOC_24, |
|
2357 BFD_RELOC_16, |
|
2358 BFD_RELOC_14, |
|
2359 BFD_RELOC_8, |
|
2360 |
|
2361 /* PC-relative relocations. Sometimes these are relative to the address |
|
2362 of the relocation itself; sometimes they are relative to the start of |
|
2363 the section containing the relocation. It depends on the specific target. |
|
2364 |
|
2365 The 24-bit relocation is used in some Intel 960 configurations. */ |
|
2366 BFD_RELOC_64_PCREL, |
|
2367 BFD_RELOC_32_PCREL, |
|
2368 BFD_RELOC_24_PCREL, |
|
2369 BFD_RELOC_16_PCREL, |
|
2370 BFD_RELOC_12_PCREL, |
|
2371 BFD_RELOC_8_PCREL, |
|
2372 |
|
2373 /* Section relative relocations. Some targets need this for DWARF2. */ |
|
2374 BFD_RELOC_32_SECREL, |
|
2375 |
|
2376 /* For ELF. */ |
|
2377 BFD_RELOC_32_GOT_PCREL, |
|
2378 BFD_RELOC_16_GOT_PCREL, |
|
2379 BFD_RELOC_8_GOT_PCREL, |
|
2380 BFD_RELOC_32_GOTOFF, |
|
2381 BFD_RELOC_16_GOTOFF, |
|
2382 BFD_RELOC_LO16_GOTOFF, |
|
2383 BFD_RELOC_HI16_GOTOFF, |
|
2384 BFD_RELOC_HI16_S_GOTOFF, |
|
2385 BFD_RELOC_8_GOTOFF, |
|
2386 BFD_RELOC_64_PLT_PCREL, |
|
2387 BFD_RELOC_32_PLT_PCREL, |
|
2388 BFD_RELOC_24_PLT_PCREL, |
|
2389 BFD_RELOC_16_PLT_PCREL, |
|
2390 BFD_RELOC_8_PLT_PCREL, |
|
2391 BFD_RELOC_64_PLTOFF, |
|
2392 BFD_RELOC_32_PLTOFF, |
|
2393 BFD_RELOC_16_PLTOFF, |
|
2394 BFD_RELOC_LO16_PLTOFF, |
|
2395 BFD_RELOC_HI16_PLTOFF, |
|
2396 BFD_RELOC_HI16_S_PLTOFF, |
|
2397 BFD_RELOC_8_PLTOFF, |
|
2398 |
|
2399 /* Relocations used by 68K ELF. */ |
|
2400 BFD_RELOC_68K_GLOB_DAT, |
|
2401 BFD_RELOC_68K_JMP_SLOT, |
|
2402 BFD_RELOC_68K_RELATIVE, |
|
2403 |
|
2404 /* Linkage-table relative. */ |
|
2405 BFD_RELOC_32_BASEREL, |
|
2406 BFD_RELOC_16_BASEREL, |
|
2407 BFD_RELOC_LO16_BASEREL, |
|
2408 BFD_RELOC_HI16_BASEREL, |
|
2409 BFD_RELOC_HI16_S_BASEREL, |
|
2410 BFD_RELOC_8_BASEREL, |
|
2411 BFD_RELOC_RVA, |
|
2412 |
|
2413 /* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */ |
|
2414 BFD_RELOC_8_FFnn, |
|
2415 |
|
2416 /* These PC-relative relocations are stored as word displacements -- |
|
2417 i.e., byte displacements shifted right two bits. The 30-bit word |
|
2418 displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the |
|
2419 SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The |
|
2420 signed 16-bit displacement is used on the MIPS, and the 23-bit |
|
2421 displacement is used on the Alpha. */ |
|
2422 BFD_RELOC_32_PCREL_S2, |
|
2423 BFD_RELOC_16_PCREL_S2, |
|
2424 BFD_RELOC_23_PCREL_S2, |
|
2425 |
|
2426 /* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of |
|
2427 the target word. These are used on the SPARC. */ |
|
2428 BFD_RELOC_HI22, |
|
2429 BFD_RELOC_LO10, |
|
2430 |
|
2431 /* For systems that allocate a Global Pointer register, these are |
|
2432 displacements off that register. These relocation types are |
|
2433 handled specially, because the value the register will have is |
|
2434 decided relatively late. */ |
|
2435 BFD_RELOC_GPREL16, |
|
2436 BFD_RELOC_GPREL32, |
|
2437 |
|
2438 /* Reloc types used for i960/b.out. */ |
|
2439 BFD_RELOC_I960_CALLJ, |
|
2440 |
|
2441 /* SPARC ELF relocations. There is probably some overlap with other |
|
2442 relocation types already defined. */ |
|
2443 BFD_RELOC_NONE, |
|
2444 BFD_RELOC_SPARC_WDISP22, |
|
2445 BFD_RELOC_SPARC22, |
|
2446 BFD_RELOC_SPARC13, |
|
2447 BFD_RELOC_SPARC_GOT10, |
|
2448 BFD_RELOC_SPARC_GOT13, |
|
2449 BFD_RELOC_SPARC_GOT22, |
|
2450 BFD_RELOC_SPARC_PC10, |
|
2451 BFD_RELOC_SPARC_PC22, |
|
2452 BFD_RELOC_SPARC_WPLT30, |
|
2453 BFD_RELOC_SPARC_COPY, |
|
2454 BFD_RELOC_SPARC_GLOB_DAT, |
|
2455 BFD_RELOC_SPARC_JMP_SLOT, |
|
2456 BFD_RELOC_SPARC_RELATIVE, |
|
2457 BFD_RELOC_SPARC_UA16, |
|
2458 BFD_RELOC_SPARC_UA32, |
|
2459 BFD_RELOC_SPARC_UA64, |
|
2460 |
|
2461 /* I think these are specific to SPARC a.out (e.g., Sun 4). */ |
|
2462 BFD_RELOC_SPARC_BASE13, |
|
2463 BFD_RELOC_SPARC_BASE22, |
|
2464 |
|
2465 /* SPARC64 relocations */ |
|
2466 #define BFD_RELOC_SPARC_64 BFD_RELOC_64 |
|
2467 BFD_RELOC_SPARC_10, |
|
2468 BFD_RELOC_SPARC_11, |
|
2469 BFD_RELOC_SPARC_OLO10, |
|
2470 BFD_RELOC_SPARC_HH22, |
|
2471 BFD_RELOC_SPARC_HM10, |
|
2472 BFD_RELOC_SPARC_LM22, |
|
2473 BFD_RELOC_SPARC_PC_HH22, |
|
2474 BFD_RELOC_SPARC_PC_HM10, |
|
2475 BFD_RELOC_SPARC_PC_LM22, |
|
2476 BFD_RELOC_SPARC_WDISP16, |
|
2477 BFD_RELOC_SPARC_WDISP19, |
|
2478 BFD_RELOC_SPARC_7, |
|
2479 BFD_RELOC_SPARC_6, |
|
2480 BFD_RELOC_SPARC_5, |
|
2481 #define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL |
|
2482 BFD_RELOC_SPARC_PLT32, |
|
2483 BFD_RELOC_SPARC_PLT64, |
|
2484 BFD_RELOC_SPARC_HIX22, |
|
2485 BFD_RELOC_SPARC_LOX10, |
|
2486 BFD_RELOC_SPARC_H44, |
|
2487 BFD_RELOC_SPARC_M44, |
|
2488 BFD_RELOC_SPARC_L44, |
|
2489 BFD_RELOC_SPARC_REGISTER, |
|
2490 |
|
2491 /* SPARC little endian relocation */ |
|
2492 BFD_RELOC_SPARC_REV32, |
|
2493 |
|
2494 /* SPARC TLS relocations */ |
|
2495 BFD_RELOC_SPARC_TLS_GD_HI22, |
|
2496 BFD_RELOC_SPARC_TLS_GD_LO10, |
|
2497 BFD_RELOC_SPARC_TLS_GD_ADD, |
|
2498 BFD_RELOC_SPARC_TLS_GD_CALL, |
|
2499 BFD_RELOC_SPARC_TLS_LDM_HI22, |
|
2500 BFD_RELOC_SPARC_TLS_LDM_LO10, |
|
2501 BFD_RELOC_SPARC_TLS_LDM_ADD, |
|
2502 BFD_RELOC_SPARC_TLS_LDM_CALL, |
|
2503 BFD_RELOC_SPARC_TLS_LDO_HIX22, |
|
2504 BFD_RELOC_SPARC_TLS_LDO_LOX10, |
|
2505 BFD_RELOC_SPARC_TLS_LDO_ADD, |
|
2506 BFD_RELOC_SPARC_TLS_IE_HI22, |
|
2507 BFD_RELOC_SPARC_TLS_IE_LO10, |
|
2508 BFD_RELOC_SPARC_TLS_IE_LD, |
|
2509 BFD_RELOC_SPARC_TLS_IE_LDX, |
|
2510 BFD_RELOC_SPARC_TLS_IE_ADD, |
|
2511 BFD_RELOC_SPARC_TLS_LE_HIX22, |
|
2512 BFD_RELOC_SPARC_TLS_LE_LOX10, |
|
2513 BFD_RELOC_SPARC_TLS_DTPMOD32, |
|
2514 BFD_RELOC_SPARC_TLS_DTPMOD64, |
|
2515 BFD_RELOC_SPARC_TLS_DTPOFF32, |
|
2516 BFD_RELOC_SPARC_TLS_DTPOFF64, |
|
2517 BFD_RELOC_SPARC_TLS_TPOFF32, |
|
2518 BFD_RELOC_SPARC_TLS_TPOFF64, |
|
2519 |
|
2520 /* SPU Relocations. */ |
|
2521 BFD_RELOC_SPU_IMM7, |
|
2522 BFD_RELOC_SPU_IMM8, |
|
2523 BFD_RELOC_SPU_IMM10, |
|
2524 BFD_RELOC_SPU_IMM10W, |
|
2525 BFD_RELOC_SPU_IMM16, |
|
2526 BFD_RELOC_SPU_IMM16W, |
|
2527 BFD_RELOC_SPU_IMM18, |
|
2528 BFD_RELOC_SPU_PCREL9a, |
|
2529 BFD_RELOC_SPU_PCREL9b, |
|
2530 BFD_RELOC_SPU_PCREL16, |
|
2531 BFD_RELOC_SPU_LO16, |
|
2532 BFD_RELOC_SPU_HI16, |
|
2533 BFD_RELOC_SPU_PPU32, |
|
2534 BFD_RELOC_SPU_PPU64, |
|
2535 |
|
2536 /* Alpha ECOFF and ELF relocations. Some of these treat the symbol or |
|
2537 "addend" in some special way. |
|
2538 For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when |
|
2539 writing; when reading, it will be the absolute section symbol. The |
|
2540 addend is the displacement in bytes of the "lda" instruction from |
|
2541 the "ldah" instruction (which is at the address of this reloc). */ |
|
2542 BFD_RELOC_ALPHA_GPDISP_HI16, |
|
2543 |
|
2544 /* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as |
|
2545 with GPDISP_HI16 relocs. The addend is ignored when writing the |
|
2546 relocations out, and is filled in with the file's GP value on |
|
2547 reading, for convenience. */ |
|
2548 BFD_RELOC_ALPHA_GPDISP_LO16, |
|
2549 |
|
2550 /* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16 |
|
2551 relocation except that there is no accompanying GPDISP_LO16 |
|
2552 relocation. */ |
|
2553 BFD_RELOC_ALPHA_GPDISP, |
|
2554 |
|
2555 /* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference; |
|
2556 the assembler turns it into a LDQ instruction to load the address of |
|
2557 the symbol, and then fills in a register in the real instruction. |
|
2558 |
|
2559 The LITERAL reloc, at the LDQ instruction, refers to the .lita |
|
2560 section symbol. The addend is ignored when writing, but is filled |
|
2561 in with the file's GP value on reading, for convenience, as with the |
|
2562 GPDISP_LO16 reloc. |
|
2563 |
|
2564 The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16. |
|
2565 It should refer to the symbol to be referenced, as with 16_GOTOFF, |
|
2566 but it generates output not based on the position within the .got |
|
2567 section, but relative to the GP value chosen for the file during the |
|
2568 final link stage. |
|
2569 |
|
2570 The LITUSE reloc, on the instruction using the loaded address, gives |
|
2571 information to the linker that it might be able to use to optimize |
|
2572 away some literal section references. The symbol is ignored (read |
|
2573 as the absolute section symbol), and the "addend" indicates the type |
|
2574 of instruction using the register: |
|
2575 1 - "memory" fmt insn |
|
2576 2 - byte-manipulation (byte offset reg) |
|
2577 3 - jsr (target of branch) */ |
|
2578 BFD_RELOC_ALPHA_LITERAL, |
|
2579 BFD_RELOC_ALPHA_ELF_LITERAL, |
|
2580 BFD_RELOC_ALPHA_LITUSE, |
|
2581 |
|
2582 /* The HINT relocation indicates a value that should be filled into the |
|
2583 "hint" field of a jmp/jsr/ret instruction, for possible branch- |
|
2584 prediction logic which may be provided on some processors. */ |
|
2585 BFD_RELOC_ALPHA_HINT, |
|
2586 |
|
2587 /* The LINKAGE relocation outputs a linkage pair in the object file, |
|
2588 which is filled by the linker. */ |
|
2589 BFD_RELOC_ALPHA_LINKAGE, |
|
2590 |
|
2591 /* The CODEADDR relocation outputs a STO_CA in the object file, |
|
2592 which is filled by the linker. */ |
|
2593 BFD_RELOC_ALPHA_CODEADDR, |
|
2594 |
|
2595 /* The GPREL_HI/LO relocations together form a 32-bit offset from the |
|
2596 GP register. */ |
|
2597 BFD_RELOC_ALPHA_GPREL_HI16, |
|
2598 BFD_RELOC_ALPHA_GPREL_LO16, |
|
2599 |
|
2600 /* Like BFD_RELOC_23_PCREL_S2, except that the source and target must |
|
2601 share a common GP, and the target address is adjusted for |
|
2602 STO_ALPHA_STD_GPLOAD. */ |
|
2603 BFD_RELOC_ALPHA_BRSGP, |
|
2604 |
|
2605 /* Alpha thread-local storage relocations. */ |
|
2606 BFD_RELOC_ALPHA_TLSGD, |
|
2607 BFD_RELOC_ALPHA_TLSLDM, |
|
2608 BFD_RELOC_ALPHA_DTPMOD64, |
|
2609 BFD_RELOC_ALPHA_GOTDTPREL16, |
|
2610 BFD_RELOC_ALPHA_DTPREL64, |
|
2611 BFD_RELOC_ALPHA_DTPREL_HI16, |
|
2612 BFD_RELOC_ALPHA_DTPREL_LO16, |
|
2613 BFD_RELOC_ALPHA_DTPREL16, |
|
2614 BFD_RELOC_ALPHA_GOTTPREL16, |
|
2615 BFD_RELOC_ALPHA_TPREL64, |
|
2616 BFD_RELOC_ALPHA_TPREL_HI16, |
|
2617 BFD_RELOC_ALPHA_TPREL_LO16, |
|
2618 BFD_RELOC_ALPHA_TPREL16, |
|
2619 |
|
2620 /* Bits 27..2 of the relocation address shifted right 2 bits; |
|
2621 simple reloc otherwise. */ |
|
2622 BFD_RELOC_MIPS_JMP, |
|
2623 |
|
2624 /* The MIPS16 jump instruction. */ |
|
2625 BFD_RELOC_MIPS16_JMP, |
|
2626 |
|
2627 /* MIPS16 GP relative reloc. */ |
|
2628 BFD_RELOC_MIPS16_GPREL, |
|
2629 |
|
2630 /* High 16 bits of 32-bit value; simple reloc. */ |
|
2631 BFD_RELOC_HI16, |
|
2632 |
|
2633 /* High 16 bits of 32-bit value but the low 16 bits will be sign |
|
2634 extended and added to form the final result. If the low 16 |
|
2635 bits form a negative number, we need to add one to the high value |
|
2636 to compensate for the borrow when the low bits are added. */ |
|
2637 BFD_RELOC_HI16_S, |
|
2638 |
|
2639 /* Low 16 bits. */ |
|
2640 BFD_RELOC_LO16, |
|
2641 |
|
2642 /* High 16 bits of 32-bit pc-relative value */ |
|
2643 BFD_RELOC_HI16_PCREL, |
|
2644 |
|
2645 /* High 16 bits of 32-bit pc-relative value, adjusted */ |
|
2646 BFD_RELOC_HI16_S_PCREL, |
|
2647 |
|
2648 /* Low 16 bits of pc-relative value */ |
|
2649 BFD_RELOC_LO16_PCREL, |
|
2650 |
|
2651 /* MIPS16 high 16 bits of 32-bit value. */ |
|
2652 BFD_RELOC_MIPS16_HI16, |
|
2653 |
|
2654 /* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign |
|
2655 extended and added to form the final result. If the low 16 |
|
2656 bits form a negative number, we need to add one to the high value |
|
2657 to compensate for the borrow when the low bits are added. */ |
|
2658 BFD_RELOC_MIPS16_HI16_S, |
|
2659 |
|
2660 /* MIPS16 low 16 bits. */ |
|
2661 BFD_RELOC_MIPS16_LO16, |
|
2662 |
|
2663 /* Relocation against a MIPS literal section. */ |
|
2664 BFD_RELOC_MIPS_LITERAL, |
|
2665 |
|
2666 /* MIPS ELF relocations. */ |
|
2667 BFD_RELOC_MIPS_GOT16, |
|
2668 BFD_RELOC_MIPS_CALL16, |
|
2669 BFD_RELOC_MIPS_GOT_HI16, |
|
2670 BFD_RELOC_MIPS_GOT_LO16, |
|
2671 BFD_RELOC_MIPS_CALL_HI16, |
|
2672 BFD_RELOC_MIPS_CALL_LO16, |
|
2673 BFD_RELOC_MIPS_SUB, |
|
2674 BFD_RELOC_MIPS_GOT_PAGE, |
|
2675 BFD_RELOC_MIPS_GOT_OFST, |
|
2676 BFD_RELOC_MIPS_GOT_DISP, |
|
2677 BFD_RELOC_MIPS_SHIFT5, |
|
2678 BFD_RELOC_MIPS_SHIFT6, |
|
2679 BFD_RELOC_MIPS_INSERT_A, |
|
2680 BFD_RELOC_MIPS_INSERT_B, |
|
2681 BFD_RELOC_MIPS_DELETE, |
|
2682 BFD_RELOC_MIPS_HIGHEST, |
|
2683 BFD_RELOC_MIPS_HIGHER, |
|
2684 BFD_RELOC_MIPS_SCN_DISP, |
|
2685 BFD_RELOC_MIPS_REL16, |
|
2686 BFD_RELOC_MIPS_RELGOT, |
|
2687 BFD_RELOC_MIPS_JALR, |
|
2688 BFD_RELOC_MIPS_TLS_DTPMOD32, |
|
2689 BFD_RELOC_MIPS_TLS_DTPREL32, |
|
2690 BFD_RELOC_MIPS_TLS_DTPMOD64, |
|
2691 BFD_RELOC_MIPS_TLS_DTPREL64, |
|
2692 BFD_RELOC_MIPS_TLS_GD, |
|
2693 BFD_RELOC_MIPS_TLS_LDM, |
|
2694 BFD_RELOC_MIPS_TLS_DTPREL_HI16, |
|
2695 BFD_RELOC_MIPS_TLS_DTPREL_LO16, |
|
2696 BFD_RELOC_MIPS_TLS_GOTTPREL, |
|
2697 BFD_RELOC_MIPS_TLS_TPREL32, |
|
2698 BFD_RELOC_MIPS_TLS_TPREL64, |
|
2699 BFD_RELOC_MIPS_TLS_TPREL_HI16, |
|
2700 BFD_RELOC_MIPS_TLS_TPREL_LO16, |
|
2701 |
|
2702 |
|
2703 /* MIPS ELF relocations (VxWorks extensions). */ |
|
2704 BFD_RELOC_MIPS_COPY, |
|
2705 BFD_RELOC_MIPS_JUMP_SLOT, |
|
2706 |
|
2707 |
|
2708 /* Fujitsu Frv Relocations. */ |
|
2709 BFD_RELOC_FRV_LABEL16, |
|
2710 BFD_RELOC_FRV_LABEL24, |
|
2711 BFD_RELOC_FRV_LO16, |
|
2712 BFD_RELOC_FRV_HI16, |
|
2713 BFD_RELOC_FRV_GPREL12, |
|
2714 BFD_RELOC_FRV_GPRELU12, |
|
2715 BFD_RELOC_FRV_GPREL32, |
|
2716 BFD_RELOC_FRV_GPRELHI, |
|
2717 BFD_RELOC_FRV_GPRELLO, |
|
2718 BFD_RELOC_FRV_GOT12, |
|
2719 BFD_RELOC_FRV_GOTHI, |
|
2720 BFD_RELOC_FRV_GOTLO, |
|
2721 BFD_RELOC_FRV_FUNCDESC, |
|
2722 BFD_RELOC_FRV_FUNCDESC_GOT12, |
|
2723 BFD_RELOC_FRV_FUNCDESC_GOTHI, |
|
2724 BFD_RELOC_FRV_FUNCDESC_GOTLO, |
|
2725 BFD_RELOC_FRV_FUNCDESC_VALUE, |
|
2726 BFD_RELOC_FRV_FUNCDESC_GOTOFF12, |
|
2727 BFD_RELOC_FRV_FUNCDESC_GOTOFFHI, |
|
2728 BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, |
|
2729 BFD_RELOC_FRV_GOTOFF12, |
|
2730 BFD_RELOC_FRV_GOTOFFHI, |
|
2731 BFD_RELOC_FRV_GOTOFFLO, |
|
2732 BFD_RELOC_FRV_GETTLSOFF, |
|
2733 BFD_RELOC_FRV_TLSDESC_VALUE, |
|
2734 BFD_RELOC_FRV_GOTTLSDESC12, |
|
2735 BFD_RELOC_FRV_GOTTLSDESCHI, |
|
2736 BFD_RELOC_FRV_GOTTLSDESCLO, |
|
2737 BFD_RELOC_FRV_TLSMOFF12, |
|
2738 BFD_RELOC_FRV_TLSMOFFHI, |
|
2739 BFD_RELOC_FRV_TLSMOFFLO, |
|
2740 BFD_RELOC_FRV_GOTTLSOFF12, |
|
2741 BFD_RELOC_FRV_GOTTLSOFFHI, |
|
2742 BFD_RELOC_FRV_GOTTLSOFFLO, |
|
2743 BFD_RELOC_FRV_TLSOFF, |
|
2744 BFD_RELOC_FRV_TLSDESC_RELAX, |
|
2745 BFD_RELOC_FRV_GETTLSOFF_RELAX, |
|
2746 BFD_RELOC_FRV_TLSOFF_RELAX, |
|
2747 BFD_RELOC_FRV_TLSMOFF, |
|
2748 |
|
2749 |
|
2750 /* This is a 24bit GOT-relative reloc for the mn10300. */ |
|
2751 BFD_RELOC_MN10300_GOTOFF24, |
|
2752 |
|
2753 /* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes |
|
2754 in the instruction. */ |
|
2755 BFD_RELOC_MN10300_GOT32, |
|
2756 |
|
2757 /* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes |
|
2758 in the instruction. */ |
|
2759 BFD_RELOC_MN10300_GOT24, |
|
2760 |
|
2761 /* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes |
|
2762 in the instruction. */ |
|
2763 BFD_RELOC_MN10300_GOT16, |
|
2764 |
|
2765 /* Copy symbol at runtime. */ |
|
2766 BFD_RELOC_MN10300_COPY, |
|
2767 |
|
2768 /* Create GOT entry. */ |
|
2769 BFD_RELOC_MN10300_GLOB_DAT, |
|
2770 |
|
2771 /* Create PLT entry. */ |
|
2772 BFD_RELOC_MN10300_JMP_SLOT, |
|
2773 |
|
2774 /* Adjust by program base. */ |
|
2775 BFD_RELOC_MN10300_RELATIVE, |
|
2776 |
|
2777 /* Together with another reloc targeted at the same location, |
|
2778 allows for a value that is the difference of two symbols |
|
2779 in the same section. */ |
|
2780 BFD_RELOC_MN10300_SYM_DIFF, |
|
2781 |
|
2782 /* The addend of this reloc is an alignment power that must |
|
2783 be honoured at the offset's location, regardless of linker |
|
2784 relaxation. */ |
|
2785 BFD_RELOC_MN10300_ALIGN, |
|
2786 |
|
2787 |
|
2788 /* i386/elf relocations */ |
|
2789 BFD_RELOC_386_GOT32, |
|
2790 BFD_RELOC_386_PLT32, |
|
2791 BFD_RELOC_386_COPY, |
|
2792 BFD_RELOC_386_GLOB_DAT, |
|
2793 BFD_RELOC_386_JUMP_SLOT, |
|
2794 BFD_RELOC_386_RELATIVE, |
|
2795 BFD_RELOC_386_GOTOFF, |
|
2796 BFD_RELOC_386_GOTPC, |
|
2797 BFD_RELOC_386_TLS_TPOFF, |
|
2798 BFD_RELOC_386_TLS_IE, |
|
2799 BFD_RELOC_386_TLS_GOTIE, |
|
2800 BFD_RELOC_386_TLS_LE, |
|
2801 BFD_RELOC_386_TLS_GD, |
|
2802 BFD_RELOC_386_TLS_LDM, |
|
2803 BFD_RELOC_386_TLS_LDO_32, |
|
2804 BFD_RELOC_386_TLS_IE_32, |
|
2805 BFD_RELOC_386_TLS_LE_32, |
|
2806 BFD_RELOC_386_TLS_DTPMOD32, |
|
2807 BFD_RELOC_386_TLS_DTPOFF32, |
|
2808 BFD_RELOC_386_TLS_TPOFF32, |
|
2809 BFD_RELOC_386_TLS_GOTDESC, |
|
2810 BFD_RELOC_386_TLS_DESC_CALL, |
|
2811 BFD_RELOC_386_TLS_DESC, |
|
2812 |
|
2813 /* x86-64/elf relocations */ |
|
2814 BFD_RELOC_X86_64_GOT32, |
|
2815 BFD_RELOC_X86_64_PLT32, |
|
2816 BFD_RELOC_X86_64_COPY, |
|
2817 BFD_RELOC_X86_64_GLOB_DAT, |
|
2818 BFD_RELOC_X86_64_JUMP_SLOT, |
|
2819 BFD_RELOC_X86_64_RELATIVE, |
|
2820 BFD_RELOC_X86_64_GOTPCREL, |
|
2821 BFD_RELOC_X86_64_32S, |
|
2822 BFD_RELOC_X86_64_DTPMOD64, |
|
2823 BFD_RELOC_X86_64_DTPOFF64, |
|
2824 BFD_RELOC_X86_64_TPOFF64, |
|
2825 BFD_RELOC_X86_64_TLSGD, |
|
2826 BFD_RELOC_X86_64_TLSLD, |
|
2827 BFD_RELOC_X86_64_DTPOFF32, |
|
2828 BFD_RELOC_X86_64_GOTTPOFF, |
|
2829 BFD_RELOC_X86_64_TPOFF32, |
|
2830 BFD_RELOC_X86_64_GOTOFF64, |
|
2831 BFD_RELOC_X86_64_GOTPC32, |
|
2832 BFD_RELOC_X86_64_GOT64, |
|
2833 BFD_RELOC_X86_64_GOTPCREL64, |
|
2834 BFD_RELOC_X86_64_GOTPC64, |
|
2835 BFD_RELOC_X86_64_GOTPLT64, |
|
2836 BFD_RELOC_X86_64_PLTOFF64, |
|
2837 BFD_RELOC_X86_64_GOTPC32_TLSDESC, |
|
2838 BFD_RELOC_X86_64_TLSDESC_CALL, |
|
2839 BFD_RELOC_X86_64_TLSDESC, |
|
2840 |
|
2841 /* ns32k relocations */ |
|
2842 BFD_RELOC_NS32K_IMM_8, |
|
2843 BFD_RELOC_NS32K_IMM_16, |
|
2844 BFD_RELOC_NS32K_IMM_32, |
|
2845 BFD_RELOC_NS32K_IMM_8_PCREL, |
|
2846 BFD_RELOC_NS32K_IMM_16_PCREL, |
|
2847 BFD_RELOC_NS32K_IMM_32_PCREL, |
|
2848 BFD_RELOC_NS32K_DISP_8, |
|
2849 BFD_RELOC_NS32K_DISP_16, |
|
2850 BFD_RELOC_NS32K_DISP_32, |
|
2851 BFD_RELOC_NS32K_DISP_8_PCREL, |
|
2852 BFD_RELOC_NS32K_DISP_16_PCREL, |
|
2853 BFD_RELOC_NS32K_DISP_32_PCREL, |
|
2854 |
|
2855 /* PDP11 relocations */ |
|
2856 BFD_RELOC_PDP11_DISP_8_PCREL, |
|
2857 BFD_RELOC_PDP11_DISP_6_PCREL, |
|
2858 |
|
2859 /* Picojava relocs. Not all of these appear in object files. */ |
|
2860 BFD_RELOC_PJ_CODE_HI16, |
|
2861 BFD_RELOC_PJ_CODE_LO16, |
|
2862 BFD_RELOC_PJ_CODE_DIR16, |
|
2863 BFD_RELOC_PJ_CODE_DIR32, |
|
2864 BFD_RELOC_PJ_CODE_REL16, |
|
2865 BFD_RELOC_PJ_CODE_REL32, |
|
2866 |
|
2867 /* Power(rs6000) and PowerPC relocations. */ |
|
2868 BFD_RELOC_PPC_B26, |
|
2869 BFD_RELOC_PPC_BA26, |
|
2870 BFD_RELOC_PPC_TOC16, |
|
2871 BFD_RELOC_PPC_B16, |
|
2872 BFD_RELOC_PPC_B16_BRTAKEN, |
|
2873 BFD_RELOC_PPC_B16_BRNTAKEN, |
|
2874 BFD_RELOC_PPC_BA16, |
|
2875 BFD_RELOC_PPC_BA16_BRTAKEN, |
|
2876 BFD_RELOC_PPC_BA16_BRNTAKEN, |
|
2877 BFD_RELOC_PPC_COPY, |
|
2878 BFD_RELOC_PPC_GLOB_DAT, |
|
2879 BFD_RELOC_PPC_JMP_SLOT, |
|
2880 BFD_RELOC_PPC_RELATIVE, |
|
2881 BFD_RELOC_PPC_LOCAL24PC, |
|
2882 BFD_RELOC_PPC_EMB_NADDR32, |
|
2883 BFD_RELOC_PPC_EMB_NADDR16, |
|
2884 BFD_RELOC_PPC_EMB_NADDR16_LO, |
|
2885 BFD_RELOC_PPC_EMB_NADDR16_HI, |
|
2886 BFD_RELOC_PPC_EMB_NADDR16_HA, |
|
2887 BFD_RELOC_PPC_EMB_SDAI16, |
|
2888 BFD_RELOC_PPC_EMB_SDA2I16, |
|
2889 BFD_RELOC_PPC_EMB_SDA2REL, |
|
2890 BFD_RELOC_PPC_EMB_SDA21, |
|
2891 BFD_RELOC_PPC_EMB_MRKREF, |
|
2892 BFD_RELOC_PPC_EMB_RELSEC16, |
|
2893 BFD_RELOC_PPC_EMB_RELST_LO, |
|
2894 BFD_RELOC_PPC_EMB_RELST_HI, |
|
2895 BFD_RELOC_PPC_EMB_RELST_HA, |
|
2896 BFD_RELOC_PPC_EMB_BIT_FLD, |
|
2897 BFD_RELOC_PPC_EMB_RELSDA, |
|
2898 BFD_RELOC_PPC64_HIGHER, |
|
2899 BFD_RELOC_PPC64_HIGHER_S, |
|
2900 BFD_RELOC_PPC64_HIGHEST, |
|
2901 BFD_RELOC_PPC64_HIGHEST_S, |
|
2902 BFD_RELOC_PPC64_TOC16_LO, |
|
2903 BFD_RELOC_PPC64_TOC16_HI, |
|
2904 BFD_RELOC_PPC64_TOC16_HA, |
|
2905 BFD_RELOC_PPC64_TOC, |
|
2906 BFD_RELOC_PPC64_PLTGOT16, |
|
2907 BFD_RELOC_PPC64_PLTGOT16_LO, |
|
2908 BFD_RELOC_PPC64_PLTGOT16_HI, |
|
2909 BFD_RELOC_PPC64_PLTGOT16_HA, |
|
2910 BFD_RELOC_PPC64_ADDR16_DS, |
|
2911 BFD_RELOC_PPC64_ADDR16_LO_DS, |
|
2912 BFD_RELOC_PPC64_GOT16_DS, |
|
2913 BFD_RELOC_PPC64_GOT16_LO_DS, |
|
2914 BFD_RELOC_PPC64_PLT16_LO_DS, |
|
2915 BFD_RELOC_PPC64_SECTOFF_DS, |
|
2916 BFD_RELOC_PPC64_SECTOFF_LO_DS, |
|
2917 BFD_RELOC_PPC64_TOC16_DS, |
|
2918 BFD_RELOC_PPC64_TOC16_LO_DS, |
|
2919 BFD_RELOC_PPC64_PLTGOT16_DS, |
|
2920 BFD_RELOC_PPC64_PLTGOT16_LO_DS, |
|
2921 |
|
2922 /* PowerPC and PowerPC64 thread-local storage relocations. */ |
|
2923 BFD_RELOC_PPC_TLS, |
|
2924 BFD_RELOC_PPC_DTPMOD, |
|
2925 BFD_RELOC_PPC_TPREL16, |
|
2926 BFD_RELOC_PPC_TPREL16_LO, |
|
2927 BFD_RELOC_PPC_TPREL16_HI, |
|
2928 BFD_RELOC_PPC_TPREL16_HA, |
|
2929 BFD_RELOC_PPC_TPREL, |
|
2930 BFD_RELOC_PPC_DTPREL16, |
|
2931 BFD_RELOC_PPC_DTPREL16_LO, |
|
2932 BFD_RELOC_PPC_DTPREL16_HI, |
|
2933 BFD_RELOC_PPC_DTPREL16_HA, |
|
2934 BFD_RELOC_PPC_DTPREL, |
|
2935 BFD_RELOC_PPC_GOT_TLSGD16, |
|
2936 BFD_RELOC_PPC_GOT_TLSGD16_LO, |
|
2937 BFD_RELOC_PPC_GOT_TLSGD16_HI, |
|
2938 BFD_RELOC_PPC_GOT_TLSGD16_HA, |
|
2939 BFD_RELOC_PPC_GOT_TLSLD16, |
|
2940 BFD_RELOC_PPC_GOT_TLSLD16_LO, |
|
2941 BFD_RELOC_PPC_GOT_TLSLD16_HI, |
|
2942 BFD_RELOC_PPC_GOT_TLSLD16_HA, |
|
2943 BFD_RELOC_PPC_GOT_TPREL16, |
|
2944 BFD_RELOC_PPC_GOT_TPREL16_LO, |
|
2945 BFD_RELOC_PPC_GOT_TPREL16_HI, |
|
2946 BFD_RELOC_PPC_GOT_TPREL16_HA, |
|
2947 BFD_RELOC_PPC_GOT_DTPREL16, |
|
2948 BFD_RELOC_PPC_GOT_DTPREL16_LO, |
|
2949 BFD_RELOC_PPC_GOT_DTPREL16_HI, |
|
2950 BFD_RELOC_PPC_GOT_DTPREL16_HA, |
|
2951 BFD_RELOC_PPC64_TPREL16_DS, |
|
2952 BFD_RELOC_PPC64_TPREL16_LO_DS, |
|
2953 BFD_RELOC_PPC64_TPREL16_HIGHER, |
|
2954 BFD_RELOC_PPC64_TPREL16_HIGHERA, |
|
2955 BFD_RELOC_PPC64_TPREL16_HIGHEST, |
|
2956 BFD_RELOC_PPC64_TPREL16_HIGHESTA, |
|
2957 BFD_RELOC_PPC64_DTPREL16_DS, |
|
2958 BFD_RELOC_PPC64_DTPREL16_LO_DS, |
|
2959 BFD_RELOC_PPC64_DTPREL16_HIGHER, |
|
2960 BFD_RELOC_PPC64_DTPREL16_HIGHERA, |
|
2961 BFD_RELOC_PPC64_DTPREL16_HIGHEST, |
|
2962 BFD_RELOC_PPC64_DTPREL16_HIGHESTA, |
|
2963 |
|
2964 /* IBM 370/390 relocations */ |
|
2965 BFD_RELOC_I370_D12, |
|
2966 |
|
2967 /* The type of reloc used to build a constructor table - at the moment |
|
2968 probably a 32 bit wide absolute relocation, but the target can choose. |
|
2969 It generally does map to one of the other relocation types. */ |
|
2970 BFD_RELOC_CTOR, |
|
2971 |
|
2972 /* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are |
|
2973 not stored in the instruction. */ |
|
2974 BFD_RELOC_ARM_PCREL_BRANCH, |
|
2975 |
|
2976 /* ARM 26 bit pc-relative branch. The lowest bit must be zero and is |
|
2977 not stored in the instruction. The 2nd lowest bit comes from a 1 bit |
|
2978 field in the instruction. */ |
|
2979 BFD_RELOC_ARM_PCREL_BLX, |
|
2980 |
|
2981 /* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is |
|
2982 not stored in the instruction. The 2nd lowest bit comes from a 1 bit |
|
2983 field in the instruction. */ |
|
2984 BFD_RELOC_THUMB_PCREL_BLX, |
|
2985 |
|
2986 /* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */ |
|
2987 BFD_RELOC_ARM_PCREL_CALL, |
|
2988 |
|
2989 /* ARM 26-bit pc-relative branch for B or conditional BL instruction. */ |
|
2990 BFD_RELOC_ARM_PCREL_JUMP, |
|
2991 |
|
2992 /* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches. |
|
2993 The lowest bit must be zero and is not stored in the instruction. |
|
2994 Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an |
|
2995 "nn" one smaller in all cases. Note further that BRANCH23 |
|
2996 corresponds to R_ARM_THM_CALL. */ |
|
2997 BFD_RELOC_THUMB_PCREL_BRANCH7, |
|
2998 BFD_RELOC_THUMB_PCREL_BRANCH9, |
|
2999 BFD_RELOC_THUMB_PCREL_BRANCH12, |
|
3000 BFD_RELOC_THUMB_PCREL_BRANCH20, |
|
3001 BFD_RELOC_THUMB_PCREL_BRANCH23, |
|
3002 BFD_RELOC_THUMB_PCREL_BRANCH25, |
|
3003 |
|
3004 /* 12-bit immediate offset, used in ARM-format ldr and str instructions. */ |
|
3005 BFD_RELOC_ARM_OFFSET_IMM, |
|
3006 |
|
3007 /* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */ |
|
3008 BFD_RELOC_ARM_THUMB_OFFSET, |
|
3009 |
|
3010 /* Pc-relative or absolute relocation depending on target. Used for |
|
3011 entries in .init_array sections. */ |
|
3012 BFD_RELOC_ARM_TARGET1, |
|
3013 |
|
3014 /* Read-only segment base relative address. */ |
|
3015 BFD_RELOC_ARM_ROSEGREL32, |
|
3016 |
|
3017 /* Data segment base relative address. */ |
|
3018 BFD_RELOC_ARM_SBREL32, |
|
3019 |
|
3020 /* This reloc is used for references to RTTI data from exception handling |
|
3021 tables. The actual definition depends on the target. It may be a |
|
3022 pc-relative or some form of GOT-indirect relocation. */ |
|
3023 BFD_RELOC_ARM_TARGET2, |
|
3024 |
|
3025 /* 31-bit PC relative address. */ |
|
3026 BFD_RELOC_ARM_PREL31, |
|
3027 |
|
3028 /* Low and High halfword relocations for MOVW and MOVT instructions. */ |
|
3029 BFD_RELOC_ARM_MOVW, |
|
3030 BFD_RELOC_ARM_MOVT, |
|
3031 BFD_RELOC_ARM_MOVW_PCREL, |
|
3032 BFD_RELOC_ARM_MOVT_PCREL, |
|
3033 BFD_RELOC_ARM_THUMB_MOVW, |
|
3034 BFD_RELOC_ARM_THUMB_MOVT, |
|
3035 BFD_RELOC_ARM_THUMB_MOVW_PCREL, |
|
3036 BFD_RELOC_ARM_THUMB_MOVT_PCREL, |
|
3037 |
|
3038 /* Relocations for setting up GOTs and PLTs for shared libraries. */ |
|
3039 BFD_RELOC_ARM_JUMP_SLOT, |
|
3040 BFD_RELOC_ARM_GLOB_DAT, |
|
3041 BFD_RELOC_ARM_GOT32, |
|
3042 BFD_RELOC_ARM_PLT32, |
|
3043 BFD_RELOC_ARM_RELATIVE, |
|
3044 BFD_RELOC_ARM_GOTOFF, |
|
3045 BFD_RELOC_ARM_GOTPC, |
|
3046 |
|
3047 /* ARM thread-local storage relocations. */ |
|
3048 BFD_RELOC_ARM_TLS_GD32, |
|
3049 BFD_RELOC_ARM_TLS_LDO32, |
|
3050 BFD_RELOC_ARM_TLS_LDM32, |
|
3051 BFD_RELOC_ARM_TLS_DTPOFF32, |
|
3052 BFD_RELOC_ARM_TLS_DTPMOD32, |
|
3053 BFD_RELOC_ARM_TLS_TPOFF32, |
|
3054 BFD_RELOC_ARM_TLS_IE32, |
|
3055 BFD_RELOC_ARM_TLS_LE32, |
|
3056 |
|
3057 /* ARM group relocations. */ |
|
3058 BFD_RELOC_ARM_ALU_PC_G0_NC, |
|
3059 BFD_RELOC_ARM_ALU_PC_G0, |
|
3060 BFD_RELOC_ARM_ALU_PC_G1_NC, |
|
3061 BFD_RELOC_ARM_ALU_PC_G1, |
|
3062 BFD_RELOC_ARM_ALU_PC_G2, |
|
3063 BFD_RELOC_ARM_LDR_PC_G0, |
|
3064 BFD_RELOC_ARM_LDR_PC_G1, |
|
3065 BFD_RELOC_ARM_LDR_PC_G2, |
|
3066 BFD_RELOC_ARM_LDRS_PC_G0, |
|
3067 BFD_RELOC_ARM_LDRS_PC_G1, |
|
3068 BFD_RELOC_ARM_LDRS_PC_G2, |
|
3069 BFD_RELOC_ARM_LDC_PC_G0, |
|
3070 BFD_RELOC_ARM_LDC_PC_G1, |
|
3071 BFD_RELOC_ARM_LDC_PC_G2, |
|
3072 BFD_RELOC_ARM_ALU_SB_G0_NC, |
|
3073 BFD_RELOC_ARM_ALU_SB_G0, |
|
3074 BFD_RELOC_ARM_ALU_SB_G1_NC, |
|
3075 BFD_RELOC_ARM_ALU_SB_G1, |
|
3076 BFD_RELOC_ARM_ALU_SB_G2, |
|
3077 BFD_RELOC_ARM_LDR_SB_G0, |
|
3078 BFD_RELOC_ARM_LDR_SB_G1, |
|
3079 BFD_RELOC_ARM_LDR_SB_G2, |
|
3080 BFD_RELOC_ARM_LDRS_SB_G0, |
|
3081 BFD_RELOC_ARM_LDRS_SB_G1, |
|
3082 BFD_RELOC_ARM_LDRS_SB_G2, |
|
3083 BFD_RELOC_ARM_LDC_SB_G0, |
|
3084 BFD_RELOC_ARM_LDC_SB_G1, |
|
3085 BFD_RELOC_ARM_LDC_SB_G2, |
|
3086 |
|
3087 /* These relocs are only used within the ARM assembler. They are not |
|
3088 (at present) written to any object files. */ |
|
3089 BFD_RELOC_ARM_IMMEDIATE, |
|
3090 BFD_RELOC_ARM_ADRL_IMMEDIATE, |
|
3091 BFD_RELOC_ARM_T32_IMMEDIATE, |
|
3092 BFD_RELOC_ARM_T32_ADD_IMM, |
|
3093 BFD_RELOC_ARM_T32_IMM12, |
|
3094 BFD_RELOC_ARM_T32_ADD_PC12, |
|
3095 BFD_RELOC_ARM_SHIFT_IMM, |
|
3096 BFD_RELOC_ARM_SMC, |
|
3097 BFD_RELOC_ARM_SWI, |
|
3098 BFD_RELOC_ARM_MULTI, |
|
3099 BFD_RELOC_ARM_CP_OFF_IMM, |
|
3100 BFD_RELOC_ARM_CP_OFF_IMM_S2, |
|
3101 BFD_RELOC_ARM_T32_CP_OFF_IMM, |
|
3102 BFD_RELOC_ARM_T32_CP_OFF_IMM_S2, |
|
3103 BFD_RELOC_ARM_ADR_IMM, |
|
3104 BFD_RELOC_ARM_LDR_IMM, |
|
3105 BFD_RELOC_ARM_LITERAL, |
|
3106 BFD_RELOC_ARM_IN_POOL, |
|
3107 BFD_RELOC_ARM_OFFSET_IMM8, |
|
3108 BFD_RELOC_ARM_T32_OFFSET_U8, |
|
3109 BFD_RELOC_ARM_T32_OFFSET_IMM, |
|
3110 BFD_RELOC_ARM_HWLITERAL, |
|
3111 BFD_RELOC_ARM_THUMB_ADD, |
|
3112 BFD_RELOC_ARM_THUMB_IMM, |
|
3113 BFD_RELOC_ARM_THUMB_SHIFT, |
|
3114 |
|
3115 /* Renesas / SuperH SH relocs. Not all of these appear in object files. */ |
|
3116 BFD_RELOC_SH_PCDISP8BY2, |
|
3117 BFD_RELOC_SH_PCDISP12BY2, |
|
3118 BFD_RELOC_SH_IMM3, |
|
3119 BFD_RELOC_SH_IMM3U, |
|
3120 BFD_RELOC_SH_DISP12, |
|
3121 BFD_RELOC_SH_DISP12BY2, |
|
3122 BFD_RELOC_SH_DISP12BY4, |
|
3123 BFD_RELOC_SH_DISP12BY8, |
|
3124 BFD_RELOC_SH_DISP20, |
|
3125 BFD_RELOC_SH_DISP20BY8, |
|
3126 BFD_RELOC_SH_IMM4, |
|
3127 BFD_RELOC_SH_IMM4BY2, |
|
3128 BFD_RELOC_SH_IMM4BY4, |
|
3129 BFD_RELOC_SH_IMM8, |
|
3130 BFD_RELOC_SH_IMM8BY2, |
|
3131 BFD_RELOC_SH_IMM8BY4, |
|
3132 BFD_RELOC_SH_PCRELIMM8BY2, |
|
3133 BFD_RELOC_SH_PCRELIMM8BY4, |
|
3134 BFD_RELOC_SH_SWITCH16, |
|
3135 BFD_RELOC_SH_SWITCH32, |
|
3136 BFD_RELOC_SH_USES, |
|
3137 BFD_RELOC_SH_COUNT, |
|
3138 BFD_RELOC_SH_ALIGN, |
|
3139 BFD_RELOC_SH_CODE, |
|
3140 BFD_RELOC_SH_DATA, |
|
3141 BFD_RELOC_SH_LABEL, |
|
3142 BFD_RELOC_SH_LOOP_START, |
|
3143 BFD_RELOC_SH_LOOP_END, |
|
3144 BFD_RELOC_SH_COPY, |
|
3145 BFD_RELOC_SH_GLOB_DAT, |
|
3146 BFD_RELOC_SH_JMP_SLOT, |
|
3147 BFD_RELOC_SH_RELATIVE, |
|
3148 BFD_RELOC_SH_GOTPC, |
|
3149 BFD_RELOC_SH_GOT_LOW16, |
|
3150 BFD_RELOC_SH_GOT_MEDLOW16, |
|
3151 BFD_RELOC_SH_GOT_MEDHI16, |
|
3152 BFD_RELOC_SH_GOT_HI16, |
|
3153 BFD_RELOC_SH_GOTPLT_LOW16, |
|
3154 BFD_RELOC_SH_GOTPLT_MEDLOW16, |
|
3155 BFD_RELOC_SH_GOTPLT_MEDHI16, |
|
3156 BFD_RELOC_SH_GOTPLT_HI16, |
|
3157 BFD_RELOC_SH_PLT_LOW16, |
|
3158 BFD_RELOC_SH_PLT_MEDLOW16, |
|
3159 BFD_RELOC_SH_PLT_MEDHI16, |
|
3160 BFD_RELOC_SH_PLT_HI16, |
|
3161 BFD_RELOC_SH_GOTOFF_LOW16, |
|
3162 BFD_RELOC_SH_GOTOFF_MEDLOW16, |
|
3163 BFD_RELOC_SH_GOTOFF_MEDHI16, |
|
3164 BFD_RELOC_SH_GOTOFF_HI16, |
|
3165 BFD_RELOC_SH_GOTPC_LOW16, |
|
3166 BFD_RELOC_SH_GOTPC_MEDLOW16, |
|
3167 BFD_RELOC_SH_GOTPC_MEDHI16, |
|
3168 BFD_RELOC_SH_GOTPC_HI16, |
|
3169 BFD_RELOC_SH_COPY64, |
|
3170 BFD_RELOC_SH_GLOB_DAT64, |
|
3171 BFD_RELOC_SH_JMP_SLOT64, |
|
3172 BFD_RELOC_SH_RELATIVE64, |
|
3173 BFD_RELOC_SH_GOT10BY4, |
|
3174 BFD_RELOC_SH_GOT10BY8, |
|
3175 BFD_RELOC_SH_GOTPLT10BY4, |
|
3176 BFD_RELOC_SH_GOTPLT10BY8, |
|
3177 BFD_RELOC_SH_GOTPLT32, |
|
3178 BFD_RELOC_SH_SHMEDIA_CODE, |
|
3179 BFD_RELOC_SH_IMMU5, |
|
3180 BFD_RELOC_SH_IMMS6, |
|
3181 BFD_RELOC_SH_IMMS6BY32, |
|
3182 BFD_RELOC_SH_IMMU6, |
|
3183 BFD_RELOC_SH_IMMS10, |
|
3184 BFD_RELOC_SH_IMMS10BY2, |
|
3185 BFD_RELOC_SH_IMMS10BY4, |
|
3186 BFD_RELOC_SH_IMMS10BY8, |
|
3187 BFD_RELOC_SH_IMMS16, |
|
3188 BFD_RELOC_SH_IMMU16, |
|
3189 BFD_RELOC_SH_IMM_LOW16, |
|
3190 BFD_RELOC_SH_IMM_LOW16_PCREL, |
|
3191 BFD_RELOC_SH_IMM_MEDLOW16, |
|
3192 BFD_RELOC_SH_IMM_MEDLOW16_PCREL, |
|
3193 BFD_RELOC_SH_IMM_MEDHI16, |
|
3194 BFD_RELOC_SH_IMM_MEDHI16_PCREL, |
|
3195 BFD_RELOC_SH_IMM_HI16, |
|
3196 BFD_RELOC_SH_IMM_HI16_PCREL, |
|
3197 BFD_RELOC_SH_PT_16, |
|
3198 BFD_RELOC_SH_TLS_GD_32, |
|
3199 BFD_RELOC_SH_TLS_LD_32, |
|
3200 BFD_RELOC_SH_TLS_LDO_32, |
|
3201 BFD_RELOC_SH_TLS_IE_32, |
|
3202 BFD_RELOC_SH_TLS_LE_32, |
|
3203 BFD_RELOC_SH_TLS_DTPMOD32, |
|
3204 BFD_RELOC_SH_TLS_DTPOFF32, |
|
3205 BFD_RELOC_SH_TLS_TPOFF32, |
|
3206 |
|
3207 /* ARC Cores relocs. |
|
3208 ARC 22 bit pc-relative branch. The lowest two bits must be zero and are |
|
3209 not stored in the instruction. The high 20 bits are installed in bits 26 |
|
3210 through 7 of the instruction. */ |
|
3211 BFD_RELOC_ARC_B22_PCREL, |
|
3212 |
|
3213 /* ARC 26 bit absolute branch. The lowest two bits must be zero and are not |
|
3214 stored in the instruction. The high 24 bits are installed in bits 23 |
|
3215 through 0. */ |
|
3216 BFD_RELOC_ARC_B26, |
|
3217 |
|
3218 /* ADI Blackfin 16 bit immediate absolute reloc. */ |
|
3219 BFD_RELOC_BFIN_16_IMM, |
|
3220 |
|
3221 /* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */ |
|
3222 BFD_RELOC_BFIN_16_HIGH, |
|
3223 |
|
3224 /* ADI Blackfin 'a' part of LSETUP. */ |
|
3225 BFD_RELOC_BFIN_4_PCREL, |
|
3226 |
|
3227 /* ADI Blackfin. */ |
|
3228 BFD_RELOC_BFIN_5_PCREL, |
|
3229 |
|
3230 /* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */ |
|
3231 BFD_RELOC_BFIN_16_LOW, |
|
3232 |
|
3233 /* ADI Blackfin. */ |
|
3234 BFD_RELOC_BFIN_10_PCREL, |
|
3235 |
|
3236 /* ADI Blackfin 'b' part of LSETUP. */ |
|
3237 BFD_RELOC_BFIN_11_PCREL, |
|
3238 |
|
3239 /* ADI Blackfin. */ |
|
3240 BFD_RELOC_BFIN_12_PCREL_JUMP, |
|
3241 |
|
3242 /* ADI Blackfin Short jump, pcrel. */ |
|
3243 BFD_RELOC_BFIN_12_PCREL_JUMP_S, |
|
3244 |
|
3245 /* ADI Blackfin Call.x not implemented. */ |
|
3246 BFD_RELOC_BFIN_24_PCREL_CALL_X, |
|
3247 |
|
3248 /* ADI Blackfin Long Jump pcrel. */ |
|
3249 BFD_RELOC_BFIN_24_PCREL_JUMP_L, |
|
3250 |
|
3251 /* ADI Blackfin FD-PIC relocations. */ |
|
3252 BFD_RELOC_BFIN_GOT17M4, |
|
3253 BFD_RELOC_BFIN_GOTHI, |
|
3254 BFD_RELOC_BFIN_GOTLO, |
|
3255 BFD_RELOC_BFIN_FUNCDESC, |
|
3256 BFD_RELOC_BFIN_FUNCDESC_GOT17M4, |
|
3257 BFD_RELOC_BFIN_FUNCDESC_GOTHI, |
|
3258 BFD_RELOC_BFIN_FUNCDESC_GOTLO, |
|
3259 BFD_RELOC_BFIN_FUNCDESC_VALUE, |
|
3260 BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4, |
|
3261 BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI, |
|
3262 BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO, |
|
3263 BFD_RELOC_BFIN_GOTOFF17M4, |
|
3264 BFD_RELOC_BFIN_GOTOFFHI, |
|
3265 BFD_RELOC_BFIN_GOTOFFLO, |
|
3266 |
|
3267 /* ADI Blackfin GOT relocation. */ |
|
3268 BFD_RELOC_BFIN_GOT, |
|
3269 |
|
3270 /* ADI Blackfin PLTPC relocation. */ |
|
3271 BFD_RELOC_BFIN_PLTPC, |
|
3272 |
|
3273 /* ADI Blackfin arithmetic relocation. */ |
|
3274 BFD_ARELOC_BFIN_PUSH, |
|
3275 |
|
3276 /* ADI Blackfin arithmetic relocation. */ |
|
3277 BFD_ARELOC_BFIN_CONST, |
|
3278 |
|
3279 /* ADI Blackfin arithmetic relocation. */ |
|
3280 BFD_ARELOC_BFIN_ADD, |
|
3281 |
|
3282 /* ADI Blackfin arithmetic relocation. */ |
|
3283 BFD_ARELOC_BFIN_SUB, |
|
3284 |
|
3285 /* ADI Blackfin arithmetic relocation. */ |
|
3286 BFD_ARELOC_BFIN_MULT, |
|
3287 |
|
3288 /* ADI Blackfin arithmetic relocation. */ |
|
3289 BFD_ARELOC_BFIN_DIV, |
|
3290 |
|
3291 /* ADI Blackfin arithmetic relocation. */ |
|
3292 BFD_ARELOC_BFIN_MOD, |
|
3293 |
|
3294 /* ADI Blackfin arithmetic relocation. */ |
|
3295 BFD_ARELOC_BFIN_LSHIFT, |
|
3296 |
|
3297 /* ADI Blackfin arithmetic relocation. */ |
|
3298 BFD_ARELOC_BFIN_RSHIFT, |
|
3299 |
|
3300 /* ADI Blackfin arithmetic relocation. */ |
|
3301 BFD_ARELOC_BFIN_AND, |
|
3302 |
|
3303 /* ADI Blackfin arithmetic relocation. */ |
|
3304 BFD_ARELOC_BFIN_OR, |
|
3305 |
|
3306 /* ADI Blackfin arithmetic relocation. */ |
|
3307 BFD_ARELOC_BFIN_XOR, |
|
3308 |
|
3309 /* ADI Blackfin arithmetic relocation. */ |
|
3310 BFD_ARELOC_BFIN_LAND, |
|
3311 |
|
3312 /* ADI Blackfin arithmetic relocation. */ |
|
3313 BFD_ARELOC_BFIN_LOR, |
|
3314 |
|
3315 /* ADI Blackfin arithmetic relocation. */ |
|
3316 BFD_ARELOC_BFIN_LEN, |
|
3317 |
|
3318 /* ADI Blackfin arithmetic relocation. */ |
|
3319 BFD_ARELOC_BFIN_NEG, |
|
3320 |
|
3321 /* ADI Blackfin arithmetic relocation. */ |
|
3322 BFD_ARELOC_BFIN_COMP, |
|
3323 |
|
3324 /* ADI Blackfin arithmetic relocation. */ |
|
3325 BFD_ARELOC_BFIN_PAGE, |
|
3326 |
|
3327 /* ADI Blackfin arithmetic relocation. */ |
|
3328 BFD_ARELOC_BFIN_HWPAGE, |
|
3329 |
|
3330 /* ADI Blackfin arithmetic relocation. */ |
|
3331 BFD_ARELOC_BFIN_ADDR, |
|
3332 |
|
3333 /* Mitsubishi D10V relocs. |
|
3334 This is a 10-bit reloc with the right 2 bits |
|
3335 assumed to be 0. */ |
|
3336 BFD_RELOC_D10V_10_PCREL_R, |
|
3337 |
|
3338 /* Mitsubishi D10V relocs. |
|
3339 This is a 10-bit reloc with the right 2 bits |
|
3340 assumed to be 0. This is the same as the previous reloc |
|
3341 except it is in the left container, i.e., |
|
3342 shifted left 15 bits. */ |
|
3343 BFD_RELOC_D10V_10_PCREL_L, |
|
3344 |
|
3345 /* This is an 18-bit reloc with the right 2 bits |
|
3346 assumed to be 0. */ |
|
3347 BFD_RELOC_D10V_18, |
|
3348 |
|
3349 /* This is an 18-bit reloc with the right 2 bits |
|
3350 assumed to be 0. */ |
|
3351 BFD_RELOC_D10V_18_PCREL, |
|
3352 |
|
3353 /* Mitsubishi D30V relocs. |
|
3354 This is a 6-bit absolute reloc. */ |
|
3355 BFD_RELOC_D30V_6, |
|
3356 |
|
3357 /* This is a 6-bit pc-relative reloc with |
|
3358 the right 3 bits assumed to be 0. */ |
|
3359 BFD_RELOC_D30V_9_PCREL, |
|
3360 |
|
3361 /* This is a 6-bit pc-relative reloc with |
|
3362 the right 3 bits assumed to be 0. Same |
|
3363 as the previous reloc but on the right side |
|
3364 of the container. */ |
|
3365 BFD_RELOC_D30V_9_PCREL_R, |
|
3366 |
|
3367 /* This is a 12-bit absolute reloc with the |
|
3368 right 3 bitsassumed to be 0. */ |
|
3369 BFD_RELOC_D30V_15, |
|
3370 |
|
3371 /* This is a 12-bit pc-relative reloc with |
|
3372 the right 3 bits assumed to be 0. */ |
|
3373 BFD_RELOC_D30V_15_PCREL, |
|
3374 |
|
3375 /* This is a 12-bit pc-relative reloc with |
|
3376 the right 3 bits assumed to be 0. Same |
|
3377 as the previous reloc but on the right side |
|
3378 of the container. */ |
|
3379 BFD_RELOC_D30V_15_PCREL_R, |
|
3380 |
|
3381 /* This is an 18-bit absolute reloc with |
|
3382 the right 3 bits assumed to be 0. */ |
|
3383 BFD_RELOC_D30V_21, |
|
3384 |
|
3385 /* This is an 18-bit pc-relative reloc with |
|
3386 the right 3 bits assumed to be 0. */ |
|
3387 BFD_RELOC_D30V_21_PCREL, |
|
3388 |
|
3389 /* This is an 18-bit pc-relative reloc with |
|
3390 the right 3 bits assumed to be 0. Same |
|
3391 as the previous reloc but on the right side |
|
3392 of the container. */ |
|
3393 BFD_RELOC_D30V_21_PCREL_R, |
|
3394 |
|
3395 /* This is a 32-bit absolute reloc. */ |
|
3396 BFD_RELOC_D30V_32, |
|
3397 |
|
3398 /* This is a 32-bit pc-relative reloc. */ |
|
3399 BFD_RELOC_D30V_32_PCREL, |
|
3400 |
|
3401 /* DLX relocs */ |
|
3402 BFD_RELOC_DLX_HI16_S, |
|
3403 |
|
3404 /* DLX relocs */ |
|
3405 BFD_RELOC_DLX_LO16, |
|
3406 |
|
3407 /* DLX relocs */ |
|
3408 BFD_RELOC_DLX_JMP26, |
|
3409 |
|
3410 /* Renesas M16C/M32C Relocations. */ |
|
3411 BFD_RELOC_M32C_HI8, |
|
3412 BFD_RELOC_M32C_RL_JUMP, |
|
3413 BFD_RELOC_M32C_RL_1ADDR, |
|
3414 BFD_RELOC_M32C_RL_2ADDR, |
|
3415 |
|
3416 /* Renesas M32R (formerly Mitsubishi M32R) relocs. |
|
3417 This is a 24 bit absolute address. */ |
|
3418 BFD_RELOC_M32R_24, |
|
3419 |
|
3420 /* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */ |
|
3421 BFD_RELOC_M32R_10_PCREL, |
|
3422 |
|
3423 /* This is an 18-bit reloc with the right 2 bits assumed to be 0. */ |
|
3424 BFD_RELOC_M32R_18_PCREL, |
|
3425 |
|
3426 /* This is a 26-bit reloc with the right 2 bits assumed to be 0. */ |
|
3427 BFD_RELOC_M32R_26_PCREL, |
|
3428 |
|
3429 /* This is a 16-bit reloc containing the high 16 bits of an address |
|
3430 used when the lower 16 bits are treated as unsigned. */ |
|
3431 BFD_RELOC_M32R_HI16_ULO, |
|
3432 |
|
3433 /* This is a 16-bit reloc containing the high 16 bits of an address |
|
3434 used when the lower 16 bits are treated as signed. */ |
|
3435 BFD_RELOC_M32R_HI16_SLO, |
|
3436 |
|
3437 /* This is a 16-bit reloc containing the lower 16 bits of an address. */ |
|
3438 BFD_RELOC_M32R_LO16, |
|
3439 |
|
3440 /* This is a 16-bit reloc containing the small data area offset for use in |
|
3441 add3, load, and store instructions. */ |
|
3442 BFD_RELOC_M32R_SDA16, |
|
3443 |
|
3444 /* For PIC. */ |
|
3445 BFD_RELOC_M32R_GOT24, |
|
3446 BFD_RELOC_M32R_26_PLTREL, |
|
3447 BFD_RELOC_M32R_COPY, |
|
3448 BFD_RELOC_M32R_GLOB_DAT, |
|
3449 BFD_RELOC_M32R_JMP_SLOT, |
|
3450 BFD_RELOC_M32R_RELATIVE, |
|
3451 BFD_RELOC_M32R_GOTOFF, |
|
3452 BFD_RELOC_M32R_GOTOFF_HI_ULO, |
|
3453 BFD_RELOC_M32R_GOTOFF_HI_SLO, |
|
3454 BFD_RELOC_M32R_GOTOFF_LO, |
|
3455 BFD_RELOC_M32R_GOTPC24, |
|
3456 BFD_RELOC_M32R_GOT16_HI_ULO, |
|
3457 BFD_RELOC_M32R_GOT16_HI_SLO, |
|
3458 BFD_RELOC_M32R_GOT16_LO, |
|
3459 BFD_RELOC_M32R_GOTPC_HI_ULO, |
|
3460 BFD_RELOC_M32R_GOTPC_HI_SLO, |
|
3461 BFD_RELOC_M32R_GOTPC_LO, |
|
3462 |
|
3463 /* This is a 9-bit reloc */ |
|
3464 BFD_RELOC_V850_9_PCREL, |
|
3465 |
|
3466 /* This is a 22-bit reloc */ |
|
3467 BFD_RELOC_V850_22_PCREL, |
|
3468 |
|
3469 /* This is a 16 bit offset from the short data area pointer. */ |
|
3470 BFD_RELOC_V850_SDA_16_16_OFFSET, |
|
3471 |
|
3472 /* This is a 16 bit offset (of which only 15 bits are used) from the |
|
3473 short data area pointer. */ |
|
3474 BFD_RELOC_V850_SDA_15_16_OFFSET, |
|
3475 |
|
3476 /* This is a 16 bit offset from the zero data area pointer. */ |
|
3477 BFD_RELOC_V850_ZDA_16_16_OFFSET, |
|
3478 |
|
3479 /* This is a 16 bit offset (of which only 15 bits are used) from the |
|
3480 zero data area pointer. */ |
|
3481 BFD_RELOC_V850_ZDA_15_16_OFFSET, |
|
3482 |
|
3483 /* This is an 8 bit offset (of which only 6 bits are used) from the |
|
3484 tiny data area pointer. */ |
|
3485 BFD_RELOC_V850_TDA_6_8_OFFSET, |
|
3486 |
|
3487 /* This is an 8bit offset (of which only 7 bits are used) from the tiny |
|
3488 data area pointer. */ |
|
3489 BFD_RELOC_V850_TDA_7_8_OFFSET, |
|
3490 |
|
3491 /* This is a 7 bit offset from the tiny data area pointer. */ |
|
3492 BFD_RELOC_V850_TDA_7_7_OFFSET, |
|
3493 |
|
3494 /* This is a 16 bit offset from the tiny data area pointer. */ |
|
3495 BFD_RELOC_V850_TDA_16_16_OFFSET, |
|
3496 |
|
3497 /* This is a 5 bit offset (of which only 4 bits are used) from the tiny |
|
3498 data area pointer. */ |
|
3499 BFD_RELOC_V850_TDA_4_5_OFFSET, |
|
3500 |
|
3501 /* This is a 4 bit offset from the tiny data area pointer. */ |
|
3502 BFD_RELOC_V850_TDA_4_4_OFFSET, |
|
3503 |
|
3504 /* This is a 16 bit offset from the short data area pointer, with the |
|
3505 bits placed non-contiguously in the instruction. */ |
|
3506 BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET, |
|
3507 |
|
3508 /* This is a 16 bit offset from the zero data area pointer, with the |
|
3509 bits placed non-contiguously in the instruction. */ |
|
3510 BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET, |
|
3511 |
|
3512 /* This is a 6 bit offset from the call table base pointer. */ |
|
3513 BFD_RELOC_V850_CALLT_6_7_OFFSET, |
|
3514 |
|
3515 /* This is a 16 bit offset from the call table base pointer. */ |
|
3516 BFD_RELOC_V850_CALLT_16_16_OFFSET, |
|
3517 |
|
3518 /* Used for relaxing indirect function calls. */ |
|
3519 BFD_RELOC_V850_LONGCALL, |
|
3520 |
|
3521 /* Used for relaxing indirect jumps. */ |
|
3522 BFD_RELOC_V850_LONGJUMP, |
|
3523 |
|
3524 /* Used to maintain alignment whilst relaxing. */ |
|
3525 BFD_RELOC_V850_ALIGN, |
|
3526 |
|
3527 /* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu |
|
3528 instructions. */ |
|
3529 BFD_RELOC_V850_LO16_SPLIT_OFFSET, |
|
3530 |
|
3531 /* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the |
|
3532 instruction. */ |
|
3533 BFD_RELOC_MN10300_32_PCREL, |
|
3534 |
|
3535 /* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the |
|
3536 instruction. */ |
|
3537 BFD_RELOC_MN10300_16_PCREL, |
|
3538 |
|
3539 /* This is a 8bit DP reloc for the tms320c30, where the most |
|
3540 significant 8 bits of a 24 bit word are placed into the least |
|
3541 significant 8 bits of the opcode. */ |
|
3542 BFD_RELOC_TIC30_LDP, |
|
3543 |
|
3544 /* This is a 7bit reloc for the tms320c54x, where the least |
|
3545 significant 7 bits of a 16 bit word are placed into the least |
|
3546 significant 7 bits of the opcode. */ |
|
3547 BFD_RELOC_TIC54X_PARTLS7, |
|
3548 |
|
3549 /* This is a 9bit DP reloc for the tms320c54x, where the most |
|
3550 significant 9 bits of a 16 bit word are placed into the least |
|
3551 significant 9 bits of the opcode. */ |
|
3552 BFD_RELOC_TIC54X_PARTMS9, |
|
3553 |
|
3554 /* This is an extended address 23-bit reloc for the tms320c54x. */ |
|
3555 BFD_RELOC_TIC54X_23, |
|
3556 |
|
3557 /* This is a 16-bit reloc for the tms320c54x, where the least |
|
3558 significant 16 bits of a 23-bit extended address are placed into |
|
3559 the opcode. */ |
|
3560 BFD_RELOC_TIC54X_16_OF_23, |
|
3561 |
|
3562 /* This is a reloc for the tms320c54x, where the most |
|
3563 significant 7 bits of a 23-bit extended address are placed into |
|
3564 the opcode. */ |
|
3565 BFD_RELOC_TIC54X_MS7_OF_23, |
|
3566 |
|
3567 /* This is a 48 bit reloc for the FR30 that stores 32 bits. */ |
|
3568 BFD_RELOC_FR30_48, |
|
3569 |
|
3570 /* This is a 32 bit reloc for the FR30 that stores 20 bits split up into |
|
3571 two sections. */ |
|
3572 BFD_RELOC_FR30_20, |
|
3573 |
|
3574 /* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in |
|
3575 4 bits. */ |
|
3576 BFD_RELOC_FR30_6_IN_4, |
|
3577 |
|
3578 /* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset |
|
3579 into 8 bits. */ |
|
3580 BFD_RELOC_FR30_8_IN_8, |
|
3581 |
|
3582 /* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset |
|
3583 into 8 bits. */ |
|
3584 BFD_RELOC_FR30_9_IN_8, |
|
3585 |
|
3586 /* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset |
|
3587 into 8 bits. */ |
|
3588 BFD_RELOC_FR30_10_IN_8, |
|
3589 |
|
3590 /* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative |
|
3591 short offset into 8 bits. */ |
|
3592 BFD_RELOC_FR30_9_PCREL, |
|
3593 |
|
3594 /* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative |
|
3595 short offset into 11 bits. */ |
|
3596 BFD_RELOC_FR30_12_PCREL, |
|
3597 |
|
3598 /* Motorola Mcore relocations. */ |
|
3599 BFD_RELOC_MCORE_PCREL_IMM8BY4, |
|
3600 BFD_RELOC_MCORE_PCREL_IMM11BY2, |
|
3601 BFD_RELOC_MCORE_PCREL_IMM4BY2, |
|
3602 BFD_RELOC_MCORE_PCREL_32, |
|
3603 BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2, |
|
3604 BFD_RELOC_MCORE_RVA, |
|
3605 |
|
3606 /* Toshiba Media Processor Relocations. */ |
|
3607 BFD_RELOC_MEP_8, |
|
3608 BFD_RELOC_MEP_16, |
|
3609 BFD_RELOC_MEP_32, |
|
3610 BFD_RELOC_MEP_PCREL8A2, |
|
3611 BFD_RELOC_MEP_PCREL12A2, |
|
3612 BFD_RELOC_MEP_PCREL17A2, |
|
3613 BFD_RELOC_MEP_PCREL24A2, |
|
3614 BFD_RELOC_MEP_PCABS24A2, |
|
3615 BFD_RELOC_MEP_LOW16, |
|
3616 BFD_RELOC_MEP_HI16U, |
|
3617 BFD_RELOC_MEP_HI16S, |
|
3618 BFD_RELOC_MEP_GPREL, |
|
3619 BFD_RELOC_MEP_TPREL, |
|
3620 BFD_RELOC_MEP_TPREL7, |
|
3621 BFD_RELOC_MEP_TPREL7A2, |
|
3622 BFD_RELOC_MEP_TPREL7A4, |
|
3623 BFD_RELOC_MEP_UIMM24, |
|
3624 BFD_RELOC_MEP_ADDR24A4, |
|
3625 BFD_RELOC_MEP_GNU_VTINHERIT, |
|
3626 BFD_RELOC_MEP_GNU_VTENTRY, |
|
3627 |
|
3628 |
|
3629 /* These are relocations for the GETA instruction. */ |
|
3630 BFD_RELOC_MMIX_GETA, |
|
3631 BFD_RELOC_MMIX_GETA_1, |
|
3632 BFD_RELOC_MMIX_GETA_2, |
|
3633 BFD_RELOC_MMIX_GETA_3, |
|
3634 |
|
3635 /* These are relocations for a conditional branch instruction. */ |
|
3636 BFD_RELOC_MMIX_CBRANCH, |
|
3637 BFD_RELOC_MMIX_CBRANCH_J, |
|
3638 BFD_RELOC_MMIX_CBRANCH_1, |
|
3639 BFD_RELOC_MMIX_CBRANCH_2, |
|
3640 BFD_RELOC_MMIX_CBRANCH_3, |
|
3641 |
|
3642 /* These are relocations for the PUSHJ instruction. */ |
|
3643 BFD_RELOC_MMIX_PUSHJ, |
|
3644 BFD_RELOC_MMIX_PUSHJ_1, |
|
3645 BFD_RELOC_MMIX_PUSHJ_2, |
|
3646 BFD_RELOC_MMIX_PUSHJ_3, |
|
3647 BFD_RELOC_MMIX_PUSHJ_STUBBABLE, |
|
3648 |
|
3649 /* These are relocations for the JMP instruction. */ |
|
3650 BFD_RELOC_MMIX_JMP, |
|
3651 BFD_RELOC_MMIX_JMP_1, |
|
3652 BFD_RELOC_MMIX_JMP_2, |
|
3653 BFD_RELOC_MMIX_JMP_3, |
|
3654 |
|
3655 /* This is a relocation for a relative address as in a GETA instruction or |
|
3656 a branch. */ |
|
3657 BFD_RELOC_MMIX_ADDR19, |
|
3658 |
|
3659 /* This is a relocation for a relative address as in a JMP instruction. */ |
|
3660 BFD_RELOC_MMIX_ADDR27, |
|
3661 |
|
3662 /* This is a relocation for an instruction field that may be a general |
|
3663 register or a value 0..255. */ |
|
3664 BFD_RELOC_MMIX_REG_OR_BYTE, |
|
3665 |
|
3666 /* This is a relocation for an instruction field that may be a general |
|
3667 register. */ |
|
3668 BFD_RELOC_MMIX_REG, |
|
3669 |
|
3670 /* This is a relocation for two instruction fields holding a register and |
|
3671 an offset, the equivalent of the relocation. */ |
|
3672 BFD_RELOC_MMIX_BASE_PLUS_OFFSET, |
|
3673 |
|
3674 /* This relocation is an assertion that the expression is not allocated as |
|
3675 a global register. It does not modify contents. */ |
|
3676 BFD_RELOC_MMIX_LOCAL, |
|
3677 |
|
3678 /* This is a 16 bit reloc for the AVR that stores 8 bit pc relative |
|
3679 short offset into 7 bits. */ |
|
3680 BFD_RELOC_AVR_7_PCREL, |
|
3681 |
|
3682 /* This is a 16 bit reloc for the AVR that stores 13 bit pc relative |
|
3683 short offset into 12 bits. */ |
|
3684 BFD_RELOC_AVR_13_PCREL, |
|
3685 |
|
3686 /* This is a 16 bit reloc for the AVR that stores 17 bit value (usually |
|
3687 program memory address) into 16 bits. */ |
|
3688 BFD_RELOC_AVR_16_PM, |
|
3689 |
|
3690 /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually |
|
3691 data memory address) into 8 bit immediate value of LDI insn. */ |
|
3692 BFD_RELOC_AVR_LO8_LDI, |
|
3693 |
|
3694 /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit |
|
3695 of data memory address) into 8 bit immediate value of LDI insn. */ |
|
3696 BFD_RELOC_AVR_HI8_LDI, |
|
3697 |
|
3698 /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit |
|
3699 of program memory address) into 8 bit immediate value of LDI insn. */ |
|
3700 BFD_RELOC_AVR_HH8_LDI, |
|
3701 |
|
3702 /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit |
|
3703 of 32 bit value) into 8 bit immediate value of LDI insn. */ |
|
3704 BFD_RELOC_AVR_MS8_LDI, |
|
3705 |
|
3706 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value |
|
3707 (usually data memory address) into 8 bit immediate value of SUBI insn. */ |
|
3708 BFD_RELOC_AVR_LO8_LDI_NEG, |
|
3709 |
|
3710 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value |
|
3711 (high 8 bit of data memory address) into 8 bit immediate value of |
|
3712 SUBI insn. */ |
|
3713 BFD_RELOC_AVR_HI8_LDI_NEG, |
|
3714 |
|
3715 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value |
|
3716 (most high 8 bit of program memory address) into 8 bit immediate value |
|
3717 of LDI or SUBI insn. */ |
|
3718 BFD_RELOC_AVR_HH8_LDI_NEG, |
|
3719 |
|
3720 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb |
|
3721 of 32 bit value) into 8 bit immediate value of LDI insn. */ |
|
3722 BFD_RELOC_AVR_MS8_LDI_NEG, |
|
3723 |
|
3724 /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually |
|
3725 command address) into 8 bit immediate value of LDI insn. */ |
|
3726 BFD_RELOC_AVR_LO8_LDI_PM, |
|
3727 |
|
3728 /* This is a 16 bit reloc for the AVR that stores 8 bit value |
|
3729 (command address) into 8 bit immediate value of LDI insn. If the address |
|
3730 is beyond the 128k boundary, the linker inserts a jump stub for this reloc |
|
3731 in the lower 128k. */ |
|
3732 BFD_RELOC_AVR_LO8_LDI_GS, |
|
3733 |
|
3734 /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit |
|
3735 of command address) into 8 bit immediate value of LDI insn. */ |
|
3736 BFD_RELOC_AVR_HI8_LDI_PM, |
|
3737 |
|
3738 /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit |
|
3739 of command address) into 8 bit immediate value of LDI insn. If the address |
|
3740 is beyond the 128k boundary, the linker inserts a jump stub for this reloc |
|
3741 below 128k. */ |
|
3742 BFD_RELOC_AVR_HI8_LDI_GS, |
|
3743 |
|
3744 /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit |
|
3745 of command address) into 8 bit immediate value of LDI insn. */ |
|
3746 BFD_RELOC_AVR_HH8_LDI_PM, |
|
3747 |
|
3748 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value |
|
3749 (usually command address) into 8 bit immediate value of SUBI insn. */ |
|
3750 BFD_RELOC_AVR_LO8_LDI_PM_NEG, |
|
3751 |
|
3752 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value |
|
3753 (high 8 bit of 16 bit command address) into 8 bit immediate value |
|
3754 of SUBI insn. */ |
|
3755 BFD_RELOC_AVR_HI8_LDI_PM_NEG, |
|
3756 |
|
3757 /* This is a 16 bit reloc for the AVR that stores negated 8 bit value |
|
3758 (high 6 bit of 22 bit command address) into 8 bit immediate |
|
3759 value of SUBI insn. */ |
|
3760 BFD_RELOC_AVR_HH8_LDI_PM_NEG, |
|
3761 |
|
3762 /* This is a 32 bit reloc for the AVR that stores 23 bit value |
|
3763 into 22 bits. */ |
|
3764 BFD_RELOC_AVR_CALL, |
|
3765 |
|
3766 /* This is a 16 bit reloc for the AVR that stores all needed bits |
|
3767 for absolute addressing with ldi with overflow check to linktime */ |
|
3768 BFD_RELOC_AVR_LDI, |
|
3769 |
|
3770 /* This is a 6 bit reloc for the AVR that stores offset for ldd/std |
|
3771 instructions */ |
|
3772 BFD_RELOC_AVR_6, |
|
3773 |
|
3774 /* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw |
|
3775 instructions */ |
|
3776 BFD_RELOC_AVR_6_ADIW, |
|
3777 |
|
3778 /* Direct 12 bit. */ |
|
3779 BFD_RELOC_390_12, |
|
3780 |
|
3781 /* 12 bit GOT offset. */ |
|
3782 BFD_RELOC_390_GOT12, |
|
3783 |
|
3784 /* 32 bit PC relative PLT address. */ |
|
3785 BFD_RELOC_390_PLT32, |
|
3786 |
|
3787 /* Copy symbol at runtime. */ |
|
3788 BFD_RELOC_390_COPY, |
|
3789 |
|
3790 /* Create GOT entry. */ |
|
3791 BFD_RELOC_390_GLOB_DAT, |
|
3792 |
|
3793 /* Create PLT entry. */ |
|
3794 BFD_RELOC_390_JMP_SLOT, |
|
3795 |
|
3796 /* Adjust by program base. */ |
|
3797 BFD_RELOC_390_RELATIVE, |
|
3798 |
|
3799 /* 32 bit PC relative offset to GOT. */ |
|
3800 BFD_RELOC_390_GOTPC, |
|
3801 |
|
3802 /* 16 bit GOT offset. */ |
|
3803 BFD_RELOC_390_GOT16, |
|
3804 |
|
3805 /* PC relative 16 bit shifted by 1. */ |
|
3806 BFD_RELOC_390_PC16DBL, |
|
3807 |
|
3808 /* 16 bit PC rel. PLT shifted by 1. */ |
|
3809 BFD_RELOC_390_PLT16DBL, |
|
3810 |
|
3811 /* PC relative 32 bit shifted by 1. */ |
|
3812 BFD_RELOC_390_PC32DBL, |
|
3813 |
|
3814 /* 32 bit PC rel. PLT shifted by 1. */ |
|
3815 BFD_RELOC_390_PLT32DBL, |
|
3816 |
|
3817 /* 32 bit PC rel. GOT shifted by 1. */ |
|
3818 BFD_RELOC_390_GOTPCDBL, |
|
3819 |
|
3820 /* 64 bit GOT offset. */ |
|
3821 BFD_RELOC_390_GOT64, |
|
3822 |
|
3823 /* 64 bit PC relative PLT address. */ |
|
3824 BFD_RELOC_390_PLT64, |
|
3825 |
|
3826 /* 32 bit rel. offset to GOT entry. */ |
|
3827 BFD_RELOC_390_GOTENT, |
|
3828 |
|
3829 /* 64 bit offset to GOT. */ |
|
3830 BFD_RELOC_390_GOTOFF64, |
|
3831 |
|
3832 /* 12-bit offset to symbol-entry within GOT, with PLT handling. */ |
|
3833 BFD_RELOC_390_GOTPLT12, |
|
3834 |
|
3835 /* 16-bit offset to symbol-entry within GOT, with PLT handling. */ |
|
3836 BFD_RELOC_390_GOTPLT16, |
|
3837 |
|
3838 /* 32-bit offset to symbol-entry within GOT, with PLT handling. */ |
|
3839 BFD_RELOC_390_GOTPLT32, |
|
3840 |
|
3841 /* 64-bit offset to symbol-entry within GOT, with PLT handling. */ |
|
3842 BFD_RELOC_390_GOTPLT64, |
|
3843 |
|
3844 /* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */ |
|
3845 BFD_RELOC_390_GOTPLTENT, |
|
3846 |
|
3847 /* 16-bit rel. offset from the GOT to a PLT entry. */ |
|
3848 BFD_RELOC_390_PLTOFF16, |
|
3849 |
|
3850 /* 32-bit rel. offset from the GOT to a PLT entry. */ |
|
3851 BFD_RELOC_390_PLTOFF32, |
|
3852 |
|
3853 /* 64-bit rel. offset from the GOT to a PLT entry. */ |
|
3854 BFD_RELOC_390_PLTOFF64, |
|
3855 |
|
3856 /* s390 tls relocations. */ |
|
3857 BFD_RELOC_390_TLS_LOAD, |
|
3858 BFD_RELOC_390_TLS_GDCALL, |
|
3859 BFD_RELOC_390_TLS_LDCALL, |
|
3860 BFD_RELOC_390_TLS_GD32, |
|
3861 BFD_RELOC_390_TLS_GD64, |
|
3862 BFD_RELOC_390_TLS_GOTIE12, |
|
3863 BFD_RELOC_390_TLS_GOTIE32, |
|
3864 BFD_RELOC_390_TLS_GOTIE64, |
|
3865 BFD_RELOC_390_TLS_LDM32, |
|
3866 BFD_RELOC_390_TLS_LDM64, |
|
3867 BFD_RELOC_390_TLS_IE32, |
|
3868 BFD_RELOC_390_TLS_IE64, |
|
3869 BFD_RELOC_390_TLS_IEENT, |
|
3870 BFD_RELOC_390_TLS_LE32, |
|
3871 BFD_RELOC_390_TLS_LE64, |
|
3872 BFD_RELOC_390_TLS_LDO32, |
|
3873 BFD_RELOC_390_TLS_LDO64, |
|
3874 BFD_RELOC_390_TLS_DTPMOD, |
|
3875 BFD_RELOC_390_TLS_DTPOFF, |
|
3876 BFD_RELOC_390_TLS_TPOFF, |
|
3877 |
|
3878 /* Long displacement extension. */ |
|
3879 BFD_RELOC_390_20, |
|
3880 BFD_RELOC_390_GOT20, |
|
3881 BFD_RELOC_390_GOTPLT20, |
|
3882 BFD_RELOC_390_TLS_GOTIE20, |
|
3883 |
|
3884 /* Score relocations */ |
|
3885 BFD_RELOC_SCORE_DUMMY1, |
|
3886 |
|
3887 /* Low 16 bit for load/store */ |
|
3888 BFD_RELOC_SCORE_GPREL15, |
|
3889 |
|
3890 /* This is a 24-bit reloc with the right 1 bit assumed to be 0 */ |
|
3891 BFD_RELOC_SCORE_DUMMY2, |
|
3892 BFD_RELOC_SCORE_JMP, |
|
3893 |
|
3894 /* This is a 19-bit reloc with the right 1 bit assumed to be 0 */ |
|
3895 BFD_RELOC_SCORE_BRANCH, |
|
3896 |
|
3897 /* This is a 11-bit reloc with the right 1 bit assumed to be 0 */ |
|
3898 BFD_RELOC_SCORE16_JMP, |
|
3899 |
|
3900 /* This is a 8-bit reloc with the right 1 bit assumed to be 0 */ |
|
3901 BFD_RELOC_SCORE16_BRANCH, |
|
3902 |
|
3903 /* Undocumented Score relocs */ |
|
3904 BFD_RELOC_SCORE_GOT15, |
|
3905 BFD_RELOC_SCORE_GOT_LO16, |
|
3906 BFD_RELOC_SCORE_CALL15, |
|
3907 BFD_RELOC_SCORE_DUMMY_HI16, |
|
3908 |
|
3909 /* Scenix IP2K - 9-bit register number / data address */ |
|
3910 BFD_RELOC_IP2K_FR9, |
|
3911 |
|
3912 /* Scenix IP2K - 4-bit register/data bank number */ |
|
3913 BFD_RELOC_IP2K_BANK, |
|
3914 |
|
3915 /* Scenix IP2K - low 13 bits of instruction word address */ |
|
3916 BFD_RELOC_IP2K_ADDR16CJP, |
|
3917 |
|
3918 /* Scenix IP2K - high 3 bits of instruction word address */ |
|
3919 BFD_RELOC_IP2K_PAGE3, |
|
3920 |
|
3921 /* Scenix IP2K - ext/low/high 8 bits of data address */ |
|
3922 BFD_RELOC_IP2K_LO8DATA, |
|
3923 BFD_RELOC_IP2K_HI8DATA, |
|
3924 BFD_RELOC_IP2K_EX8DATA, |
|
3925 |
|
3926 /* Scenix IP2K - low/high 8 bits of instruction word address */ |
|
3927 BFD_RELOC_IP2K_LO8INSN, |
|
3928 BFD_RELOC_IP2K_HI8INSN, |
|
3929 |
|
3930 /* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */ |
|
3931 BFD_RELOC_IP2K_PC_SKIP, |
|
3932 |
|
3933 /* Scenix IP2K - 16 bit word address in text section. */ |
|
3934 BFD_RELOC_IP2K_TEXT, |
|
3935 |
|
3936 /* Scenix IP2K - 7-bit sp or dp offset */ |
|
3937 BFD_RELOC_IP2K_FR_OFFSET, |
|
3938 |
|
3939 /* Scenix VPE4K coprocessor - data/insn-space addressing */ |
|
3940 BFD_RELOC_VPE4KMATH_DATA, |
|
3941 BFD_RELOC_VPE4KMATH_INSN, |
|
3942 |
|
3943 /* These two relocations are used by the linker to determine which of |
|
3944 the entries in a C++ virtual function table are actually used. When |
|
3945 the --gc-sections option is given, the linker will zero out the entries |
|
3946 that are not used, so that the code for those functions need not be |
|
3947 included in the output. |
|
3948 |
|
3949 VTABLE_INHERIT is a zero-space relocation used to describe to the |
|
3950 linker the inheritance tree of a C++ virtual function table. The |
|
3951 relocation's symbol should be the parent class' vtable, and the |
|
3952 relocation should be located at the child vtable. |
|
3953 |
|
3954 VTABLE_ENTRY is a zero-space relocation that describes the use of a |
|
3955 virtual function table entry. The reloc's symbol should refer to the |
|
3956 table of the class mentioned in the code. Off of that base, an offset |
|
3957 describes the entry that is being used. For Rela hosts, this offset |
|
3958 is stored in the reloc's addend. For Rel hosts, we are forced to put |
|
3959 this offset in the reloc's section offset. */ |
|
3960 BFD_RELOC_VTABLE_INHERIT, |
|
3961 BFD_RELOC_VTABLE_ENTRY, |
|
3962 |
|
3963 /* Intel IA64 Relocations. */ |
|
3964 BFD_RELOC_IA64_IMM14, |
|
3965 BFD_RELOC_IA64_IMM22, |
|
3966 BFD_RELOC_IA64_IMM64, |
|
3967 BFD_RELOC_IA64_DIR32MSB, |
|
3968 BFD_RELOC_IA64_DIR32LSB, |
|
3969 BFD_RELOC_IA64_DIR64MSB, |
|
3970 BFD_RELOC_IA64_DIR64LSB, |
|
3971 BFD_RELOC_IA64_GPREL22, |
|
3972 BFD_RELOC_IA64_GPREL64I, |
|
3973 BFD_RELOC_IA64_GPREL32MSB, |
|
3974 BFD_RELOC_IA64_GPREL32LSB, |
|
3975 BFD_RELOC_IA64_GPREL64MSB, |
|
3976 BFD_RELOC_IA64_GPREL64LSB, |
|
3977 BFD_RELOC_IA64_LTOFF22, |
|
3978 BFD_RELOC_IA64_LTOFF64I, |
|
3979 BFD_RELOC_IA64_PLTOFF22, |
|
3980 BFD_RELOC_IA64_PLTOFF64I, |
|
3981 BFD_RELOC_IA64_PLTOFF64MSB, |
|
3982 BFD_RELOC_IA64_PLTOFF64LSB, |
|
3983 BFD_RELOC_IA64_FPTR64I, |
|
3984 BFD_RELOC_IA64_FPTR32MSB, |
|
3985 BFD_RELOC_IA64_FPTR32LSB, |
|
3986 BFD_RELOC_IA64_FPTR64MSB, |
|
3987 BFD_RELOC_IA64_FPTR64LSB, |
|
3988 BFD_RELOC_IA64_PCREL21B, |
|
3989 BFD_RELOC_IA64_PCREL21BI, |
|
3990 BFD_RELOC_IA64_PCREL21M, |
|
3991 BFD_RELOC_IA64_PCREL21F, |
|
3992 BFD_RELOC_IA64_PCREL22, |
|
3993 BFD_RELOC_IA64_PCREL60B, |
|
3994 BFD_RELOC_IA64_PCREL64I, |
|
3995 BFD_RELOC_IA64_PCREL32MSB, |
|
3996 BFD_RELOC_IA64_PCREL32LSB, |
|
3997 BFD_RELOC_IA64_PCREL64MSB, |
|
3998 BFD_RELOC_IA64_PCREL64LSB, |
|
3999 BFD_RELOC_IA64_LTOFF_FPTR22, |
|
4000 BFD_RELOC_IA64_LTOFF_FPTR64I, |
|
4001 BFD_RELOC_IA64_LTOFF_FPTR32MSB, |
|
4002 BFD_RELOC_IA64_LTOFF_FPTR32LSB, |
|
4003 BFD_RELOC_IA64_LTOFF_FPTR64MSB, |
|
4004 BFD_RELOC_IA64_LTOFF_FPTR64LSB, |
|
4005 BFD_RELOC_IA64_SEGREL32MSB, |
|
4006 BFD_RELOC_IA64_SEGREL32LSB, |
|
4007 BFD_RELOC_IA64_SEGREL64MSB, |
|
4008 BFD_RELOC_IA64_SEGREL64LSB, |
|
4009 BFD_RELOC_IA64_SECREL32MSB, |
|
4010 BFD_RELOC_IA64_SECREL32LSB, |
|
4011 BFD_RELOC_IA64_SECREL64MSB, |
|
4012 BFD_RELOC_IA64_SECREL64LSB, |
|
4013 BFD_RELOC_IA64_REL32MSB, |
|
4014 BFD_RELOC_IA64_REL32LSB, |
|
4015 BFD_RELOC_IA64_REL64MSB, |
|
4016 BFD_RELOC_IA64_REL64LSB, |
|
4017 BFD_RELOC_IA64_LTV32MSB, |
|
4018 BFD_RELOC_IA64_LTV32LSB, |
|
4019 BFD_RELOC_IA64_LTV64MSB, |
|
4020 BFD_RELOC_IA64_LTV64LSB, |
|
4021 BFD_RELOC_IA64_IPLTMSB, |
|
4022 BFD_RELOC_IA64_IPLTLSB, |
|
4023 BFD_RELOC_IA64_COPY, |
|
4024 BFD_RELOC_IA64_LTOFF22X, |
|
4025 BFD_RELOC_IA64_LDXMOV, |
|
4026 BFD_RELOC_IA64_TPREL14, |
|
4027 BFD_RELOC_IA64_TPREL22, |
|
4028 BFD_RELOC_IA64_TPREL64I, |
|
4029 BFD_RELOC_IA64_TPREL64MSB, |
|
4030 BFD_RELOC_IA64_TPREL64LSB, |
|
4031 BFD_RELOC_IA64_LTOFF_TPREL22, |
|
4032 BFD_RELOC_IA64_DTPMOD64MSB, |
|
4033 BFD_RELOC_IA64_DTPMOD64LSB, |
|
4034 BFD_RELOC_IA64_LTOFF_DTPMOD22, |
|
4035 BFD_RELOC_IA64_DTPREL14, |
|
4036 BFD_RELOC_IA64_DTPREL22, |
|
4037 BFD_RELOC_IA64_DTPREL64I, |
|
4038 BFD_RELOC_IA64_DTPREL32MSB, |
|
4039 BFD_RELOC_IA64_DTPREL32LSB, |
|
4040 BFD_RELOC_IA64_DTPREL64MSB, |
|
4041 BFD_RELOC_IA64_DTPREL64LSB, |
|
4042 BFD_RELOC_IA64_LTOFF_DTPREL22, |
|
4043 |
|
4044 /* Motorola 68HC11 reloc. |
|
4045 This is the 8 bit high part of an absolute address. */ |
|
4046 BFD_RELOC_M68HC11_HI8, |
|
4047 |
|
4048 /* Motorola 68HC11 reloc. |
|
4049 This is the 8 bit low part of an absolute address. */ |
|
4050 BFD_RELOC_M68HC11_LO8, |
|
4051 |
|
4052 /* Motorola 68HC11 reloc. |
|
4053 This is the 3 bit of a value. */ |
|
4054 BFD_RELOC_M68HC11_3B, |
|
4055 |
|
4056 /* Motorola 68HC11 reloc. |
|
4057 This reloc marks the beginning of a jump/call instruction. |
|
4058 It is used for linker relaxation to correctly identify beginning |
|
4059 of instruction and change some branches to use PC-relative |
|
4060 addressing mode. */ |
|
4061 BFD_RELOC_M68HC11_RL_JUMP, |
|
4062 |
|
4063 /* Motorola 68HC11 reloc. |
|
4064 This reloc marks a group of several instructions that gcc generates |
|
4065 and for which the linker relaxation pass can modify and/or remove |
|
4066 some of them. */ |
|
4067 BFD_RELOC_M68HC11_RL_GROUP, |
|
4068 |
|
4069 /* Motorola 68HC11 reloc. |
|
4070 This is the 16-bit lower part of an address. It is used for 'call' |
|
4071 instruction to specify the symbol address without any special |
|
4072 transformation (due to memory bank window). */ |
|
4073 BFD_RELOC_M68HC11_LO16, |
|
4074 |
|
4075 /* Motorola 68HC11 reloc. |
|
4076 This is a 8-bit reloc that specifies the page number of an address. |
|
4077 It is used by 'call' instruction to specify the page number of |
|
4078 the symbol. */ |
|
4079 BFD_RELOC_M68HC11_PAGE, |
|
4080 |
|
4081 /* Motorola 68HC11 reloc. |
|
4082 This is a 24-bit reloc that represents the address with a 16-bit |
|
4083 value and a 8-bit page number. The symbol address is transformed |
|
4084 to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */ |
|
4085 BFD_RELOC_M68HC11_24, |
|
4086 |
|
4087 /* Motorola 68HC12 reloc. |
|
4088 This is the 5 bits of a value. */ |
|
4089 BFD_RELOC_M68HC12_5B, |
|
4090 |
|
4091 /* NS CR16C Relocations. */ |
|
4092 BFD_RELOC_16C_NUM08, |
|
4093 BFD_RELOC_16C_NUM08_C, |
|
4094 BFD_RELOC_16C_NUM16, |
|
4095 BFD_RELOC_16C_NUM16_C, |
|
4096 BFD_RELOC_16C_NUM32, |
|
4097 BFD_RELOC_16C_NUM32_C, |
|
4098 BFD_RELOC_16C_DISP04, |
|
4099 BFD_RELOC_16C_DISP04_C, |
|
4100 BFD_RELOC_16C_DISP08, |
|
4101 BFD_RELOC_16C_DISP08_C, |
|
4102 BFD_RELOC_16C_DISP16, |
|
4103 BFD_RELOC_16C_DISP16_C, |
|
4104 BFD_RELOC_16C_DISP24, |
|
4105 BFD_RELOC_16C_DISP24_C, |
|
4106 BFD_RELOC_16C_DISP24a, |
|
4107 BFD_RELOC_16C_DISP24a_C, |
|
4108 BFD_RELOC_16C_REG04, |
|
4109 BFD_RELOC_16C_REG04_C, |
|
4110 BFD_RELOC_16C_REG04a, |
|
4111 BFD_RELOC_16C_REG04a_C, |
|
4112 BFD_RELOC_16C_REG14, |
|
4113 BFD_RELOC_16C_REG14_C, |
|
4114 BFD_RELOC_16C_REG16, |
|
4115 BFD_RELOC_16C_REG16_C, |
|
4116 BFD_RELOC_16C_REG20, |
|
4117 BFD_RELOC_16C_REG20_C, |
|
4118 BFD_RELOC_16C_ABS20, |
|
4119 BFD_RELOC_16C_ABS20_C, |
|
4120 BFD_RELOC_16C_ABS24, |
|
4121 BFD_RELOC_16C_ABS24_C, |
|
4122 BFD_RELOC_16C_IMM04, |
|
4123 BFD_RELOC_16C_IMM04_C, |
|
4124 BFD_RELOC_16C_IMM16, |
|
4125 BFD_RELOC_16C_IMM16_C, |
|
4126 BFD_RELOC_16C_IMM20, |
|
4127 BFD_RELOC_16C_IMM20_C, |
|
4128 BFD_RELOC_16C_IMM24, |
|
4129 BFD_RELOC_16C_IMM24_C, |
|
4130 BFD_RELOC_16C_IMM32, |
|
4131 BFD_RELOC_16C_IMM32_C, |
|
4132 |
|
4133 /* NS CR16 Relocations. */ |
|
4134 BFD_RELOC_CR16_NUM8, |
|
4135 BFD_RELOC_CR16_NUM16, |
|
4136 BFD_RELOC_CR16_NUM32, |
|
4137 BFD_RELOC_CR16_NUM32a, |
|
4138 BFD_RELOC_CR16_REGREL0, |
|
4139 BFD_RELOC_CR16_REGREL4, |
|
4140 BFD_RELOC_CR16_REGREL4a, |
|
4141 BFD_RELOC_CR16_REGREL14, |
|
4142 BFD_RELOC_CR16_REGREL14a, |
|
4143 BFD_RELOC_CR16_REGREL16, |
|
4144 BFD_RELOC_CR16_REGREL20, |
|
4145 BFD_RELOC_CR16_REGREL20a, |
|
4146 BFD_RELOC_CR16_ABS20, |
|
4147 BFD_RELOC_CR16_ABS24, |
|
4148 BFD_RELOC_CR16_IMM4, |
|
4149 BFD_RELOC_CR16_IMM8, |
|
4150 BFD_RELOC_CR16_IMM16, |
|
4151 BFD_RELOC_CR16_IMM20, |
|
4152 BFD_RELOC_CR16_IMM24, |
|
4153 BFD_RELOC_CR16_IMM32, |
|
4154 BFD_RELOC_CR16_IMM32a, |
|
4155 BFD_RELOC_CR16_DISP4, |
|
4156 BFD_RELOC_CR16_DISP8, |
|
4157 BFD_RELOC_CR16_DISP16, |
|
4158 BFD_RELOC_CR16_DISP20, |
|
4159 BFD_RELOC_CR16_DISP24, |
|
4160 BFD_RELOC_CR16_DISP24a, |
|
4161 BFD_RELOC_CR16_SWITCH8, |
|
4162 BFD_RELOC_CR16_SWITCH16, |
|
4163 BFD_RELOC_CR16_SWITCH32, |
|
4164 |
|
4165 /* NS CRX Relocations. */ |
|
4166 BFD_RELOC_CRX_REL4, |
|
4167 BFD_RELOC_CRX_REL8, |
|
4168 BFD_RELOC_CRX_REL8_CMP, |
|
4169 BFD_RELOC_CRX_REL16, |
|
4170 BFD_RELOC_CRX_REL24, |
|
4171 BFD_RELOC_CRX_REL32, |
|
4172 BFD_RELOC_CRX_REGREL12, |
|
4173 BFD_RELOC_CRX_REGREL22, |
|
4174 BFD_RELOC_CRX_REGREL28, |
|
4175 BFD_RELOC_CRX_REGREL32, |
|
4176 BFD_RELOC_CRX_ABS16, |
|
4177 BFD_RELOC_CRX_ABS32, |
|
4178 BFD_RELOC_CRX_NUM8, |
|
4179 BFD_RELOC_CRX_NUM16, |
|
4180 BFD_RELOC_CRX_NUM32, |
|
4181 BFD_RELOC_CRX_IMM16, |
|
4182 BFD_RELOC_CRX_IMM32, |
|
4183 BFD_RELOC_CRX_SWITCH8, |
|
4184 BFD_RELOC_CRX_SWITCH16, |
|
4185 BFD_RELOC_CRX_SWITCH32, |
|
4186 |
|
4187 /* These relocs are only used within the CRIS assembler. They are not |
|
4188 (at present) written to any object files. */ |
|
4189 BFD_RELOC_CRIS_BDISP8, |
|
4190 BFD_RELOC_CRIS_UNSIGNED_5, |
|
4191 BFD_RELOC_CRIS_SIGNED_6, |
|
4192 BFD_RELOC_CRIS_UNSIGNED_6, |
|
4193 BFD_RELOC_CRIS_SIGNED_8, |
|
4194 BFD_RELOC_CRIS_UNSIGNED_8, |
|
4195 BFD_RELOC_CRIS_SIGNED_16, |
|
4196 BFD_RELOC_CRIS_UNSIGNED_16, |
|
4197 BFD_RELOC_CRIS_LAPCQ_OFFSET, |
|
4198 BFD_RELOC_CRIS_UNSIGNED_4, |
|
4199 |
|
4200 /* Relocs used in ELF shared libraries for CRIS. */ |
|
4201 BFD_RELOC_CRIS_COPY, |
|
4202 BFD_RELOC_CRIS_GLOB_DAT, |
|
4203 BFD_RELOC_CRIS_JUMP_SLOT, |
|
4204 BFD_RELOC_CRIS_RELATIVE, |
|
4205 |
|
4206 /* 32-bit offset to symbol-entry within GOT. */ |
|
4207 BFD_RELOC_CRIS_32_GOT, |
|
4208 |
|
4209 /* 16-bit offset to symbol-entry within GOT. */ |
|
4210 BFD_RELOC_CRIS_16_GOT, |
|
4211 |
|
4212 /* 32-bit offset to symbol-entry within GOT, with PLT handling. */ |
|
4213 BFD_RELOC_CRIS_32_GOTPLT, |
|
4214 |
|
4215 /* 16-bit offset to symbol-entry within GOT, with PLT handling. */ |
|
4216 BFD_RELOC_CRIS_16_GOTPLT, |
|
4217 |
|
4218 /* 32-bit offset to symbol, relative to GOT. */ |
|
4219 BFD_RELOC_CRIS_32_GOTREL, |
|
4220 |
|
4221 /* 32-bit offset to symbol with PLT entry, relative to GOT. */ |
|
4222 BFD_RELOC_CRIS_32_PLT_GOTREL, |
|
4223 |
|
4224 /* 32-bit offset to symbol with PLT entry, relative to this relocation. */ |
|
4225 BFD_RELOC_CRIS_32_PLT_PCREL, |
|
4226 |
|
4227 /* Intel i860 Relocations. */ |
|
4228 BFD_RELOC_860_COPY, |
|
4229 BFD_RELOC_860_GLOB_DAT, |
|
4230 BFD_RELOC_860_JUMP_SLOT, |
|
4231 BFD_RELOC_860_RELATIVE, |
|
4232 BFD_RELOC_860_PC26, |
|
4233 BFD_RELOC_860_PLT26, |
|
4234 BFD_RELOC_860_PC16, |
|
4235 BFD_RELOC_860_LOW0, |
|
4236 BFD_RELOC_860_SPLIT0, |
|
4237 BFD_RELOC_860_LOW1, |
|
4238 BFD_RELOC_860_SPLIT1, |
|
4239 BFD_RELOC_860_LOW2, |
|
4240 BFD_RELOC_860_SPLIT2, |
|
4241 BFD_RELOC_860_LOW3, |
|
4242 BFD_RELOC_860_LOGOT0, |
|
4243 BFD_RELOC_860_SPGOT0, |
|
4244 BFD_RELOC_860_LOGOT1, |
|
4245 BFD_RELOC_860_SPGOT1, |
|
4246 BFD_RELOC_860_LOGOTOFF0, |
|
4247 BFD_RELOC_860_SPGOTOFF0, |
|
4248 BFD_RELOC_860_LOGOTOFF1, |
|
4249 BFD_RELOC_860_SPGOTOFF1, |
|
4250 BFD_RELOC_860_LOGOTOFF2, |
|
4251 BFD_RELOC_860_LOGOTOFF3, |
|
4252 BFD_RELOC_860_LOPC, |
|
4253 BFD_RELOC_860_HIGHADJ, |
|
4254 BFD_RELOC_860_HAGOT, |
|
4255 BFD_RELOC_860_HAGOTOFF, |
|
4256 BFD_RELOC_860_HAPC, |
|
4257 BFD_RELOC_860_HIGH, |
|
4258 BFD_RELOC_860_HIGOT, |
|
4259 BFD_RELOC_860_HIGOTOFF, |
|
4260 |
|
4261 /* OpenRISC Relocations. */ |
|
4262 BFD_RELOC_OPENRISC_ABS_26, |
|
4263 BFD_RELOC_OPENRISC_REL_26, |
|
4264 |
|
4265 /* H8 elf Relocations. */ |
|
4266 BFD_RELOC_H8_DIR16A8, |
|
4267 BFD_RELOC_H8_DIR16R8, |
|
4268 BFD_RELOC_H8_DIR24A8, |
|
4269 BFD_RELOC_H8_DIR24R8, |
|
4270 BFD_RELOC_H8_DIR32A16, |
|
4271 |
|
4272 /* Sony Xstormy16 Relocations. */ |
|
4273 BFD_RELOC_XSTORMY16_REL_12, |
|
4274 BFD_RELOC_XSTORMY16_12, |
|
4275 BFD_RELOC_XSTORMY16_24, |
|
4276 BFD_RELOC_XSTORMY16_FPTR16, |
|
4277 |
|
4278 /* Self-describing complex relocations. */ |
|
4279 BFD_RELOC_RELC, |
|
4280 |
|
4281 |
|
4282 /* Infineon Relocations. */ |
|
4283 BFD_RELOC_XC16X_PAG, |
|
4284 BFD_RELOC_XC16X_POF, |
|
4285 BFD_RELOC_XC16X_SEG, |
|
4286 BFD_RELOC_XC16X_SOF, |
|
4287 |
|
4288 /* Relocations used by VAX ELF. */ |
|
4289 BFD_RELOC_VAX_GLOB_DAT, |
|
4290 BFD_RELOC_VAX_JMP_SLOT, |
|
4291 BFD_RELOC_VAX_RELATIVE, |
|
4292 |
|
4293 /* Morpho MT - 16 bit immediate relocation. */ |
|
4294 BFD_RELOC_MT_PC16, |
|
4295 |
|
4296 /* Morpho MT - Hi 16 bits of an address. */ |
|
4297 BFD_RELOC_MT_HI16, |
|
4298 |
|
4299 /* Morpho MT - Low 16 bits of an address. */ |
|
4300 BFD_RELOC_MT_LO16, |
|
4301 |
|
4302 /* Morpho MT - Used to tell the linker which vtable entries are used. */ |
|
4303 BFD_RELOC_MT_GNU_VTINHERIT, |
|
4304 |
|
4305 /* Morpho MT - Used to tell the linker which vtable entries are used. */ |
|
4306 BFD_RELOC_MT_GNU_VTENTRY, |
|
4307 |
|
4308 /* Morpho MT - 8 bit immediate relocation. */ |
|
4309 BFD_RELOC_MT_PCINSN8, |
|
4310 |
|
4311 /* msp430 specific relocation codes */ |
|
4312 BFD_RELOC_MSP430_10_PCREL, |
|
4313 BFD_RELOC_MSP430_16_PCREL, |
|
4314 BFD_RELOC_MSP430_16, |
|
4315 BFD_RELOC_MSP430_16_PCREL_BYTE, |
|
4316 BFD_RELOC_MSP430_16_BYTE, |
|
4317 BFD_RELOC_MSP430_2X_PCREL, |
|
4318 BFD_RELOC_MSP430_RL_PCREL, |
|
4319 |
|
4320 /* IQ2000 Relocations. */ |
|
4321 BFD_RELOC_IQ2000_OFFSET_16, |
|
4322 BFD_RELOC_IQ2000_OFFSET_21, |
|
4323 BFD_RELOC_IQ2000_UHI16, |
|
4324 |
|
4325 /* Special Xtensa relocation used only by PLT entries in ELF shared |
|
4326 objects to indicate that the runtime linker should set the value |
|
4327 to one of its own internal functions or data structures. */ |
|
4328 BFD_RELOC_XTENSA_RTLD, |
|
4329 |
|
4330 /* Xtensa relocations for ELF shared objects. */ |
|
4331 BFD_RELOC_XTENSA_GLOB_DAT, |
|
4332 BFD_RELOC_XTENSA_JMP_SLOT, |
|
4333 BFD_RELOC_XTENSA_RELATIVE, |
|
4334 |
|
4335 /* Xtensa relocation used in ELF object files for symbols that may require |
|
4336 PLT entries. Otherwise, this is just a generic 32-bit relocation. */ |
|
4337 BFD_RELOC_XTENSA_PLT, |
|
4338 |
|
4339 /* Xtensa relocations to mark the difference of two local symbols. |
|
4340 These are only needed to support linker relaxation and can be ignored |
|
4341 when not relaxing. The field is set to the value of the difference |
|
4342 assuming no relaxation. The relocation encodes the position of the |
|
4343 first symbol so the linker can determine whether to adjust the field |
|
4344 value. */ |
|
4345 BFD_RELOC_XTENSA_DIFF8, |
|
4346 BFD_RELOC_XTENSA_DIFF16, |
|
4347 BFD_RELOC_XTENSA_DIFF32, |
|
4348 |
|
4349 /* Generic Xtensa relocations for instruction operands. Only the slot |
|
4350 number is encoded in the relocation. The relocation applies to the |
|
4351 last PC-relative immediate operand, or if there are no PC-relative |
|
4352 immediates, to the last immediate operand. */ |
|
4353 BFD_RELOC_XTENSA_SLOT0_OP, |
|
4354 BFD_RELOC_XTENSA_SLOT1_OP, |
|
4355 BFD_RELOC_XTENSA_SLOT2_OP, |
|
4356 BFD_RELOC_XTENSA_SLOT3_OP, |
|
4357 BFD_RELOC_XTENSA_SLOT4_OP, |
|
4358 BFD_RELOC_XTENSA_SLOT5_OP, |
|
4359 BFD_RELOC_XTENSA_SLOT6_OP, |
|
4360 BFD_RELOC_XTENSA_SLOT7_OP, |
|
4361 BFD_RELOC_XTENSA_SLOT8_OP, |
|
4362 BFD_RELOC_XTENSA_SLOT9_OP, |
|
4363 BFD_RELOC_XTENSA_SLOT10_OP, |
|
4364 BFD_RELOC_XTENSA_SLOT11_OP, |
|
4365 BFD_RELOC_XTENSA_SLOT12_OP, |
|
4366 BFD_RELOC_XTENSA_SLOT13_OP, |
|
4367 BFD_RELOC_XTENSA_SLOT14_OP, |
|
4368 |
|
4369 /* Alternate Xtensa relocations. Only the slot is encoded in the |
|
4370 relocation. The meaning of these relocations is opcode-specific. */ |
|
4371 BFD_RELOC_XTENSA_SLOT0_ALT, |
|
4372 BFD_RELOC_XTENSA_SLOT1_ALT, |
|
4373 BFD_RELOC_XTENSA_SLOT2_ALT, |
|
4374 BFD_RELOC_XTENSA_SLOT3_ALT, |
|
4375 BFD_RELOC_XTENSA_SLOT4_ALT, |
|
4376 BFD_RELOC_XTENSA_SLOT5_ALT, |
|
4377 BFD_RELOC_XTENSA_SLOT6_ALT, |
|
4378 BFD_RELOC_XTENSA_SLOT7_ALT, |
|
4379 BFD_RELOC_XTENSA_SLOT8_ALT, |
|
4380 BFD_RELOC_XTENSA_SLOT9_ALT, |
|
4381 BFD_RELOC_XTENSA_SLOT10_ALT, |
|
4382 BFD_RELOC_XTENSA_SLOT11_ALT, |
|
4383 BFD_RELOC_XTENSA_SLOT12_ALT, |
|
4384 BFD_RELOC_XTENSA_SLOT13_ALT, |
|
4385 BFD_RELOC_XTENSA_SLOT14_ALT, |
|
4386 |
|
4387 /* Xtensa relocations for backward compatibility. These have all been |
|
4388 replaced by BFD_RELOC_XTENSA_SLOT0_OP. */ |
|
4389 BFD_RELOC_XTENSA_OP0, |
|
4390 BFD_RELOC_XTENSA_OP1, |
|
4391 BFD_RELOC_XTENSA_OP2, |
|
4392 |
|
4393 /* Xtensa relocation to mark that the assembler expanded the |
|
4394 instructions from an original target. The expansion size is |
|
4395 encoded in the reloc size. */ |
|
4396 BFD_RELOC_XTENSA_ASM_EXPAND, |
|
4397 |
|
4398 /* Xtensa relocation to mark that the linker should simplify |
|
4399 assembler-expanded instructions. This is commonly used |
|
4400 internally by the linker after analysis of a |
|
4401 BFD_RELOC_XTENSA_ASM_EXPAND. */ |
|
4402 BFD_RELOC_XTENSA_ASM_SIMPLIFY, |
|
4403 |
|
4404 /* 8 bit signed offset in (ix+d) or (iy+d). */ |
|
4405 BFD_RELOC_Z80_DISP8, |
|
4406 |
|
4407 /* DJNZ offset. */ |
|
4408 BFD_RELOC_Z8K_DISP7, |
|
4409 |
|
4410 /* CALR offset. */ |
|
4411 BFD_RELOC_Z8K_CALLR, |
|
4412 |
|
4413 /* 4 bit value. */ |
|
4414 BFD_RELOC_Z8K_IMM4L, |
|
4415 BFD_RELOC_UNUSED }; |
|
4416 typedef enum bfd_reloc_code_real bfd_reloc_code_real_type; |
|
4417 reloc_howto_type *bfd_reloc_type_lookup |
|
4418 (bfd *abfd, bfd_reloc_code_real_type code); |
|
4419 reloc_howto_type *bfd_reloc_name_lookup |
|
4420 (bfd *abfd, const char *reloc_name); |
|
4421 |
|
4422 const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code); |
|
4423 |
|
4424 /* Extracted from syms.c. */ |
|
4425 |
|
4426 typedef struct bfd_symbol |
|
4427 { |
|
4428 /* A pointer to the BFD which owns the symbol. This information |
|
4429 is necessary so that a back end can work out what additional |
|
4430 information (invisible to the application writer) is carried |
|
4431 with the symbol. |
|
4432 |
|
4433 This field is *almost* redundant, since you can use section->owner |
|
4434 instead, except that some symbols point to the global sections |
|
4435 bfd_{abs,com,und}_section. This could be fixed by making |
|
4436 these globals be per-bfd (or per-target-flavor). FIXME. */ |
|
4437 struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */ |
|
4438 |
|
4439 /* The text of the symbol. The name is left alone, and not copied; the |
|
4440 application may not alter it. */ |
|
4441 const char *name; |
|
4442 |
|
4443 /* The value of the symbol. This really should be a union of a |
|
4444 numeric value with a pointer, since some flags indicate that |
|
4445 a pointer to another symbol is stored here. */ |
|
4446 symvalue value; |
|
4447 |
|
4448 /* Attributes of a symbol. */ |
|
4449 #define BSF_NO_FLAGS 0x00 |
|
4450 |
|
4451 /* The symbol has local scope; <<static>> in <<C>>. The value |
|
4452 is the offset into the section of the data. */ |
|
4453 #define BSF_LOCAL 0x01 |
|
4454 |
|
4455 /* The symbol has global scope; initialized data in <<C>>. The |
|
4456 value is the offset into the section of the data. */ |
|
4457 #define BSF_GLOBAL 0x02 |
|
4458 |
|
4459 /* The symbol has global scope and is exported. The value is |
|
4460 the offset into the section of the data. */ |
|
4461 #define BSF_EXPORT BSF_GLOBAL /* No real difference. */ |
|
4462 |
|
4463 /* A normal C symbol would be one of: |
|
4464 <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or |
|
4465 <<BSF_GLOBAL>>. */ |
|
4466 |
|
4467 /* The symbol is a debugging record. The value has an arbitrary |
|
4468 meaning, unless BSF_DEBUGGING_RELOC is also set. */ |
|
4469 #define BSF_DEBUGGING 0x08 |
|
4470 |
|
4471 /* The symbol denotes a function entry point. Used in ELF, |
|
4472 perhaps others someday. */ |
|
4473 #define BSF_FUNCTION 0x10 |
|
4474 |
|
4475 /* Used by the linker. */ |
|
4476 #define BSF_KEEP 0x20 |
|
4477 #define BSF_KEEP_G 0x40 |
|
4478 |
|
4479 /* A weak global symbol, overridable without warnings by |
|
4480 a regular global symbol of the same name. */ |
|
4481 #define BSF_WEAK 0x80 |
|
4482 |
|
4483 /* This symbol was created to point to a section, e.g. ELF's |
|
4484 STT_SECTION symbols. */ |
|
4485 #define BSF_SECTION_SYM 0x100 |
|
4486 |
|
4487 /* The symbol used to be a common symbol, but now it is |
|
4488 allocated. */ |
|
4489 #define BSF_OLD_COMMON 0x200 |
|
4490 |
|
4491 /* The default value for common data. */ |
|
4492 #define BFD_FORT_COMM_DEFAULT_VALUE 0 |
|
4493 |
|
4494 /* In some files the type of a symbol sometimes alters its |
|
4495 location in an output file - ie in coff a <<ISFCN>> symbol |
|
4496 which is also <<C_EXT>> symbol appears where it was |
|
4497 declared and not at the end of a section. This bit is set |
|
4498 by the target BFD part to convey this information. */ |
|
4499 #define BSF_NOT_AT_END 0x400 |
|
4500 |
|
4501 /* Signal that the symbol is the label of constructor section. */ |
|
4502 #define BSF_CONSTRUCTOR 0x800 |
|
4503 |
|
4504 /* Signal that the symbol is a warning symbol. The name is a |
|
4505 warning. The name of the next symbol is the one to warn about; |
|
4506 if a reference is made to a symbol with the same name as the next |
|
4507 symbol, a warning is issued by the linker. */ |
|
4508 #define BSF_WARNING 0x1000 |
|
4509 |
|
4510 /* Signal that the symbol is indirect. This symbol is an indirect |
|
4511 pointer to the symbol with the same name as the next symbol. */ |
|
4512 #define BSF_INDIRECT 0x2000 |
|
4513 |
|
4514 /* BSF_FILE marks symbols that contain a file name. This is used |
|
4515 for ELF STT_FILE symbols. */ |
|
4516 #define BSF_FILE 0x4000 |
|
4517 |
|
4518 /* Symbol is from dynamic linking information. */ |
|
4519 #define BSF_DYNAMIC 0x8000 |
|
4520 |
|
4521 /* The symbol denotes a data object. Used in ELF, and perhaps |
|
4522 others someday. */ |
|
4523 #define BSF_OBJECT 0x10000 |
|
4524 |
|
4525 /* This symbol is a debugging symbol. The value is the offset |
|
4526 into the section of the data. BSF_DEBUGGING should be set |
|
4527 as well. */ |
|
4528 #define BSF_DEBUGGING_RELOC 0x20000 |
|
4529 |
|
4530 /* This symbol is thread local. Used in ELF. */ |
|
4531 #define BSF_THREAD_LOCAL 0x40000 |
|
4532 |
|
4533 /* This symbol represents a complex relocation expression, |
|
4534 with the expression tree serialized in the symbol name. */ |
|
4535 #define BSF_RELC 0x80000 |
|
4536 |
|
4537 /* This symbol represents a signed complex relocation expression, |
|
4538 with the expression tree serialized in the symbol name. */ |
|
4539 #define BSF_SRELC 0x100000 |
|
4540 |
|
4541 flagword flags; |
|
4542 |
|
4543 /* A pointer to the section to which this symbol is |
|
4544 relative. This will always be non NULL, there are special |
|
4545 sections for undefined and absolute symbols. */ |
|
4546 struct bfd_section *section; |
|
4547 |
|
4548 /* Back end special data. */ |
|
4549 union |
|
4550 { |
|
4551 void *p; |
|
4552 bfd_vma i; |
|
4553 } |
|
4554 udata; |
|
4555 } |
|
4556 asymbol; |
|
4557 |
|
4558 #define bfd_get_symtab_upper_bound(abfd) \ |
|
4559 BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd)) |
|
4560 |
|
4561 bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym); |
|
4562 |
|
4563 bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name); |
|
4564 |
|
4565 #define bfd_is_local_label_name(abfd, name) \ |
|
4566 BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name)) |
|
4567 |
|
4568 bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym); |
|
4569 |
|
4570 #define bfd_is_target_special_symbol(abfd, sym) \ |
|
4571 BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym)) |
|
4572 |
|
4573 #define bfd_canonicalize_symtab(abfd, location) \ |
|
4574 BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location)) |
|
4575 |
|
4576 bfd_boolean bfd_set_symtab |
|
4577 (bfd *abfd, asymbol **location, unsigned int count); |
|
4578 |
|
4579 void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol); |
|
4580 |
|
4581 #define bfd_make_empty_symbol(abfd) \ |
|
4582 BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd)) |
|
4583 |
|
4584 asymbol *_bfd_generic_make_empty_symbol (bfd *); |
|
4585 |
|
4586 #define bfd_make_debug_symbol(abfd,ptr,size) \ |
|
4587 BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size)) |
|
4588 |
|
4589 int bfd_decode_symclass (asymbol *symbol); |
|
4590 |
|
4591 bfd_boolean bfd_is_undefined_symclass (int symclass); |
|
4592 |
|
4593 void bfd_symbol_info (asymbol *symbol, symbol_info *ret); |
|
4594 |
|
4595 bfd_boolean bfd_copy_private_symbol_data |
|
4596 (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym); |
|
4597 |
|
4598 #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \ |
|
4599 BFD_SEND (obfd, _bfd_copy_private_symbol_data, \ |
|
4600 (ibfd, isymbol, obfd, osymbol)) |
|
4601 |
|
4602 /* Extracted from bfd.c. */ |
|
4603 struct bfd |
|
4604 { |
|
4605 /* A unique identifier of the BFD */ |
|
4606 unsigned int id; |
|
4607 |
|
4608 /* The filename the application opened the BFD with. */ |
|
4609 const char *filename; |
|
4610 |
|
4611 /* A pointer to the target jump table. */ |
|
4612 const struct bfd_target *xvec; |
|
4613 |
|
4614 /* The IOSTREAM, and corresponding IO vector that provide access |
|
4615 to the file backing the BFD. */ |
|
4616 void *iostream; |
|
4617 const struct bfd_iovec *iovec; |
|
4618 |
|
4619 /* Is the file descriptor being cached? That is, can it be closed as |
|
4620 needed, and re-opened when accessed later? */ |
|
4621 bfd_boolean cacheable; |
|
4622 |
|
4623 /* Marks whether there was a default target specified when the |
|
4624 BFD was opened. This is used to select which matching algorithm |
|
4625 to use to choose the back end. */ |
|
4626 bfd_boolean target_defaulted; |
|
4627 |
|
4628 /* The caching routines use these to maintain a |
|
4629 least-recently-used list of BFDs. */ |
|
4630 struct bfd *lru_prev, *lru_next; |
|
4631 |
|
4632 /* When a file is closed by the caching routines, BFD retains |
|
4633 state information on the file here... */ |
|
4634 ufile_ptr where; |
|
4635 |
|
4636 /* ... and here: (``once'' means at least once). */ |
|
4637 bfd_boolean opened_once; |
|
4638 |
|
4639 /* Set if we have a locally maintained mtime value, rather than |
|
4640 getting it from the file each time. */ |
|
4641 bfd_boolean mtime_set; |
|
4642 |
|
4643 /* File modified time, if mtime_set is TRUE. */ |
|
4644 long mtime; |
|
4645 |
|
4646 /* Reserved for an unimplemented file locking extension. */ |
|
4647 int ifd; |
|
4648 |
|
4649 /* The format which belongs to the BFD. (object, core, etc.) */ |
|
4650 bfd_format format; |
|
4651 |
|
4652 /* The direction with which the BFD was opened. */ |
|
4653 enum bfd_direction |
|
4654 { |
|
4655 no_direction = 0, |
|
4656 read_direction = 1, |
|
4657 write_direction = 2, |
|
4658 both_direction = 3 |
|
4659 } |
|
4660 direction; |
|
4661 |
|
4662 /* Format_specific flags. */ |
|
4663 flagword flags; |
|
4664 |
|
4665 /* Currently my_archive is tested before adding origin to |
|
4666 anything. I believe that this can become always an add of |
|
4667 origin, with origin set to 0 for non archive files. */ |
|
4668 ufile_ptr origin; |
|
4669 |
|
4670 /* Remember when output has begun, to stop strange things |
|
4671 from happening. */ |
|
4672 bfd_boolean output_has_begun; |
|
4673 |
|
4674 /* A hash table for section names. */ |
|
4675 struct bfd_hash_table section_htab; |
|
4676 |
|
4677 /* Pointer to linked list of sections. */ |
|
4678 struct bfd_section *sections; |
|
4679 |
|
4680 /* The last section on the section list. */ |
|
4681 struct bfd_section *section_last; |
|
4682 |
|
4683 /* The number of sections. */ |
|
4684 unsigned int section_count; |
|
4685 |
|
4686 /* Stuff only useful for object files: |
|
4687 The start address. */ |
|
4688 bfd_vma start_address; |
|
4689 |
|
4690 /* Used for input and output. */ |
|
4691 unsigned int symcount; |
|
4692 |
|
4693 /* Symbol table for output BFD (with symcount entries). */ |
|
4694 struct bfd_symbol **outsymbols; |
|
4695 |
|
4696 /* Used for slurped dynamic symbol tables. */ |
|
4697 unsigned int dynsymcount; |
|
4698 |
|
4699 /* Pointer to structure which contains architecture information. */ |
|
4700 const struct bfd_arch_info *arch_info; |
|
4701 |
|
4702 /* Flag set if symbols from this BFD should not be exported. */ |
|
4703 bfd_boolean no_export; |
|
4704 |
|
4705 /* Stuff only useful for archives. */ |
|
4706 void *arelt_data; |
|
4707 struct bfd *my_archive; /* The containing archive BFD. */ |
|
4708 struct bfd *archive_next; /* The next BFD in the archive. */ |
|
4709 struct bfd *archive_head; /* The first BFD in the archive. */ |
|
4710 bfd_boolean has_armap; |
|
4711 |
|
4712 /* A chain of BFD structures involved in a link. */ |
|
4713 struct bfd *link_next; |
|
4714 |
|
4715 /* A field used by _bfd_generic_link_add_archive_symbols. This will |
|
4716 be used only for archive elements. */ |
|
4717 int archive_pass; |
|
4718 |
|
4719 /* Used by the back end to hold private data. */ |
|
4720 union |
|
4721 { |
|
4722 struct aout_data_struct *aout_data; |
|
4723 struct artdata *aout_ar_data; |
|
4724 struct _oasys_data *oasys_obj_data; |
|
4725 struct _oasys_ar_data *oasys_ar_data; |
|
4726 struct coff_tdata *coff_obj_data; |
|
4727 struct pe_tdata *pe_obj_data; |
|
4728 struct xcoff_tdata *xcoff_obj_data; |
|
4729 struct ecoff_tdata *ecoff_obj_data; |
|
4730 struct ieee_data_struct *ieee_data; |
|
4731 struct ieee_ar_data_struct *ieee_ar_data; |
|
4732 struct srec_data_struct *srec_data; |
|
4733 struct ihex_data_struct *ihex_data; |
|
4734 struct tekhex_data_struct *tekhex_data; |
|
4735 struct elf_obj_tdata *elf_obj_data; |
|
4736 struct nlm_obj_tdata *nlm_obj_data; |
|
4737 struct bout_data_struct *bout_data; |
|
4738 struct mmo_data_struct *mmo_data; |
|
4739 struct sun_core_struct *sun_core_data; |
|
4740 struct sco5_core_struct *sco5_core_data; |
|
4741 struct trad_core_struct *trad_core_data; |
|
4742 struct som_data_struct *som_data; |
|
4743 struct hpux_core_struct *hpux_core_data; |
|
4744 struct hppabsd_core_struct *hppabsd_core_data; |
|
4745 struct sgi_core_struct *sgi_core_data; |
|
4746 struct lynx_core_struct *lynx_core_data; |
|
4747 struct osf_core_struct *osf_core_data; |
|
4748 struct cisco_core_struct *cisco_core_data; |
|
4749 struct versados_data_struct *versados_data; |
|
4750 struct netbsd_core_struct *netbsd_core_data; |
|
4751 struct mach_o_data_struct *mach_o_data; |
|
4752 struct mach_o_fat_data_struct *mach_o_fat_data; |
|
4753 struct bfd_pef_data_struct *pef_data; |
|
4754 struct bfd_pef_xlib_data_struct *pef_xlib_data; |
|
4755 struct bfd_sym_data_struct *sym_data; |
|
4756 void *any; |
|
4757 } |
|
4758 tdata; |
|
4759 |
|
4760 /* Used by the application to hold private data. */ |
|
4761 void *usrdata; |
|
4762 |
|
4763 /* Where all the allocated stuff under this BFD goes. This is a |
|
4764 struct objalloc *, but we use void * to avoid requiring the inclusion |
|
4765 of objalloc.h. */ |
|
4766 void *memory; |
|
4767 }; |
|
4768 |
|
4769 typedef enum bfd_error |
|
4770 { |
|
4771 bfd_error_no_error = 0, |
|
4772 bfd_error_system_call, |
|
4773 bfd_error_invalid_target, |
|
4774 bfd_error_wrong_format, |
|
4775 bfd_error_wrong_object_format, |
|
4776 bfd_error_invalid_operation, |
|
4777 bfd_error_no_memory, |
|
4778 bfd_error_no_symbols, |
|
4779 bfd_error_no_armap, |
|
4780 bfd_error_no_more_archived_files, |
|
4781 bfd_error_malformed_archive, |
|
4782 bfd_error_file_not_recognized, |
|
4783 bfd_error_file_ambiguously_recognized, |
|
4784 bfd_error_no_contents, |
|
4785 bfd_error_nonrepresentable_section, |
|
4786 bfd_error_no_debug_section, |
|
4787 bfd_error_bad_value, |
|
4788 bfd_error_file_truncated, |
|
4789 bfd_error_file_too_big, |
|
4790 bfd_error_on_input, |
|
4791 bfd_error_invalid_error_code |
|
4792 } |
|
4793 bfd_error_type; |
|
4794 |
|
4795 bfd_error_type bfd_get_error (void); |
|
4796 |
|
4797 void bfd_set_error (bfd_error_type error_tag, ...); |
|
4798 |
|
4799 const char *bfd_errmsg (bfd_error_type error_tag); |
|
4800 |
|
4801 void bfd_perror (const char *message); |
|
4802 |
|
4803 typedef void (*bfd_error_handler_type) (const char *, ...); |
|
4804 |
|
4805 bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type); |
|
4806 |
|
4807 void bfd_set_error_program_name (const char *); |
|
4808 |
|
4809 bfd_error_handler_type bfd_get_error_handler (void); |
|
4810 |
|
4811 long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect); |
|
4812 |
|
4813 long bfd_canonicalize_reloc |
|
4814 (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); |
|
4815 |
|
4816 void bfd_set_reloc |
|
4817 (bfd *abfd, asection *sec, arelent **rel, unsigned int count); |
|
4818 |
|
4819 bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags); |
|
4820 |
|
4821 int bfd_get_arch_size (bfd *abfd); |
|
4822 |
|
4823 int bfd_get_sign_extend_vma (bfd *abfd); |
|
4824 |
|
4825 bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma); |
|
4826 |
|
4827 unsigned int bfd_get_gp_size (bfd *abfd); |
|
4828 |
|
4829 void bfd_set_gp_size (bfd *abfd, unsigned int i); |
|
4830 |
|
4831 bfd_vma bfd_scan_vma (const char *string, const char **end, int base); |
|
4832 |
|
4833 bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd); |
|
4834 |
|
4835 #define bfd_copy_private_header_data(ibfd, obfd) \ |
|
4836 BFD_SEND (obfd, _bfd_copy_private_header_data, \ |
|
4837 (ibfd, obfd)) |
|
4838 bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd); |
|
4839 |
|
4840 #define bfd_copy_private_bfd_data(ibfd, obfd) \ |
|
4841 BFD_SEND (obfd, _bfd_copy_private_bfd_data, \ |
|
4842 (ibfd, obfd)) |
|
4843 bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd); |
|
4844 |
|
4845 #define bfd_merge_private_bfd_data(ibfd, obfd) \ |
|
4846 BFD_SEND (obfd, _bfd_merge_private_bfd_data, \ |
|
4847 (ibfd, obfd)) |
|
4848 bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags); |
|
4849 |
|
4850 #define bfd_set_private_flags(abfd, flags) \ |
|
4851 BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags)) |
|
4852 #define bfd_sizeof_headers(abfd, info) \ |
|
4853 BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info)) |
|
4854 |
|
4855 #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \ |
|
4856 BFD_SEND (abfd, _bfd_find_nearest_line, \ |
|
4857 (abfd, sec, syms, off, file, func, line)) |
|
4858 |
|
4859 #define bfd_find_line(abfd, syms, sym, file, line) \ |
|
4860 BFD_SEND (abfd, _bfd_find_line, \ |
|
4861 (abfd, syms, sym, file, line)) |
|
4862 |
|
4863 #define bfd_find_inliner_info(abfd, file, func, line) \ |
|
4864 BFD_SEND (abfd, _bfd_find_inliner_info, \ |
|
4865 (abfd, file, func, line)) |
|
4866 |
|
4867 #define bfd_debug_info_start(abfd) \ |
|
4868 BFD_SEND (abfd, _bfd_debug_info_start, (abfd)) |
|
4869 |
|
4870 #define bfd_debug_info_end(abfd) \ |
|
4871 BFD_SEND (abfd, _bfd_debug_info_end, (abfd)) |
|
4872 |
|
4873 #define bfd_debug_info_accumulate(abfd, section) \ |
|
4874 BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section)) |
|
4875 |
|
4876 #define bfd_stat_arch_elt(abfd, stat) \ |
|
4877 BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat)) |
|
4878 |
|
4879 #define bfd_update_armap_timestamp(abfd) \ |
|
4880 BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd)) |
|
4881 |
|
4882 #define bfd_set_arch_mach(abfd, arch, mach)\ |
|
4883 BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach)) |
|
4884 |
|
4885 #define bfd_relax_section(abfd, section, link_info, again) \ |
|
4886 BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again)) |
|
4887 |
|
4888 #define bfd_gc_sections(abfd, link_info) \ |
|
4889 BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info)) |
|
4890 |
|
4891 #define bfd_merge_sections(abfd, link_info) \ |
|
4892 BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info)) |
|
4893 |
|
4894 #define bfd_is_group_section(abfd, sec) \ |
|
4895 BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec)) |
|
4896 |
|
4897 #define bfd_discard_group(abfd, sec) \ |
|
4898 BFD_SEND (abfd, _bfd_discard_group, (abfd, sec)) |
|
4899 |
|
4900 #define bfd_link_hash_table_create(abfd) \ |
|
4901 BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd)) |
|
4902 |
|
4903 #define bfd_link_hash_table_free(abfd, hash) \ |
|
4904 BFD_SEND (abfd, _bfd_link_hash_table_free, (hash)) |
|
4905 |
|
4906 #define bfd_link_add_symbols(abfd, info) \ |
|
4907 BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info)) |
|
4908 |
|
4909 #define bfd_link_just_syms(abfd, sec, info) \ |
|
4910 BFD_SEND (abfd, _bfd_link_just_syms, (sec, info)) |
|
4911 |
|
4912 #define bfd_final_link(abfd, info) \ |
|
4913 BFD_SEND (abfd, _bfd_final_link, (abfd, info)) |
|
4914 |
|
4915 #define bfd_free_cached_info(abfd) \ |
|
4916 BFD_SEND (abfd, _bfd_free_cached_info, (abfd)) |
|
4917 |
|
4918 #define bfd_get_dynamic_symtab_upper_bound(abfd) \ |
|
4919 BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd)) |
|
4920 |
|
4921 #define bfd_print_private_bfd_data(abfd, file)\ |
|
4922 BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file)) |
|
4923 |
|
4924 #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \ |
|
4925 BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols)) |
|
4926 |
|
4927 #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \ |
|
4928 BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \ |
|
4929 dyncount, dynsyms, ret)) |
|
4930 |
|
4931 #define bfd_get_dynamic_reloc_upper_bound(abfd) \ |
|
4932 BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd)) |
|
4933 |
|
4934 #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \ |
|
4935 BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms)) |
|
4936 |
|
4937 extern bfd_byte *bfd_get_relocated_section_contents |
|
4938 (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, |
|
4939 bfd_boolean, asymbol **); |
|
4940 |
|
4941 bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative); |
|
4942 |
|
4943 struct bfd_preserve |
|
4944 { |
|
4945 void *marker; |
|
4946 void *tdata; |
|
4947 flagword flags; |
|
4948 const struct bfd_arch_info *arch_info; |
|
4949 struct bfd_section *sections; |
|
4950 struct bfd_section *section_last; |
|
4951 unsigned int section_count; |
|
4952 struct bfd_hash_table section_htab; |
|
4953 }; |
|
4954 |
|
4955 bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *); |
|
4956 |
|
4957 void bfd_preserve_restore (bfd *, struct bfd_preserve *); |
|
4958 |
|
4959 void bfd_preserve_finish (bfd *, struct bfd_preserve *); |
|
4960 |
|
4961 bfd_vma bfd_emul_get_maxpagesize (const char *); |
|
4962 |
|
4963 void bfd_emul_set_maxpagesize (const char *, bfd_vma); |
|
4964 |
|
4965 bfd_vma bfd_emul_get_commonpagesize (const char *); |
|
4966 |
|
4967 void bfd_emul_set_commonpagesize (const char *, bfd_vma); |
|
4968 |
|
4969 char *bfd_demangle (bfd *, const char *, int); |
|
4970 |
|
4971 /* Extracted from archive.c. */ |
|
4972 symindex bfd_get_next_mapent |
|
4973 (bfd *abfd, symindex previous, carsym **sym); |
|
4974 |
|
4975 bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head); |
|
4976 |
|
4977 bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous); |
|
4978 |
|
4979 /* Extracted from corefile.c. */ |
|
4980 const char *bfd_core_file_failing_command (bfd *abfd); |
|
4981 |
|
4982 int bfd_core_file_failing_signal (bfd *abfd); |
|
4983 |
|
4984 bfd_boolean core_file_matches_executable_p |
|
4985 (bfd *core_bfd, bfd *exec_bfd); |
|
4986 |
|
4987 bfd_boolean generic_core_file_matches_executable_p |
|
4988 (bfd *core_bfd, bfd *exec_bfd); |
|
4989 |
|
4990 /* Extracted from targets.c. */ |
|
4991 #define BFD_SEND(bfd, message, arglist) \ |
|
4992 ((*((bfd)->xvec->message)) arglist) |
|
4993 |
|
4994 #ifdef DEBUG_BFD_SEND |
|
4995 #undef BFD_SEND |
|
4996 #define BFD_SEND(bfd, message, arglist) \ |
|
4997 (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ |
|
4998 ((*((bfd)->xvec->message)) arglist) : \ |
|
4999 (bfd_assert (__FILE__,__LINE__), NULL)) |
|
5000 #endif |
|
5001 #define BFD_SEND_FMT(bfd, message, arglist) \ |
|
5002 (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) |
|
5003 |
|
5004 #ifdef DEBUG_BFD_SEND |
|
5005 #undef BFD_SEND_FMT |
|
5006 #define BFD_SEND_FMT(bfd, message, arglist) \ |
|
5007 (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ |
|
5008 (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \ |
|
5009 (bfd_assert (__FILE__,__LINE__), NULL)) |
|
5010 #endif |
|
5011 |
|
5012 enum bfd_flavour |
|
5013 { |
|
5014 bfd_target_unknown_flavour, |
|
5015 bfd_target_aout_flavour, |
|
5016 bfd_target_coff_flavour, |
|
5017 bfd_target_ecoff_flavour, |
|
5018 bfd_target_xcoff_flavour, |
|
5019 bfd_target_elf_flavour, |
|
5020 bfd_target_ieee_flavour, |
|
5021 bfd_target_nlm_flavour, |
|
5022 bfd_target_oasys_flavour, |
|
5023 bfd_target_tekhex_flavour, |
|
5024 bfd_target_srec_flavour, |
|
5025 bfd_target_ihex_flavour, |
|
5026 bfd_target_som_flavour, |
|
5027 bfd_target_os9k_flavour, |
|
5028 bfd_target_versados_flavour, |
|
5029 bfd_target_msdos_flavour, |
|
5030 bfd_target_ovax_flavour, |
|
5031 bfd_target_evax_flavour, |
|
5032 bfd_target_mmo_flavour, |
|
5033 bfd_target_mach_o_flavour, |
|
5034 bfd_target_pef_flavour, |
|
5035 bfd_target_pef_xlib_flavour, |
|
5036 bfd_target_sym_flavour |
|
5037 }; |
|
5038 |
|
5039 enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN }; |
|
5040 |
|
5041 /* Forward declaration. */ |
|
5042 typedef struct bfd_link_info _bfd_link_info; |
|
5043 |
|
5044 typedef struct bfd_target |
|
5045 { |
|
5046 /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */ |
|
5047 char *name; |
|
5048 |
|
5049 /* The "flavour" of a back end is a general indication about |
|
5050 the contents of a file. */ |
|
5051 enum bfd_flavour flavour; |
|
5052 |
|
5053 /* The order of bytes within the data area of a file. */ |
|
5054 enum bfd_endian byteorder; |
|
5055 |
|
5056 /* The order of bytes within the header parts of a file. */ |
|
5057 enum bfd_endian header_byteorder; |
|
5058 |
|
5059 /* A mask of all the flags which an executable may have set - |
|
5060 from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */ |
|
5061 flagword object_flags; |
|
5062 |
|
5063 /* A mask of all the flags which a section may have set - from |
|
5064 the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */ |
|
5065 flagword section_flags; |
|
5066 |
|
5067 /* The character normally found at the front of a symbol. |
|
5068 (if any), perhaps `_'. */ |
|
5069 char symbol_leading_char; |
|
5070 |
|
5071 /* The pad character for file names within an archive header. */ |
|
5072 char ar_pad_char; |
|
5073 |
|
5074 /* The maximum number of characters in an archive header. */ |
|
5075 unsigned short ar_max_namelen; |
|
5076 |
|
5077 /* Entries for byte swapping for data. These are different from the |
|
5078 other entry points, since they don't take a BFD as the first argument. |
|
5079 Certain other handlers could do the same. */ |
|
5080 bfd_uint64_t (*bfd_getx64) (const void *); |
|
5081 bfd_int64_t (*bfd_getx_signed_64) (const void *); |
|
5082 void (*bfd_putx64) (bfd_uint64_t, void *); |
|
5083 bfd_vma (*bfd_getx32) (const void *); |
|
5084 bfd_signed_vma (*bfd_getx_signed_32) (const void *); |
|
5085 void (*bfd_putx32) (bfd_vma, void *); |
|
5086 bfd_vma (*bfd_getx16) (const void *); |
|
5087 bfd_signed_vma (*bfd_getx_signed_16) (const void *); |
|
5088 void (*bfd_putx16) (bfd_vma, void *); |
|
5089 |
|
5090 /* Byte swapping for the headers. */ |
|
5091 bfd_uint64_t (*bfd_h_getx64) (const void *); |
|
5092 bfd_int64_t (*bfd_h_getx_signed_64) (const void *); |
|
5093 void (*bfd_h_putx64) (bfd_uint64_t, void *); |
|
5094 bfd_vma (*bfd_h_getx32) (const void *); |
|
5095 bfd_signed_vma (*bfd_h_getx_signed_32) (const void *); |
|
5096 void (*bfd_h_putx32) (bfd_vma, void *); |
|
5097 bfd_vma (*bfd_h_getx16) (const void *); |
|
5098 bfd_signed_vma (*bfd_h_getx_signed_16) (const void *); |
|
5099 void (*bfd_h_putx16) (bfd_vma, void *); |
|
5100 |
|
5101 /* Format dependent routines: these are vectors of entry points |
|
5102 within the target vector structure, one for each format to check. */ |
|
5103 |
|
5104 /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */ |
|
5105 const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *); |
|
5106 |
|
5107 /* Set the format of a file being written. */ |
|
5108 bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *); |
|
5109 |
|
5110 /* Write cached information into a file being written, at <<bfd_close>>. */ |
|
5111 bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *); |
|
5112 |
|
5113 |
|
5114 /* Generic entry points. */ |
|
5115 #define BFD_JUMP_TABLE_GENERIC(NAME) \ |
|
5116 NAME##_close_and_cleanup, \ |
|
5117 NAME##_bfd_free_cached_info, \ |
|
5118 NAME##_new_section_hook, \ |
|
5119 NAME##_get_section_contents, \ |
|
5120 NAME##_get_section_contents_in_window |
|
5121 |
|
5122 /* Called when the BFD is being closed to do any necessary cleanup. */ |
|
5123 bfd_boolean (*_close_and_cleanup) (bfd *); |
|
5124 /* Ask the BFD to free all cached information. */ |
|
5125 bfd_boolean (*_bfd_free_cached_info) (bfd *); |
|
5126 /* Called when a new section is created. */ |
|
5127 bfd_boolean (*_new_section_hook) (bfd *, sec_ptr); |
|
5128 /* Read the contents of a section. */ |
|
5129 bfd_boolean (*_bfd_get_section_contents) |
|
5130 (bfd *, sec_ptr, void *, file_ptr, bfd_size_type); |
|
5131 bfd_boolean (*_bfd_get_section_contents_in_window) |
|
5132 (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type); |
|
5133 |
|
5134 /* Entry points to copy private data. */ |
|
5135 #define BFD_JUMP_TABLE_COPY(NAME) \ |
|
5136 NAME##_bfd_copy_private_bfd_data, \ |
|
5137 NAME##_bfd_merge_private_bfd_data, \ |
|
5138 _bfd_generic_init_private_section_data, \ |
|
5139 NAME##_bfd_copy_private_section_data, \ |
|
5140 NAME##_bfd_copy_private_symbol_data, \ |
|
5141 NAME##_bfd_copy_private_header_data, \ |
|
5142 NAME##_bfd_set_private_flags, \ |
|
5143 NAME##_bfd_print_private_bfd_data |
|
5144 |
|
5145 /* Called to copy BFD general private data from one object file |
|
5146 to another. */ |
|
5147 bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *); |
|
5148 /* Called to merge BFD general private data from one object file |
|
5149 to a common output file when linking. */ |
|
5150 bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *); |
|
5151 /* Called to initialize BFD private section data from one object file |
|
5152 to another. */ |
|
5153 #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \ |
|
5154 BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info)) |
|
5155 bfd_boolean (*_bfd_init_private_section_data) |
|
5156 (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *); |
|
5157 /* Called to copy BFD private section data from one object file |
|
5158 to another. */ |
|
5159 bfd_boolean (*_bfd_copy_private_section_data) |
|
5160 (bfd *, sec_ptr, bfd *, sec_ptr); |
|
5161 /* Called to copy BFD private symbol data from one symbol |
|
5162 to another. */ |
|
5163 bfd_boolean (*_bfd_copy_private_symbol_data) |
|
5164 (bfd *, asymbol *, bfd *, asymbol *); |
|
5165 /* Called to copy BFD private header data from one object file |
|
5166 to another. */ |
|
5167 bfd_boolean (*_bfd_copy_private_header_data) |
|
5168 (bfd *, bfd *); |
|
5169 /* Called to set private backend flags. */ |
|
5170 bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword); |
|
5171 |
|
5172 /* Called to print private BFD data. */ |
|
5173 bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *); |
|
5174 |
|
5175 /* Core file entry points. */ |
|
5176 #define BFD_JUMP_TABLE_CORE(NAME) \ |
|
5177 NAME##_core_file_failing_command, \ |
|
5178 NAME##_core_file_failing_signal, \ |
|
5179 NAME##_core_file_matches_executable_p |
|
5180 |
|
5181 char * (*_core_file_failing_command) (bfd *); |
|
5182 int (*_core_file_failing_signal) (bfd *); |
|
5183 bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *); |
|
5184 |
|
5185 /* Archive entry points. */ |
|
5186 #define BFD_JUMP_TABLE_ARCHIVE(NAME) \ |
|
5187 NAME##_slurp_armap, \ |
|
5188 NAME##_slurp_extended_name_table, \ |
|
5189 NAME##_construct_extended_name_table, \ |
|
5190 NAME##_truncate_arname, \ |
|
5191 NAME##_write_armap, \ |
|
5192 NAME##_read_ar_hdr, \ |
|
5193 NAME##_openr_next_archived_file, \ |
|
5194 NAME##_get_elt_at_index, \ |
|
5195 NAME##_generic_stat_arch_elt, \ |
|
5196 NAME##_update_armap_timestamp |
|
5197 |
|
5198 bfd_boolean (*_bfd_slurp_armap) (bfd *); |
|
5199 bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *); |
|
5200 bfd_boolean (*_bfd_construct_extended_name_table) |
|
5201 (bfd *, char **, bfd_size_type *, const char **); |
|
5202 void (*_bfd_truncate_arname) (bfd *, const char *, char *); |
|
5203 bfd_boolean (*write_armap) |
|
5204 (bfd *, unsigned int, struct orl *, unsigned int, int); |
|
5205 void * (*_bfd_read_ar_hdr_fn) (bfd *); |
|
5206 bfd * (*openr_next_archived_file) (bfd *, bfd *); |
|
5207 #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) |
|
5208 bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); |
|
5209 int (*_bfd_stat_arch_elt) (bfd *, struct stat *); |
|
5210 bfd_boolean (*_bfd_update_armap_timestamp) (bfd *); |
|
5211 |
|
5212 /* Entry points used for symbols. */ |
|
5213 #define BFD_JUMP_TABLE_SYMBOLS(NAME) \ |
|
5214 NAME##_get_symtab_upper_bound, \ |
|
5215 NAME##_canonicalize_symtab, \ |
|
5216 NAME##_make_empty_symbol, \ |
|
5217 NAME##_print_symbol, \ |
|
5218 NAME##_get_symbol_info, \ |
|
5219 NAME##_bfd_is_local_label_name, \ |
|
5220 NAME##_bfd_is_target_special_symbol, \ |
|
5221 NAME##_get_lineno, \ |
|
5222 NAME##_find_nearest_line, \ |
|
5223 _bfd_generic_find_line, \ |
|
5224 NAME##_find_inliner_info, \ |
|
5225 NAME##_bfd_make_debug_symbol, \ |
|
5226 NAME##_read_minisymbols, \ |
|
5227 NAME##_minisymbol_to_symbol |
|
5228 |
|
5229 long (*_bfd_get_symtab_upper_bound) (bfd *); |
|
5230 long (*_bfd_canonicalize_symtab) |
|
5231 (bfd *, struct bfd_symbol **); |
|
5232 struct bfd_symbol * |
|
5233 (*_bfd_make_empty_symbol) (bfd *); |
|
5234 void (*_bfd_print_symbol) |
|
5235 (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type); |
|
5236 #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e)) |
|
5237 void (*_bfd_get_symbol_info) |
|
5238 (bfd *, struct bfd_symbol *, symbol_info *); |
|
5239 #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e)) |
|
5240 bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *); |
|
5241 bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *); |
|
5242 alent * (*_get_lineno) (bfd *, struct bfd_symbol *); |
|
5243 bfd_boolean (*_bfd_find_nearest_line) |
|
5244 (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma, |
|
5245 const char **, const char **, unsigned int *); |
|
5246 bfd_boolean (*_bfd_find_line) |
|
5247 (bfd *, struct bfd_symbol **, struct bfd_symbol *, |
|
5248 const char **, unsigned int *); |
|
5249 bfd_boolean (*_bfd_find_inliner_info) |
|
5250 (bfd *, const char **, const char **, unsigned int *); |
|
5251 /* Back-door to allow format-aware applications to create debug symbols |
|
5252 while using BFD for everything else. Currently used by the assembler |
|
5253 when creating COFF files. */ |
|
5254 asymbol * (*_bfd_make_debug_symbol) |
|
5255 (bfd *, void *, unsigned long size); |
|
5256 #define bfd_read_minisymbols(b, d, m, s) \ |
|
5257 BFD_SEND (b, _read_minisymbols, (b, d, m, s)) |
|
5258 long (*_read_minisymbols) |
|
5259 (bfd *, bfd_boolean, void **, unsigned int *); |
|
5260 #define bfd_minisymbol_to_symbol(b, d, m, f) \ |
|
5261 BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f)) |
|
5262 asymbol * (*_minisymbol_to_symbol) |
|
5263 (bfd *, bfd_boolean, const void *, asymbol *); |
|
5264 |
|
5265 /* Routines for relocs. */ |
|
5266 #define BFD_JUMP_TABLE_RELOCS(NAME) \ |
|
5267 NAME##_get_reloc_upper_bound, \ |
|
5268 NAME##_canonicalize_reloc, \ |
|
5269 NAME##_bfd_reloc_type_lookup, \ |
|
5270 NAME##_bfd_reloc_name_lookup |
|
5271 |
|
5272 long (*_get_reloc_upper_bound) (bfd *, sec_ptr); |
|
5273 long (*_bfd_canonicalize_reloc) |
|
5274 (bfd *, sec_ptr, arelent **, struct bfd_symbol **); |
|
5275 /* See documentation on reloc types. */ |
|
5276 reloc_howto_type * |
|
5277 (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type); |
|
5278 reloc_howto_type * |
|
5279 (*reloc_name_lookup) (bfd *, const char *); |
|
5280 |
|
5281 |
|
5282 /* Routines used when writing an object file. */ |
|
5283 #define BFD_JUMP_TABLE_WRITE(NAME) \ |
|
5284 NAME##_set_arch_mach, \ |
|
5285 NAME##_set_section_contents |
|
5286 |
|
5287 bfd_boolean (*_bfd_set_arch_mach) |
|
5288 (bfd *, enum bfd_architecture, unsigned long); |
|
5289 bfd_boolean (*_bfd_set_section_contents) |
|
5290 (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type); |
|
5291 |
|
5292 /* Routines used by the linker. */ |
|
5293 #define BFD_JUMP_TABLE_LINK(NAME) \ |
|
5294 NAME##_sizeof_headers, \ |
|
5295 NAME##_bfd_get_relocated_section_contents, \ |
|
5296 NAME##_bfd_relax_section, \ |
|
5297 NAME##_bfd_link_hash_table_create, \ |
|
5298 NAME##_bfd_link_hash_table_free, \ |
|
5299 NAME##_bfd_link_add_symbols, \ |
|
5300 NAME##_bfd_link_just_syms, \ |
|
5301 NAME##_bfd_final_link, \ |
|
5302 NAME##_bfd_link_split_section, \ |
|
5303 NAME##_bfd_gc_sections, \ |
|
5304 NAME##_bfd_merge_sections, \ |
|
5305 NAME##_bfd_is_group_section, \ |
|
5306 NAME##_bfd_discard_group, \ |
|
5307 NAME##_section_already_linked \ |
|
5308 |
|
5309 int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *); |
|
5310 bfd_byte * (*_bfd_get_relocated_section_contents) |
|
5311 (bfd *, struct bfd_link_info *, struct bfd_link_order *, |
|
5312 bfd_byte *, bfd_boolean, struct bfd_symbol **); |
|
5313 |
|
5314 bfd_boolean (*_bfd_relax_section) |
|
5315 (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *); |
|
5316 |
|
5317 /* Create a hash table for the linker. Different backends store |
|
5318 different information in this table. */ |
|
5319 struct bfd_link_hash_table * |
|
5320 (*_bfd_link_hash_table_create) (bfd *); |
|
5321 |
|
5322 /* Release the memory associated with the linker hash table. */ |
|
5323 void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *); |
|
5324 |
|
5325 /* Add symbols from this object file into the hash table. */ |
|
5326 bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *); |
|
5327 |
|
5328 /* Indicate that we are only retrieving symbol values from this section. */ |
|
5329 void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); |
|
5330 |
|
5331 /* Do a link based on the link_order structures attached to each |
|
5332 section of the BFD. */ |
|
5333 bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); |
|
5334 |
|
5335 /* Should this section be split up into smaller pieces during linking. */ |
|
5336 bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *); |
|
5337 |
|
5338 /* Remove sections that are not referenced from the output. */ |
|
5339 bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *); |
|
5340 |
|
5341 /* Attempt to merge SEC_MERGE sections. */ |
|
5342 bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *); |
|
5343 |
|
5344 /* Is this section a member of a group? */ |
|
5345 bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *); |
|
5346 |
|
5347 /* Discard members of a group. */ |
|
5348 bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *); |
|
5349 |
|
5350 /* Check if SEC has been already linked during a reloceatable or |
|
5351 final link. */ |
|
5352 void (*_section_already_linked) (bfd *, struct bfd_section *, |
|
5353 struct bfd_link_info *); |
|
5354 |
|
5355 /* Routines to handle dynamic symbols and relocs. */ |
|
5356 #define BFD_JUMP_TABLE_DYNAMIC(NAME) \ |
|
5357 NAME##_get_dynamic_symtab_upper_bound, \ |
|
5358 NAME##_canonicalize_dynamic_symtab, \ |
|
5359 NAME##_get_synthetic_symtab, \ |
|
5360 NAME##_get_dynamic_reloc_upper_bound, \ |
|
5361 NAME##_canonicalize_dynamic_reloc |
|
5362 |
|
5363 /* Get the amount of memory required to hold the dynamic symbols. */ |
|
5364 long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *); |
|
5365 /* Read in the dynamic symbols. */ |
|
5366 long (*_bfd_canonicalize_dynamic_symtab) |
|
5367 (bfd *, struct bfd_symbol **); |
|
5368 /* Create synthetized symbols. */ |
|
5369 long (*_bfd_get_synthetic_symtab) |
|
5370 (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **, |
|
5371 struct bfd_symbol **); |
|
5372 /* Get the amount of memory required to hold the dynamic relocs. */ |
|
5373 long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *); |
|
5374 /* Read in the dynamic relocs. */ |
|
5375 long (*_bfd_canonicalize_dynamic_reloc) |
|
5376 (bfd *, arelent **, struct bfd_symbol **); |
|
5377 |
|
5378 /* Opposite endian version of this target. */ |
|
5379 const struct bfd_target * alternative_target; |
|
5380 |
|
5381 /* Data for use by back-end routines, which isn't |
|
5382 generic enough to belong in this structure. */ |
|
5383 const void *backend_data; |
|
5384 |
|
5385 } bfd_target; |
|
5386 |
|
5387 bfd_boolean bfd_set_default_target (const char *name); |
|
5388 |
|
5389 const bfd_target *bfd_find_target (const char *target_name, bfd *abfd); |
|
5390 |
|
5391 const char ** bfd_target_list (void); |
|
5392 |
|
5393 const bfd_target *bfd_search_for_target |
|
5394 (int (*search_func) (const bfd_target *, void *), |
|
5395 void *); |
|
5396 |
|
5397 /* Extracted from format.c. */ |
|
5398 bfd_boolean bfd_check_format (bfd *abfd, bfd_format format); |
|
5399 |
|
5400 bfd_boolean bfd_check_format_matches |
|
5401 (bfd *abfd, bfd_format format, char ***matching); |
|
5402 |
|
5403 bfd_boolean bfd_set_format (bfd *abfd, bfd_format format); |
|
5404 |
|
5405 const char *bfd_format_string (bfd_format format); |
|
5406 |
|
5407 /* Extracted from linker.c. */ |
|
5408 bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec); |
|
5409 |
|
5410 #define bfd_link_split_section(abfd, sec) \ |
|
5411 BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec)) |
|
5412 |
|
5413 void bfd_section_already_linked (bfd *abfd, asection *sec, |
|
5414 struct bfd_link_info *info); |
|
5415 |
|
5416 #define bfd_section_already_linked(abfd, sec, info) \ |
|
5417 BFD_SEND (abfd, _section_already_linked, (abfd, sec, info)) |
|
5418 |
|
5419 /* Extracted from simple.c. */ |
|
5420 bfd_byte *bfd_simple_get_relocated_section_contents |
|
5421 (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table); |
|
5422 |
|
5423 #ifdef __cplusplus |
|
5424 } |
|
5425 #endif |
|
5426 #endif |