Annotation of src/external/gpl3/binutils.old/lib/libbfd/arch/earmeb/bfd.h, Revision 1.1.1.3
1.1 christos 1: /* This file is automatically generated. DO NOT EDIT! */
1.1.1.2 christos 2: /* Generated from: NetBSD: mknative-binutils,v 1.9 2013/10/01 15:41:17 skrll Exp */
3: /* Generated from: NetBSD: mknative.common,v 1.11 2014/02/17 21:39:43 christos Exp */
1.1 christos 4:
5: /* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
6: generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
7: "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
8: "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
9: "linker.c", "simple.c" and "compress.c".
10: Run "make headers" in your build bfd/ to regenerate. */
11:
12: /* Main header file for the bfd library -- portable access to object files.
13:
1.1.1.3 ! christos 14: Copyright (C) 1990-2016 Free Software Foundation, Inc.
1.1 christos 15:
16: Contributed by Cygnus Support.
17:
18: This file is part of BFD, the Binary File Descriptor library.
19:
20: This program is free software; you can redistribute it and/or modify
21: it under the terms of the GNU General Public License as published by
22: the Free Software Foundation; either version 3 of the License, or
23: (at your option) any later version.
24:
25: This program is distributed in the hope that it will be useful,
26: but WITHOUT ANY WARRANTY; without even the implied warranty of
27: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28: GNU General Public License for more details.
29:
30: You should have received a copy of the GNU General Public License
31: along with this program; if not, write to the Free Software
32: Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
33:
34: #ifndef __BFD_H_SEEN__
35: #define __BFD_H_SEEN__
36:
37: /* PR 14072: Ensure that config.h is included first. */
38: #if !defined PACKAGE && !defined PACKAGE_VERSION
39: #error config.h must be included before this header
40: #endif
41:
42: #ifdef __cplusplus
43: extern "C" {
44: #endif
45:
46: #include "ansidecl.h"
47: #include "symcat.h"
48: #include <sys/stat.h>
49:
50: #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
51: #ifndef SABER
52: /* This hack is to avoid a problem with some strict ANSI C preprocessors.
53: The problem is, "32_" is not a valid preprocessing token, and we don't
54: want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
55: cause the inner CONCAT2 macros to be evaluated first, producing
56: still-valid pp-tokens. Then the final concatenation can be done. */
57: #undef CONCAT4
58: #define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
59: #endif
60: #endif
61:
62: /* This is a utility macro to handle the situation where the code
63: wants to place a constant string into the code, followed by a
64: comma and then the length of the string. Doing this by hand
65: is error prone, so using this macro is safer. */
66: #define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
67: /* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
68: to create the arguments to another macro, since the preprocessor
69: will mis-count the number of arguments to the outer macro (by not
70: evaluating STRING_COMMA_LEN and so missing the comma). This is a
71: problem for example when trying to use STRING_COMMA_LEN to build
72: the arguments to the strncmp() macro. Hence this alternative
73: definition of strncmp is provided here.
1.1.1.2 christos 74:
1.1 christos 75: Note - these macros do NOT work if STR2 is not a constant string. */
76: #define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
77: /* strcpy() can have a similar problem, but since we know we are
78: copying a constant string, we can use memcpy which will be faster
79: since there is no need to check for a NUL byte inside STR. We
80: can also save time if we do not need to copy the terminating NUL. */
81: #define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
82: #define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
83:
84:
1.1.1.2 christos 85: #define BFD_SUPPORTS_PLUGINS 1
1.1 christos 86:
87: /* The word size used by BFD on the host. This may be 64 with a 32
88: bit target if the host is 64 bit, or if other 64 bit targets have
89: been selected with --enable-targets, or if --enable-64-bit-bfd. */
90: #define BFD_ARCH_SIZE 32
91:
92: /* The word size of the default bfd target. */
93: #define BFD_DEFAULT_TARGET_SIZE 32
94:
95: #define BFD_HOST_64BIT_LONG 0
96: #define BFD_HOST_64BIT_LONG_LONG 1
97: #if 1
98: #define BFD_HOST_64_BIT long long
99: #define BFD_HOST_U_64_BIT unsigned long long
100: typedef BFD_HOST_64_BIT bfd_int64_t;
101: typedef BFD_HOST_U_64_BIT bfd_uint64_t;
102: #endif
103:
104: #if BFD_ARCH_SIZE >= 64
105: #define BFD64
106: #endif
107:
108: #ifndef INLINE
109: #if __GNUC__ >= 2
110: #define INLINE __inline__
111: #else
112: #define INLINE
113: #endif
114: #endif
115:
116: /* Declaring a type wide enough to hold a host long and a host pointer. */
117: #define BFD_HOSTPTR_T unsigned long
118: typedef BFD_HOSTPTR_T bfd_hostptr_t;
119:
120: /* Forward declaration. */
121: typedef struct bfd bfd;
122:
123: /* Boolean type used in bfd. Too many systems define their own
124: versions of "boolean" for us to safely typedef a "boolean" of
125: our own. Using an enum for "bfd_boolean" has its own set of
126: problems, with strange looking casts required to avoid warnings
127: on some older compilers. Thus we just use an int.
128:
129: General rule: Functions which are bfd_boolean return TRUE on
130: success and FALSE on failure (unless they're a predicate). */
131:
132: typedef int bfd_boolean;
133: #undef FALSE
134: #undef TRUE
135: #define FALSE 0
136: #define TRUE 1
137:
138: #ifdef BFD64
139:
140: #ifndef BFD_HOST_64_BIT
141: #error No 64 bit integer type available
142: #endif /* ! defined (BFD_HOST_64_BIT) */
143:
144: typedef BFD_HOST_U_64_BIT bfd_vma;
145: typedef BFD_HOST_64_BIT bfd_signed_vma;
146: typedef BFD_HOST_U_64_BIT bfd_size_type;
147: typedef BFD_HOST_U_64_BIT symvalue;
148:
149: #if BFD_HOST_64BIT_LONG
150: #define BFD_VMA_FMT "l"
151: #elif defined (__MSVCRT__)
152: #define BFD_VMA_FMT "I64"
153: #else
154: #define BFD_VMA_FMT "ll"
155: #endif
156:
157: #ifndef fprintf_vma
158: #define sprintf_vma(s,x) sprintf (s, "%016" BFD_VMA_FMT "x", x)
159: #define fprintf_vma(f,x) fprintf (f, "%016" BFD_VMA_FMT "x", x)
160: #endif
161:
162: #else /* not BFD64 */
163:
164: /* Represent a target address. Also used as a generic unsigned type
165: which is guaranteed to be big enough to hold any arithmetic types
166: we need to deal with. */
167: typedef unsigned long bfd_vma;
168:
169: /* A generic signed type which is guaranteed to be big enough to hold any
170: arithmetic types we need to deal with. Can be assumed to be compatible
171: with bfd_vma in the same way that signed and unsigned ints are compatible
172: (as parameters, in assignment, etc). */
173: typedef long bfd_signed_vma;
174:
175: typedef unsigned long symvalue;
176: typedef unsigned long bfd_size_type;
177:
178: /* Print a bfd_vma x on stream s. */
179: #define BFD_VMA_FMT "l"
180: #define fprintf_vma(s,x) fprintf (s, "%08" BFD_VMA_FMT "x", x)
181: #define sprintf_vma(s,x) sprintf (s, "%08" BFD_VMA_FMT "x", x)
182:
183: #endif /* not BFD64 */
184:
185: #define HALF_BFD_SIZE_TYPE \
186: (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
187:
188: #ifndef BFD_HOST_64_BIT
189: /* Fall back on a 32 bit type. The idea is to make these types always
190: available for function return types, but in the case that
191: BFD_HOST_64_BIT is undefined such a function should abort or
192: otherwise signal an error. */
193: typedef bfd_signed_vma bfd_int64_t;
194: typedef bfd_vma bfd_uint64_t;
195: #endif
196:
197: /* An offset into a file. BFD always uses the largest possible offset
198: based on the build time availability of fseek, fseeko, or fseeko64. */
199: typedef BFD_HOST_64_BIT file_ptr;
200: typedef unsigned BFD_HOST_64_BIT ufile_ptr;
201:
202: extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
203: extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
204:
205: #define printf_vma(x) fprintf_vma(stdout,x)
206: #define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
207:
208: typedef unsigned int flagword; /* 32 bits of flags */
209: typedef unsigned char bfd_byte;
210:
211: /* File formats. */
212:
213: typedef enum bfd_format
214: {
215: bfd_unknown = 0, /* File format is unknown. */
216: bfd_object, /* Linker/assembler/compiler output. */
217: bfd_archive, /* Object archive file. */
218: bfd_core, /* Core dump. */
219: bfd_type_end /* Marks the end; don't use it! */
220: }
221: bfd_format;
222:
223: /* Symbols and relocation. */
224:
225: /* A count of carsyms (canonical archive symbols). */
226: typedef unsigned long symindex;
227:
228: /* How to perform a relocation. */
229: typedef const struct reloc_howto_struct reloc_howto_type;
230:
231: #define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
232:
233: /* General purpose part of a symbol X;
234: target specific parts are in libcoff.h, libaout.h, etc. */
235:
236: #define bfd_get_section(x) ((x)->section)
237: #define bfd_get_output_section(x) ((x)->section->output_section)
238: #define bfd_set_section(x,y) ((x)->section) = (y)
239: #define bfd_asymbol_base(x) ((x)->section->vma)
240: #define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
241: #define bfd_asymbol_name(x) ((x)->name)
242: /*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
243: #define bfd_asymbol_bfd(x) ((x)->the_bfd)
244: #define bfd_asymbol_flavour(x) \
245: (((x)->flags & BSF_SYNTHETIC) != 0 \
246: ? bfd_target_unknown_flavour \
247: : bfd_asymbol_bfd (x)->xvec->flavour)
248:
249: /* A canonical archive symbol. */
250: /* This is a type pun with struct ranlib on purpose! */
251: typedef struct carsym
252: {
253: char *name;
254: file_ptr file_offset; /* Look here to find the file. */
255: }
256: carsym; /* To make these you call a carsymogen. */
257:
258: /* Used in generating armaps (archive tables of contents).
259: Perhaps just a forward definition would do? */
260: struct orl /* Output ranlib. */
261: {
262: char **name; /* Symbol name. */
263: union
264: {
265: file_ptr pos;
266: bfd *abfd;
267: } u; /* bfd* or file position. */
268: int namidx; /* Index into string table. */
269: };
270:
271: /* Linenumber stuff. */
272: typedef struct lineno_cache_entry
273: {
274: unsigned int line_number; /* Linenumber from start of function. */
275: union
276: {
277: struct bfd_symbol *sym; /* Function name. */
278: bfd_vma offset; /* Offset into section. */
279: } u;
280: }
281: alent;
282:
283: /* Object and core file sections. */
284:
285: #define align_power(addr, align) \
1.1.1.2 christos 286: (((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
1.1 christos 287:
288: typedef struct bfd_section *sec_ptr;
289:
290: #define bfd_get_section_name(bfd, ptr) ((void) bfd, (ptr)->name)
291: #define bfd_get_section_vma(bfd, ptr) ((void) bfd, (ptr)->vma)
292: #define bfd_get_section_lma(bfd, ptr) ((void) bfd, (ptr)->lma)
293: #define bfd_get_section_alignment(bfd, ptr) ((void) bfd, \
294: (ptr)->alignment_power)
295: #define bfd_section_name(bfd, ptr) ((ptr)->name)
296: #define bfd_section_size(bfd, ptr) ((ptr)->size)
297: #define bfd_get_section_size(ptr) ((ptr)->size)
298: #define bfd_section_vma(bfd, ptr) ((ptr)->vma)
299: #define bfd_section_lma(bfd, ptr) ((ptr)->lma)
300: #define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
301: #define bfd_get_section_flags(bfd, ptr) ((void) bfd, (ptr)->flags)
302: #define bfd_get_section_userdata(bfd, ptr) ((void) bfd, (ptr)->userdata)
303:
304: #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
305:
1.1.1.2 christos 306: #define bfd_get_section_limit_octets(bfd, sec) \
307: ((bfd)->direction != write_direction && (sec)->rawsize != 0 \
308: ? (sec)->rawsize : (sec)->size)
309:
1.1 christos 310: /* Find the address one past the end of SEC. */
311: #define bfd_get_section_limit(bfd, sec) \
1.1.1.2 christos 312: (bfd_get_section_limit_octets(bfd, sec) / bfd_octets_per_byte (bfd))
1.1 christos 313:
314: /* Return TRUE if input section SEC has been discarded. */
315: #define discarded_section(sec) \
316: (!bfd_is_abs_section (sec) \
317: && bfd_is_abs_section ((sec)->output_section) \
318: && (sec)->sec_info_type != SEC_INFO_TYPE_MERGE \
319: && (sec)->sec_info_type != SEC_INFO_TYPE_JUST_SYMS)
320:
321: typedef enum bfd_print_symbol
322: {
323: bfd_print_symbol_name,
324: bfd_print_symbol_more,
325: bfd_print_symbol_all
326: } bfd_print_symbol_type;
327:
328: /* Information about a symbol that nm needs. */
329:
330: typedef struct _symbol_info
331: {
332: symvalue value;
333: char type;
334: const char *name; /* Symbol name. */
335: unsigned char stab_type; /* Stab type. */
336: char stab_other; /* Stab other. */
337: short stab_desc; /* Stab desc. */
338: const char *stab_name; /* String for stab type. */
339: } symbol_info;
340:
341: /* Get the name of a stabs type code. */
342:
343: extern const char *bfd_get_stab_name (int);
344:
345: /* Hash table routines. There is no way to free up a hash table. */
346:
347: /* An element in the hash table. Most uses will actually use a larger
348: structure, and an instance of this will be the first field. */
349:
350: struct bfd_hash_entry
351: {
352: /* Next entry for this hash code. */
353: struct bfd_hash_entry *next;
354: /* String being hashed. */
355: const char *string;
356: /* Hash code. This is the full hash code, not the index into the
357: table. */
358: unsigned long hash;
359: };
360:
361: /* A hash table. */
362:
363: struct bfd_hash_table
364: {
365: /* The hash array. */
366: struct bfd_hash_entry **table;
367: /* A function used to create new elements in the hash table. The
368: first entry is itself a pointer to an element. When this
369: function is first invoked, this pointer will be NULL. However,
370: having the pointer permits a hierarchy of method functions to be
371: built each of which calls the function in the superclass. Thus
372: each function should be written to allocate a new block of memory
373: only if the argument is NULL. */
374: struct bfd_hash_entry *(*newfunc)
375: (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
376: /* An objalloc for this hash table. This is a struct objalloc *,
377: but we use void * to avoid requiring the inclusion of objalloc.h. */
378: void *memory;
379: /* The number of slots in the hash table. */
380: unsigned int size;
381: /* The number of entries in the hash table. */
382: unsigned int count;
383: /* The size of elements. */
384: unsigned int entsize;
385: /* If non-zero, don't grow the hash table. */
386: unsigned int frozen:1;
387: };
388:
389: /* Initialize a hash table. */
390: extern bfd_boolean bfd_hash_table_init
391: (struct bfd_hash_table *,
392: struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
393: struct bfd_hash_table *,
394: const char *),
395: unsigned int);
396:
397: /* Initialize a hash table specifying a size. */
398: extern bfd_boolean bfd_hash_table_init_n
399: (struct bfd_hash_table *,
400: struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
401: struct bfd_hash_table *,
402: const char *),
403: unsigned int, unsigned int);
404:
405: /* Free up a hash table. */
406: extern void bfd_hash_table_free
407: (struct bfd_hash_table *);
408:
409: /* Look up a string in a hash table. If CREATE is TRUE, a new entry
410: will be created for this string if one does not already exist. The
411: COPY argument must be TRUE if this routine should copy the string
412: into newly allocated memory when adding an entry. */
413: extern struct bfd_hash_entry *bfd_hash_lookup
414: (struct bfd_hash_table *, const char *, bfd_boolean create,
415: bfd_boolean copy);
416:
417: /* Insert an entry in a hash table. */
418: extern struct bfd_hash_entry *bfd_hash_insert
419: (struct bfd_hash_table *, const char *, unsigned long);
420:
421: /* Rename an entry in a hash table. */
422: extern void bfd_hash_rename
423: (struct bfd_hash_table *, const char *, struct bfd_hash_entry *);
424:
425: /* Replace an entry in a hash table. */
426: extern void bfd_hash_replace
427: (struct bfd_hash_table *, struct bfd_hash_entry *old,
428: struct bfd_hash_entry *nw);
429:
430: /* Base method for creating a hash table entry. */
431: extern struct bfd_hash_entry *bfd_hash_newfunc
432: (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
433:
434: /* Grab some space for a hash table entry. */
435: extern void *bfd_hash_allocate
436: (struct bfd_hash_table *, unsigned int);
437:
438: /* Traverse a hash table in a random order, calling a function on each
439: element. If the function returns FALSE, the traversal stops. The
440: INFO argument is passed to the function. */
441: extern void bfd_hash_traverse
442: (struct bfd_hash_table *,
443: bfd_boolean (*) (struct bfd_hash_entry *, void *),
444: void *info);
445:
446: /* Allows the default size of a hash table to be configured. New hash
447: tables allocated using bfd_hash_table_init will be created with
448: this size. */
449: extern unsigned long bfd_hash_set_default_size (unsigned long);
450:
1.1.1.2 christos 451: /* Types of compressed DWARF debug sections. We currently support
452: zlib. */
453: enum compressed_debug_section_type
454: {
455: COMPRESS_DEBUG_NONE = 0,
456: COMPRESS_DEBUG = 1 << 0,
457: COMPRESS_DEBUG_GNU_ZLIB = COMPRESS_DEBUG | 1 << 1,
458: COMPRESS_DEBUG_GABI_ZLIB = COMPRESS_DEBUG | 1 << 2
459: };
460:
1.1 christos 461: /* This structure is used to keep track of stabs in sections
462: information while linking. */
463:
464: struct stab_info
465: {
466: /* A hash table used to hold stabs strings. */
467: struct bfd_strtab_hash *strings;
468: /* The header file hash table. */
469: struct bfd_hash_table includes;
470: /* The first .stabstr section. */
471: struct bfd_section *stabstr;
472: };
473:
474: #define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
475:
476: /* User program access to BFD facilities. */
477:
478: /* Direct I/O routines, for programs which know more about the object
479: file than BFD does. Use higher level routines if possible. */
480:
481: extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
482: extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
483: extern int bfd_seek (bfd *, file_ptr, int);
484: extern file_ptr bfd_tell (bfd *);
485: extern int bfd_flush (bfd *);
486: extern int bfd_stat (bfd *, struct stat *);
487:
488: /* Deprecated old routines. */
489: #if __GNUC__
490: #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
491: (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
492: bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
493: #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
494: (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
495: bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
496: #else
497: #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
498: (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
499: bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
500: #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
501: (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
502: bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
503: #endif
504: extern void warn_deprecated (const char *, const char *, int, const char *);
505:
506: /* Cast from const char * to char * so that caller can assign to
507: a char * without a warning. */
508: #define bfd_get_filename(abfd) ((char *) (abfd)->filename)
509: #define bfd_get_cacheable(abfd) ((abfd)->cacheable)
510: #define bfd_get_format(abfd) ((abfd)->format)
511: #define bfd_get_target(abfd) ((abfd)->xvec->name)
512: #define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
513: #define bfd_family_coff(abfd) \
514: (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
515: bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
516: #define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
517: #define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
518: #define bfd_header_big_endian(abfd) \
519: ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
520: #define bfd_header_little_endian(abfd) \
521: ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
522: #define bfd_get_file_flags(abfd) ((abfd)->flags)
523: #define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
524: #define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
525: #define bfd_has_map(abfd) ((abfd)->has_armap)
526: #define bfd_is_thin_archive(abfd) ((abfd)->is_thin_archive)
527:
528: #define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
529: #define bfd_usrdata(abfd) ((abfd)->usrdata)
530:
531: #define bfd_get_start_address(abfd) ((abfd)->start_address)
532: #define bfd_get_symcount(abfd) ((abfd)->symcount)
533: #define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
534: #define bfd_count_sections(abfd) ((abfd)->section_count)
535:
536: #define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
537:
538: #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
539:
540: extern bfd_boolean bfd_cache_close
541: (bfd *abfd);
542: /* NB: This declaration should match the autogenerated one in libbfd.h. */
543:
544: extern bfd_boolean bfd_cache_close_all (void);
545:
546: extern bfd_boolean bfd_record_phdr
547: (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
548: bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
549:
550: /* Byte swapping routines. */
551:
552: bfd_uint64_t bfd_getb64 (const void *);
553: bfd_uint64_t bfd_getl64 (const void *);
554: bfd_int64_t bfd_getb_signed_64 (const void *);
555: bfd_int64_t bfd_getl_signed_64 (const void *);
556: bfd_vma bfd_getb32 (const void *);
557: bfd_vma bfd_getl32 (const void *);
558: bfd_signed_vma bfd_getb_signed_32 (const void *);
559: bfd_signed_vma bfd_getl_signed_32 (const void *);
560: bfd_vma bfd_getb16 (const void *);
561: bfd_vma bfd_getl16 (const void *);
562: bfd_signed_vma bfd_getb_signed_16 (const void *);
563: bfd_signed_vma bfd_getl_signed_16 (const void *);
564: void bfd_putb64 (bfd_uint64_t, void *);
565: void bfd_putl64 (bfd_uint64_t, void *);
566: void bfd_putb32 (bfd_vma, void *);
567: void bfd_putl32 (bfd_vma, void *);
568: void bfd_putb16 (bfd_vma, void *);
569: void bfd_putl16 (bfd_vma, void *);
570:
571: /* Byte swapping routines which take size and endiannes as arguments. */
572:
573: bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
574: void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
575:
576: #if defined(__STDC__) || defined(ALMOST_STDC)
577: struct ecoff_debug_info;
578: struct ecoff_debug_swap;
579: struct ecoff_extr;
580: struct bfd_symbol;
581: struct bfd_link_info;
582: struct bfd_link_hash_entry;
583: struct bfd_section_already_linked;
584: struct bfd_elf_version_tree;
585: #endif
586:
587: extern bfd_boolean bfd_section_already_linked_table_init (void);
588: extern void bfd_section_already_linked_table_free (void);
589: extern bfd_boolean _bfd_handle_already_linked
590: (struct bfd_section *, struct bfd_section_already_linked *,
591: struct bfd_link_info *);
592:
593: /* Externally visible ECOFF routines. */
594:
595: extern bfd_vma bfd_ecoff_get_gp_value
596: (bfd * abfd);
597: extern bfd_boolean bfd_ecoff_set_gp_value
598: (bfd *abfd, bfd_vma gp_value);
599: extern bfd_boolean bfd_ecoff_set_regmasks
600: (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
601: unsigned long *cprmask);
602: extern void *bfd_ecoff_debug_init
603: (bfd *output_bfd, struct ecoff_debug_info *output_debug,
604: const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
605: extern void bfd_ecoff_debug_free
606: (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
607: const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
608: extern bfd_boolean bfd_ecoff_debug_accumulate
609: (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
610: const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
611: struct ecoff_debug_info *input_debug,
612: const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
613: extern bfd_boolean bfd_ecoff_debug_accumulate_other
614: (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
615: const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
616: struct bfd_link_info *);
617: extern bfd_boolean bfd_ecoff_debug_externals
618: (bfd *abfd, struct ecoff_debug_info *debug,
619: const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
620: bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
621: void (*set_index) (struct bfd_symbol *, bfd_size_type));
622: extern bfd_boolean bfd_ecoff_debug_one_external
623: (bfd *abfd, struct ecoff_debug_info *debug,
624: const struct ecoff_debug_swap *swap, const char *name,
625: struct ecoff_extr *esym);
626: extern bfd_size_type bfd_ecoff_debug_size
627: (bfd *abfd, struct ecoff_debug_info *debug,
628: const struct ecoff_debug_swap *swap);
629: extern bfd_boolean bfd_ecoff_write_debug
630: (bfd *abfd, struct ecoff_debug_info *debug,
631: const struct ecoff_debug_swap *swap, file_ptr where);
632: extern bfd_boolean bfd_ecoff_write_accumulated_debug
633: (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
634: const struct ecoff_debug_swap *swap,
635: struct bfd_link_info *info, file_ptr where);
636:
637: /* Externally visible ELF routines. */
638:
639: struct bfd_link_needed_list
640: {
641: struct bfd_link_needed_list *next;
642: bfd *by;
643: const char *name;
644: };
645:
646: enum dynamic_lib_link_class {
647: DYN_NORMAL = 0,
648: DYN_AS_NEEDED = 1,
649: DYN_DT_NEEDED = 2,
650: DYN_NO_ADD_NEEDED = 4,
651: DYN_NO_NEEDED = 8
652: };
653:
654: enum notice_asneeded_action {
655: notice_as_needed,
656: notice_not_needed,
657: notice_needed
658: };
659:
660: extern bfd_boolean bfd_elf_record_link_assignment
661: (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
662: bfd_boolean);
663: extern struct bfd_link_needed_list *bfd_elf_get_needed_list
664: (bfd *, struct bfd_link_info *);
665: extern bfd_boolean bfd_elf_get_bfd_needed_list
666: (bfd *, struct bfd_link_needed_list **);
1.1.1.2 christos 667: extern bfd_boolean bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *,
668: const char *, bfd_vma);
1.1 christos 669: extern bfd_boolean bfd_elf_size_dynamic_sections
670: (bfd *, const char *, const char *, const char *, const char *, const char *,
671: const char * const *, struct bfd_link_info *, struct bfd_section **);
672: extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
673: (bfd *, struct bfd_link_info *);
674: extern void bfd_elf_set_dt_needed_name
675: (bfd *, const char *);
676: extern const char *bfd_elf_get_dt_soname
677: (bfd *);
678: extern void bfd_elf_set_dyn_lib_class
679: (bfd *, enum dynamic_lib_link_class);
680: extern int bfd_elf_get_dyn_lib_class
681: (bfd *);
682: extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
683: (bfd *, struct bfd_link_info *);
1.1.1.2 christos 684: extern int bfd_elf_discard_info
1.1 christos 685: (bfd *, struct bfd_link_info *);
686: extern unsigned int _bfd_elf_default_action_discarded
687: (struct bfd_section *);
688:
689: /* Return an upper bound on the number of bytes required to store a
690: copy of ABFD's program header table entries. Return -1 if an error
691: occurs; bfd_get_error will return an appropriate code. */
692: extern long bfd_get_elf_phdr_upper_bound
693: (bfd *abfd);
694:
695: /* Copy ABFD's program header table entries to *PHDRS. The entries
696: will be stored as an array of Elf_Internal_Phdr structures, as
697: defined in include/elf/internal.h. To find out how large the
698: buffer needs to be, call bfd_get_elf_phdr_upper_bound.
699:
700: Return the number of program header table entries read, or -1 if an
701: error occurs; bfd_get_error will return an appropriate code. */
702: extern int bfd_get_elf_phdrs
703: (bfd *abfd, void *phdrs);
704:
705: /* Create a new BFD as if by bfd_openr. Rather than opening a file,
1.1.1.2 christos 706: reconstruct an ELF file by reading the segments out of remote
707: memory based on the ELF file header at EHDR_VMA and the ELF program
708: headers it points to. If non-zero, SIZE is the known extent of the
709: object. If not null, *LOADBASEP is filled in with the difference
710: between the VMAs from which the segments were read, and the VMAs
711: the file headers (and hence BFD's idea of each section's VMA) put
712: them at.
713:
714: The function TARGET_READ_MEMORY is called to copy LEN bytes from
715: the remote memory at target address VMA into the local buffer at
716: MYADDR; it should return zero on success or an `errno' code on
717: failure. TEMPL must be a BFD for a target with the word size and
718: byte order found in the remote memory. */
1.1 christos 719: extern bfd *bfd_elf_bfd_from_remote_memory
1.1.1.2 christos 720: (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
1.1 christos 721: int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
722: bfd_size_type len));
723:
724: extern struct bfd_section *_bfd_elf_tls_setup
725: (bfd *, struct bfd_link_info *);
726:
727: extern struct bfd_section *
728: _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);
729:
730: extern void _bfd_fix_excluded_sec_syms
731: (bfd *, struct bfd_link_info *);
732:
733: extern unsigned bfd_m68k_mach_to_features (int);
734:
735: extern int bfd_m68k_features_to_mach (unsigned);
736:
737: extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
738: (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
739: char **);
740:
741: extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);
742:
743: extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
744: (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
745: char **);
746:
747: extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
748: (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
749: char **);
750:
751: /* SunOS shared library support routines for the linker. */
752:
753: extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
754: (bfd *, struct bfd_link_info *);
755: extern bfd_boolean bfd_sunos_record_link_assignment
756: (bfd *, struct bfd_link_info *, const char *);
757: extern bfd_boolean bfd_sunos_size_dynamic_sections
758: (bfd *, struct bfd_link_info *, struct bfd_section **,
759: struct bfd_section **, struct bfd_section **);
760:
761: /* Linux shared library support routines for the linker. */
762:
763: extern bfd_boolean bfd_i386linux_size_dynamic_sections
764: (bfd *, struct bfd_link_info *);
765: extern bfd_boolean bfd_m68klinux_size_dynamic_sections
766: (bfd *, struct bfd_link_info *);
767: extern bfd_boolean bfd_sparclinux_size_dynamic_sections
768: (bfd *, struct bfd_link_info *);
769:
770: /* mmap hacks */
771:
772: struct _bfd_window_internal;
773: typedef struct _bfd_window_internal bfd_window_internal;
774:
775: typedef struct _bfd_window
776: {
777: /* What the user asked for. */
778: void *data;
779: bfd_size_type size;
780: /* The actual window used by BFD. Small user-requested read-only
781: regions sharing a page may share a single window into the object
782: file. Read-write versions shouldn't until I've fixed things to
783: keep track of which portions have been claimed by the
784: application; don't want to give the same region back when the
785: application wants two writable copies! */
786: struct _bfd_window_internal *i;
787: }
788: bfd_window;
789:
790: extern void bfd_init_window
791: (bfd_window *);
792: extern void bfd_free_window
793: (bfd_window *);
794: extern bfd_boolean bfd_get_file_window
795: (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
796:
797: /* XCOFF support routines for the linker. */
798:
799: extern bfd_boolean bfd_xcoff_split_import_path
800: (bfd *, const char *, const char **, const char **);
801: extern bfd_boolean bfd_xcoff_set_archive_import_path
802: (struct bfd_link_info *, bfd *, const char *);
803: extern bfd_boolean bfd_xcoff_link_record_set
804: (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
805: extern bfd_boolean bfd_xcoff_import_symbol
806: (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
807: const char *, const char *, const char *, unsigned int);
808: extern bfd_boolean bfd_xcoff_export_symbol
809: (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
810: extern bfd_boolean bfd_xcoff_link_count_reloc
811: (bfd *, struct bfd_link_info *, const char *);
812: extern bfd_boolean bfd_xcoff_record_link_assignment
813: (bfd *, struct bfd_link_info *, const char *);
814: extern bfd_boolean bfd_xcoff_size_dynamic_sections
815: (bfd *, struct bfd_link_info *, const char *, const char *,
816: unsigned long, unsigned long, unsigned long, bfd_boolean,
817: int, bfd_boolean, unsigned int, struct bfd_section **, bfd_boolean);
818: extern bfd_boolean bfd_xcoff_link_generate_rtinit
819: (bfd *, const char *, const char *, bfd_boolean);
820:
821: /* XCOFF support routines for ar. */
822: extern bfd_boolean bfd_xcoff_ar_archive_set_magic
823: (bfd *, char *);
824:
825: /* Externally visible COFF routines. */
826:
827: #if defined(__STDC__) || defined(ALMOST_STDC)
828: struct internal_syment;
829: union internal_auxent;
830: #endif
831:
832: extern bfd_boolean bfd_coff_set_symbol_class
833: (bfd *, struct bfd_symbol *, unsigned int);
834:
835: extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
836: (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
837:
838: /* ARM VFP11 erratum workaround support. */
839: typedef enum
840: {
841: BFD_ARM_VFP11_FIX_DEFAULT,
842: BFD_ARM_VFP11_FIX_NONE,
843: BFD_ARM_VFP11_FIX_SCALAR,
844: BFD_ARM_VFP11_FIX_VECTOR
845: } bfd_arm_vfp11_fix;
846:
847: extern void bfd_elf32_arm_init_maps
848: (bfd *);
849:
850: extern void bfd_elf32_arm_set_vfp11_fix
851: (bfd *, struct bfd_link_info *);
852:
853: extern void bfd_elf32_arm_set_cortex_a8_fix
854: (bfd *, struct bfd_link_info *);
855:
856: extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
857: (bfd *, struct bfd_link_info *);
858:
859: extern void bfd_elf32_arm_vfp11_fix_veneer_locations
860: (bfd *, struct bfd_link_info *);
861:
1.1.1.2 christos 862: /* ARM STM STM32L4XX erratum workaround support. */
863: typedef enum
864: {
865: BFD_ARM_STM32L4XX_FIX_NONE,
866: BFD_ARM_STM32L4XX_FIX_DEFAULT,
867: BFD_ARM_STM32L4XX_FIX_ALL
868: } bfd_arm_stm32l4xx_fix;
869:
870: extern void bfd_elf32_arm_set_stm32l4xx_fix
871: (bfd *, struct bfd_link_info *);
872:
873: extern bfd_boolean bfd_elf32_arm_stm32l4xx_erratum_scan
874: (bfd *, struct bfd_link_info *);
875:
876: extern void bfd_elf32_arm_stm32l4xx_fix_veneer_locations
877: (bfd *, struct bfd_link_info *);
878:
1.1 christos 879: /* ARM Interworking support. Called from linker. */
880: extern bfd_boolean bfd_arm_allocate_interworking_sections
881: (struct bfd_link_info *);
882:
883: extern bfd_boolean bfd_arm_process_before_allocation
884: (bfd *, struct bfd_link_info *, int);
885:
886: extern bfd_boolean bfd_arm_get_bfd_for_interworking
887: (bfd *, struct bfd_link_info *);
888:
889: /* PE ARM Interworking support. Called from linker. */
890: extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
891: (struct bfd_link_info *);
892:
893: extern bfd_boolean bfd_arm_pe_process_before_allocation
894: (bfd *, struct bfd_link_info *, int);
895:
896: extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
897: (bfd *, struct bfd_link_info *);
898:
899: /* ELF ARM Interworking support. Called from linker. */
900: extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
901: (struct bfd_link_info *);
902:
903: extern bfd_boolean bfd_elf32_arm_process_before_allocation
904: (bfd *, struct bfd_link_info *);
905:
906: void bfd_elf32_arm_set_target_relocs
907: (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
1.1.1.2 christos 908: bfd_arm_stm32l4xx_fix, int, int, int, int, int);
1.1 christos 909:
910: extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
911: (bfd *, struct bfd_link_info *);
912:
913: extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
914: (bfd *, struct bfd_link_info *);
915:
1.1.1.3 ! christos 916: extern void bfd_elf32_arm_keep_private_stub_output_sections
! 917: (struct bfd_link_info *);
! 918:
1.1.1.2 christos 919: /* ELF ARM mapping symbol support. */
1.1 christos 920: #define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
921: #define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
922: #define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
923: #define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
1.1.1.2 christos 924:
1.1 christos 925: extern bfd_boolean bfd_is_arm_special_symbol_name
1.1.1.2 christos 926: (const char *, int);
927:
928: extern void bfd_elf32_arm_set_byteswap_code
929: (struct bfd_link_info *, int);
1.1 christos 930:
1.1.1.2 christos 931: extern void bfd_elf32_arm_use_long_plt (void);
1.1 christos 932:
933: /* ARM Note section processing. */
934: extern bfd_boolean bfd_arm_merge_machines
935: (bfd *, bfd *);
936:
937: extern bfd_boolean bfd_arm_update_notes
938: (bfd *, const char *);
939:
940: extern unsigned int bfd_arm_get_mach_from_notes
941: (bfd *, const char *);
942:
943: /* ARM stub generation support. Called from the linker. */
944: extern int elf32_arm_setup_section_lists
945: (bfd *, struct bfd_link_info *);
946: extern void elf32_arm_next_input_section
947: (struct bfd_link_info *, struct bfd_section *);
948: extern bfd_boolean elf32_arm_size_stubs
949: (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
1.1.1.3 ! christos 950: struct bfd_section * (*) (const char *, struct bfd_section *,
! 951: struct bfd_section *, unsigned int),
1.1.1.2 christos 952: void (*) (void));
1.1 christos 953: extern bfd_boolean elf32_arm_build_stubs
954: (struct bfd_link_info *);
955:
956: /* ARM unwind section editing support. */
957: extern bfd_boolean elf32_arm_fix_exidx_coverage
958: (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
959:
960: /* C6x unwind section editing support. */
961: extern bfd_boolean elf32_tic6x_fix_exidx_coverage
962: (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
963:
964: extern void bfd_elf64_aarch64_init_maps
965: (bfd *);
966:
1.1.1.2 christos 967: extern void bfd_elf32_aarch64_init_maps
968: (bfd *);
969:
970: extern void bfd_elf64_aarch64_set_options
1.1.1.3 ! christos 971: (bfd *, struct bfd_link_info *, int, int, int, int, int, int);
1.1.1.2 christos 972:
973: extern void bfd_elf32_aarch64_set_options
1.1.1.3 ! christos 974: (bfd *, struct bfd_link_info *, int, int, int, int, int, int);
1.1 christos 975:
976: /* ELF AArch64 mapping symbol support. */
977: #define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP (1 << 0)
978: #define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG (1 << 1)
979: #define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER (1 << 2)
980: #define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY (~0)
981: extern bfd_boolean bfd_is_aarch64_special_symbol_name
982: (const char * name, int type);
983:
1.1.1.2 christos 984: /* AArch64 stub generation support for ELF64. Called from the linker. */
1.1 christos 985: extern int elf64_aarch64_setup_section_lists
986: (bfd *, struct bfd_link_info *);
987: extern void elf64_aarch64_next_input_section
988: (struct bfd_link_info *, struct bfd_section *);
989: extern bfd_boolean elf64_aarch64_size_stubs
990: (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
991: struct bfd_section * (*) (const char *, struct bfd_section *),
992: void (*) (void));
993: extern bfd_boolean elf64_aarch64_build_stubs
994: (struct bfd_link_info *);
1.1.1.2 christos 995: /* AArch64 stub generation support for ELF32. Called from the linker. */
996: extern int elf32_aarch64_setup_section_lists
997: (bfd *, struct bfd_link_info *);
998: extern void elf32_aarch64_next_input_section
999: (struct bfd_link_info *, struct bfd_section *);
1000: extern bfd_boolean elf32_aarch64_size_stubs
1001: (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
1002: struct bfd_section * (*) (const char *, struct bfd_section *),
1003: void (*) (void));
1004: extern bfd_boolean elf32_aarch64_build_stubs
1005: (struct bfd_link_info *);
1006:
1007:
1.1 christos 1008: /* TI COFF load page support. */
1009: extern void bfd_ticoff_set_section_load_page
1010: (struct bfd_section *, int);
1011:
1012: extern int bfd_ticoff_get_section_load_page
1013: (struct bfd_section *);
1014:
1015: /* H8/300 functions. */
1016: extern bfd_vma bfd_h8300_pad_address
1017: (bfd *, bfd_vma);
1018:
1019: /* IA64 Itanium code generation. Called from linker. */
1020: extern void bfd_elf32_ia64_after_parse
1021: (int);
1022:
1023: extern void bfd_elf64_ia64_after_parse
1024: (int);
1025:
1.1.1.2 christos 1026: /* V850 Note manipulation routines. */
1027: extern bfd_boolean v850_elf_create_sections
1028: (struct bfd_link_info *);
1.1 christos 1029:
1.1.1.2 christos 1030: extern bfd_boolean v850_elf_set_note
1031: (bfd *, unsigned int, unsigned int);
1.1 christos 1032: /* Extracted from init.c. */
1033: void bfd_init (void);
1034:
1035: /* Extracted from opncls.c. */
1.1.1.2 christos 1036: /* Set to N to open the next N BFDs using an alternate id space. */
1.1 christos 1037: extern unsigned int bfd_use_reserved_id;
1038: bfd *bfd_fopen (const char *filename, const char *target,
1039: const char *mode, int fd);
1040:
1041: bfd *bfd_openr (const char *filename, const char *target);
1042:
1043: bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
1044:
1.1.1.2 christos 1045: bfd *bfd_openstreamr (const char * filename, const char * target, void * stream);
1.1 christos 1046:
1047: bfd *bfd_openr_iovec (const char *filename, const char *target,
1048: void *(*open_func) (struct bfd *nbfd,
1049: void *open_closure),
1050: void *open_closure,
1051: file_ptr (*pread_func) (struct bfd *nbfd,
1052: void *stream,
1053: void *buf,
1054: file_ptr nbytes,
1055: file_ptr offset),
1056: int (*close_func) (struct bfd *nbfd,
1057: void *stream),
1058: int (*stat_func) (struct bfd *abfd,
1059: void *stream,
1060: struct stat *sb));
1061:
1062: bfd *bfd_openw (const char *filename, const char *target);
1063:
1064: bfd_boolean bfd_close (bfd *abfd);
1065:
1066: bfd_boolean bfd_close_all_done (bfd *);
1067:
1068: bfd *bfd_create (const char *filename, bfd *templ);
1069:
1070: bfd_boolean bfd_make_writable (bfd *abfd);
1071:
1072: bfd_boolean bfd_make_readable (bfd *abfd);
1073:
1074: void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
1075:
1076: void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
1077:
1078: unsigned long bfd_calc_gnu_debuglink_crc32
1079: (unsigned long crc, const unsigned char *buf, bfd_size_type len);
1080:
1.1.1.2 christos 1081: char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
1082:
1083: char *bfd_get_alt_debug_link_info (bfd * abfd,
1084: bfd_size_type *buildid_len,
1085: bfd_byte **buildid_out);
1086:
1.1 christos 1087: char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
1088:
1.1.1.2 christos 1089: char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir);
1090:
1.1 christos 1091: struct bfd_section *bfd_create_gnu_debuglink_section
1092: (bfd *abfd, const char *filename);
1093:
1094: bfd_boolean bfd_fill_in_gnu_debuglink_section
1095: (bfd *abfd, struct bfd_section *sect, const char *filename);
1096:
1097: /* Extracted from libbfd.c. */
1098:
1099: /* Byte swapping macros for user section data. */
1100:
1101: #define bfd_put_8(abfd, val, ptr) \
1102: ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
1103: #define bfd_put_signed_8 \
1104: bfd_put_8
1105: #define bfd_get_8(abfd, ptr) \
1106: (*(const unsigned char *) (ptr) & 0xff)
1107: #define bfd_get_signed_8(abfd, ptr) \
1108: (((*(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
1109:
1110: #define bfd_put_16(abfd, val, ptr) \
1111: BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
1112: #define bfd_put_signed_16 \
1113: bfd_put_16
1114: #define bfd_get_16(abfd, ptr) \
1115: BFD_SEND (abfd, bfd_getx16, (ptr))
1116: #define bfd_get_signed_16(abfd, ptr) \
1117: BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
1118:
1119: #define bfd_put_32(abfd, val, ptr) \
1120: BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
1121: #define bfd_put_signed_32 \
1122: bfd_put_32
1123: #define bfd_get_32(abfd, ptr) \
1124: BFD_SEND (abfd, bfd_getx32, (ptr))
1125: #define bfd_get_signed_32(abfd, ptr) \
1126: BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
1127:
1128: #define bfd_put_64(abfd, val, ptr) \
1129: BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
1130: #define bfd_put_signed_64 \
1131: bfd_put_64
1132: #define bfd_get_64(abfd, ptr) \
1133: BFD_SEND (abfd, bfd_getx64, (ptr))
1134: #define bfd_get_signed_64(abfd, ptr) \
1135: BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
1136:
1137: #define bfd_get(bits, abfd, ptr) \
1138: ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
1139: : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
1140: : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
1141: : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
1142: : (abort (), (bfd_vma) - 1))
1143:
1144: #define bfd_put(bits, abfd, val, ptr) \
1145: ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
1146: : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
1147: : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
1148: : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
1149: : (abort (), (void) 0))
1150:
1151:
1152: /* Byte swapping macros for file header data. */
1153:
1154: #define bfd_h_put_8(abfd, val, ptr) \
1155: bfd_put_8 (abfd, val, ptr)
1156: #define bfd_h_put_signed_8(abfd, val, ptr) \
1157: bfd_put_8 (abfd, val, ptr)
1158: #define bfd_h_get_8(abfd, ptr) \
1159: bfd_get_8 (abfd, ptr)
1160: #define bfd_h_get_signed_8(abfd, ptr) \
1161: bfd_get_signed_8 (abfd, ptr)
1162:
1163: #define bfd_h_put_16(abfd, val, ptr) \
1164: BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
1165: #define bfd_h_put_signed_16 \
1166: bfd_h_put_16
1167: #define bfd_h_get_16(abfd, ptr) \
1168: BFD_SEND (abfd, bfd_h_getx16, (ptr))
1169: #define bfd_h_get_signed_16(abfd, ptr) \
1170: BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
1171:
1172: #define bfd_h_put_32(abfd, val, ptr) \
1173: BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
1174: #define bfd_h_put_signed_32 \
1175: bfd_h_put_32
1176: #define bfd_h_get_32(abfd, ptr) \
1177: BFD_SEND (abfd, bfd_h_getx32, (ptr))
1178: #define bfd_h_get_signed_32(abfd, ptr) \
1179: BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
1180:
1181: #define bfd_h_put_64(abfd, val, ptr) \
1182: BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
1183: #define bfd_h_put_signed_64 \
1184: bfd_h_put_64
1185: #define bfd_h_get_64(abfd, ptr) \
1186: BFD_SEND (abfd, bfd_h_getx64, (ptr))
1187: #define bfd_h_get_signed_64(abfd, ptr) \
1188: BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
1189:
1190: /* Aliases for the above, which should eventually go away. */
1191:
1192: #define H_PUT_64 bfd_h_put_64
1193: #define H_PUT_32 bfd_h_put_32
1194: #define H_PUT_16 bfd_h_put_16
1195: #define H_PUT_8 bfd_h_put_8
1196: #define H_PUT_S64 bfd_h_put_signed_64
1197: #define H_PUT_S32 bfd_h_put_signed_32
1198: #define H_PUT_S16 bfd_h_put_signed_16
1199: #define H_PUT_S8 bfd_h_put_signed_8
1200: #define H_GET_64 bfd_h_get_64
1201: #define H_GET_32 bfd_h_get_32
1202: #define H_GET_16 bfd_h_get_16
1203: #define H_GET_8 bfd_h_get_8
1204: #define H_GET_S64 bfd_h_get_signed_64
1205: #define H_GET_S32 bfd_h_get_signed_32
1206: #define H_GET_S16 bfd_h_get_signed_16
1207: #define H_GET_S8 bfd_h_get_signed_8
1208:
1209:
1210: /* Extracted from bfdio.c. */
1211: long bfd_get_mtime (bfd *abfd);
1212:
1213: file_ptr bfd_get_size (bfd *abfd);
1214:
1215: void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
1216: int prot, int flags, file_ptr offset,
1217: void **map_addr, bfd_size_type *map_len);
1218:
1219: /* Extracted from bfdwin.c. */
1220: /* Extracted from section.c. */
1.1.1.2 christos 1221:
1.1 christos 1222: typedef struct bfd_section
1223: {
1224: /* The name of the section; the name isn't a copy, the pointer is
1225: the same as that passed to bfd_make_section. */
1226: const char *name;
1227:
1228: /* A unique sequence number. */
1.1.1.2 christos 1229: unsigned int id;
1.1 christos 1230:
1231: /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
1.1.1.2 christos 1232: unsigned int index;
1.1 christos 1233:
1234: /* The next section in the list belonging to the BFD, or NULL. */
1235: struct bfd_section *next;
1236:
1237: /* The previous section in the list belonging to the BFD, or NULL. */
1238: struct bfd_section *prev;
1239:
1240: /* The field flags contains attributes of the section. Some
1241: flags are read in from the object file, and some are
1242: synthesized from other information. */
1243: flagword flags;
1244:
1245: #define SEC_NO_FLAGS 0x000
1246:
1247: /* Tells the OS to allocate space for this section when loading.
1248: This is clear for a section containing debug information only. */
1249: #define SEC_ALLOC 0x001
1250:
1251: /* Tells the OS to load the section from the file when loading.
1252: This is clear for a .bss section. */
1253: #define SEC_LOAD 0x002
1254:
1255: /* The section contains data still to be relocated, so there is
1256: some relocation information too. */
1257: #define SEC_RELOC 0x004
1258:
1259: /* A signal to the OS that the section contains read only data. */
1260: #define SEC_READONLY 0x008
1261:
1262: /* The section contains code only. */
1263: #define SEC_CODE 0x010
1264:
1265: /* The section contains data only. */
1266: #define SEC_DATA 0x020
1267:
1268: /* The section will reside in ROM. */
1269: #define SEC_ROM 0x040
1270:
1271: /* The section contains constructor information. This section
1272: type is used by the linker to create lists of constructors and
1273: destructors used by <<g++>>. When a back end sees a symbol
1274: which should be used in a constructor list, it creates a new
1275: section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
1276: the symbol to it, and builds a relocation. To build the lists
1277: of constructors, all the linker has to do is catenate all the
1278: sections called <<__CTOR_LIST__>> and relocate the data
1279: contained within - exactly the operations it would peform on
1280: standard data. */
1281: #define SEC_CONSTRUCTOR 0x080
1282:
1283: /* The section has contents - a data section could be
1284: <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
1285: <<SEC_HAS_CONTENTS>> */
1286: #define SEC_HAS_CONTENTS 0x100
1287:
1288: /* An instruction to the linker to not output the section
1289: even if it has information which would normally be written. */
1290: #define SEC_NEVER_LOAD 0x200
1291:
1292: /* The section contains thread local data. */
1293: #define SEC_THREAD_LOCAL 0x400
1294:
1295: /* The section has GOT references. This flag is only for the
1296: linker, and is currently only used by the elf32-hppa back end.
1297: It will be set if global offset table references were detected
1298: in this section, which indicate to the linker that the section
1299: contains PIC code, and must be handled specially when doing a
1300: static link. */
1301: #define SEC_HAS_GOT_REF 0x800
1302:
1303: /* The section contains common symbols (symbols may be defined
1304: multiple times, the value of a symbol is the amount of
1305: space it requires, and the largest symbol value is the one
1306: used). Most targets have exactly one of these (which we
1307: translate to bfd_com_section_ptr), but ECOFF has two. */
1308: #define SEC_IS_COMMON 0x1000
1309:
1310: /* The section contains only debugging information. For
1311: example, this is set for ELF .debug and .stab sections.
1312: strip tests this flag to see if a section can be
1313: discarded. */
1314: #define SEC_DEBUGGING 0x2000
1315:
1316: /* The contents of this section are held in memory pointed to
1317: by the contents field. This is checked by bfd_get_section_contents,
1318: and the data is retrieved from memory if appropriate. */
1319: #define SEC_IN_MEMORY 0x4000
1320:
1321: /* The contents of this section are to be excluded by the
1322: linker for executable and shared objects unless those
1323: objects are to be further relocated. */
1324: #define SEC_EXCLUDE 0x8000
1325:
1326: /* The contents of this section are to be sorted based on the sum of
1327: the symbol and addend values specified by the associated relocation
1328: entries. Entries without associated relocation entries will be
1329: appended to the end of the section in an unspecified order. */
1330: #define SEC_SORT_ENTRIES 0x10000
1331:
1332: /* When linking, duplicate sections of the same name should be
1333: discarded, rather than being combined into a single section as
1334: is usually done. This is similar to how common symbols are
1335: handled. See SEC_LINK_DUPLICATES below. */
1336: #define SEC_LINK_ONCE 0x20000
1337:
1338: /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
1339: should handle duplicate sections. */
1340: #define SEC_LINK_DUPLICATES 0xc0000
1341:
1342: /* This value for SEC_LINK_DUPLICATES means that duplicate
1343: sections with the same name should simply be discarded. */
1344: #define SEC_LINK_DUPLICATES_DISCARD 0x0
1345:
1346: /* This value for SEC_LINK_DUPLICATES means that the linker
1347: should warn if there are any duplicate sections, although
1348: it should still only link one copy. */
1349: #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000
1350:
1351: /* This value for SEC_LINK_DUPLICATES means that the linker
1352: should warn if any duplicate sections are a different size. */
1353: #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000
1354:
1355: /* This value for SEC_LINK_DUPLICATES means that the linker
1356: should warn if any duplicate sections contain different
1357: contents. */
1358: #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
1359: (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
1360:
1361: /* This section was created by the linker as part of dynamic
1362: relocation or other arcane processing. It is skipped when
1363: going through the first-pass output, trusting that someone
1364: else up the line will take care of it later. */
1365: #define SEC_LINKER_CREATED 0x100000
1366:
1367: /* This section should not be subject to garbage collection.
1368: Also set to inform the linker that this section should not be
1369: listed in the link map as discarded. */
1370: #define SEC_KEEP 0x200000
1371:
1372: /* This section contains "short" data, and should be placed
1373: "near" the GP. */
1374: #define SEC_SMALL_DATA 0x400000
1375:
1376: /* Attempt to merge identical entities in the section.
1377: Entity size is given in the entsize field. */
1378: #define SEC_MERGE 0x800000
1379:
1380: /* If given with SEC_MERGE, entities to merge are zero terminated
1381: strings where entsize specifies character size instead of fixed
1382: size entries. */
1383: #define SEC_STRINGS 0x1000000
1384:
1385: /* This section contains data about section groups. */
1386: #define SEC_GROUP 0x2000000
1387:
1388: /* The section is a COFF shared library section. This flag is
1389: only for the linker. If this type of section appears in
1390: the input file, the linker must copy it to the output file
1391: without changing the vma or size. FIXME: Although this
1392: was originally intended to be general, it really is COFF
1393: specific (and the flag was renamed to indicate this). It
1394: might be cleaner to have some more general mechanism to
1395: allow the back end to control what the linker does with
1396: sections. */
1397: #define SEC_COFF_SHARED_LIBRARY 0x4000000
1398:
1399: /* This input section should be copied to output in reverse order
1400: as an array of pointers. This is for ELF linker internal use
1401: only. */
1402: #define SEC_ELF_REVERSE_COPY 0x4000000
1403:
1404: /* This section contains data which may be shared with other
1405: executables or shared objects. This is for COFF only. */
1406: #define SEC_COFF_SHARED 0x8000000
1407:
1.1.1.2 christos 1408: /* This section should be compressed. This is for ELF linker
1409: internal use only. */
1410: #define SEC_ELF_COMPRESS 0x8000000
1411:
1.1 christos 1412: /* When a section with this flag is being linked, then if the size of
1413: the input section is less than a page, it should not cross a page
1414: boundary. If the size of the input section is one page or more,
1415: it should be aligned on a page boundary. This is for TI
1416: TMS320C54X only. */
1417: #define SEC_TIC54X_BLOCK 0x10000000
1418:
1.1.1.2 christos 1419: /* This section should be renamed. This is for ELF linker
1420: internal use only. */
1421: #define SEC_ELF_RENAME 0x10000000
1422:
1.1 christos 1423: /* Conditionally link this section; do not link if there are no
1424: references found to any symbol in the section. This is for TI
1425: TMS320C54X only. */
1426: #define SEC_TIC54X_CLINK 0x20000000
1427:
1.1.1.2 christos 1428: /* This section contains vliw code. This is for Toshiba MeP only. */
1429: #define SEC_MEP_VLIW 0x20000000
1430:
1.1 christos 1431: /* Indicate that section has the no read flag set. This happens
1432: when memory read flag isn't set. */
1433: #define SEC_COFF_NOREAD 0x40000000
1434:
1.1.1.3 ! christos 1435: /* Indicate that section has the no read flag set. */
! 1436: #define SEC_ELF_NOREAD 0x80000000
! 1437:
1.1 christos 1438: /* End of section flags. */
1439:
1440: /* Some internal packed boolean fields. */
1441:
1442: /* See the vma field. */
1443: unsigned int user_set_vma : 1;
1444:
1445: /* A mark flag used by some of the linker backends. */
1446: unsigned int linker_mark : 1;
1447:
1448: /* Another mark flag used by some of the linker backends. Set for
1449: output sections that have an input section. */
1450: unsigned int linker_has_input : 1;
1451:
1452: /* Mark flag used by some linker backends for garbage collection. */
1453: unsigned int gc_mark : 1;
1454:
1455: /* Section compression status. */
1456: unsigned int compress_status : 2;
1457: #define COMPRESS_SECTION_NONE 0
1458: #define COMPRESS_SECTION_DONE 1
1459: #define DECOMPRESS_SECTION_SIZED 2
1460:
1461: /* The following flags are used by the ELF linker. */
1462:
1463: /* Mark sections which have been allocated to segments. */
1464: unsigned int segment_mark : 1;
1465:
1466: /* Type of sec_info information. */
1467: unsigned int sec_info_type:3;
1468: #define SEC_INFO_TYPE_NONE 0
1469: #define SEC_INFO_TYPE_STABS 1
1470: #define SEC_INFO_TYPE_MERGE 2
1471: #define SEC_INFO_TYPE_EH_FRAME 3
1472: #define SEC_INFO_TYPE_JUST_SYMS 4
1.1.1.2 christos 1473: #define SEC_INFO_TYPE_TARGET 5
1474: #define SEC_INFO_TYPE_EH_FRAME_ENTRY 6
1.1 christos 1475:
1476: /* Nonzero if this section uses RELA relocations, rather than REL. */
1477: unsigned int use_rela_p:1;
1478:
1479: /* Bits used by various backends. The generic code doesn't touch
1480: these fields. */
1481:
1482: unsigned int sec_flg0:1;
1483: unsigned int sec_flg1:1;
1484: unsigned int sec_flg2:1;
1485: unsigned int sec_flg3:1;
1486: unsigned int sec_flg4:1;
1487: unsigned int sec_flg5:1;
1488:
1489: /* End of internal packed boolean fields. */
1490:
1491: /* The virtual memory address of the section - where it will be
1492: at run time. The symbols are relocated against this. The
1493: user_set_vma flag is maintained by bfd; if it's not set, the
1494: backend can assign addresses (for example, in <<a.out>>, where
1495: the default address for <<.data>> is dependent on the specific
1496: target and various flags). */
1497: bfd_vma vma;
1498:
1499: /* The load address of the section - where it would be in a
1500: rom image; really only used for writing section header
1501: information. */
1502: bfd_vma lma;
1503:
1.1.1.3 ! christos 1504: /* The size of the section in *octets*, as it will be output.
1.1 christos 1505: Contains a value even if the section has no contents (e.g., the
1506: size of <<.bss>>). */
1507: bfd_size_type size;
1508:
1509: /* For input sections, the original size on disk of the section, in
1510: octets. This field should be set for any section whose size is
1511: changed by linker relaxation. It is required for sections where
1512: the linker relaxation scheme doesn't cache altered section and
1513: reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
1514: targets), and thus the original size needs to be kept to read the
1515: section multiple times. For output sections, rawsize holds the
1516: section size calculated on a previous linker relaxation pass. */
1517: bfd_size_type rawsize;
1518:
1519: /* The compressed size of the section in octets. */
1520: bfd_size_type compressed_size;
1521:
1522: /* Relaxation table. */
1523: struct relax_table *relax;
1524:
1525: /* Count of used relaxation table entries. */
1526: int relax_count;
1527:
1528:
1529: /* If this section is going to be output, then this value is the
1530: offset in *bytes* into the output section of the first byte in the
1531: input section (byte ==> smallest addressable unit on the
1532: target). In most cases, if this was going to start at the
1533: 100th octet (8-bit quantity) in the output section, this value
1534: would be 100. However, if the target byte size is 16 bits
1535: (bfd_octets_per_byte is "2"), this value would be 50. */
1536: bfd_vma output_offset;
1537:
1538: /* The output section through which to map on output. */
1539: struct bfd_section *output_section;
1540:
1541: /* The alignment requirement of the section, as an exponent of 2 -
1542: e.g., 3 aligns to 2^3 (or 8). */
1543: unsigned int alignment_power;
1544:
1545: /* If an input section, a pointer to a vector of relocation
1546: records for the data in this section. */
1547: struct reloc_cache_entry *relocation;
1548:
1549: /* If an output section, a pointer to a vector of pointers to
1550: relocation records for the data in this section. */
1551: struct reloc_cache_entry **orelocation;
1552:
1553: /* The number of relocation records in one of the above. */
1554: unsigned reloc_count;
1555:
1556: /* Information below is back end specific - and not always used
1557: or updated. */
1558:
1559: /* File position of section data. */
1560: file_ptr filepos;
1561:
1562: /* File position of relocation info. */
1563: file_ptr rel_filepos;
1564:
1565: /* File position of line data. */
1566: file_ptr line_filepos;
1567:
1568: /* Pointer to data for applications. */
1569: void *userdata;
1570:
1571: /* If the SEC_IN_MEMORY flag is set, this points to the actual
1572: contents. */
1573: unsigned char *contents;
1574:
1575: /* Attached line number information. */
1576: alent *lineno;
1577:
1578: /* Number of line number records. */
1579: unsigned int lineno_count;
1580:
1581: /* Entity size for merging purposes. */
1582: unsigned int entsize;
1583:
1584: /* Points to the kept section if this section is a link-once section,
1585: and is discarded. */
1586: struct bfd_section *kept_section;
1587:
1588: /* When a section is being output, this value changes as more
1589: linenumbers are written out. */
1590: file_ptr moving_line_filepos;
1591:
1592: /* What the section number is in the target world. */
1593: int target_index;
1594:
1595: void *used_by_bfd;
1596:
1597: /* If this is a constructor section then here is a list of the
1598: relocations created to relocate items within it. */
1599: struct relent_chain *constructor_chain;
1600:
1601: /* The BFD which owns the section. */
1602: bfd *owner;
1603:
1604: /* A symbol which points at this section only. */
1605: struct bfd_symbol *symbol;
1606: struct bfd_symbol **symbol_ptr_ptr;
1607:
1608: /* Early in the link process, map_head and map_tail are used to build
1609: a list of input sections attached to an output section. Later,
1610: output sections use these fields for a list of bfd_link_order
1611: structs. */
1612: union {
1613: struct bfd_link_order *link_order;
1614: struct bfd_section *s;
1615: } map_head, map_tail;
1616: } asection;
1617:
1618: /* Relax table contains information about instructions which can
1.1.1.2 christos 1619: be removed by relaxation -- replacing a long address with a
1.1 christos 1620: short address. */
1621: struct relax_table {
1622: /* Address where bytes may be deleted. */
1623: bfd_vma addr;
1.1.1.2 christos 1624:
1.1 christos 1625: /* Number of bytes to be deleted. */
1626: int size;
1627: };
1628:
1.1.1.2 christos 1629: /* Note: the following are provided as inline functions rather than macros
1630: because not all callers use the return value. A macro implementation
1631: would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
1632: compilers will complain about comma expressions that have no effect. */
1633: static inline bfd_boolean
1634: bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val)
1635: {
1636: ptr->userdata = val;
1637: return TRUE;
1638: }
1639:
1640: static inline bfd_boolean
1641: bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
1642: {
1643: ptr->vma = ptr->lma = val;
1644: ptr->user_set_vma = TRUE;
1645: return TRUE;
1646: }
1647:
1648: static inline bfd_boolean
1649: bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val)
1650: {
1651: ptr->alignment_power = val;
1652: return TRUE;
1653: }
1654:
1.1 christos 1655: /* These sections are global, and are managed by BFD. The application
1656: and target back end are not permitted to change the values in
1657: these sections. */
1.1.1.2 christos 1658: extern asection _bfd_std_section[4];
1.1 christos 1659:
1660: #define BFD_ABS_SECTION_NAME "*ABS*"
1661: #define BFD_UND_SECTION_NAME "*UND*"
1662: #define BFD_COM_SECTION_NAME "*COM*"
1663: #define BFD_IND_SECTION_NAME "*IND*"
1664:
1665: /* Pointer to the common section. */
1.1.1.2 christos 1666: #define bfd_com_section_ptr (&_bfd_std_section[0])
1.1 christos 1667: /* Pointer to the undefined section. */
1.1.1.2 christos 1668: #define bfd_und_section_ptr (&_bfd_std_section[1])
1.1 christos 1669: /* Pointer to the absolute section. */
1.1.1.2 christos 1670: #define bfd_abs_section_ptr (&_bfd_std_section[2])
1.1 christos 1671: /* Pointer to the indirect section. */
1.1.1.2 christos 1672: #define bfd_ind_section_ptr (&_bfd_std_section[3])
1.1 christos 1673:
1674: #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
1675: #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
1676: #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
1677:
1678: #define bfd_is_const_section(SEC) \
1679: ( ((SEC) == bfd_abs_section_ptr) \
1680: || ((SEC) == bfd_und_section_ptr) \
1681: || ((SEC) == bfd_com_section_ptr) \
1682: || ((SEC) == bfd_ind_section_ptr))
1683:
1684: /* Macros to handle insertion and deletion of a bfd's sections. These
1685: only handle the list pointers, ie. do not adjust section_count,
1686: target_index etc. */
1687: #define bfd_section_list_remove(ABFD, S) \
1688: do \
1689: { \
1690: asection *_s = S; \
1691: asection *_next = _s->next; \
1692: asection *_prev = _s->prev; \
1693: if (_prev) \
1694: _prev->next = _next; \
1695: else \
1696: (ABFD)->sections = _next; \
1697: if (_next) \
1698: _next->prev = _prev; \
1699: else \
1700: (ABFD)->section_last = _prev; \
1701: } \
1702: while (0)
1703: #define bfd_section_list_append(ABFD, S) \
1704: do \
1705: { \
1706: asection *_s = S; \
1707: bfd *_abfd = ABFD; \
1708: _s->next = NULL; \
1709: if (_abfd->section_last) \
1710: { \
1711: _s->prev = _abfd->section_last; \
1712: _abfd->section_last->next = _s; \
1713: } \
1714: else \
1715: { \
1716: _s->prev = NULL; \
1717: _abfd->sections = _s; \
1718: } \
1719: _abfd->section_last = _s; \
1720: } \
1721: while (0)
1722: #define bfd_section_list_prepend(ABFD, S) \
1723: do \
1724: { \
1725: asection *_s = S; \
1726: bfd *_abfd = ABFD; \
1727: _s->prev = NULL; \
1728: if (_abfd->sections) \
1729: { \
1730: _s->next = _abfd->sections; \
1731: _abfd->sections->prev = _s; \
1732: } \
1733: else \
1734: { \
1735: _s->next = NULL; \
1736: _abfd->section_last = _s; \
1737: } \
1738: _abfd->sections = _s; \
1739: } \
1740: while (0)
1741: #define bfd_section_list_insert_after(ABFD, A, S) \
1742: do \
1743: { \
1744: asection *_a = A; \
1745: asection *_s = S; \
1746: asection *_next = _a->next; \
1747: _s->next = _next; \
1748: _s->prev = _a; \
1749: _a->next = _s; \
1750: if (_next) \
1751: _next->prev = _s; \
1752: else \
1753: (ABFD)->section_last = _s; \
1754: } \
1755: while (0)
1756: #define bfd_section_list_insert_before(ABFD, B, S) \
1757: do \
1758: { \
1759: asection *_b = B; \
1760: asection *_s = S; \
1761: asection *_prev = _b->prev; \
1762: _s->prev = _prev; \
1763: _s->next = _b; \
1764: _b->prev = _s; \
1765: if (_prev) \
1766: _prev->next = _s; \
1767: else \
1768: (ABFD)->sections = _s; \
1769: } \
1770: while (0)
1771: #define bfd_section_removed_from_list(ABFD, S) \
1772: ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
1773:
1774: #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
1775: /* name, id, index, next, prev, flags, user_set_vma, */ \
1776: { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
1777: \
1778: /* linker_mark, linker_has_input, gc_mark, decompress_status, */ \
1779: 0, 0, 1, 0, \
1780: \
1781: /* segment_mark, sec_info_type, use_rela_p, */ \
1782: 0, 0, 0, \
1783: \
1784: /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, */ \
1785: 0, 0, 0, 0, 0, 0, \
1786: \
1787: /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */ \
1788: 0, 0, 0, 0, 0, 0, 0, \
1789: \
1790: /* output_offset, output_section, alignment_power, */ \
1791: 0, &SEC, 0, \
1792: \
1793: /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
1794: NULL, NULL, 0, 0, 0, \
1795: \
1796: /* line_filepos, userdata, contents, lineno, lineno_count, */ \
1797: 0, NULL, NULL, NULL, 0, \
1798: \
1799: /* entsize, kept_section, moving_line_filepos, */ \
1800: 0, NULL, 0, \
1801: \
1802: /* target_index, used_by_bfd, constructor_chain, owner, */ \
1803: 0, NULL, NULL, NULL, \
1804: \
1805: /* symbol, symbol_ptr_ptr, */ \
1806: (struct bfd_symbol *) SYM, &SEC.symbol, \
1807: \
1808: /* map_head, map_tail */ \
1809: { NULL }, { NULL } \
1810: }
1811:
1812: void bfd_section_list_clear (bfd *);
1813:
1814: asection *bfd_get_section_by_name (bfd *abfd, const char *name);
1815:
1.1.1.2 christos 1816: asection *bfd_get_next_section_by_name (bfd *ibfd, asection *sec);
1.1 christos 1817:
1818: asection *bfd_get_linker_section (bfd *abfd, const char *name);
1819:
1820: asection *bfd_get_section_by_name_if
1821: (bfd *abfd,
1822: const char *name,
1823: bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
1824: void *obj);
1825:
1826: char *bfd_get_unique_section_name
1827: (bfd *abfd, const char *templat, int *count);
1828:
1829: asection *bfd_make_section_old_way (bfd *abfd, const char *name);
1830:
1831: asection *bfd_make_section_anyway_with_flags
1832: (bfd *abfd, const char *name, flagword flags);
1833:
1834: asection *bfd_make_section_anyway (bfd *abfd, const char *name);
1835:
1836: asection *bfd_make_section_with_flags
1837: (bfd *, const char *name, flagword flags);
1838:
1839: asection *bfd_make_section (bfd *, const char *name);
1840:
1.1.1.2 christos 1841: int bfd_get_next_section_id (void);
1842:
1.1 christos 1843: bfd_boolean bfd_set_section_flags
1844: (bfd *abfd, asection *sec, flagword flags);
1845:
1846: void bfd_rename_section
1847: (bfd *abfd, asection *sec, const char *newname);
1848:
1849: void bfd_map_over_sections
1850: (bfd *abfd,
1851: void (*func) (bfd *abfd, asection *sect, void *obj),
1852: void *obj);
1853:
1854: asection *bfd_sections_find_if
1855: (bfd *abfd,
1856: bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
1857: void *obj);
1858:
1859: bfd_boolean bfd_set_section_size
1860: (bfd *abfd, asection *sec, bfd_size_type val);
1861:
1862: bfd_boolean bfd_set_section_contents
1863: (bfd *abfd, asection *section, const void *data,
1864: file_ptr offset, bfd_size_type count);
1865:
1866: bfd_boolean bfd_get_section_contents
1867: (bfd *abfd, asection *section, void *location, file_ptr offset,
1868: bfd_size_type count);
1869:
1870: bfd_boolean bfd_malloc_and_get_section
1871: (bfd *abfd, asection *section, bfd_byte **buf);
1872:
1873: bfd_boolean bfd_copy_private_section_data
1874: (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
1875:
1876: #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
1877: BFD_SEND (obfd, _bfd_copy_private_section_data, \
1878: (ibfd, isection, obfd, osection))
1879: bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
1880:
1881: bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
1882:
1883: /* Extracted from archures.c. */
1884: enum bfd_architecture
1885: {
1886: bfd_arch_unknown, /* File arch not known. */
1887: bfd_arch_obscure, /* Arch known, not one of these. */
1888: bfd_arch_m68k, /* Motorola 68xxx */
1889: #define bfd_mach_m68000 1
1890: #define bfd_mach_m68008 2
1891: #define bfd_mach_m68010 3
1892: #define bfd_mach_m68020 4
1893: #define bfd_mach_m68030 5
1894: #define bfd_mach_m68040 6
1895: #define bfd_mach_m68060 7
1896: #define bfd_mach_cpu32 8
1897: #define bfd_mach_fido 9
1898: #define bfd_mach_mcf_isa_a_nodiv 10
1899: #define bfd_mach_mcf_isa_a 11
1900: #define bfd_mach_mcf_isa_a_mac 12
1901: #define bfd_mach_mcf_isa_a_emac 13
1902: #define bfd_mach_mcf_isa_aplus 14
1903: #define bfd_mach_mcf_isa_aplus_mac 15
1904: #define bfd_mach_mcf_isa_aplus_emac 16
1905: #define bfd_mach_mcf_isa_b_nousp 17
1906: #define bfd_mach_mcf_isa_b_nousp_mac 18
1907: #define bfd_mach_mcf_isa_b_nousp_emac 19
1908: #define bfd_mach_mcf_isa_b 20
1909: #define bfd_mach_mcf_isa_b_mac 21
1910: #define bfd_mach_mcf_isa_b_emac 22
1911: #define bfd_mach_mcf_isa_b_float 23
1912: #define bfd_mach_mcf_isa_b_float_mac 24
1913: #define bfd_mach_mcf_isa_b_float_emac 25
1914: #define bfd_mach_mcf_isa_c 26
1915: #define bfd_mach_mcf_isa_c_mac 27
1916: #define bfd_mach_mcf_isa_c_emac 28
1917: #define bfd_mach_mcf_isa_c_nodiv 29
1918: #define bfd_mach_mcf_isa_c_nodiv_mac 30
1919: #define bfd_mach_mcf_isa_c_nodiv_emac 31
1920: bfd_arch_vax, /* DEC Vax */
1921: bfd_arch_i960, /* Intel 960 */
1922: /* The order of the following is important.
1923: lower number indicates a machine type that
1924: only accepts a subset of the instructions
1925: available to machines with higher numbers.
1926: The exception is the "ca", which is
1927: incompatible with all other machines except
1928: "core". */
1929:
1930: #define bfd_mach_i960_core 1
1931: #define bfd_mach_i960_ka_sa 2
1932: #define bfd_mach_i960_kb_sb 3
1933: #define bfd_mach_i960_mc 4
1934: #define bfd_mach_i960_xa 5
1935: #define bfd_mach_i960_ca 6
1936: #define bfd_mach_i960_jx 7
1937: #define bfd_mach_i960_hx 8
1938:
1.1.1.2 christos 1939: bfd_arch_or1k, /* OpenRISC 1000 */
1940: #define bfd_mach_or1k 1
1941: #define bfd_mach_or1knd 2
1.1 christos 1942:
1943: bfd_arch_sparc, /* SPARC */
1944: #define bfd_mach_sparc 1
1945: /* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
1946: #define bfd_mach_sparc_sparclet 2
1947: #define bfd_mach_sparc_sparclite 3
1948: #define bfd_mach_sparc_v8plus 4
1949: #define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
1950: #define bfd_mach_sparc_sparclite_le 6
1951: #define bfd_mach_sparc_v9 7
1952: #define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
1953: #define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
1954: #define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
1.1.1.3 ! christos 1955: #define bfd_mach_sparc_v8plusc 11 /* with UA2005 and T1 add'ns. */
! 1956: #define bfd_mach_sparc_v9c 12 /* with UA2005 and T1 add'ns. */
! 1957: #define bfd_mach_sparc_v8plusd 13 /* with UA2007 and T3 add'ns. */
! 1958: #define bfd_mach_sparc_v9d 14 /* with UA2007 and T3 add'ns. */
! 1959: #define bfd_mach_sparc_v8pluse 15 /* with OSA2001 and T4 add'ns (no IMA). */
! 1960: #define bfd_mach_sparc_v9e 16 /* with OSA2001 and T4 add'ns (no IMA). */
! 1961: #define bfd_mach_sparc_v8plusv 17 /* with OSA2011 and T4 and IMA and FJMAU add'ns. */
! 1962: #define bfd_mach_sparc_v9v 18 /* with OSA2011 and T4 and IMA and FJMAU add'ns. */
! 1963: #define bfd_mach_sparc_v8plusm 19 /* with OSA2015 and M7 add'ns. */
! 1964: #define bfd_mach_sparc_v9m 20 /* with OSA2015 and M7 add'ns. */
1.1 christos 1965: /* Nonzero if MACH has the v9 instruction set. */
1966: #define bfd_mach_sparc_v9_p(mach) \
1.1.1.3 ! christos 1967: ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9m \
1.1 christos 1968: && (mach) != bfd_mach_sparc_sparclite_le)
1969: /* Nonzero if MACH is a 64 bit sparc architecture. */
1970: #define bfd_mach_sparc_64bit_p(mach) \
1.1.1.3 ! christos 1971: ((mach) >= bfd_mach_sparc_v9 \
! 1972: && (mach) != bfd_mach_sparc_v8plusb \
! 1973: && (mach) != bfd_mach_sparc_v8plusc \
! 1974: && (mach) != bfd_mach_sparc_v8plusd \
! 1975: && (mach) != bfd_mach_sparc_v8pluse \
! 1976: && (mach) != bfd_mach_sparc_v8plusv \
! 1977: && (mach) != bfd_mach_sparc_v8plusm)
1.1 christos 1978: bfd_arch_spu, /* PowerPC SPU */
1.1.1.2 christos 1979: #define bfd_mach_spu 256
1.1 christos 1980: bfd_arch_mips, /* MIPS Rxxxx */
1981: #define bfd_mach_mips3000 3000
1982: #define bfd_mach_mips3900 3900
1983: #define bfd_mach_mips4000 4000
1984: #define bfd_mach_mips4010 4010
1985: #define bfd_mach_mips4100 4100
1986: #define bfd_mach_mips4111 4111
1987: #define bfd_mach_mips4120 4120
1988: #define bfd_mach_mips4300 4300
1989: #define bfd_mach_mips4400 4400
1990: #define bfd_mach_mips4600 4600
1991: #define bfd_mach_mips4650 4650
1992: #define bfd_mach_mips5000 5000
1993: #define bfd_mach_mips5400 5400
1994: #define bfd_mach_mips5500 5500
1.1.1.2 christos 1995: #define bfd_mach_mips5900 5900
1.1 christos 1996: #define bfd_mach_mips6000 6000
1997: #define bfd_mach_mips7000 7000
1998: #define bfd_mach_mips8000 8000
1999: #define bfd_mach_mips9000 9000
2000: #define bfd_mach_mips10000 10000
2001: #define bfd_mach_mips12000 12000
2002: #define bfd_mach_mips14000 14000
2003: #define bfd_mach_mips16000 16000
2004: #define bfd_mach_mips16 16
2005: #define bfd_mach_mips5 5
2006: #define bfd_mach_mips_loongson_2e 3001
2007: #define bfd_mach_mips_loongson_2f 3002
2008: #define bfd_mach_mips_loongson_3a 3003
2009: #define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
2010: #define bfd_mach_mips_octeon 6501
2011: #define bfd_mach_mips_octeonp 6601
2012: #define bfd_mach_mips_octeon2 6502
1.1.1.2 christos 2013: #define bfd_mach_mips_octeon3 6503
1.1 christos 2014: #define bfd_mach_mips_xlr 887682 /* decimal 'XLR' */
2015: #define bfd_mach_mipsisa32 32
2016: #define bfd_mach_mipsisa32r2 33
1.1.1.2 christos 2017: #define bfd_mach_mipsisa32r3 34
2018: #define bfd_mach_mipsisa32r5 36
2019: #define bfd_mach_mipsisa32r6 37
1.1 christos 2020: #define bfd_mach_mipsisa64 64
2021: #define bfd_mach_mipsisa64r2 65
1.1.1.2 christos 2022: #define bfd_mach_mipsisa64r3 66
2023: #define bfd_mach_mipsisa64r5 68
2024: #define bfd_mach_mipsisa64r6 69
1.1 christos 2025: #define bfd_mach_mips_micromips 96
2026: bfd_arch_i386, /* Intel 386 */
2027: #define bfd_mach_i386_intel_syntax (1 << 0)
2028: #define bfd_mach_i386_i8086 (1 << 1)
2029: #define bfd_mach_i386_i386 (1 << 2)
2030: #define bfd_mach_x86_64 (1 << 3)
2031: #define bfd_mach_x64_32 (1 << 4)
2032: #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
2033: #define bfd_mach_x86_64_intel_syntax (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
2034: #define bfd_mach_x64_32_intel_syntax (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
2035: bfd_arch_l1om, /* Intel L1OM */
2036: #define bfd_mach_l1om (1 << 5)
2037: #define bfd_mach_l1om_intel_syntax (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
2038: bfd_arch_k1om, /* Intel K1OM */
2039: #define bfd_mach_k1om (1 << 6)
2040: #define bfd_mach_k1om_intel_syntax (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
1.1.1.2 christos 2041: #define bfd_mach_i386_nacl (1 << 7)
2042: #define bfd_mach_i386_i386_nacl (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
2043: #define bfd_mach_x86_64_nacl (bfd_mach_x86_64 | bfd_mach_i386_nacl)
2044: #define bfd_mach_x64_32_nacl (bfd_mach_x64_32 | bfd_mach_i386_nacl)
2045: bfd_arch_iamcu, /* Intel MCU */
2046: #define bfd_mach_iamcu (1 << 8)
2047: #define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu)
2048: #define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax)
1.1 christos 2049: bfd_arch_we32k, /* AT&T WE32xxx */
2050: bfd_arch_tahoe, /* CCI/Harris Tahoe */
2051: bfd_arch_i860, /* Intel 860 */
2052: bfd_arch_i370, /* IBM 360/370 Mainframes */
2053: bfd_arch_romp, /* IBM ROMP PC/RT */
2054: bfd_arch_convex, /* Convex */
2055: bfd_arch_m88k, /* Motorola 88xxx */
2056: bfd_arch_m98k, /* Motorola 98xxx */
2057: bfd_arch_pyramid, /* Pyramid Technology */
2058: bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
2059: #define bfd_mach_h8300 1
2060: #define bfd_mach_h8300h 2
2061: #define bfd_mach_h8300s 3
2062: #define bfd_mach_h8300hn 4
2063: #define bfd_mach_h8300sn 5
2064: #define bfd_mach_h8300sx 6
2065: #define bfd_mach_h8300sxn 7
2066: bfd_arch_pdp11, /* DEC PDP-11 */
2067: bfd_arch_plugin,
2068: bfd_arch_powerpc, /* PowerPC */
2069: #define bfd_mach_ppc 32
2070: #define bfd_mach_ppc64 64
2071: #define bfd_mach_ppc_403 403
2072: #define bfd_mach_ppc_403gc 4030
2073: #define bfd_mach_ppc_405 405
2074: #define bfd_mach_ppc_505 505
2075: #define bfd_mach_ppc_601 601
2076: #define bfd_mach_ppc_602 602
2077: #define bfd_mach_ppc_603 603
2078: #define bfd_mach_ppc_ec603e 6031
2079: #define bfd_mach_ppc_604 604
2080: #define bfd_mach_ppc_620 620
2081: #define bfd_mach_ppc_630 630
2082: #define bfd_mach_ppc_750 750
2083: #define bfd_mach_ppc_860 860
2084: #define bfd_mach_ppc_a35 35
2085: #define bfd_mach_ppc_rs64ii 642
2086: #define bfd_mach_ppc_rs64iii 643
2087: #define bfd_mach_ppc_7400 7400
2088: #define bfd_mach_ppc_e500 500
2089: #define bfd_mach_ppc_e500mc 5001
2090: #define bfd_mach_ppc_e500mc64 5005
2091: #define bfd_mach_ppc_e5500 5006
2092: #define bfd_mach_ppc_e6500 5007
2093: #define bfd_mach_ppc_titan 83
2094: #define bfd_mach_ppc_vle 84
1.1.1.2 christos 2095: bfd_arch_riscv, /* RISC-V */
2096: #define bfd_mach_riscv32 132
2097: #define bfd_mach_riscv64 164
1.1 christos 2098: bfd_arch_rs6000, /* IBM RS/6000 */
2099: #define bfd_mach_rs6k 6000
2100: #define bfd_mach_rs6k_rs1 6001
2101: #define bfd_mach_rs6k_rsc 6003
2102: #define bfd_mach_rs6k_rs2 6002
2103: bfd_arch_hppa, /* HP PA RISC */
2104: #define bfd_mach_hppa10 10
2105: #define bfd_mach_hppa11 11
2106: #define bfd_mach_hppa20 20
2107: #define bfd_mach_hppa20w 25
2108: bfd_arch_d10v, /* Mitsubishi D10V */
2109: #define bfd_mach_d10v 1
2110: #define bfd_mach_d10v_ts2 2
2111: #define bfd_mach_d10v_ts3 3
2112: bfd_arch_d30v, /* Mitsubishi D30V */
2113: bfd_arch_dlx, /* DLX */
2114: bfd_arch_m68hc11, /* Motorola 68HC11 */
2115: bfd_arch_m68hc12, /* Motorola 68HC12 */
2116: #define bfd_mach_m6812_default 0
2117: #define bfd_mach_m6812 1
2118: #define bfd_mach_m6812s 2
2119: bfd_arch_m9s12x, /* Freescale S12X */
2120: bfd_arch_m9s12xg, /* Freescale XGATE */
2121: bfd_arch_z8k, /* Zilog Z8000 */
2122: #define bfd_mach_z8001 1
2123: #define bfd_mach_z8002 2
2124: bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
2125: bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
2126: #define bfd_mach_sh 1
2127: #define bfd_mach_sh2 0x20
2128: #define bfd_mach_sh_dsp 0x2d
2129: #define bfd_mach_sh2a 0x2a
2130: #define bfd_mach_sh2a_nofpu 0x2b
2131: #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
2132: #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
2133: #define bfd_mach_sh2a_or_sh4 0x2a3
2134: #define bfd_mach_sh2a_or_sh3e 0x2a4
2135: #define bfd_mach_sh2e 0x2e
2136: #define bfd_mach_sh3 0x30
2137: #define bfd_mach_sh3_nommu 0x31
2138: #define bfd_mach_sh3_dsp 0x3d
2139: #define bfd_mach_sh3e 0x3e
2140: #define bfd_mach_sh4 0x40
2141: #define bfd_mach_sh4_nofpu 0x41
2142: #define bfd_mach_sh4_nommu_nofpu 0x42
2143: #define bfd_mach_sh4a 0x4a
2144: #define bfd_mach_sh4a_nofpu 0x4b
2145: #define bfd_mach_sh4al_dsp 0x4d
2146: #define bfd_mach_sh5 0x50
2147: bfd_arch_alpha, /* Dec Alpha */
2148: #define bfd_mach_alpha_ev4 0x10
2149: #define bfd_mach_alpha_ev5 0x20
2150: #define bfd_mach_alpha_ev6 0x30
2151: bfd_arch_arm, /* Advanced Risc Machines ARM. */
2152: #define bfd_mach_arm_unknown 0
2153: #define bfd_mach_arm_2 1
2154: #define bfd_mach_arm_2a 2
2155: #define bfd_mach_arm_3 3
2156: #define bfd_mach_arm_3M 4
2157: #define bfd_mach_arm_4 5
2158: #define bfd_mach_arm_4T 6
2159: #define bfd_mach_arm_5 7
2160: #define bfd_mach_arm_5T 8
2161: #define bfd_mach_arm_5TE 9
2162: #define bfd_mach_arm_XScale 10
2163: #define bfd_mach_arm_ep9312 11
2164: #define bfd_mach_arm_iWMMXt 12
2165: #define bfd_mach_arm_iWMMXt2 13
1.1.1.2 christos 2166: bfd_arch_nds32, /* Andes NDS32 */
2167: #define bfd_mach_n1 1
2168: #define bfd_mach_n1h 2
2169: #define bfd_mach_n1h_v2 3
2170: #define bfd_mach_n1h_v3 4
2171: #define bfd_mach_n1h_v3m 5
1.1 christos 2172: bfd_arch_ns32k, /* National Semiconductors ns32000 */
2173: bfd_arch_w65, /* WDC 65816 */
2174: bfd_arch_tic30, /* Texas Instruments TMS320C30 */
2175: bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
2176: #define bfd_mach_tic3x 30
2177: #define bfd_mach_tic4x 40
2178: bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
2179: bfd_arch_tic6x, /* Texas Instruments TMS320C6X */
2180: bfd_arch_tic80, /* TI TMS320c80 (MVP) */
2181: bfd_arch_v850, /* NEC V850 */
1.1.1.2 christos 2182: bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI) */
1.1 christos 2183: #define bfd_mach_v850 1
2184: #define bfd_mach_v850e 'E'
2185: #define bfd_mach_v850e1 '1'
2186: #define bfd_mach_v850e2 0x4532
2187: #define bfd_mach_v850e2v3 0x45325633
1.1.1.2 christos 2188: #define bfd_mach_v850e3v5 0x45335635 /* ('E'|'3'|'V'|'5') */
1.1 christos 2189: bfd_arch_arc, /* ARC Cores */
1.1.1.2 christos 2190: #define bfd_mach_arc_a4 0
2191: #define bfd_mach_arc_a5 1
2192: #define bfd_mach_arc_arc600 2
2193: #define bfd_mach_arc_arc601 4
2194: #define bfd_mach_arc_arc700 3
2195: #define bfd_mach_arc_arcv2 5
1.1 christos 2196: bfd_arch_m32c, /* Renesas M16C/M32C. */
2197: #define bfd_mach_m16c 0x75
2198: #define bfd_mach_m32c 0x78
2199: bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
2200: #define bfd_mach_m32r 1 /* For backwards compatibility. */
2201: #define bfd_mach_m32rx 'x'
2202: #define bfd_mach_m32r2 '2'
2203: bfd_arch_mn10200, /* Matsushita MN10200 */
2204: bfd_arch_mn10300, /* Matsushita MN10300 */
2205: #define bfd_mach_mn10300 300
2206: #define bfd_mach_am33 330
2207: #define bfd_mach_am33_2 332
2208: bfd_arch_fr30,
2209: #define bfd_mach_fr30 0x46523330
2210: bfd_arch_frv,
2211: #define bfd_mach_frv 1
2212: #define bfd_mach_frvsimple 2
2213: #define bfd_mach_fr300 300
2214: #define bfd_mach_fr400 400
2215: #define bfd_mach_fr450 450
2216: #define bfd_mach_frvtomcat 499 /* fr500 prototype */
2217: #define bfd_mach_fr500 500
2218: #define bfd_mach_fr550 550
2219: bfd_arch_moxie, /* The moxie processor */
2220: #define bfd_mach_moxie 1
1.1.1.2 christos 2221: bfd_arch_ft32, /* The ft32 processor */
2222: #define bfd_mach_ft32 1
1.1 christos 2223: bfd_arch_mcore,
2224: bfd_arch_mep,
2225: #define bfd_mach_mep 1
2226: #define bfd_mach_mep_h1 0x6831
2227: #define bfd_mach_mep_c5 0x6335
1.1.1.2 christos 2228: bfd_arch_metag,
2229: #define bfd_mach_metag 1
1.1 christos 2230: bfd_arch_ia64, /* HP/Intel ia64 */
2231: #define bfd_mach_ia64_elf64 64
2232: #define bfd_mach_ia64_elf32 32
2233: bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
2234: #define bfd_mach_ip2022 1
2235: #define bfd_mach_ip2022ext 2
2236: bfd_arch_iq2000, /* Vitesse IQ2000. */
2237: #define bfd_mach_iq2000 1
2238: #define bfd_mach_iq10 2
2239: bfd_arch_epiphany, /* Adapteva EPIPHANY */
2240: #define bfd_mach_epiphany16 1
2241: #define bfd_mach_epiphany32 2
2242: bfd_arch_mt,
2243: #define bfd_mach_ms1 1
2244: #define bfd_mach_mrisc2 2
2245: #define bfd_mach_ms2 3
2246: bfd_arch_pj,
2247: bfd_arch_avr, /* Atmel AVR microcontrollers. */
2248: #define bfd_mach_avr1 1
2249: #define bfd_mach_avr2 2
2250: #define bfd_mach_avr25 25
2251: #define bfd_mach_avr3 3
2252: #define bfd_mach_avr31 31
2253: #define bfd_mach_avr35 35
2254: #define bfd_mach_avr4 4
2255: #define bfd_mach_avr5 5
2256: #define bfd_mach_avr51 51
2257: #define bfd_mach_avr6 6
1.1.1.2 christos 2258: #define bfd_mach_avrtiny 100
1.1 christos 2259: #define bfd_mach_avrxmega1 101
2260: #define bfd_mach_avrxmega2 102
2261: #define bfd_mach_avrxmega3 103
2262: #define bfd_mach_avrxmega4 104
2263: #define bfd_mach_avrxmega5 105
2264: #define bfd_mach_avrxmega6 106
2265: #define bfd_mach_avrxmega7 107
2266: bfd_arch_bfin, /* ADI Blackfin */
2267: #define bfd_mach_bfin 1
2268: bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
2269: #define bfd_mach_cr16 1
2270: bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
2271: #define bfd_mach_cr16c 1
2272: bfd_arch_crx, /* National Semiconductor CRX. */
2273: #define bfd_mach_crx 1
2274: bfd_arch_cris, /* Axis CRIS */
2275: #define bfd_mach_cris_v0_v10 255
2276: #define bfd_mach_cris_v32 32
2277: #define bfd_mach_cris_v10_v32 1032
2278: bfd_arch_rl78,
2279: #define bfd_mach_rl78 0x75
2280: bfd_arch_rx, /* Renesas RX. */
2281: #define bfd_mach_rx 0x75
2282: bfd_arch_s390, /* IBM s390 */
2283: #define bfd_mach_s390_31 31
2284: #define bfd_mach_s390_64 64
1.1.1.2 christos 2285: bfd_arch_score, /* Sunplus score */
1.1 christos 2286: #define bfd_mach_score3 3
2287: #define bfd_mach_score7 7
2288: bfd_arch_mmix, /* Donald Knuth's educational processor. */
2289: bfd_arch_xstormy16,
2290: #define bfd_mach_xstormy16 1
2291: bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
2292: #define bfd_mach_msp11 11
2293: #define bfd_mach_msp110 110
2294: #define bfd_mach_msp12 12
2295: #define bfd_mach_msp13 13
2296: #define bfd_mach_msp14 14
2297: #define bfd_mach_msp15 15
2298: #define bfd_mach_msp16 16
1.1.1.2 christos 2299: #define bfd_mach_msp20 20
1.1 christos 2300: #define bfd_mach_msp21 21
1.1.1.2 christos 2301: #define bfd_mach_msp22 22
2302: #define bfd_mach_msp23 23
2303: #define bfd_mach_msp24 24
2304: #define bfd_mach_msp26 26
1.1 christos 2305: #define bfd_mach_msp31 31
2306: #define bfd_mach_msp32 32
2307: #define bfd_mach_msp33 33
2308: #define bfd_mach_msp41 41
2309: #define bfd_mach_msp42 42
2310: #define bfd_mach_msp43 43
2311: #define bfd_mach_msp44 44
1.1.1.2 christos 2312: #define bfd_mach_msp430x 45
2313: #define bfd_mach_msp46 46
2314: #define bfd_mach_msp47 47
2315: #define bfd_mach_msp54 54
1.1 christos 2316: bfd_arch_xc16x, /* Infineon's XC16X Series. */
2317: #define bfd_mach_xc16x 1
2318: #define bfd_mach_xc16xl 2
2319: #define bfd_mach_xc16xs 3
2320: bfd_arch_xgate, /* Freescale XGATE */
2321: #define bfd_mach_xgate 1
2322: bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
2323: #define bfd_mach_xtensa 1
2324: bfd_arch_z80,
2325: #define bfd_mach_z80strict 1 /* No undocumented opcodes. */
2326: #define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
2327: #define bfd_mach_z80full 7 /* All undocumented instructions. */
2328: #define bfd_mach_r800 11 /* R800: successor with multiplication. */
2329: bfd_arch_lm32, /* Lattice Mico32 */
2330: #define bfd_mach_lm32 1
2331: bfd_arch_microblaze,/* Xilinx MicroBlaze. */
2332: bfd_arch_tilepro, /* Tilera TILEPro */
2333: bfd_arch_tilegx, /* Tilera TILE-Gx */
2334: #define bfd_mach_tilepro 1
2335: #define bfd_mach_tilegx 1
2336: #define bfd_mach_tilegx32 2
2337: bfd_arch_aarch64, /* AArch64 */
2338: #define bfd_mach_aarch64 0
1.1.1.2 christos 2339: #define bfd_mach_aarch64_ilp32 32
2340: bfd_arch_nios2, /* Nios II */
2341: #define bfd_mach_nios2 0
2342: #define bfd_mach_nios2r1 1
2343: #define bfd_mach_nios2r2 2
2344: bfd_arch_visium, /* Visium */
2345: #define bfd_mach_visium 1
1.1 christos 2346: bfd_arch_last
2347: };
2348:
2349: typedef struct bfd_arch_info
2350: {
2351: int bits_per_word;
2352: int bits_per_address;
2353: int bits_per_byte;
2354: enum bfd_architecture arch;
2355: unsigned long mach;
2356: const char *arch_name;
2357: const char *printable_name;
2358: unsigned int section_align_power;
2359: /* TRUE if this is the default machine for the architecture.
2360: The default arch should be the first entry for an arch so that
2361: all the entries for that arch can be accessed via <<next>>. */
2362: bfd_boolean the_default;
2363: const struct bfd_arch_info * (*compatible)
2364: (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
2365:
2366: bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
2367:
2368: /* Allocate via bfd_malloc and return a fill buffer of size COUNT. If
2369: IS_BIGENDIAN is TRUE, the order of bytes is big endian. If CODE is
2370: TRUE, the buffer contains code. */
2371: void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
2372: bfd_boolean code);
2373:
2374: const struct bfd_arch_info *next;
2375: }
2376: bfd_arch_info_type;
2377:
2378: const char *bfd_printable_name (bfd *abfd);
2379:
2380: const bfd_arch_info_type *bfd_scan_arch (const char *string);
2381:
2382: const char **bfd_arch_list (void);
2383:
2384: const bfd_arch_info_type *bfd_arch_get_compatible
2385: (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
2386:
2387: void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
2388:
2389: enum bfd_architecture bfd_get_arch (bfd *abfd);
2390:
2391: unsigned long bfd_get_mach (bfd *abfd);
2392:
2393: unsigned int bfd_arch_bits_per_byte (bfd *abfd);
2394:
2395: unsigned int bfd_arch_bits_per_address (bfd *abfd);
2396:
2397: const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
2398:
2399: const bfd_arch_info_type *bfd_lookup_arch
2400: (enum bfd_architecture arch, unsigned long machine);
2401:
2402: const char *bfd_printable_arch_mach
2403: (enum bfd_architecture arch, unsigned long machine);
2404:
2405: unsigned int bfd_octets_per_byte (bfd *abfd);
2406:
2407: unsigned int bfd_arch_mach_octets_per_byte
2408: (enum bfd_architecture arch, unsigned long machine);
2409:
2410: /* Extracted from reloc.c. */
1.1.1.2 christos 2411:
1.1 christos 2412: typedef enum bfd_reloc_status
2413: {
2414: /* No errors detected. */
2415: bfd_reloc_ok,
2416:
2417: /* The relocation was performed, but there was an overflow. */
2418: bfd_reloc_overflow,
2419:
2420: /* The address to relocate was not within the section supplied. */
2421: bfd_reloc_outofrange,
2422:
2423: /* Used by special functions. */
2424: bfd_reloc_continue,
2425:
2426: /* Unsupported relocation size requested. */
2427: bfd_reloc_notsupported,
2428:
2429: /* Unused. */
2430: bfd_reloc_other,
2431:
2432: /* The symbol to relocate against was undefined. */
2433: bfd_reloc_undefined,
2434:
2435: /* The relocation was performed, but may not be ok - presently
2436: generated only when linking i960 coff files with i960 b.out
2437: symbols. If this type is returned, the error_message argument
2438: to bfd_perform_relocation will be set. */
2439: bfd_reloc_dangerous
2440: }
2441: bfd_reloc_status_type;
2442:
2443:
2444: typedef struct reloc_cache_entry
2445: {
2446: /* A pointer into the canonical table of pointers. */
2447: struct bfd_symbol **sym_ptr_ptr;
2448:
2449: /* offset in section. */
2450: bfd_size_type address;
2451:
2452: /* addend for relocation value. */
2453: bfd_vma addend;
2454:
2455: /* Pointer to how to perform the required relocation. */
2456: reloc_howto_type *howto;
2457:
2458: }
2459: arelent;
2460:
1.1.1.2 christos 2461:
1.1 christos 2462: enum complain_overflow
2463: {
2464: /* Do not complain on overflow. */
2465: complain_overflow_dont,
2466:
2467: /* Complain if the value overflows when considered as a signed
2468: number one bit larger than the field. ie. A bitfield of N bits
2469: is allowed to represent -2**n to 2**n-1. */
2470: complain_overflow_bitfield,
2471:
2472: /* Complain if the value overflows when considered as a signed
2473: number. */
2474: complain_overflow_signed,
2475:
2476: /* Complain if the value overflows when considered as an
2477: unsigned number. */
2478: complain_overflow_unsigned
2479: };
1.1.1.2 christos 2480: struct bfd_symbol; /* Forward declaration. */
1.1 christos 2481:
2482: struct reloc_howto_struct
2483: {
2484: /* The type field has mainly a documentary use - the back end can
2485: do what it wants with it, though normally the back end's
2486: external idea of what a reloc number is stored
2487: in this field. For example, a PC relative word relocation
2488: in a coff environment has the type 023 - because that's
2489: what the outside world calls a R_PCRWORD reloc. */
2490: unsigned int type;
2491:
2492: /* The value the final relocation is shifted right by. This drops
2493: unwanted data from the relocation. */
2494: unsigned int rightshift;
2495:
2496: /* The size of the item to be relocated. This is *not* a
2497: power-of-two measure. To get the number of bytes operated
2498: on by a type of relocation, use bfd_get_reloc_size. */
2499: int size;
2500:
2501: /* The number of bits in the item to be relocated. This is used
2502: when doing overflow checking. */
2503: unsigned int bitsize;
2504:
2505: /* The relocation is relative to the field being relocated. */
2506: bfd_boolean pc_relative;
2507:
2508: /* The bit position of the reloc value in the destination.
2509: The relocated value is left shifted by this amount. */
2510: unsigned int bitpos;
2511:
2512: /* What type of overflow error should be checked for when
2513: relocating. */
2514: enum complain_overflow complain_on_overflow;
2515:
2516: /* If this field is non null, then the supplied function is
2517: called rather than the normal function. This allows really
2518: strange relocation methods to be accommodated (e.g., i960 callj
2519: instructions). */
2520: bfd_reloc_status_type (*special_function)
2521: (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
2522: bfd *, char **);
2523:
2524: /* The textual name of the relocation type. */
2525: char *name;
2526:
2527: /* Some formats record a relocation addend in the section contents
2528: rather than with the relocation. For ELF formats this is the
2529: distinction between USE_REL and USE_RELA (though the code checks
2530: for USE_REL == 1/0). The value of this field is TRUE if the
2531: addend is recorded with the section contents; when performing a
2532: partial link (ld -r) the section contents (the data) will be
2533: modified. The value of this field is FALSE if addends are
2534: recorded with the relocation (in arelent.addend); when performing
2535: a partial link the relocation will be modified.
2536: All relocations for all ELF USE_RELA targets should set this field
2537: to FALSE (values of TRUE should be looked on with suspicion).
2538: However, the converse is not true: not all relocations of all ELF
2539: USE_REL targets set this field to TRUE. Why this is so is peculiar
2540: to each particular target. For relocs that aren't used in partial
2541: links (e.g. GOT stuff) it doesn't matter what this is set to. */
2542: bfd_boolean partial_inplace;
2543:
2544: /* src_mask selects the part of the instruction (or data) to be used
2545: in the relocation sum. If the target relocations don't have an
2546: addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
2547: dst_mask to extract the addend from the section contents. If
2548: relocations do have an addend in the reloc, eg. ELF USE_RELA, this
2549: field should be zero. Non-zero values for ELF USE_RELA targets are
2550: bogus as in those cases the value in the dst_mask part of the
2551: section contents should be treated as garbage. */
2552: bfd_vma src_mask;
2553:
2554: /* dst_mask selects which parts of the instruction (or data) are
2555: replaced with a relocated value. */
2556: bfd_vma dst_mask;
2557:
2558: /* When some formats create PC relative instructions, they leave
2559: the value of the pc of the place being relocated in the offset
2560: slot of the instruction, so that a PC relative relocation can
2561: be made just by adding in an ordinary offset (e.g., sun3 a.out).
2562: Some formats leave the displacement part of an instruction
2563: empty (e.g., m88k bcs); this flag signals the fact. */
2564: bfd_boolean pcrel_offset;
2565: };
2566:
2567: #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
2568: { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
2569: #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
2570: HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
2571: NAME, FALSE, 0, 0, IN)
2572:
2573: #define EMPTY_HOWTO(C) \
2574: HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
2575: NULL, FALSE, 0, 0, FALSE)
2576:
2577: #define HOWTO_PREPARE(relocation, symbol) \
2578: { \
2579: if (symbol != NULL) \
2580: { \
2581: if (bfd_is_com_section (symbol->section)) \
2582: { \
2583: relocation = 0; \
2584: } \
2585: else \
2586: { \
2587: relocation = symbol->value; \
2588: } \
2589: } \
2590: }
2591:
2592: unsigned int bfd_get_reloc_size (reloc_howto_type *);
2593:
2594: typedef struct relent_chain
2595: {
2596: arelent relent;
2597: struct relent_chain *next;
2598: }
2599: arelent_chain;
2600:
2601: bfd_reloc_status_type bfd_check_overflow
2602: (enum complain_overflow how,
2603: unsigned int bitsize,
2604: unsigned int rightshift,
2605: unsigned int addrsize,
2606: bfd_vma relocation);
2607:
2608: bfd_reloc_status_type bfd_perform_relocation
2609: (bfd *abfd,
2610: arelent *reloc_entry,
2611: void *data,
2612: asection *input_section,
2613: bfd *output_bfd,
2614: char **error_message);
2615:
2616: bfd_reloc_status_type bfd_install_relocation
2617: (bfd *abfd,
2618: arelent *reloc_entry,
2619: void *data, bfd_vma data_start,
2620: asection *input_section,
2621: char **error_message);
2622:
2623: enum bfd_reloc_code_real {
2624: _dummy_first_bfd_reloc_code_real,
2625:
2626:
2627: /* Basic absolute relocations of N bits. */
2628: BFD_RELOC_64,
2629: BFD_RELOC_32,
2630: BFD_RELOC_26,
2631: BFD_RELOC_24,
2632: BFD_RELOC_16,
2633: BFD_RELOC_14,
2634: BFD_RELOC_8,
2635:
2636: /* PC-relative relocations. Sometimes these are relative to the address
2637: of the relocation itself; sometimes they are relative to the start of
2638: the section containing the relocation. It depends on the specific target.
2639:
2640: The 24-bit relocation is used in some Intel 960 configurations. */
2641: BFD_RELOC_64_PCREL,
2642: BFD_RELOC_32_PCREL,
2643: BFD_RELOC_24_PCREL,
2644: BFD_RELOC_16_PCREL,
2645: BFD_RELOC_12_PCREL,
2646: BFD_RELOC_8_PCREL,
2647:
2648: /* Section relative relocations. Some targets need this for DWARF2. */
2649: BFD_RELOC_32_SECREL,
2650:
2651: /* For ELF. */
2652: BFD_RELOC_32_GOT_PCREL,
2653: BFD_RELOC_16_GOT_PCREL,
2654: BFD_RELOC_8_GOT_PCREL,
2655: BFD_RELOC_32_GOTOFF,
2656: BFD_RELOC_16_GOTOFF,
2657: BFD_RELOC_LO16_GOTOFF,
2658: BFD_RELOC_HI16_GOTOFF,
2659: BFD_RELOC_HI16_S_GOTOFF,
2660: BFD_RELOC_8_GOTOFF,
2661: BFD_RELOC_64_PLT_PCREL,
2662: BFD_RELOC_32_PLT_PCREL,
2663: BFD_RELOC_24_PLT_PCREL,
2664: BFD_RELOC_16_PLT_PCREL,
2665: BFD_RELOC_8_PLT_PCREL,
2666: BFD_RELOC_64_PLTOFF,
2667: BFD_RELOC_32_PLTOFF,
2668: BFD_RELOC_16_PLTOFF,
2669: BFD_RELOC_LO16_PLTOFF,
2670: BFD_RELOC_HI16_PLTOFF,
2671: BFD_RELOC_HI16_S_PLTOFF,
2672: BFD_RELOC_8_PLTOFF,
2673:
1.1.1.2 christos 2674: /* Size relocations. */
2675: BFD_RELOC_SIZE32,
2676: BFD_RELOC_SIZE64,
2677:
1.1 christos 2678: /* Relocations used by 68K ELF. */
2679: BFD_RELOC_68K_GLOB_DAT,
2680: BFD_RELOC_68K_JMP_SLOT,
2681: BFD_RELOC_68K_RELATIVE,
2682: BFD_RELOC_68K_TLS_GD32,
2683: BFD_RELOC_68K_TLS_GD16,
2684: BFD_RELOC_68K_TLS_GD8,
2685: BFD_RELOC_68K_TLS_LDM32,
2686: BFD_RELOC_68K_TLS_LDM16,
2687: BFD_RELOC_68K_TLS_LDM8,
2688: BFD_RELOC_68K_TLS_LDO32,
2689: BFD_RELOC_68K_TLS_LDO16,
2690: BFD_RELOC_68K_TLS_LDO8,
2691: BFD_RELOC_68K_TLS_IE32,
2692: BFD_RELOC_68K_TLS_IE16,
2693: BFD_RELOC_68K_TLS_IE8,
2694: BFD_RELOC_68K_TLS_LE32,
2695: BFD_RELOC_68K_TLS_LE16,
2696: BFD_RELOC_68K_TLS_LE8,
2697:
2698: /* Linkage-table relative. */
2699: BFD_RELOC_32_BASEREL,
2700: BFD_RELOC_16_BASEREL,
2701: BFD_RELOC_LO16_BASEREL,
2702: BFD_RELOC_HI16_BASEREL,
2703: BFD_RELOC_HI16_S_BASEREL,
2704: BFD_RELOC_8_BASEREL,
2705: BFD_RELOC_RVA,
2706:
2707: /* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
2708: BFD_RELOC_8_FFnn,
2709:
2710: /* These PC-relative relocations are stored as word displacements --
2711: i.e., byte displacements shifted right two bits. The 30-bit word
2712: displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
2713: SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
2714: signed 16-bit displacement is used on the MIPS, and the 23-bit
2715: displacement is used on the Alpha. */
2716: BFD_RELOC_32_PCREL_S2,
2717: BFD_RELOC_16_PCREL_S2,
2718: BFD_RELOC_23_PCREL_S2,
2719:
2720: /* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
2721: the target word. These are used on the SPARC. */
2722: BFD_RELOC_HI22,
2723: BFD_RELOC_LO10,
2724:
2725: /* For systems that allocate a Global Pointer register, these are
2726: displacements off that register. These relocation types are
2727: handled specially, because the value the register will have is
2728: decided relatively late. */
2729: BFD_RELOC_GPREL16,
2730: BFD_RELOC_GPREL32,
2731:
2732: /* Reloc types used for i960/b.out. */
2733: BFD_RELOC_I960_CALLJ,
2734:
2735: /* SPARC ELF relocations. There is probably some overlap with other
2736: relocation types already defined. */
2737: BFD_RELOC_NONE,
2738: BFD_RELOC_SPARC_WDISP22,
2739: BFD_RELOC_SPARC22,
2740: BFD_RELOC_SPARC13,
2741: BFD_RELOC_SPARC_GOT10,
2742: BFD_RELOC_SPARC_GOT13,
2743: BFD_RELOC_SPARC_GOT22,
2744: BFD_RELOC_SPARC_PC10,
2745: BFD_RELOC_SPARC_PC22,
2746: BFD_RELOC_SPARC_WPLT30,
2747: BFD_RELOC_SPARC_COPY,
2748: BFD_RELOC_SPARC_GLOB_DAT,
2749: BFD_RELOC_SPARC_JMP_SLOT,
2750: BFD_RELOC_SPARC_RELATIVE,
2751: BFD_RELOC_SPARC_UA16,
2752: BFD_RELOC_SPARC_UA32,
2753: BFD_RELOC_SPARC_UA64,
2754: BFD_RELOC_SPARC_GOTDATA_HIX22,
2755: BFD_RELOC_SPARC_GOTDATA_LOX10,
2756: BFD_RELOC_SPARC_GOTDATA_OP_HIX22,
2757: BFD_RELOC_SPARC_GOTDATA_OP_LOX10,
2758: BFD_RELOC_SPARC_GOTDATA_OP,
2759: BFD_RELOC_SPARC_JMP_IREL,
2760: BFD_RELOC_SPARC_IRELATIVE,
2761:
2762: /* I think these are specific to SPARC a.out (e.g., Sun 4). */
2763: BFD_RELOC_SPARC_BASE13,
2764: BFD_RELOC_SPARC_BASE22,
2765:
2766: /* SPARC64 relocations */
2767: #define BFD_RELOC_SPARC_64 BFD_RELOC_64
2768: BFD_RELOC_SPARC_10,
2769: BFD_RELOC_SPARC_11,
2770: BFD_RELOC_SPARC_OLO10,
2771: BFD_RELOC_SPARC_HH22,
2772: BFD_RELOC_SPARC_HM10,
2773: BFD_RELOC_SPARC_LM22,
2774: BFD_RELOC_SPARC_PC_HH22,
2775: BFD_RELOC_SPARC_PC_HM10,
2776: BFD_RELOC_SPARC_PC_LM22,
2777: BFD_RELOC_SPARC_WDISP16,
2778: BFD_RELOC_SPARC_WDISP19,
2779: BFD_RELOC_SPARC_7,
2780: BFD_RELOC_SPARC_6,
2781: BFD_RELOC_SPARC_5,
2782: #define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
2783: BFD_RELOC_SPARC_PLT32,
2784: BFD_RELOC_SPARC_PLT64,
2785: BFD_RELOC_SPARC_HIX22,
2786: BFD_RELOC_SPARC_LOX10,
2787: BFD_RELOC_SPARC_H44,
2788: BFD_RELOC_SPARC_M44,
2789: BFD_RELOC_SPARC_L44,
2790: BFD_RELOC_SPARC_REGISTER,
2791: BFD_RELOC_SPARC_H34,
2792: BFD_RELOC_SPARC_SIZE32,
2793: BFD_RELOC_SPARC_SIZE64,
2794: BFD_RELOC_SPARC_WDISP10,
2795:
2796: /* SPARC little endian relocation */
2797: BFD_RELOC_SPARC_REV32,
2798:
2799: /* SPARC TLS relocations */
2800: BFD_RELOC_SPARC_TLS_GD_HI22,
2801: BFD_RELOC_SPARC_TLS_GD_LO10,
2802: BFD_RELOC_SPARC_TLS_GD_ADD,
2803: BFD_RELOC_SPARC_TLS_GD_CALL,
2804: BFD_RELOC_SPARC_TLS_LDM_HI22,
2805: BFD_RELOC_SPARC_TLS_LDM_LO10,
2806: BFD_RELOC_SPARC_TLS_LDM_ADD,
2807: BFD_RELOC_SPARC_TLS_LDM_CALL,
2808: BFD_RELOC_SPARC_TLS_LDO_HIX22,
2809: BFD_RELOC_SPARC_TLS_LDO_LOX10,
2810: BFD_RELOC_SPARC_TLS_LDO_ADD,
2811: BFD_RELOC_SPARC_TLS_IE_HI22,
2812: BFD_RELOC_SPARC_TLS_IE_LO10,
2813: BFD_RELOC_SPARC_TLS_IE_LD,
2814: BFD_RELOC_SPARC_TLS_IE_LDX,
2815: BFD_RELOC_SPARC_TLS_IE_ADD,
2816: BFD_RELOC_SPARC_TLS_LE_HIX22,
2817: BFD_RELOC_SPARC_TLS_LE_LOX10,
2818: BFD_RELOC_SPARC_TLS_DTPMOD32,
2819: BFD_RELOC_SPARC_TLS_DTPMOD64,
2820: BFD_RELOC_SPARC_TLS_DTPOFF32,
2821: BFD_RELOC_SPARC_TLS_DTPOFF64,
2822: BFD_RELOC_SPARC_TLS_TPOFF32,
2823: BFD_RELOC_SPARC_TLS_TPOFF64,
2824:
2825: /* SPU Relocations. */
2826: BFD_RELOC_SPU_IMM7,
2827: BFD_RELOC_SPU_IMM8,
2828: BFD_RELOC_SPU_IMM10,
2829: BFD_RELOC_SPU_IMM10W,
2830: BFD_RELOC_SPU_IMM16,
2831: BFD_RELOC_SPU_IMM16W,
2832: BFD_RELOC_SPU_IMM18,
2833: BFD_RELOC_SPU_PCREL9a,
2834: BFD_RELOC_SPU_PCREL9b,
2835: BFD_RELOC_SPU_PCREL16,
2836: BFD_RELOC_SPU_LO16,
2837: BFD_RELOC_SPU_HI16,
2838: BFD_RELOC_SPU_PPU32,
2839: BFD_RELOC_SPU_PPU64,
2840: BFD_RELOC_SPU_ADD_PIC,
2841:
2842: /* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
2843: "addend" in some special way.
2844: For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
2845: writing; when reading, it will be the absolute section symbol. The
2846: addend is the displacement in bytes of the "lda" instruction from
2847: the "ldah" instruction (which is at the address of this reloc). */
2848: BFD_RELOC_ALPHA_GPDISP_HI16,
2849:
2850: /* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
2851: with GPDISP_HI16 relocs. The addend is ignored when writing the
2852: relocations out, and is filled in with the file's GP value on
2853: reading, for convenience. */
2854: BFD_RELOC_ALPHA_GPDISP_LO16,
2855:
2856: /* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
2857: relocation except that there is no accompanying GPDISP_LO16
2858: relocation. */
2859: BFD_RELOC_ALPHA_GPDISP,
2860:
2861: /* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
2862: the assembler turns it into a LDQ instruction to load the address of
2863: the symbol, and then fills in a register in the real instruction.
2864:
2865: The LITERAL reloc, at the LDQ instruction, refers to the .lita
2866: section symbol. The addend is ignored when writing, but is filled
2867: in with the file's GP value on reading, for convenience, as with the
2868: GPDISP_LO16 reloc.
2869:
2870: The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
2871: It should refer to the symbol to be referenced, as with 16_GOTOFF,
2872: but it generates output not based on the position within the .got
2873: section, but relative to the GP value chosen for the file during the
2874: final link stage.
2875:
2876: The LITUSE reloc, on the instruction using the loaded address, gives
2877: information to the linker that it might be able to use to optimize
2878: away some literal section references. The symbol is ignored (read
2879: as the absolute section symbol), and the "addend" indicates the type
2880: of instruction using the register:
2881: 1 - "memory" fmt insn
2882: 2 - byte-manipulation (byte offset reg)
2883: 3 - jsr (target of branch) */
2884: BFD_RELOC_ALPHA_LITERAL,
2885: BFD_RELOC_ALPHA_ELF_LITERAL,
2886: BFD_RELOC_ALPHA_LITUSE,
2887:
2888: /* The HINT relocation indicates a value that should be filled into the
2889: "hint" field of a jmp/jsr/ret instruction, for possible branch-
2890: prediction logic which may be provided on some processors. */
2891: BFD_RELOC_ALPHA_HINT,
2892:
2893: /* The LINKAGE relocation outputs a linkage pair in the object file,
2894: which is filled by the linker. */
2895: BFD_RELOC_ALPHA_LINKAGE,
2896:
2897: /* The CODEADDR relocation outputs a STO_CA in the object file,
2898: which is filled by the linker. */
2899: BFD_RELOC_ALPHA_CODEADDR,
2900:
2901: /* The GPREL_HI/LO relocations together form a 32-bit offset from the
2902: GP register. */
2903: BFD_RELOC_ALPHA_GPREL_HI16,
2904: BFD_RELOC_ALPHA_GPREL_LO16,
2905:
2906: /* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
2907: share a common GP, and the target address is adjusted for
2908: STO_ALPHA_STD_GPLOAD. */
2909: BFD_RELOC_ALPHA_BRSGP,
2910:
2911: /* The NOP relocation outputs a NOP if the longword displacement
2912: between two procedure entry points is < 2^21. */
2913: BFD_RELOC_ALPHA_NOP,
2914:
2915: /* The BSR relocation outputs a BSR if the longword displacement
2916: between two procedure entry points is < 2^21. */
2917: BFD_RELOC_ALPHA_BSR,
2918:
2919: /* The LDA relocation outputs a LDA if the longword displacement
2920: between two procedure entry points is < 2^16. */
2921: BFD_RELOC_ALPHA_LDA,
2922:
2923: /* The BOH relocation outputs a BSR if the longword displacement
2924: between two procedure entry points is < 2^21, or else a hint. */
2925: BFD_RELOC_ALPHA_BOH,
2926:
2927: /* Alpha thread-local storage relocations. */
2928: BFD_RELOC_ALPHA_TLSGD,
2929: BFD_RELOC_ALPHA_TLSLDM,
2930: BFD_RELOC_ALPHA_DTPMOD64,
2931: BFD_RELOC_ALPHA_GOTDTPREL16,
2932: BFD_RELOC_ALPHA_DTPREL64,
2933: BFD_RELOC_ALPHA_DTPREL_HI16,
2934: BFD_RELOC_ALPHA_DTPREL_LO16,
2935: BFD_RELOC_ALPHA_DTPREL16,
2936: BFD_RELOC_ALPHA_GOTTPREL16,
2937: BFD_RELOC_ALPHA_TPREL64,
2938: BFD_RELOC_ALPHA_TPREL_HI16,
2939: BFD_RELOC_ALPHA_TPREL_LO16,
2940: BFD_RELOC_ALPHA_TPREL16,
2941:
2942: /* The MIPS jump instruction. */
2943: BFD_RELOC_MIPS_JMP,
2944: BFD_RELOC_MICROMIPS_JMP,
2945:
2946: /* The MIPS16 jump instruction. */
2947: BFD_RELOC_MIPS16_JMP,
2948:
2949: /* MIPS16 GP relative reloc. */
2950: BFD_RELOC_MIPS16_GPREL,
2951:
2952: /* High 16 bits of 32-bit value; simple reloc. */
2953: BFD_RELOC_HI16,
2954:
2955: /* High 16 bits of 32-bit value but the low 16 bits will be sign
2956: extended and added to form the final result. If the low 16
2957: bits form a negative number, we need to add one to the high value
2958: to compensate for the borrow when the low bits are added. */
2959: BFD_RELOC_HI16_S,
2960:
2961: /* Low 16 bits. */
2962: BFD_RELOC_LO16,
2963:
2964: /* High 16 bits of 32-bit pc-relative value */
2965: BFD_RELOC_HI16_PCREL,
2966:
2967: /* High 16 bits of 32-bit pc-relative value, adjusted */
2968: BFD_RELOC_HI16_S_PCREL,
2969:
2970: /* Low 16 bits of pc-relative value */
2971: BFD_RELOC_LO16_PCREL,
2972:
2973: /* Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
2974: 16-bit immediate fields */
2975: BFD_RELOC_MIPS16_GOT16,
2976: BFD_RELOC_MIPS16_CALL16,
2977:
2978: /* MIPS16 high 16 bits of 32-bit value. */
2979: BFD_RELOC_MIPS16_HI16,
2980:
2981: /* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
2982: extended and added to form the final result. If the low 16
2983: bits form a negative number, we need to add one to the high value
2984: to compensate for the borrow when the low bits are added. */
2985: BFD_RELOC_MIPS16_HI16_S,
2986:
2987: /* MIPS16 low 16 bits. */
2988: BFD_RELOC_MIPS16_LO16,
2989:
2990: /* MIPS16 TLS relocations */
2991: BFD_RELOC_MIPS16_TLS_GD,
2992: BFD_RELOC_MIPS16_TLS_LDM,
2993: BFD_RELOC_MIPS16_TLS_DTPREL_HI16,
2994: BFD_RELOC_MIPS16_TLS_DTPREL_LO16,
2995: BFD_RELOC_MIPS16_TLS_GOTTPREL,
2996: BFD_RELOC_MIPS16_TLS_TPREL_HI16,
2997: BFD_RELOC_MIPS16_TLS_TPREL_LO16,
2998:
2999: /* Relocation against a MIPS literal section. */
3000: BFD_RELOC_MIPS_LITERAL,
3001: BFD_RELOC_MICROMIPS_LITERAL,
3002:
3003: /* microMIPS PC-relative relocations. */
3004: BFD_RELOC_MICROMIPS_7_PCREL_S1,
3005: BFD_RELOC_MICROMIPS_10_PCREL_S1,
3006: BFD_RELOC_MICROMIPS_16_PCREL_S1,
3007:
1.1.1.3 ! christos 3008: /* MIPS16 PC-relative relocation. */
! 3009: BFD_RELOC_MIPS16_16_PCREL_S1,
! 3010:
1.1.1.2 christos 3011: /* MIPS PC-relative relocations. */
3012: BFD_RELOC_MIPS_21_PCREL_S2,
3013: BFD_RELOC_MIPS_26_PCREL_S2,
3014: BFD_RELOC_MIPS_18_PCREL_S3,
3015: BFD_RELOC_MIPS_19_PCREL_S2,
3016:
1.1 christos 3017: /* microMIPS versions of generic BFD relocs. */
3018: BFD_RELOC_MICROMIPS_GPREL16,
3019: BFD_RELOC_MICROMIPS_HI16,
3020: BFD_RELOC_MICROMIPS_HI16_S,
3021: BFD_RELOC_MICROMIPS_LO16,
3022:
3023: /* MIPS ELF relocations. */
3024: BFD_RELOC_MIPS_GOT16,
3025: BFD_RELOC_MICROMIPS_GOT16,
3026: BFD_RELOC_MIPS_CALL16,
3027: BFD_RELOC_MICROMIPS_CALL16,
3028: BFD_RELOC_MIPS_GOT_HI16,
3029: BFD_RELOC_MICROMIPS_GOT_HI16,
3030: BFD_RELOC_MIPS_GOT_LO16,
3031: BFD_RELOC_MICROMIPS_GOT_LO16,
3032: BFD_RELOC_MIPS_CALL_HI16,
3033: BFD_RELOC_MICROMIPS_CALL_HI16,
3034: BFD_RELOC_MIPS_CALL_LO16,
3035: BFD_RELOC_MICROMIPS_CALL_LO16,
3036: BFD_RELOC_MIPS_SUB,
3037: BFD_RELOC_MICROMIPS_SUB,
3038: BFD_RELOC_MIPS_GOT_PAGE,
3039: BFD_RELOC_MICROMIPS_GOT_PAGE,
3040: BFD_RELOC_MIPS_GOT_OFST,
3041: BFD_RELOC_MICROMIPS_GOT_OFST,
3042: BFD_RELOC_MIPS_GOT_DISP,
3043: BFD_RELOC_MICROMIPS_GOT_DISP,
3044: BFD_RELOC_MIPS_SHIFT5,
3045: BFD_RELOC_MIPS_SHIFT6,
3046: BFD_RELOC_MIPS_INSERT_A,
3047: BFD_RELOC_MIPS_INSERT_B,
3048: BFD_RELOC_MIPS_DELETE,
3049: BFD_RELOC_MIPS_HIGHEST,
3050: BFD_RELOC_MICROMIPS_HIGHEST,
3051: BFD_RELOC_MIPS_HIGHER,
3052: BFD_RELOC_MICROMIPS_HIGHER,
3053: BFD_RELOC_MIPS_SCN_DISP,
3054: BFD_RELOC_MICROMIPS_SCN_DISP,
3055: BFD_RELOC_MIPS_REL16,
3056: BFD_RELOC_MIPS_RELGOT,
3057: BFD_RELOC_MIPS_JALR,
3058: BFD_RELOC_MICROMIPS_JALR,
3059: BFD_RELOC_MIPS_TLS_DTPMOD32,
3060: BFD_RELOC_MIPS_TLS_DTPREL32,
3061: BFD_RELOC_MIPS_TLS_DTPMOD64,
3062: BFD_RELOC_MIPS_TLS_DTPREL64,
3063: BFD_RELOC_MIPS_TLS_GD,
3064: BFD_RELOC_MICROMIPS_TLS_GD,
3065: BFD_RELOC_MIPS_TLS_LDM,
3066: BFD_RELOC_MICROMIPS_TLS_LDM,
3067: BFD_RELOC_MIPS_TLS_DTPREL_HI16,
3068: BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16,
3069: BFD_RELOC_MIPS_TLS_DTPREL_LO16,
3070: BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16,
3071: BFD_RELOC_MIPS_TLS_GOTTPREL,
3072: BFD_RELOC_MICROMIPS_TLS_GOTTPREL,
3073: BFD_RELOC_MIPS_TLS_TPREL32,
3074: BFD_RELOC_MIPS_TLS_TPREL64,
3075: BFD_RELOC_MIPS_TLS_TPREL_HI16,
3076: BFD_RELOC_MICROMIPS_TLS_TPREL_HI16,
3077: BFD_RELOC_MIPS_TLS_TPREL_LO16,
3078: BFD_RELOC_MICROMIPS_TLS_TPREL_LO16,
1.1.1.2 christos 3079: BFD_RELOC_MIPS_EH,
1.1 christos 3080:
3081:
3082: /* MIPS ELF relocations (VxWorks and PLT extensions). */
3083: BFD_RELOC_MIPS_COPY,
3084: BFD_RELOC_MIPS_JUMP_SLOT,
3085:
3086:
3087: /* Moxie ELF relocations. */
3088: BFD_RELOC_MOXIE_10_PCREL,
3089:
3090:
1.1.1.2 christos 3091: /* FT32 ELF relocations. */
3092: BFD_RELOC_FT32_10,
3093: BFD_RELOC_FT32_20,
3094: BFD_RELOC_FT32_17,
3095: BFD_RELOC_FT32_18,
3096:
3097:
1.1 christos 3098: /* Fujitsu Frv Relocations. */
3099: BFD_RELOC_FRV_LABEL16,
3100: BFD_RELOC_FRV_LABEL24,
3101: BFD_RELOC_FRV_LO16,
3102: BFD_RELOC_FRV_HI16,
3103: BFD_RELOC_FRV_GPREL12,
3104: BFD_RELOC_FRV_GPRELU12,
3105: BFD_RELOC_FRV_GPREL32,
3106: BFD_RELOC_FRV_GPRELHI,
3107: BFD_RELOC_FRV_GPRELLO,
3108: BFD_RELOC_FRV_GOT12,
3109: BFD_RELOC_FRV_GOTHI,
3110: BFD_RELOC_FRV_GOTLO,
3111: BFD_RELOC_FRV_FUNCDESC,
3112: BFD_RELOC_FRV_FUNCDESC_GOT12,
3113: BFD_RELOC_FRV_FUNCDESC_GOTHI,
3114: BFD_RELOC_FRV_FUNCDESC_GOTLO,
3115: BFD_RELOC_FRV_FUNCDESC_VALUE,
3116: BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
3117: BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
3118: BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
3119: BFD_RELOC_FRV_GOTOFF12,
3120: BFD_RELOC_FRV_GOTOFFHI,
3121: BFD_RELOC_FRV_GOTOFFLO,
3122: BFD_RELOC_FRV_GETTLSOFF,
3123: BFD_RELOC_FRV_TLSDESC_VALUE,
3124: BFD_RELOC_FRV_GOTTLSDESC12,
3125: BFD_RELOC_FRV_GOTTLSDESCHI,
3126: BFD_RELOC_FRV_GOTTLSDESCLO,
3127: BFD_RELOC_FRV_TLSMOFF12,
3128: BFD_RELOC_FRV_TLSMOFFHI,
3129: BFD_RELOC_FRV_TLSMOFFLO,
3130: BFD_RELOC_FRV_GOTTLSOFF12,
3131: BFD_RELOC_FRV_GOTTLSOFFHI,
3132: BFD_RELOC_FRV_GOTTLSOFFLO,
3133: BFD_RELOC_FRV_TLSOFF,
3134: BFD_RELOC_FRV_TLSDESC_RELAX,
3135: BFD_RELOC_FRV_GETTLSOFF_RELAX,
3136: BFD_RELOC_FRV_TLSOFF_RELAX,
3137: BFD_RELOC_FRV_TLSMOFF,
3138:
3139:
3140: /* This is a 24bit GOT-relative reloc for the mn10300. */
3141: BFD_RELOC_MN10300_GOTOFF24,
3142:
3143: /* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
3144: in the instruction. */
3145: BFD_RELOC_MN10300_GOT32,
3146:
3147: /* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
3148: in the instruction. */
3149: BFD_RELOC_MN10300_GOT24,
3150:
3151: /* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
3152: in the instruction. */
3153: BFD_RELOC_MN10300_GOT16,
3154:
3155: /* Copy symbol at runtime. */
3156: BFD_RELOC_MN10300_COPY,
3157:
3158: /* Create GOT entry. */
3159: BFD_RELOC_MN10300_GLOB_DAT,
3160:
3161: /* Create PLT entry. */
3162: BFD_RELOC_MN10300_JMP_SLOT,
3163:
3164: /* Adjust by program base. */
3165: BFD_RELOC_MN10300_RELATIVE,
3166:
3167: /* Together with another reloc targeted at the same location,
3168: allows for a value that is the difference of two symbols
3169: in the same section. */
3170: BFD_RELOC_MN10300_SYM_DIFF,
3171:
3172: /* The addend of this reloc is an alignment power that must
3173: be honoured at the offset's location, regardless of linker
3174: relaxation. */
3175: BFD_RELOC_MN10300_ALIGN,
3176:
3177: /* Various TLS-related relocations. */
3178: BFD_RELOC_MN10300_TLS_GD,
3179: BFD_RELOC_MN10300_TLS_LD,
3180: BFD_RELOC_MN10300_TLS_LDO,
3181: BFD_RELOC_MN10300_TLS_GOTIE,
3182: BFD_RELOC_MN10300_TLS_IE,
3183: BFD_RELOC_MN10300_TLS_LE,
3184: BFD_RELOC_MN10300_TLS_DTPMOD,
3185: BFD_RELOC_MN10300_TLS_DTPOFF,
3186: BFD_RELOC_MN10300_TLS_TPOFF,
3187:
3188: /* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
3189: instruction. */
3190: BFD_RELOC_MN10300_32_PCREL,
3191:
3192: /* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
3193: instruction. */
3194: BFD_RELOC_MN10300_16_PCREL,
3195:
3196:
3197: /* i386/elf relocations */
3198: BFD_RELOC_386_GOT32,
3199: BFD_RELOC_386_PLT32,
3200: BFD_RELOC_386_COPY,
3201: BFD_RELOC_386_GLOB_DAT,
3202: BFD_RELOC_386_JUMP_SLOT,
3203: BFD_RELOC_386_RELATIVE,
3204: BFD_RELOC_386_GOTOFF,
3205: BFD_RELOC_386_GOTPC,
3206: BFD_RELOC_386_TLS_TPOFF,
3207: BFD_RELOC_386_TLS_IE,
3208: BFD_RELOC_386_TLS_GOTIE,
3209: BFD_RELOC_386_TLS_LE,
3210: BFD_RELOC_386_TLS_GD,
3211: BFD_RELOC_386_TLS_LDM,
3212: BFD_RELOC_386_TLS_LDO_32,
3213: BFD_RELOC_386_TLS_IE_32,
3214: BFD_RELOC_386_TLS_LE_32,
3215: BFD_RELOC_386_TLS_DTPMOD32,
3216: BFD_RELOC_386_TLS_DTPOFF32,
3217: BFD_RELOC_386_TLS_TPOFF32,
3218: BFD_RELOC_386_TLS_GOTDESC,
3219: BFD_RELOC_386_TLS_DESC_CALL,
3220: BFD_RELOC_386_TLS_DESC,
3221: BFD_RELOC_386_IRELATIVE,
1.1.1.2 christos 3222: BFD_RELOC_386_GOT32X,
1.1 christos 3223:
3224: /* x86-64/elf relocations */
3225: BFD_RELOC_X86_64_GOT32,
3226: BFD_RELOC_X86_64_PLT32,
3227: BFD_RELOC_X86_64_COPY,
3228: BFD_RELOC_X86_64_GLOB_DAT,
3229: BFD_RELOC_X86_64_JUMP_SLOT,
3230: BFD_RELOC_X86_64_RELATIVE,
3231: BFD_RELOC_X86_64_GOTPCREL,
3232: BFD_RELOC_X86_64_32S,
3233: BFD_RELOC_X86_64_DTPMOD64,
3234: BFD_RELOC_X86_64_DTPOFF64,
3235: BFD_RELOC_X86_64_TPOFF64,
3236: BFD_RELOC_X86_64_TLSGD,
3237: BFD_RELOC_X86_64_TLSLD,
3238: BFD_RELOC_X86_64_DTPOFF32,
3239: BFD_RELOC_X86_64_GOTTPOFF,
3240: BFD_RELOC_X86_64_TPOFF32,
3241: BFD_RELOC_X86_64_GOTOFF64,
3242: BFD_RELOC_X86_64_GOTPC32,
3243: BFD_RELOC_X86_64_GOT64,
3244: BFD_RELOC_X86_64_GOTPCREL64,
3245: BFD_RELOC_X86_64_GOTPC64,
3246: BFD_RELOC_X86_64_GOTPLT64,
3247: BFD_RELOC_X86_64_PLTOFF64,
3248: BFD_RELOC_X86_64_GOTPC32_TLSDESC,
3249: BFD_RELOC_X86_64_TLSDESC_CALL,
3250: BFD_RELOC_X86_64_TLSDESC,
3251: BFD_RELOC_X86_64_IRELATIVE,
1.1.1.2 christos 3252: BFD_RELOC_X86_64_PC32_BND,
3253: BFD_RELOC_X86_64_PLT32_BND,
3254: BFD_RELOC_X86_64_GOTPCRELX,
3255: BFD_RELOC_X86_64_REX_GOTPCRELX,
1.1 christos 3256:
3257: /* ns32k relocations */
3258: BFD_RELOC_NS32K_IMM_8,
3259: BFD_RELOC_NS32K_IMM_16,
3260: BFD_RELOC_NS32K_IMM_32,
3261: BFD_RELOC_NS32K_IMM_8_PCREL,
3262: BFD_RELOC_NS32K_IMM_16_PCREL,
3263: BFD_RELOC_NS32K_IMM_32_PCREL,
3264: BFD_RELOC_NS32K_DISP_8,
3265: BFD_RELOC_NS32K_DISP_16,
3266: BFD_RELOC_NS32K_DISP_32,
3267: BFD_RELOC_NS32K_DISP_8_PCREL,
3268: BFD_RELOC_NS32K_DISP_16_PCREL,
3269: BFD_RELOC_NS32K_DISP_32_PCREL,
3270:
3271: /* PDP11 relocations */
3272: BFD_RELOC_PDP11_DISP_8_PCREL,
3273: BFD_RELOC_PDP11_DISP_6_PCREL,
3274:
3275: /* Picojava relocs. Not all of these appear in object files. */
3276: BFD_RELOC_PJ_CODE_HI16,
3277: BFD_RELOC_PJ_CODE_LO16,
3278: BFD_RELOC_PJ_CODE_DIR16,
3279: BFD_RELOC_PJ_CODE_DIR32,
3280: BFD_RELOC_PJ_CODE_REL16,
3281: BFD_RELOC_PJ_CODE_REL32,
3282:
3283: /* Power(rs6000) and PowerPC relocations. */
3284: BFD_RELOC_PPC_B26,
3285: BFD_RELOC_PPC_BA26,
3286: BFD_RELOC_PPC_TOC16,
3287: BFD_RELOC_PPC_B16,
3288: BFD_RELOC_PPC_B16_BRTAKEN,
3289: BFD_RELOC_PPC_B16_BRNTAKEN,
3290: BFD_RELOC_PPC_BA16,
3291: BFD_RELOC_PPC_BA16_BRTAKEN,
3292: BFD_RELOC_PPC_BA16_BRNTAKEN,
3293: BFD_RELOC_PPC_COPY,
3294: BFD_RELOC_PPC_GLOB_DAT,
3295: BFD_RELOC_PPC_JMP_SLOT,
3296: BFD_RELOC_PPC_RELATIVE,
3297: BFD_RELOC_PPC_LOCAL24PC,
3298: BFD_RELOC_PPC_EMB_NADDR32,
3299: BFD_RELOC_PPC_EMB_NADDR16,
3300: BFD_RELOC_PPC_EMB_NADDR16_LO,
3301: BFD_RELOC_PPC_EMB_NADDR16_HI,
3302: BFD_RELOC_PPC_EMB_NADDR16_HA,
3303: BFD_RELOC_PPC_EMB_SDAI16,
3304: BFD_RELOC_PPC_EMB_SDA2I16,
3305: BFD_RELOC_PPC_EMB_SDA2REL,
3306: BFD_RELOC_PPC_EMB_SDA21,
3307: BFD_RELOC_PPC_EMB_MRKREF,
3308: BFD_RELOC_PPC_EMB_RELSEC16,
3309: BFD_RELOC_PPC_EMB_RELST_LO,
3310: BFD_RELOC_PPC_EMB_RELST_HI,
3311: BFD_RELOC_PPC_EMB_RELST_HA,
3312: BFD_RELOC_PPC_EMB_BIT_FLD,
3313: BFD_RELOC_PPC_EMB_RELSDA,
3314: BFD_RELOC_PPC_VLE_REL8,
3315: BFD_RELOC_PPC_VLE_REL15,
3316: BFD_RELOC_PPC_VLE_REL24,
3317: BFD_RELOC_PPC_VLE_LO16A,
3318: BFD_RELOC_PPC_VLE_LO16D,
3319: BFD_RELOC_PPC_VLE_HI16A,
3320: BFD_RELOC_PPC_VLE_HI16D,
3321: BFD_RELOC_PPC_VLE_HA16A,
3322: BFD_RELOC_PPC_VLE_HA16D,
3323: BFD_RELOC_PPC_VLE_SDA21,
3324: BFD_RELOC_PPC_VLE_SDA21_LO,
3325: BFD_RELOC_PPC_VLE_SDAREL_LO16A,
3326: BFD_RELOC_PPC_VLE_SDAREL_LO16D,
3327: BFD_RELOC_PPC_VLE_SDAREL_HI16A,
3328: BFD_RELOC_PPC_VLE_SDAREL_HI16D,
3329: BFD_RELOC_PPC_VLE_SDAREL_HA16A,
3330: BFD_RELOC_PPC_VLE_SDAREL_HA16D,
1.1.1.2 christos 3331: BFD_RELOC_PPC_REL16DX_HA,
1.1 christos 3332: BFD_RELOC_PPC64_HIGHER,
3333: BFD_RELOC_PPC64_HIGHER_S,
3334: BFD_RELOC_PPC64_HIGHEST,
3335: BFD_RELOC_PPC64_HIGHEST_S,
3336: BFD_RELOC_PPC64_TOC16_LO,
3337: BFD_RELOC_PPC64_TOC16_HI,
3338: BFD_RELOC_PPC64_TOC16_HA,
3339: BFD_RELOC_PPC64_TOC,
3340: BFD_RELOC_PPC64_PLTGOT16,
3341: BFD_RELOC_PPC64_PLTGOT16_LO,
3342: BFD_RELOC_PPC64_PLTGOT16_HI,
3343: BFD_RELOC_PPC64_PLTGOT16_HA,
3344: BFD_RELOC_PPC64_ADDR16_DS,
3345: BFD_RELOC_PPC64_ADDR16_LO_DS,
3346: BFD_RELOC_PPC64_GOT16_DS,
3347: BFD_RELOC_PPC64_GOT16_LO_DS,
3348: BFD_RELOC_PPC64_PLT16_LO_DS,
3349: BFD_RELOC_PPC64_SECTOFF_DS,
3350: BFD_RELOC_PPC64_SECTOFF_LO_DS,
3351: BFD_RELOC_PPC64_TOC16_DS,
3352: BFD_RELOC_PPC64_TOC16_LO_DS,
3353: BFD_RELOC_PPC64_PLTGOT16_DS,
3354: BFD_RELOC_PPC64_PLTGOT16_LO_DS,
1.1.1.2 christos 3355: BFD_RELOC_PPC64_ADDR16_HIGH,
3356: BFD_RELOC_PPC64_ADDR16_HIGHA,
3357: BFD_RELOC_PPC64_ADDR64_LOCAL,
3358: BFD_RELOC_PPC64_ENTRY,
1.1 christos 3359:
3360: /* PowerPC and PowerPC64 thread-local storage relocations. */
3361: BFD_RELOC_PPC_TLS,
3362: BFD_RELOC_PPC_TLSGD,
3363: BFD_RELOC_PPC_TLSLD,
3364: BFD_RELOC_PPC_DTPMOD,
3365: BFD_RELOC_PPC_TPREL16,
3366: BFD_RELOC_PPC_TPREL16_LO,
3367: BFD_RELOC_PPC_TPREL16_HI,
3368: BFD_RELOC_PPC_TPREL16_HA,
3369: BFD_RELOC_PPC_TPREL,
3370: BFD_RELOC_PPC_DTPREL16,
3371: BFD_RELOC_PPC_DTPREL16_LO,
3372: BFD_RELOC_PPC_DTPREL16_HI,
3373: BFD_RELOC_PPC_DTPREL16_HA,
3374: BFD_RELOC_PPC_DTPREL,
3375: BFD_RELOC_PPC_GOT_TLSGD16,
3376: BFD_RELOC_PPC_GOT_TLSGD16_LO,
3377: BFD_RELOC_PPC_GOT_TLSGD16_HI,
3378: BFD_RELOC_PPC_GOT_TLSGD16_HA,
3379: BFD_RELOC_PPC_GOT_TLSLD16,
3380: BFD_RELOC_PPC_GOT_TLSLD16_LO,
3381: BFD_RELOC_PPC_GOT_TLSLD16_HI,
3382: BFD_RELOC_PPC_GOT_TLSLD16_HA,
3383: BFD_RELOC_PPC_GOT_TPREL16,
3384: BFD_RELOC_PPC_GOT_TPREL16_LO,
3385: BFD_RELOC_PPC_GOT_TPREL16_HI,
3386: BFD_RELOC_PPC_GOT_TPREL16_HA,
3387: BFD_RELOC_PPC_GOT_DTPREL16,
3388: BFD_RELOC_PPC_GOT_DTPREL16_LO,
3389: BFD_RELOC_PPC_GOT_DTPREL16_HI,
3390: BFD_RELOC_PPC_GOT_DTPREL16_HA,
3391: BFD_RELOC_PPC64_TPREL16_DS,
3392: BFD_RELOC_PPC64_TPREL16_LO_DS,
3393: BFD_RELOC_PPC64_TPREL16_HIGHER,
3394: BFD_RELOC_PPC64_TPREL16_HIGHERA,
3395: BFD_RELOC_PPC64_TPREL16_HIGHEST,
3396: BFD_RELOC_PPC64_TPREL16_HIGHESTA,
3397: BFD_RELOC_PPC64_DTPREL16_DS,
3398: BFD_RELOC_PPC64_DTPREL16_LO_DS,
3399: BFD_RELOC_PPC64_DTPREL16_HIGHER,
3400: BFD_RELOC_PPC64_DTPREL16_HIGHERA,
3401: BFD_RELOC_PPC64_DTPREL16_HIGHEST,
3402: BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
1.1.1.2 christos 3403: BFD_RELOC_PPC64_TPREL16_HIGH,
3404: BFD_RELOC_PPC64_TPREL16_HIGHA,
3405: BFD_RELOC_PPC64_DTPREL16_HIGH,
3406: BFD_RELOC_PPC64_DTPREL16_HIGHA,
1.1 christos 3407:
3408: /* IBM 370/390 relocations */
3409: BFD_RELOC_I370_D12,
3410:
3411: /* The type of reloc used to build a constructor table - at the moment
3412: probably a 32 bit wide absolute relocation, but the target can choose.
3413: It generally does map to one of the other relocation types. */
3414: BFD_RELOC_CTOR,
3415:
3416: /* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
3417: not stored in the instruction. */
3418: BFD_RELOC_ARM_PCREL_BRANCH,
3419:
3420: /* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
3421: not stored in the instruction. The 2nd lowest bit comes from a 1 bit
3422: field in the instruction. */
3423: BFD_RELOC_ARM_PCREL_BLX,
3424:
3425: /* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
3426: not stored in the instruction. The 2nd lowest bit comes from a 1 bit
3427: field in the instruction. */
3428: BFD_RELOC_THUMB_PCREL_BLX,
3429:
3430: /* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
3431: BFD_RELOC_ARM_PCREL_CALL,
3432:
3433: /* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
3434: BFD_RELOC_ARM_PCREL_JUMP,
3435:
3436: /* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
3437: The lowest bit must be zero and is not stored in the instruction.
3438: Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
3439: "nn" one smaller in all cases. Note further that BRANCH23
3440: corresponds to R_ARM_THM_CALL. */
3441: BFD_RELOC_THUMB_PCREL_BRANCH7,
3442: BFD_RELOC_THUMB_PCREL_BRANCH9,
3443: BFD_RELOC_THUMB_PCREL_BRANCH12,
3444: BFD_RELOC_THUMB_PCREL_BRANCH20,
3445: BFD_RELOC_THUMB_PCREL_BRANCH23,
3446: BFD_RELOC_THUMB_PCREL_BRANCH25,
3447:
3448: /* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
3449: BFD_RELOC_ARM_OFFSET_IMM,
3450:
3451: /* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
3452: BFD_RELOC_ARM_THUMB_OFFSET,
3453:
3454: /* Pc-relative or absolute relocation depending on target. Used for
3455: entries in .init_array sections. */
3456: BFD_RELOC_ARM_TARGET1,
3457:
3458: /* Read-only segment base relative address. */
3459: BFD_RELOC_ARM_ROSEGREL32,
3460:
3461: /* Data segment base relative address. */
3462: BFD_RELOC_ARM_SBREL32,
3463:
3464: /* This reloc is used for references to RTTI data from exception handling
3465: tables. The actual definition depends on the target. It may be a
3466: pc-relative or some form of GOT-indirect relocation. */
3467: BFD_RELOC_ARM_TARGET2,
3468:
3469: /* 31-bit PC relative address. */
3470: BFD_RELOC_ARM_PREL31,
3471:
3472: /* Low and High halfword relocations for MOVW and MOVT instructions. */
3473: BFD_RELOC_ARM_MOVW,
3474: BFD_RELOC_ARM_MOVT,
3475: BFD_RELOC_ARM_MOVW_PCREL,
3476: BFD_RELOC_ARM_MOVT_PCREL,
3477: BFD_RELOC_ARM_THUMB_MOVW,
3478: BFD_RELOC_ARM_THUMB_MOVT,
3479: BFD_RELOC_ARM_THUMB_MOVW_PCREL,
3480: BFD_RELOC_ARM_THUMB_MOVT_PCREL,
3481:
3482: /* Relocations for setting up GOTs and PLTs for shared libraries. */
3483: BFD_RELOC_ARM_JUMP_SLOT,
3484: BFD_RELOC_ARM_GLOB_DAT,
3485: BFD_RELOC_ARM_GOT32,
3486: BFD_RELOC_ARM_PLT32,
3487: BFD_RELOC_ARM_RELATIVE,
3488: BFD_RELOC_ARM_GOTOFF,
3489: BFD_RELOC_ARM_GOTPC,
3490: BFD_RELOC_ARM_GOT_PREL,
3491:
3492: /* ARM thread-local storage relocations. */
3493: BFD_RELOC_ARM_TLS_GD32,
3494: BFD_RELOC_ARM_TLS_LDO32,
3495: BFD_RELOC_ARM_TLS_LDM32,
3496: BFD_RELOC_ARM_TLS_DTPOFF32,
3497: BFD_RELOC_ARM_TLS_DTPMOD32,
3498: BFD_RELOC_ARM_TLS_TPOFF32,
3499: BFD_RELOC_ARM_TLS_IE32,
3500: BFD_RELOC_ARM_TLS_LE32,
3501: BFD_RELOC_ARM_TLS_GOTDESC,
3502: BFD_RELOC_ARM_TLS_CALL,
3503: BFD_RELOC_ARM_THM_TLS_CALL,
3504: BFD_RELOC_ARM_TLS_DESCSEQ,
3505: BFD_RELOC_ARM_THM_TLS_DESCSEQ,
3506: BFD_RELOC_ARM_TLS_DESC,
3507:
3508: /* ARM group relocations. */
3509: BFD_RELOC_ARM_ALU_PC_G0_NC,
3510: BFD_RELOC_ARM_ALU_PC_G0,
3511: BFD_RELOC_ARM_ALU_PC_G1_NC,
3512: BFD_RELOC_ARM_ALU_PC_G1,
3513: BFD_RELOC_ARM_ALU_PC_G2,
3514: BFD_RELOC_ARM_LDR_PC_G0,
3515: BFD_RELOC_ARM_LDR_PC_G1,
3516: BFD_RELOC_ARM_LDR_PC_G2,
3517: BFD_RELOC_ARM_LDRS_PC_G0,
3518: BFD_RELOC_ARM_LDRS_PC_G1,
3519: BFD_RELOC_ARM_LDRS_PC_G2,
3520: BFD_RELOC_ARM_LDC_PC_G0,
3521: BFD_RELOC_ARM_LDC_PC_G1,
3522: BFD_RELOC_ARM_LDC_PC_G2,
3523: BFD_RELOC_ARM_ALU_SB_G0_NC,
3524: BFD_RELOC_ARM_ALU_SB_G0,
3525: BFD_RELOC_ARM_ALU_SB_G1_NC,
3526: BFD_RELOC_ARM_ALU_SB_G1,
3527: BFD_RELOC_ARM_ALU_SB_G2,
3528: BFD_RELOC_ARM_LDR_SB_G0,
3529: BFD_RELOC_ARM_LDR_SB_G1,
3530: BFD_RELOC_ARM_LDR_SB_G2,
3531: BFD_RELOC_ARM_LDRS_SB_G0,
3532: BFD_RELOC_ARM_LDRS_SB_G1,
3533: BFD_RELOC_ARM_LDRS_SB_G2,
3534: BFD_RELOC_ARM_LDC_SB_G0,
3535: BFD_RELOC_ARM_LDC_SB_G1,
3536: BFD_RELOC_ARM_LDC_SB_G2,
3537:
3538: /* Annotation of BX instructions. */
3539: BFD_RELOC_ARM_V4BX,
3540:
3541: /* ARM support for STT_GNU_IFUNC. */
3542: BFD_RELOC_ARM_IRELATIVE,
3543:
1.1.1.3 ! christos 3544: /* Thumb1 relocations to support execute-only code. */
! 3545: BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC,
! 3546: BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC,
! 3547: BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC,
! 3548: BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC,
! 3549:
1.1 christos 3550: /* These relocs are only used within the ARM assembler. They are not
3551: (at present) written to any object files. */
3552: BFD_RELOC_ARM_IMMEDIATE,
3553: BFD_RELOC_ARM_ADRL_IMMEDIATE,
3554: BFD_RELOC_ARM_T32_IMMEDIATE,
3555: BFD_RELOC_ARM_T32_ADD_IMM,
3556: BFD_RELOC_ARM_T32_IMM12,
3557: BFD_RELOC_ARM_T32_ADD_PC12,
3558: BFD_RELOC_ARM_SHIFT_IMM,
3559: BFD_RELOC_ARM_SMC,
3560: BFD_RELOC_ARM_HVC,
3561: BFD_RELOC_ARM_SWI,
3562: BFD_RELOC_ARM_MULTI,
3563: BFD_RELOC_ARM_CP_OFF_IMM,
3564: BFD_RELOC_ARM_CP_OFF_IMM_S2,
3565: BFD_RELOC_ARM_T32_CP_OFF_IMM,
3566: BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
3567: BFD_RELOC_ARM_ADR_IMM,
3568: BFD_RELOC_ARM_LDR_IMM,
3569: BFD_RELOC_ARM_LITERAL,
3570: BFD_RELOC_ARM_IN_POOL,
3571: BFD_RELOC_ARM_OFFSET_IMM8,
3572: BFD_RELOC_ARM_T32_OFFSET_U8,
3573: BFD_RELOC_ARM_T32_OFFSET_IMM,
3574: BFD_RELOC_ARM_HWLITERAL,
3575: BFD_RELOC_ARM_THUMB_ADD,
3576: BFD_RELOC_ARM_THUMB_IMM,
3577: BFD_RELOC_ARM_THUMB_SHIFT,
3578:
3579: /* Renesas / SuperH SH relocs. Not all of these appear in object files. */
3580: BFD_RELOC_SH_PCDISP8BY2,
3581: BFD_RELOC_SH_PCDISP12BY2,
3582: BFD_RELOC_SH_IMM3,
3583: BFD_RELOC_SH_IMM3U,
3584: BFD_RELOC_SH_DISP12,
3585: BFD_RELOC_SH_DISP12BY2,
3586: BFD_RELOC_SH_DISP12BY4,
3587: BFD_RELOC_SH_DISP12BY8,
3588: BFD_RELOC_SH_DISP20,
3589: BFD_RELOC_SH_DISP20BY8,
3590: BFD_RELOC_SH_IMM4,
3591: BFD_RELOC_SH_IMM4BY2,
3592: BFD_RELOC_SH_IMM4BY4,
3593: BFD_RELOC_SH_IMM8,
3594: BFD_RELOC_SH_IMM8BY2,
3595: BFD_RELOC_SH_IMM8BY4,
3596: BFD_RELOC_SH_PCRELIMM8BY2,
3597: BFD_RELOC_SH_PCRELIMM8BY4,
3598: BFD_RELOC_SH_SWITCH16,
3599: BFD_RELOC_SH_SWITCH32,
3600: BFD_RELOC_SH_USES,
3601: BFD_RELOC_SH_COUNT,
3602: BFD_RELOC_SH_ALIGN,
3603: BFD_RELOC_SH_CODE,
3604: BFD_RELOC_SH_DATA,
3605: BFD_RELOC_SH_LABEL,
3606: BFD_RELOC_SH_LOOP_START,
3607: BFD_RELOC_SH_LOOP_END,
3608: BFD_RELOC_SH_COPY,
3609: BFD_RELOC_SH_GLOB_DAT,
3610: BFD_RELOC_SH_JMP_SLOT,
3611: BFD_RELOC_SH_RELATIVE,
3612: BFD_RELOC_SH_GOTPC,
3613: BFD_RELOC_SH_GOT_LOW16,
3614: BFD_RELOC_SH_GOT_MEDLOW16,
3615: BFD_RELOC_SH_GOT_MEDHI16,
3616: BFD_RELOC_SH_GOT_HI16,
3617: BFD_RELOC_SH_GOTPLT_LOW16,
3618: BFD_RELOC_SH_GOTPLT_MEDLOW16,
3619: BFD_RELOC_SH_GOTPLT_MEDHI16,
3620: BFD_RELOC_SH_GOTPLT_HI16,
3621: BFD_RELOC_SH_PLT_LOW16,
3622: BFD_RELOC_SH_PLT_MEDLOW16,
3623: BFD_RELOC_SH_PLT_MEDHI16,
3624: BFD_RELOC_SH_PLT_HI16,
3625: BFD_RELOC_SH_GOTOFF_LOW16,
3626: BFD_RELOC_SH_GOTOFF_MEDLOW16,
3627: BFD_RELOC_SH_GOTOFF_MEDHI16,
3628: BFD_RELOC_SH_GOTOFF_HI16,
3629: BFD_RELOC_SH_GOTPC_LOW16,
3630: BFD_RELOC_SH_GOTPC_MEDLOW16,
3631: BFD_RELOC_SH_GOTPC_MEDHI16,
3632: BFD_RELOC_SH_GOTPC_HI16,
3633: BFD_RELOC_SH_COPY64,
3634: BFD_RELOC_SH_GLOB_DAT64,
3635: BFD_RELOC_SH_JMP_SLOT64,
3636: BFD_RELOC_SH_RELATIVE64,
3637: BFD_RELOC_SH_GOT10BY4,
3638: BFD_RELOC_SH_GOT10BY8,
3639: BFD_RELOC_SH_GOTPLT10BY4,
3640: BFD_RELOC_SH_GOTPLT10BY8,
3641: BFD_RELOC_SH_GOTPLT32,
3642: BFD_RELOC_SH_SHMEDIA_CODE,
3643: BFD_RELOC_SH_IMMU5,
3644: BFD_RELOC_SH_IMMS6,
3645: BFD_RELOC_SH_IMMS6BY32,
3646: BFD_RELOC_SH_IMMU6,
3647: BFD_RELOC_SH_IMMS10,
3648: BFD_RELOC_SH_IMMS10BY2,
3649: BFD_RELOC_SH_IMMS10BY4,
3650: BFD_RELOC_SH_IMMS10BY8,
3651: BFD_RELOC_SH_IMMS16,
3652: BFD_RELOC_SH_IMMU16,
3653: BFD_RELOC_SH_IMM_LOW16,
3654: BFD_RELOC_SH_IMM_LOW16_PCREL,
3655: BFD_RELOC_SH_IMM_MEDLOW16,
3656: BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
3657: BFD_RELOC_SH_IMM_MEDHI16,
3658: BFD_RELOC_SH_IMM_MEDHI16_PCREL,
3659: BFD_RELOC_SH_IMM_HI16,
3660: BFD_RELOC_SH_IMM_HI16_PCREL,
3661: BFD_RELOC_SH_PT_16,
3662: BFD_RELOC_SH_TLS_GD_32,
3663: BFD_RELOC_SH_TLS_LD_32,
3664: BFD_RELOC_SH_TLS_LDO_32,
3665: BFD_RELOC_SH_TLS_IE_32,
3666: BFD_RELOC_SH_TLS_LE_32,
3667: BFD_RELOC_SH_TLS_DTPMOD32,
3668: BFD_RELOC_SH_TLS_DTPOFF32,
3669: BFD_RELOC_SH_TLS_TPOFF32,
3670: BFD_RELOC_SH_GOT20,
3671: BFD_RELOC_SH_GOTOFF20,
3672: BFD_RELOC_SH_GOTFUNCDESC,
3673: BFD_RELOC_SH_GOTFUNCDESC20,
3674: BFD_RELOC_SH_GOTOFFFUNCDESC,
3675: BFD_RELOC_SH_GOTOFFFUNCDESC20,
3676: BFD_RELOC_SH_FUNCDESC,
3677:
1.1.1.2 christos 3678: /* ARC relocs. */
3679: BFD_RELOC_ARC_NONE,
3680: BFD_RELOC_ARC_8,
3681: BFD_RELOC_ARC_16,
3682: BFD_RELOC_ARC_24,
3683: BFD_RELOC_ARC_32,
3684: BFD_RELOC_ARC_N8,
3685: BFD_RELOC_ARC_N16,
3686: BFD_RELOC_ARC_N24,
3687: BFD_RELOC_ARC_N32,
3688: BFD_RELOC_ARC_SDA,
3689: BFD_RELOC_ARC_SECTOFF,
3690: BFD_RELOC_ARC_S21H_PCREL,
3691: BFD_RELOC_ARC_S21W_PCREL,
3692: BFD_RELOC_ARC_S25H_PCREL,
3693: BFD_RELOC_ARC_S25W_PCREL,
3694: BFD_RELOC_ARC_SDA32,
3695: BFD_RELOC_ARC_SDA_LDST,
3696: BFD_RELOC_ARC_SDA_LDST1,
3697: BFD_RELOC_ARC_SDA_LDST2,
3698: BFD_RELOC_ARC_SDA16_LD,
3699: BFD_RELOC_ARC_SDA16_LD1,
3700: BFD_RELOC_ARC_SDA16_LD2,
3701: BFD_RELOC_ARC_S13_PCREL,
3702: BFD_RELOC_ARC_W,
3703: BFD_RELOC_ARC_32_ME,
3704: BFD_RELOC_ARC_32_ME_S,
3705: BFD_RELOC_ARC_N32_ME,
3706: BFD_RELOC_ARC_SECTOFF_ME,
3707: BFD_RELOC_ARC_SDA32_ME,
3708: BFD_RELOC_ARC_W_ME,
3709: BFD_RELOC_AC_SECTOFF_U8,
3710: BFD_RELOC_AC_SECTOFF_U8_1,
3711: BFD_RELOC_AC_SECTOFF_U8_2,
3712: BFD_RELOC_AC_SECTFOFF_S9,
3713: BFD_RELOC_AC_SECTFOFF_S9_1,
3714: BFD_RELOC_AC_SECTFOFF_S9_2,
3715: BFD_RELOC_ARC_SECTOFF_ME_1,
3716: BFD_RELOC_ARC_SECTOFF_ME_2,
3717: BFD_RELOC_ARC_SECTOFF_1,
3718: BFD_RELOC_ARC_SECTOFF_2,
3719: BFD_RELOC_ARC_SDA16_ST2,
3720: BFD_RELOC_ARC_32_PCREL,
3721: BFD_RELOC_ARC_PC32,
3722: BFD_RELOC_ARC_GOT32,
3723: BFD_RELOC_ARC_GOTPC32,
3724: BFD_RELOC_ARC_PLT32,
3725: BFD_RELOC_ARC_COPY,
3726: BFD_RELOC_ARC_GLOB_DAT,
3727: BFD_RELOC_ARC_JMP_SLOT,
3728: BFD_RELOC_ARC_RELATIVE,
3729: BFD_RELOC_ARC_GOTOFF,
3730: BFD_RELOC_ARC_GOTPC,
3731: BFD_RELOC_ARC_S21W_PCREL_PLT,
3732: BFD_RELOC_ARC_S25H_PCREL_PLT,
3733: BFD_RELOC_ARC_TLS_DTPMOD,
3734: BFD_RELOC_ARC_TLS_TPOFF,
3735: BFD_RELOC_ARC_TLS_GD_GOT,
3736: BFD_RELOC_ARC_TLS_GD_LD,
3737: BFD_RELOC_ARC_TLS_GD_CALL,
3738: BFD_RELOC_ARC_TLS_IE_GOT,
3739: BFD_RELOC_ARC_TLS_DTPOFF,
3740: BFD_RELOC_ARC_TLS_DTPOFF_S9,
3741: BFD_RELOC_ARC_TLS_LE_S9,
3742: BFD_RELOC_ARC_TLS_LE_32,
3743: BFD_RELOC_ARC_S25W_PCREL_PLT,
3744: BFD_RELOC_ARC_S21H_PCREL_PLT,
1.1.1.3 ! christos 3745: BFD_RELOC_ARC_NPS_CMEM16,
1.1 christos 3746:
3747: /* ADI Blackfin 16 bit immediate absolute reloc. */
3748: BFD_RELOC_BFIN_16_IMM,
3749:
3750: /* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
3751: BFD_RELOC_BFIN_16_HIGH,
3752:
3753: /* ADI Blackfin 'a' part of LSETUP. */
3754: BFD_RELOC_BFIN_4_PCREL,
3755:
3756: /* ADI Blackfin. */
3757: BFD_RELOC_BFIN_5_PCREL,
3758:
3759: /* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
3760: BFD_RELOC_BFIN_16_LOW,
3761:
3762: /* ADI Blackfin. */
3763: BFD_RELOC_BFIN_10_PCREL,
3764:
3765: /* ADI Blackfin 'b' part of LSETUP. */
3766: BFD_RELOC_BFIN_11_PCREL,
3767:
3768: /* ADI Blackfin. */
3769: BFD_RELOC_BFIN_12_PCREL_JUMP,
3770:
3771: /* ADI Blackfin Short jump, pcrel. */
3772: BFD_RELOC_BFIN_12_PCREL_JUMP_S,
3773:
3774: /* ADI Blackfin Call.x not implemented. */
3775: BFD_RELOC_BFIN_24_PCREL_CALL_X,
3776:
3777: /* ADI Blackfin Long Jump pcrel. */
3778: BFD_RELOC_BFIN_24_PCREL_JUMP_L,
3779:
3780: /* ADI Blackfin FD-PIC relocations. */
3781: BFD_RELOC_BFIN_GOT17M4,
3782: BFD_RELOC_BFIN_GOTHI,
3783: BFD_RELOC_BFIN_GOTLO,
3784: BFD_RELOC_BFIN_FUNCDESC,
3785: BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
3786: BFD_RELOC_BFIN_FUNCDESC_GOTHI,
3787: BFD_RELOC_BFIN_FUNCDESC_GOTLO,
3788: BFD_RELOC_BFIN_FUNCDESC_VALUE,
3789: BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
3790: BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
3791: BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
3792: BFD_RELOC_BFIN_GOTOFF17M4,
3793: BFD_RELOC_BFIN_GOTOFFHI,
3794: BFD_RELOC_BFIN_GOTOFFLO,
3795:
3796: /* ADI Blackfin GOT relocation. */
3797: BFD_RELOC_BFIN_GOT,
3798:
3799: /* ADI Blackfin PLTPC relocation. */
3800: BFD_RELOC_BFIN_PLTPC,
3801:
3802: /* ADI Blackfin arithmetic relocation. */
3803: BFD_ARELOC_BFIN_PUSH,
3804:
3805: /* ADI Blackfin arithmetic relocation. */
3806: BFD_ARELOC_BFIN_CONST,
3807:
3808: /* ADI Blackfin arithmetic relocation. */
3809: BFD_ARELOC_BFIN_ADD,
3810:
3811: /* ADI Blackfin arithmetic relocation. */
3812: BFD_ARELOC_BFIN_SUB,
3813:
3814: /* ADI Blackfin arithmetic relocation. */
3815: BFD_ARELOC_BFIN_MULT,
3816:
3817: /* ADI Blackfin arithmetic relocation. */
3818: BFD_ARELOC_BFIN_DIV,
3819:
3820: /* ADI Blackfin arithmetic relocation. */
3821: BFD_ARELOC_BFIN_MOD,
3822:
3823: /* ADI Blackfin arithmetic relocation. */
3824: BFD_ARELOC_BFIN_LSHIFT,
3825:
3826: /* ADI Blackfin arithmetic relocation. */
3827: BFD_ARELOC_BFIN_RSHIFT,
3828:
3829: /* ADI Blackfin arithmetic relocation. */
3830: BFD_ARELOC_BFIN_AND,
3831:
3832: /* ADI Blackfin arithmetic relocation. */
3833: BFD_ARELOC_BFIN_OR,
3834:
3835: /* ADI Blackfin arithmetic relocation. */
3836: BFD_ARELOC_BFIN_XOR,
3837:
3838: /* ADI Blackfin arithmetic relocation. */
3839: BFD_ARELOC_BFIN_LAND,
3840:
3841: /* ADI Blackfin arithmetic relocation. */
3842: BFD_ARELOC_BFIN_LOR,
3843:
3844: /* ADI Blackfin arithmetic relocation. */
3845: BFD_ARELOC_BFIN_LEN,
3846:
3847: /* ADI Blackfin arithmetic relocation. */
3848: BFD_ARELOC_BFIN_NEG,
3849:
3850: /* ADI Blackfin arithmetic relocation. */
3851: BFD_ARELOC_BFIN_COMP,
3852:
3853: /* ADI Blackfin arithmetic relocation. */
3854: BFD_ARELOC_BFIN_PAGE,
3855:
3856: /* ADI Blackfin arithmetic relocation. */
3857: BFD_ARELOC_BFIN_HWPAGE,
3858:
3859: /* ADI Blackfin arithmetic relocation. */
3860: BFD_ARELOC_BFIN_ADDR,
3861:
3862: /* Mitsubishi D10V relocs.
3863: This is a 10-bit reloc with the right 2 bits
3864: assumed to be 0. */
3865: BFD_RELOC_D10V_10_PCREL_R,
3866:
3867: /* Mitsubishi D10V relocs.
3868: This is a 10-bit reloc with the right 2 bits
3869: assumed to be 0. This is the same as the previous reloc
3870: except it is in the left container, i.e.,
3871: shifted left 15 bits. */
3872: BFD_RELOC_D10V_10_PCREL_L,
3873:
3874: /* This is an 18-bit reloc with the right 2 bits
3875: assumed to be 0. */
3876: BFD_RELOC_D10V_18,
3877:
3878: /* This is an 18-bit reloc with the right 2 bits
3879: assumed to be 0. */
3880: BFD_RELOC_D10V_18_PCREL,
3881:
3882: /* Mitsubishi D30V relocs.
3883: This is a 6-bit absolute reloc. */
3884: BFD_RELOC_D30V_6,
3885:
3886: /* This is a 6-bit pc-relative reloc with
3887: the right 3 bits assumed to be 0. */
3888: BFD_RELOC_D30V_9_PCREL,
3889:
3890: /* This is a 6-bit pc-relative reloc with
3891: the right 3 bits assumed to be 0. Same
3892: as the previous reloc but on the right side
3893: of the container. */
3894: BFD_RELOC_D30V_9_PCREL_R,
3895:
3896: /* This is a 12-bit absolute reloc with the
3897: right 3 bitsassumed to be 0. */
3898: BFD_RELOC_D30V_15,
3899:
3900: /* This is a 12-bit pc-relative reloc with
3901: the right 3 bits assumed to be 0. */
3902: BFD_RELOC_D30V_15_PCREL,
3903:
3904: /* This is a 12-bit pc-relative reloc with
3905: the right 3 bits assumed to be 0. Same
3906: as the previous reloc but on the right side
3907: of the container. */
3908: BFD_RELOC_D30V_15_PCREL_R,
3909:
3910: /* This is an 18-bit absolute reloc with
3911: the right 3 bits assumed to be 0. */
3912: BFD_RELOC_D30V_21,
3913:
3914: /* This is an 18-bit pc-relative reloc with
3915: the right 3 bits assumed to be 0. */
3916: BFD_RELOC_D30V_21_PCREL,
3917:
3918: /* This is an 18-bit pc-relative reloc with
3919: the right 3 bits assumed to be 0. Same
3920: as the previous reloc but on the right side
3921: of the container. */
3922: BFD_RELOC_D30V_21_PCREL_R,
3923:
3924: /* This is a 32-bit absolute reloc. */
3925: BFD_RELOC_D30V_32,
3926:
3927: /* This is a 32-bit pc-relative reloc. */
3928: BFD_RELOC_D30V_32_PCREL,
3929:
3930: /* DLX relocs */
3931: BFD_RELOC_DLX_HI16_S,
3932:
3933: /* DLX relocs */
3934: BFD_RELOC_DLX_LO16,
3935:
3936: /* DLX relocs */
3937: BFD_RELOC_DLX_JMP26,
3938:
3939: /* Renesas M16C/M32C Relocations. */
3940: BFD_RELOC_M32C_HI8,
3941: BFD_RELOC_M32C_RL_JUMP,
3942: BFD_RELOC_M32C_RL_1ADDR,
3943: BFD_RELOC_M32C_RL_2ADDR,
3944:
3945: /* Renesas M32R (formerly Mitsubishi M32R) relocs.
3946: This is a 24 bit absolute address. */
3947: BFD_RELOC_M32R_24,
3948:
3949: /* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
3950: BFD_RELOC_M32R_10_PCREL,
3951:
3952: /* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
3953: BFD_RELOC_M32R_18_PCREL,
3954:
3955: /* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
3956: BFD_RELOC_M32R_26_PCREL,
3957:
3958: /* This is a 16-bit reloc containing the high 16 bits of an address
3959: used when the lower 16 bits are treated as unsigned. */
3960: BFD_RELOC_M32R_HI16_ULO,
3961:
3962: /* This is a 16-bit reloc containing the high 16 bits of an address
3963: used when the lower 16 bits are treated as signed. */
3964: BFD_RELOC_M32R_HI16_SLO,
3965:
3966: /* This is a 16-bit reloc containing the lower 16 bits of an address. */
3967: BFD_RELOC_M32R_LO16,
3968:
3969: /* This is a 16-bit reloc containing the small data area offset for use in
3970: add3, load, and store instructions. */
3971: BFD_RELOC_M32R_SDA16,
3972:
3973: /* For PIC. */
3974: BFD_RELOC_M32R_GOT24,
3975: BFD_RELOC_M32R_26_PLTREL,
3976: BFD_RELOC_M32R_COPY,
3977: BFD_RELOC_M32R_GLOB_DAT,
3978: BFD_RELOC_M32R_JMP_SLOT,
3979: BFD_RELOC_M32R_RELATIVE,
3980: BFD_RELOC_M32R_GOTOFF,
3981: BFD_RELOC_M32R_GOTOFF_HI_ULO,
3982: BFD_RELOC_M32R_GOTOFF_HI_SLO,
3983: BFD_RELOC_M32R_GOTOFF_LO,
3984: BFD_RELOC_M32R_GOTPC24,
3985: BFD_RELOC_M32R_GOT16_HI_ULO,
3986: BFD_RELOC_M32R_GOT16_HI_SLO,
3987: BFD_RELOC_M32R_GOT16_LO,
3988: BFD_RELOC_M32R_GOTPC_HI_ULO,
3989: BFD_RELOC_M32R_GOTPC_HI_SLO,
3990: BFD_RELOC_M32R_GOTPC_LO,
3991:
1.1.1.2 christos 3992: /* NDS32 relocs.
3993: This is a 20 bit absolute address. */
3994: BFD_RELOC_NDS32_20,
3995:
3996: /* This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0. */
3997: BFD_RELOC_NDS32_9_PCREL,
3998:
3999: /* This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0. */
4000: BFD_RELOC_NDS32_WORD_9_PCREL,
4001:
4002: /* This is an 15-bit reloc with the right 1 bit assumed to be 0. */
4003: BFD_RELOC_NDS32_15_PCREL,
4004:
4005: /* This is an 17-bit reloc with the right 1 bit assumed to be 0. */
4006: BFD_RELOC_NDS32_17_PCREL,
4007:
4008: /* This is a 25-bit reloc with the right 1 bit assumed to be 0. */
4009: BFD_RELOC_NDS32_25_PCREL,
4010:
4011: /* This is a 20-bit reloc containing the high 20 bits of an address
4012: used with the lower 12 bits */
4013: BFD_RELOC_NDS32_HI20,
4014:
4015: /* This is a 12-bit reloc containing the lower 12 bits of an address
4016: then shift right by 3. This is used with ldi,sdi... */
4017: BFD_RELOC_NDS32_LO12S3,
4018:
4019: /* This is a 12-bit reloc containing the lower 12 bits of an address
4020: then shift left by 2. This is used with lwi,swi... */
4021: BFD_RELOC_NDS32_LO12S2,
4022:
4023: /* This is a 12-bit reloc containing the lower 12 bits of an address
4024: then shift left by 1. This is used with lhi,shi... */
4025: BFD_RELOC_NDS32_LO12S1,
4026:
4027: /* This is a 12-bit reloc containing the lower 12 bits of an address
4028: then shift left by 0. This is used with lbisbi... */
4029: BFD_RELOC_NDS32_LO12S0,
4030:
4031: /* This is a 12-bit reloc containing the lower 12 bits of an address
4032: then shift left by 0. This is only used with branch relaxations */
4033: BFD_RELOC_NDS32_LO12S0_ORI,
4034:
4035: /* This is a 15-bit reloc containing the small data area 18-bit signed offset
4036: and shift left by 3 for use in ldi, sdi... */
4037: BFD_RELOC_NDS32_SDA15S3,
4038:
4039: /* This is a 15-bit reloc containing the small data area 17-bit signed offset
4040: and shift left by 2 for use in lwi, swi... */
4041: BFD_RELOC_NDS32_SDA15S2,
4042:
4043: /* This is a 15-bit reloc containing the small data area 16-bit signed offset
4044: and shift left by 1 for use in lhi, shi... */
4045: BFD_RELOC_NDS32_SDA15S1,
4046:
4047: /* This is a 15-bit reloc containing the small data area 15-bit signed offset
4048: and shift left by 0 for use in lbi, sbi... */
4049: BFD_RELOC_NDS32_SDA15S0,
4050:
4051: /* This is a 16-bit reloc containing the small data area 16-bit signed offset
4052: and shift left by 3 */
4053: BFD_RELOC_NDS32_SDA16S3,
4054:
4055: /* This is a 17-bit reloc containing the small data area 17-bit signed offset
4056: and shift left by 2 for use in lwi.gp, swi.gp... */
4057: BFD_RELOC_NDS32_SDA17S2,
4058:
4059: /* This is a 18-bit reloc containing the small data area 18-bit signed offset
4060: and shift left by 1 for use in lhi.gp, shi.gp... */
4061: BFD_RELOC_NDS32_SDA18S1,
4062:
4063: /* This is a 19-bit reloc containing the small data area 19-bit signed offset
4064: and shift left by 0 for use in lbi.gp, sbi.gp... */
4065: BFD_RELOC_NDS32_SDA19S0,
4066:
4067: /* for PIC */
4068: BFD_RELOC_NDS32_GOT20,
4069: BFD_RELOC_NDS32_9_PLTREL,
4070: BFD_RELOC_NDS32_25_PLTREL,
4071: BFD_RELOC_NDS32_COPY,
4072: BFD_RELOC_NDS32_GLOB_DAT,
4073: BFD_RELOC_NDS32_JMP_SLOT,
4074: BFD_RELOC_NDS32_RELATIVE,
4075: BFD_RELOC_NDS32_GOTOFF,
4076: BFD_RELOC_NDS32_GOTOFF_HI20,
4077: BFD_RELOC_NDS32_GOTOFF_LO12,
4078: BFD_RELOC_NDS32_GOTPC20,
4079: BFD_RELOC_NDS32_GOT_HI20,
4080: BFD_RELOC_NDS32_GOT_LO12,
4081: BFD_RELOC_NDS32_GOTPC_HI20,
4082: BFD_RELOC_NDS32_GOTPC_LO12,
4083:
4084: /* for relax */
4085: BFD_RELOC_NDS32_INSN16,
4086: BFD_RELOC_NDS32_LABEL,
4087: BFD_RELOC_NDS32_LONGCALL1,
4088: BFD_RELOC_NDS32_LONGCALL2,
4089: BFD_RELOC_NDS32_LONGCALL3,
4090: BFD_RELOC_NDS32_LONGJUMP1,
4091: BFD_RELOC_NDS32_LONGJUMP2,
4092: BFD_RELOC_NDS32_LONGJUMP3,
4093: BFD_RELOC_NDS32_LOADSTORE,
4094: BFD_RELOC_NDS32_9_FIXED,
4095: BFD_RELOC_NDS32_15_FIXED,
4096: BFD_RELOC_NDS32_17_FIXED,
4097: BFD_RELOC_NDS32_25_FIXED,
4098: BFD_RELOC_NDS32_LONGCALL4,
4099: BFD_RELOC_NDS32_LONGCALL5,
4100: BFD_RELOC_NDS32_LONGCALL6,
4101: BFD_RELOC_NDS32_LONGJUMP4,
4102: BFD_RELOC_NDS32_LONGJUMP5,
4103: BFD_RELOC_NDS32_LONGJUMP6,
4104: BFD_RELOC_NDS32_LONGJUMP7,
4105:
4106: /* for PIC */
4107: BFD_RELOC_NDS32_PLTREL_HI20,
4108: BFD_RELOC_NDS32_PLTREL_LO12,
4109: BFD_RELOC_NDS32_PLT_GOTREL_HI20,
4110: BFD_RELOC_NDS32_PLT_GOTREL_LO12,
4111:
4112: /* for floating point */
4113: BFD_RELOC_NDS32_SDA12S2_DP,
4114: BFD_RELOC_NDS32_SDA12S2_SP,
4115: BFD_RELOC_NDS32_LO12S2_DP,
4116: BFD_RELOC_NDS32_LO12S2_SP,
4117:
4118: /* for dwarf2 debug_line. */
4119: BFD_RELOC_NDS32_DWARF2_OP1,
4120: BFD_RELOC_NDS32_DWARF2_OP2,
4121: BFD_RELOC_NDS32_DWARF2_LEB,
4122:
4123: /* for eliminate 16-bit instructions */
4124: BFD_RELOC_NDS32_UPDATE_TA,
4125:
4126: /* for PIC object relaxation */
4127: BFD_RELOC_NDS32_PLT_GOTREL_LO20,
4128: BFD_RELOC_NDS32_PLT_GOTREL_LO15,
4129: BFD_RELOC_NDS32_PLT_GOTREL_LO19,
4130: BFD_RELOC_NDS32_GOT_LO15,
4131: BFD_RELOC_NDS32_GOT_LO19,
4132: BFD_RELOC_NDS32_GOTOFF_LO15,
4133: BFD_RELOC_NDS32_GOTOFF_LO19,
4134: BFD_RELOC_NDS32_GOT15S2,
4135: BFD_RELOC_NDS32_GOT17S2,
4136:
4137: /* NDS32 relocs.
4138: This is a 5 bit absolute address. */
4139: BFD_RELOC_NDS32_5,
4140:
4141: /* This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0. */
4142: BFD_RELOC_NDS32_10_UPCREL,
4143:
4144: /* If fp were omitted, fp can used as another gp. */
4145: BFD_RELOC_NDS32_SDA_FP7U2_RELA,
4146:
4147: /* relaxation relative relocation types */
4148: BFD_RELOC_NDS32_RELAX_ENTRY,
4149: BFD_RELOC_NDS32_GOT_SUFF,
4150: BFD_RELOC_NDS32_GOTOFF_SUFF,
4151: BFD_RELOC_NDS32_PLT_GOT_SUFF,
4152: BFD_RELOC_NDS32_MULCALL_SUFF,
4153: BFD_RELOC_NDS32_PTR,
4154: BFD_RELOC_NDS32_PTR_COUNT,
4155: BFD_RELOC_NDS32_PTR_RESOLVED,
4156: BFD_RELOC_NDS32_PLTBLOCK,
4157: BFD_RELOC_NDS32_RELAX_REGION_BEGIN,
4158: BFD_RELOC_NDS32_RELAX_REGION_END,
4159: BFD_RELOC_NDS32_MINUEND,
4160: BFD_RELOC_NDS32_SUBTRAHEND,
4161: BFD_RELOC_NDS32_DIFF8,
4162: BFD_RELOC_NDS32_DIFF16,
4163: BFD_RELOC_NDS32_DIFF32,
4164: BFD_RELOC_NDS32_DIFF_ULEB128,
4165: BFD_RELOC_NDS32_EMPTY,
4166:
4167: /* This is a 25 bit absolute address. */
4168: BFD_RELOC_NDS32_25_ABS,
4169:
4170: /* For ex9 and ifc using. */
4171: BFD_RELOC_NDS32_DATA,
4172: BFD_RELOC_NDS32_TRAN,
4173: BFD_RELOC_NDS32_17IFC_PCREL,
4174: BFD_RELOC_NDS32_10IFCU_PCREL,
4175:
4176: /* For TLS. */
4177: BFD_RELOC_NDS32_TPOFF,
4178: BFD_RELOC_NDS32_TLS_LE_HI20,
4179: BFD_RELOC_NDS32_TLS_LE_LO12,
4180: BFD_RELOC_NDS32_TLS_LE_ADD,
4181: BFD_RELOC_NDS32_TLS_LE_LS,
4182: BFD_RELOC_NDS32_GOTTPOFF,
4183: BFD_RELOC_NDS32_TLS_IE_HI20,
4184: BFD_RELOC_NDS32_TLS_IE_LO12S2,
4185: BFD_RELOC_NDS32_TLS_TPOFF,
4186: BFD_RELOC_NDS32_TLS_LE_20,
4187: BFD_RELOC_NDS32_TLS_LE_15S0,
4188: BFD_RELOC_NDS32_TLS_LE_15S1,
4189: BFD_RELOC_NDS32_TLS_LE_15S2,
4190:
1.1 christos 4191: /* This is a 9-bit reloc */
4192: BFD_RELOC_V850_9_PCREL,
4193:
4194: /* This is a 22-bit reloc */
4195: BFD_RELOC_V850_22_PCREL,
4196:
4197: /* This is a 16 bit offset from the short data area pointer. */
4198: BFD_RELOC_V850_SDA_16_16_OFFSET,
4199:
4200: /* This is a 16 bit offset (of which only 15 bits are used) from the
4201: short data area pointer. */
4202: BFD_RELOC_V850_SDA_15_16_OFFSET,
4203:
4204: /* This is a 16 bit offset from the zero data area pointer. */
4205: BFD_RELOC_V850_ZDA_16_16_OFFSET,
4206:
4207: /* This is a 16 bit offset (of which only 15 bits are used) from the
4208: zero data area pointer. */
4209: BFD_RELOC_V850_ZDA_15_16_OFFSET,
4210:
4211: /* This is an 8 bit offset (of which only 6 bits are used) from the
4212: tiny data area pointer. */
4213: BFD_RELOC_V850_TDA_6_8_OFFSET,
4214:
4215: /* This is an 8bit offset (of which only 7 bits are used) from the tiny
4216: data area pointer. */
4217: BFD_RELOC_V850_TDA_7_8_OFFSET,
4218:
4219: /* This is a 7 bit offset from the tiny data area pointer. */
4220: BFD_RELOC_V850_TDA_7_7_OFFSET,
4221:
4222: /* This is a 16 bit offset from the tiny data area pointer. */
4223: BFD_RELOC_V850_TDA_16_16_OFFSET,
4224:
4225: /* This is a 5 bit offset (of which only 4 bits are used) from the tiny
4226: data area pointer. */
4227: BFD_RELOC_V850_TDA_4_5_OFFSET,
4228:
4229: /* This is a 4 bit offset from the tiny data area pointer. */
4230: BFD_RELOC_V850_TDA_4_4_OFFSET,
4231:
4232: /* This is a 16 bit offset from the short data area pointer, with the
4233: bits placed non-contiguously in the instruction. */
4234: BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
4235:
4236: /* This is a 16 bit offset from the zero data area pointer, with the
4237: bits placed non-contiguously in the instruction. */
4238: BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
4239:
4240: /* This is a 6 bit offset from the call table base pointer. */
4241: BFD_RELOC_V850_CALLT_6_7_OFFSET,
4242:
4243: /* This is a 16 bit offset from the call table base pointer. */
4244: BFD_RELOC_V850_CALLT_16_16_OFFSET,
4245:
4246: /* Used for relaxing indirect function calls. */
4247: BFD_RELOC_V850_LONGCALL,
4248:
4249: /* Used for relaxing indirect jumps. */
4250: BFD_RELOC_V850_LONGJUMP,
4251:
4252: /* Used to maintain alignment whilst relaxing. */
4253: BFD_RELOC_V850_ALIGN,
4254:
4255: /* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
4256: instructions. */
4257: BFD_RELOC_V850_LO16_SPLIT_OFFSET,
4258:
4259: /* This is a 16-bit reloc. */
4260: BFD_RELOC_V850_16_PCREL,
4261:
4262: /* This is a 17-bit reloc. */
4263: BFD_RELOC_V850_17_PCREL,
4264:
4265: /* This is a 23-bit reloc. */
4266: BFD_RELOC_V850_23,
4267:
4268: /* This is a 32-bit reloc. */
4269: BFD_RELOC_V850_32_PCREL,
4270:
4271: /* This is a 32-bit reloc. */
4272: BFD_RELOC_V850_32_ABS,
4273:
4274: /* This is a 16-bit reloc. */
4275: BFD_RELOC_V850_16_SPLIT_OFFSET,
4276:
4277: /* This is a 16-bit reloc. */
4278: BFD_RELOC_V850_16_S1,
4279:
4280: /* Low 16 bits. 16 bit shifted by 1. */
4281: BFD_RELOC_V850_LO16_S1,
4282:
4283: /* This is a 16 bit offset from the call table base pointer. */
4284: BFD_RELOC_V850_CALLT_15_16_OFFSET,
4285:
4286: /* DSO relocations. */
4287: BFD_RELOC_V850_32_GOTPCREL,
4288:
4289: /* DSO relocations. */
4290: BFD_RELOC_V850_16_GOT,
4291:
4292: /* DSO relocations. */
4293: BFD_RELOC_V850_32_GOT,
4294:
4295: /* DSO relocations. */
4296: BFD_RELOC_V850_22_PLT_PCREL,
4297:
4298: /* DSO relocations. */
4299: BFD_RELOC_V850_32_PLT_PCREL,
4300:
4301: /* DSO relocations. */
4302: BFD_RELOC_V850_COPY,
4303:
4304: /* DSO relocations. */
4305: BFD_RELOC_V850_GLOB_DAT,
4306:
4307: /* DSO relocations. */
4308: BFD_RELOC_V850_JMP_SLOT,
4309:
4310: /* DSO relocations. */
4311: BFD_RELOC_V850_RELATIVE,
4312:
4313: /* DSO relocations. */
4314: BFD_RELOC_V850_16_GOTOFF,
4315:
4316: /* DSO relocations. */
4317: BFD_RELOC_V850_32_GOTOFF,
4318:
4319: /* start code. */
4320: BFD_RELOC_V850_CODE,
4321:
4322: /* start data in text. */
4323: BFD_RELOC_V850_DATA,
4324:
4325: /* This is a 8bit DP reloc for the tms320c30, where the most
4326: significant 8 bits of a 24 bit word are placed into the least
4327: significant 8 bits of the opcode. */
4328: BFD_RELOC_TIC30_LDP,
4329:
4330: /* This is a 7bit reloc for the tms320c54x, where the least
4331: significant 7 bits of a 16 bit word are placed into the least
4332: significant 7 bits of the opcode. */
4333: BFD_RELOC_TIC54X_PARTLS7,
4334:
4335: /* This is a 9bit DP reloc for the tms320c54x, where the most
4336: significant 9 bits of a 16 bit word are placed into the least
4337: significant 9 bits of the opcode. */
4338: BFD_RELOC_TIC54X_PARTMS9,
4339:
4340: /* This is an extended address 23-bit reloc for the tms320c54x. */
4341: BFD_RELOC_TIC54X_23,
4342:
4343: /* This is a 16-bit reloc for the tms320c54x, where the least
4344: significant 16 bits of a 23-bit extended address are placed into
4345: the opcode. */
4346: BFD_RELOC_TIC54X_16_OF_23,
4347:
4348: /* This is a reloc for the tms320c54x, where the most
4349: significant 7 bits of a 23-bit extended address are placed into
4350: the opcode. */
4351: BFD_RELOC_TIC54X_MS7_OF_23,
4352:
4353: /* TMS320C6000 relocations. */
4354: BFD_RELOC_C6000_PCR_S21,
4355: BFD_RELOC_C6000_PCR_S12,
4356: BFD_RELOC_C6000_PCR_S10,
4357: BFD_RELOC_C6000_PCR_S7,
4358: BFD_RELOC_C6000_ABS_S16,
4359: BFD_RELOC_C6000_ABS_L16,
4360: BFD_RELOC_C6000_ABS_H16,
4361: BFD_RELOC_C6000_SBR_U15_B,
4362: BFD_RELOC_C6000_SBR_U15_H,
4363: BFD_RELOC_C6000_SBR_U15_W,
4364: BFD_RELOC_C6000_SBR_S16,
4365: BFD_RELOC_C6000_SBR_L16_B,
4366: BFD_RELOC_C6000_SBR_L16_H,
4367: BFD_RELOC_C6000_SBR_L16_W,
4368: BFD_RELOC_C6000_SBR_H16_B,
4369: BFD_RELOC_C6000_SBR_H16_H,
4370: BFD_RELOC_C6000_SBR_H16_W,
4371: BFD_RELOC_C6000_SBR_GOT_U15_W,
4372: BFD_RELOC_C6000_SBR_GOT_L16_W,
4373: BFD_RELOC_C6000_SBR_GOT_H16_W,
4374: BFD_RELOC_C6000_DSBT_INDEX,
4375: BFD_RELOC_C6000_PREL31,
4376: BFD_RELOC_C6000_COPY,
4377: BFD_RELOC_C6000_JUMP_SLOT,
4378: BFD_RELOC_C6000_EHTYPE,
4379: BFD_RELOC_C6000_PCR_H16,
4380: BFD_RELOC_C6000_PCR_L16,
4381: BFD_RELOC_C6000_ALIGN,
4382: BFD_RELOC_C6000_FPHEAD,
4383: BFD_RELOC_C6000_NOCMP,
4384:
4385: /* This is a 48 bit reloc for the FR30 that stores 32 bits. */
4386: BFD_RELOC_FR30_48,
4387:
4388: /* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
4389: two sections. */
4390: BFD_RELOC_FR30_20,
4391:
4392: /* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
4393: 4 bits. */
4394: BFD_RELOC_FR30_6_IN_4,
4395:
4396: /* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
4397: into 8 bits. */
4398: BFD_RELOC_FR30_8_IN_8,
4399:
4400: /* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
4401: into 8 bits. */
4402: BFD_RELOC_FR30_9_IN_8,
4403:
4404: /* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
4405: into 8 bits. */
4406: BFD_RELOC_FR30_10_IN_8,
4407:
4408: /* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
4409: short offset into 8 bits. */
4410: BFD_RELOC_FR30_9_PCREL,
4411:
4412: /* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
4413: short offset into 11 bits. */
4414: BFD_RELOC_FR30_12_PCREL,
4415:
4416: /* Motorola Mcore relocations. */
4417: BFD_RELOC_MCORE_PCREL_IMM8BY4,
4418: BFD_RELOC_MCORE_PCREL_IMM11BY2,
4419: BFD_RELOC_MCORE_PCREL_IMM4BY2,
4420: BFD_RELOC_MCORE_PCREL_32,
4421: BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
4422: BFD_RELOC_MCORE_RVA,
4423:
4424: /* Toshiba Media Processor Relocations. */
4425: BFD_RELOC_MEP_8,
4426: BFD_RELOC_MEP_16,
4427: BFD_RELOC_MEP_32,
4428: BFD_RELOC_MEP_PCREL8A2,
4429: BFD_RELOC_MEP_PCREL12A2,
4430: BFD_RELOC_MEP_PCREL17A2,
4431: BFD_RELOC_MEP_PCREL24A2,
4432: BFD_RELOC_MEP_PCABS24A2,
4433: BFD_RELOC_MEP_LOW16,
4434: BFD_RELOC_MEP_HI16U,
4435: BFD_RELOC_MEP_HI16S,
4436: BFD_RELOC_MEP_GPREL,
4437: BFD_RELOC_MEP_TPREL,
4438: BFD_RELOC_MEP_TPREL7,
4439: BFD_RELOC_MEP_TPREL7A2,
4440: BFD_RELOC_MEP_TPREL7A4,
4441: BFD_RELOC_MEP_UIMM24,
4442: BFD_RELOC_MEP_ADDR24A4,
4443: BFD_RELOC_MEP_GNU_VTINHERIT,
4444: BFD_RELOC_MEP_GNU_VTENTRY,
4445:
4446:
1.1.1.2 christos 4447: /* Imagination Technologies Meta relocations. */
4448: BFD_RELOC_METAG_HIADDR16,
4449: BFD_RELOC_METAG_LOADDR16,
4450: BFD_RELOC_METAG_RELBRANCH,
4451: BFD_RELOC_METAG_GETSETOFF,
4452: BFD_RELOC_METAG_HIOG,
4453: BFD_RELOC_METAG_LOOG,
4454: BFD_RELOC_METAG_REL8,
4455: BFD_RELOC_METAG_REL16,
4456: BFD_RELOC_METAG_HI16_GOTOFF,
4457: BFD_RELOC_METAG_LO16_GOTOFF,
4458: BFD_RELOC_METAG_GETSET_GOTOFF,
4459: BFD_RELOC_METAG_GETSET_GOT,
4460: BFD_RELOC_METAG_HI16_GOTPC,
4461: BFD_RELOC_METAG_LO16_GOTPC,
4462: BFD_RELOC_METAG_HI16_PLT,
4463: BFD_RELOC_METAG_LO16_PLT,
4464: BFD_RELOC_METAG_RELBRANCH_PLT,
4465: BFD_RELOC_METAG_GOTOFF,
4466: BFD_RELOC_METAG_PLT,
4467: BFD_RELOC_METAG_COPY,
4468: BFD_RELOC_METAG_JMP_SLOT,
4469: BFD_RELOC_METAG_RELATIVE,
4470: BFD_RELOC_METAG_GLOB_DAT,
4471: BFD_RELOC_METAG_TLS_GD,
4472: BFD_RELOC_METAG_TLS_LDM,
4473: BFD_RELOC_METAG_TLS_LDO_HI16,
4474: BFD_RELOC_METAG_TLS_LDO_LO16,
4475: BFD_RELOC_METAG_TLS_LDO,
4476: BFD_RELOC_METAG_TLS_IE,
4477: BFD_RELOC_METAG_TLS_IENONPIC,
4478: BFD_RELOC_METAG_TLS_IENONPIC_HI16,
4479: BFD_RELOC_METAG_TLS_IENONPIC_LO16,
4480: BFD_RELOC_METAG_TLS_TPOFF,
4481: BFD_RELOC_METAG_TLS_DTPMOD,
4482: BFD_RELOC_METAG_TLS_DTPOFF,
4483: BFD_RELOC_METAG_TLS_LE,
4484: BFD_RELOC_METAG_TLS_LE_HI16,
4485: BFD_RELOC_METAG_TLS_LE_LO16,
4486:
1.1 christos 4487: /* These are relocations for the GETA instruction. */
4488: BFD_RELOC_MMIX_GETA,
4489: BFD_RELOC_MMIX_GETA_1,
4490: BFD_RELOC_MMIX_GETA_2,
4491: BFD_RELOC_MMIX_GETA_3,
4492:
4493: /* These are relocations for a conditional branch instruction. */
4494: BFD_RELOC_MMIX_CBRANCH,
4495: BFD_RELOC_MMIX_CBRANCH_J,
4496: BFD_RELOC_MMIX_CBRANCH_1,
4497: BFD_RELOC_MMIX_CBRANCH_2,
4498: BFD_RELOC_MMIX_CBRANCH_3,
4499:
4500: /* These are relocations for the PUSHJ instruction. */
4501: BFD_RELOC_MMIX_PUSHJ,
4502: BFD_RELOC_MMIX_PUSHJ_1,
4503: BFD_RELOC_MMIX_PUSHJ_2,
4504: BFD_RELOC_MMIX_PUSHJ_3,
4505: BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
4506:
4507: /* These are relocations for the JMP instruction. */
4508: BFD_RELOC_MMIX_JMP,
4509: BFD_RELOC_MMIX_JMP_1,
4510: BFD_RELOC_MMIX_JMP_2,
4511: BFD_RELOC_MMIX_JMP_3,
4512:
4513: /* This is a relocation for a relative address as in a GETA instruction or
4514: a branch. */
4515: BFD_RELOC_MMIX_ADDR19,
4516:
4517: /* This is a relocation for a relative address as in a JMP instruction. */
4518: BFD_RELOC_MMIX_ADDR27,
4519:
4520: /* This is a relocation for an instruction field that may be a general
4521: register or a value 0..255. */
4522: BFD_RELOC_MMIX_REG_OR_BYTE,
4523:
4524: /* This is a relocation for an instruction field that may be a general
4525: register. */
4526: BFD_RELOC_MMIX_REG,
4527:
4528: /* This is a relocation for two instruction fields holding a register and
4529: an offset, the equivalent of the relocation. */
4530: BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
4531:
4532: /* This relocation is an assertion that the expression is not allocated as
4533: a global register. It does not modify contents. */
4534: BFD_RELOC_MMIX_LOCAL,
4535:
4536: /* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
4537: short offset into 7 bits. */
4538: BFD_RELOC_AVR_7_PCREL,
4539:
4540: /* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
4541: short offset into 12 bits. */
4542: BFD_RELOC_AVR_13_PCREL,
4543:
4544: /* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
4545: program memory address) into 16 bits. */
4546: BFD_RELOC_AVR_16_PM,
4547:
4548: /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4549: data memory address) into 8 bit immediate value of LDI insn. */
4550: BFD_RELOC_AVR_LO8_LDI,
4551:
4552: /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4553: of data memory address) into 8 bit immediate value of LDI insn. */
4554: BFD_RELOC_AVR_HI8_LDI,
4555:
4556: /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4557: of program memory address) into 8 bit immediate value of LDI insn. */
4558: BFD_RELOC_AVR_HH8_LDI,
4559:
4560: /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4561: of 32 bit value) into 8 bit immediate value of LDI insn. */
4562: BFD_RELOC_AVR_MS8_LDI,
4563:
4564: /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4565: (usually data memory address) into 8 bit immediate value of SUBI insn. */
4566: BFD_RELOC_AVR_LO8_LDI_NEG,
4567:
4568: /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4569: (high 8 bit of data memory address) into 8 bit immediate value of
4570: SUBI insn. */
4571: BFD_RELOC_AVR_HI8_LDI_NEG,
4572:
4573: /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4574: (most high 8 bit of program memory address) into 8 bit immediate value
4575: of LDI or SUBI insn. */
4576: BFD_RELOC_AVR_HH8_LDI_NEG,
4577:
4578: /* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
4579: of 32 bit value) into 8 bit immediate value of LDI insn. */
4580: BFD_RELOC_AVR_MS8_LDI_NEG,
4581:
4582: /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4583: command address) into 8 bit immediate value of LDI insn. */
4584: BFD_RELOC_AVR_LO8_LDI_PM,
4585:
1.1.1.2 christos 4586: /* This is a 16 bit reloc for the AVR that stores 8 bit value
1.1 christos 4587: (command address) into 8 bit immediate value of LDI insn. If the address
4588: is beyond the 128k boundary, the linker inserts a jump stub for this reloc
4589: in the lower 128k. */
4590: BFD_RELOC_AVR_LO8_LDI_GS,
4591:
4592: /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4593: of command address) into 8 bit immediate value of LDI insn. */
4594: BFD_RELOC_AVR_HI8_LDI_PM,
4595:
4596: /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4597: of command address) into 8 bit immediate value of LDI insn. If the address
4598: is beyond the 128k boundary, the linker inserts a jump stub for this reloc
4599: below 128k. */
4600: BFD_RELOC_AVR_HI8_LDI_GS,
4601:
4602: /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4603: of command address) into 8 bit immediate value of LDI insn. */
4604: BFD_RELOC_AVR_HH8_LDI_PM,
4605:
4606: /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4607: (usually command address) into 8 bit immediate value of SUBI insn. */
4608: BFD_RELOC_AVR_LO8_LDI_PM_NEG,
4609:
4610: /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4611: (high 8 bit of 16 bit command address) into 8 bit immediate value
4612: of SUBI insn. */
4613: BFD_RELOC_AVR_HI8_LDI_PM_NEG,
4614:
4615: /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4616: (high 6 bit of 22 bit command address) into 8 bit immediate
4617: value of SUBI insn. */
4618: BFD_RELOC_AVR_HH8_LDI_PM_NEG,
4619:
4620: /* This is a 32 bit reloc for the AVR that stores 23 bit value
4621: into 22 bits. */
4622: BFD_RELOC_AVR_CALL,
4623:
4624: /* This is a 16 bit reloc for the AVR that stores all needed bits
4625: for absolute addressing with ldi with overflow check to linktime */
4626: BFD_RELOC_AVR_LDI,
4627:
4628: /* This is a 6 bit reloc for the AVR that stores offset for ldd/std
4629: instructions */
4630: BFD_RELOC_AVR_6,
4631:
4632: /* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
4633: instructions */
4634: BFD_RELOC_AVR_6_ADIW,
4635:
4636: /* This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
4637: in .byte lo8(symbol) */
4638: BFD_RELOC_AVR_8_LO,
4639:
4640: /* This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
4641: in .byte hi8(symbol) */
4642: BFD_RELOC_AVR_8_HI,
4643:
4644: /* This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
4645: in .byte hlo8(symbol) */
4646: BFD_RELOC_AVR_8_HLO,
4647:
1.1.1.2 christos 4648: /* AVR relocations to mark the difference of two local symbols.
4649: These are only needed to support linker relaxation and can be ignored
4650: when not relaxing. The field is set to the value of the difference
4651: assuming no relaxation. The relocation encodes the position of the
4652: second symbol so the linker can determine whether to adjust the field
4653: value. */
4654: BFD_RELOC_AVR_DIFF8,
4655: BFD_RELOC_AVR_DIFF16,
4656: BFD_RELOC_AVR_DIFF32,
4657:
4658: /* This is a 7 bit reloc for the AVR that stores SRAM address for 16bit
4659: lds and sts instructions supported only tiny core. */
4660: BFD_RELOC_AVR_LDS_STS_16,
4661:
4662: /* This is a 6 bit reloc for the AVR that stores an I/O register
4663: number for the IN and OUT instructions */
4664: BFD_RELOC_AVR_PORT6,
4665:
4666: /* This is a 5 bit reloc for the AVR that stores an I/O register
4667: number for the SBIC, SBIS, SBI and CBI instructions */
4668: BFD_RELOC_AVR_PORT5,
4669:
1.1 christos 4670: /* Renesas RL78 Relocations. */
4671: BFD_RELOC_RL78_NEG8,
4672: BFD_RELOC_RL78_NEG16,
4673: BFD_RELOC_RL78_NEG24,
4674: BFD_RELOC_RL78_NEG32,
4675: BFD_RELOC_RL78_16_OP,
4676: BFD_RELOC_RL78_24_OP,
4677: BFD_RELOC_RL78_32_OP,
4678: BFD_RELOC_RL78_8U,
4679: BFD_RELOC_RL78_16U,
4680: BFD_RELOC_RL78_24U,
4681: BFD_RELOC_RL78_DIR3U_PCREL,
4682: BFD_RELOC_RL78_DIFF,
4683: BFD_RELOC_RL78_GPRELB,
4684: BFD_RELOC_RL78_GPRELW,
4685: BFD_RELOC_RL78_GPRELL,
4686: BFD_RELOC_RL78_SYM,
4687: BFD_RELOC_RL78_OP_SUBTRACT,
4688: BFD_RELOC_RL78_OP_NEG,
4689: BFD_RELOC_RL78_OP_AND,
4690: BFD_RELOC_RL78_OP_SHRA,
4691: BFD_RELOC_RL78_ABS8,
4692: BFD_RELOC_RL78_ABS16,
4693: BFD_RELOC_RL78_ABS16_REV,
4694: BFD_RELOC_RL78_ABS32,
4695: BFD_RELOC_RL78_ABS32_REV,
4696: BFD_RELOC_RL78_ABS16U,
4697: BFD_RELOC_RL78_ABS16UW,
4698: BFD_RELOC_RL78_ABS16UL,
4699: BFD_RELOC_RL78_RELAX,
4700: BFD_RELOC_RL78_HI16,
4701: BFD_RELOC_RL78_HI8,
4702: BFD_RELOC_RL78_LO16,
1.1.1.2 christos 4703: BFD_RELOC_RL78_CODE,
4704: BFD_RELOC_RL78_SADDR,
1.1 christos 4705:
4706: /* Renesas RX Relocations. */
4707: BFD_RELOC_RX_NEG8,
4708: BFD_RELOC_RX_NEG16,
4709: BFD_RELOC_RX_NEG24,
4710: BFD_RELOC_RX_NEG32,
4711: BFD_RELOC_RX_16_OP,
4712: BFD_RELOC_RX_24_OP,
4713: BFD_RELOC_RX_32_OP,
4714: BFD_RELOC_RX_8U,
4715: BFD_RELOC_RX_16U,
4716: BFD_RELOC_RX_24U,
4717: BFD_RELOC_RX_DIR3U_PCREL,
4718: BFD_RELOC_RX_DIFF,
4719: BFD_RELOC_RX_GPRELB,
4720: BFD_RELOC_RX_GPRELW,
4721: BFD_RELOC_RX_GPRELL,
4722: BFD_RELOC_RX_SYM,
4723: BFD_RELOC_RX_OP_SUBTRACT,
4724: BFD_RELOC_RX_OP_NEG,
4725: BFD_RELOC_RX_ABS8,
4726: BFD_RELOC_RX_ABS16,
4727: BFD_RELOC_RX_ABS16_REV,
4728: BFD_RELOC_RX_ABS32,
4729: BFD_RELOC_RX_ABS32_REV,
4730: BFD_RELOC_RX_ABS16U,
4731: BFD_RELOC_RX_ABS16UW,
4732: BFD_RELOC_RX_ABS16UL,
4733: BFD_RELOC_RX_RELAX,
4734:
4735: /* Direct 12 bit. */
4736: BFD_RELOC_390_12,
4737:
4738: /* 12 bit GOT offset. */
4739: BFD_RELOC_390_GOT12,
4740:
4741: /* 32 bit PC relative PLT address. */
4742: BFD_RELOC_390_PLT32,
4743:
4744: /* Copy symbol at runtime. */
4745: BFD_RELOC_390_COPY,
4746:
4747: /* Create GOT entry. */
4748: BFD_RELOC_390_GLOB_DAT,
4749:
4750: /* Create PLT entry. */
4751: BFD_RELOC_390_JMP_SLOT,
4752:
4753: /* Adjust by program base. */
4754: BFD_RELOC_390_RELATIVE,
4755:
4756: /* 32 bit PC relative offset to GOT. */
4757: BFD_RELOC_390_GOTPC,
4758:
4759: /* 16 bit GOT offset. */
4760: BFD_RELOC_390_GOT16,
4761:
1.1.1.2 christos 4762: /* PC relative 12 bit shifted by 1. */
4763: BFD_RELOC_390_PC12DBL,
4764:
4765: /* 12 bit PC rel. PLT shifted by 1. */
4766: BFD_RELOC_390_PLT12DBL,
4767:
1.1 christos 4768: /* PC relative 16 bit shifted by 1. */
4769: BFD_RELOC_390_PC16DBL,
4770:
4771: /* 16 bit PC rel. PLT shifted by 1. */
4772: BFD_RELOC_390_PLT16DBL,
4773:
1.1.1.2 christos 4774: /* PC relative 24 bit shifted by 1. */
4775: BFD_RELOC_390_PC24DBL,
4776:
4777: /* 24 bit PC rel. PLT shifted by 1. */
4778: BFD_RELOC_390_PLT24DBL,
4779:
1.1 christos 4780: /* PC relative 32 bit shifted by 1. */
4781: BFD_RELOC_390_PC32DBL,
4782:
4783: /* 32 bit PC rel. PLT shifted by 1. */
4784: BFD_RELOC_390_PLT32DBL,
4785:
4786: /* 32 bit PC rel. GOT shifted by 1. */
4787: BFD_RELOC_390_GOTPCDBL,
4788:
4789: /* 64 bit GOT offset. */
4790: BFD_RELOC_390_GOT64,
4791:
4792: /* 64 bit PC relative PLT address. */
4793: BFD_RELOC_390_PLT64,
4794:
4795: /* 32 bit rel. offset to GOT entry. */
4796: BFD_RELOC_390_GOTENT,
4797:
4798: /* 64 bit offset to GOT. */
4799: BFD_RELOC_390_GOTOFF64,
4800:
4801: /* 12-bit offset to symbol-entry within GOT, with PLT handling. */
4802: BFD_RELOC_390_GOTPLT12,
4803:
4804: /* 16-bit offset to symbol-entry within GOT, with PLT handling. */
4805: BFD_RELOC_390_GOTPLT16,
4806:
4807: /* 32-bit offset to symbol-entry within GOT, with PLT handling. */
4808: BFD_RELOC_390_GOTPLT32,
4809:
4810: /* 64-bit offset to symbol-entry within GOT, with PLT handling. */
4811: BFD_RELOC_390_GOTPLT64,
4812:
4813: /* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
4814: BFD_RELOC_390_GOTPLTENT,
4815:
4816: /* 16-bit rel. offset from the GOT to a PLT entry. */
4817: BFD_RELOC_390_PLTOFF16,
4818:
4819: /* 32-bit rel. offset from the GOT to a PLT entry. */
4820: BFD_RELOC_390_PLTOFF32,
4821:
4822: /* 64-bit rel. offset from the GOT to a PLT entry. */
4823: BFD_RELOC_390_PLTOFF64,
4824:
4825: /* s390 tls relocations. */
4826: BFD_RELOC_390_TLS_LOAD,
4827: BFD_RELOC_390_TLS_GDCALL,
4828: BFD_RELOC_390_TLS_LDCALL,
4829: BFD_RELOC_390_TLS_GD32,
4830: BFD_RELOC_390_TLS_GD64,
4831: BFD_RELOC_390_TLS_GOTIE12,
4832: BFD_RELOC_390_TLS_GOTIE32,
4833: BFD_RELOC_390_TLS_GOTIE64,
4834: BFD_RELOC_390_TLS_LDM32,
4835: BFD_RELOC_390_TLS_LDM64,
4836: BFD_RELOC_390_TLS_IE32,
4837: BFD_RELOC_390_TLS_IE64,
4838: BFD_RELOC_390_TLS_IEENT,
4839: BFD_RELOC_390_TLS_LE32,
4840: BFD_RELOC_390_TLS_LE64,
4841: BFD_RELOC_390_TLS_LDO32,
4842: BFD_RELOC_390_TLS_LDO64,
4843: BFD_RELOC_390_TLS_DTPMOD,
4844: BFD_RELOC_390_TLS_DTPOFF,
4845: BFD_RELOC_390_TLS_TPOFF,
4846:
4847: /* Long displacement extension. */
4848: BFD_RELOC_390_20,
4849: BFD_RELOC_390_GOT20,
4850: BFD_RELOC_390_GOTPLT20,
4851: BFD_RELOC_390_TLS_GOTIE20,
4852:
4853: /* STT_GNU_IFUNC relocation. */
4854: BFD_RELOC_390_IRELATIVE,
4855:
4856: /* Score relocations
4857: Low 16 bit for load/store */
4858: BFD_RELOC_SCORE_GPREL15,
4859:
4860: /* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
4861: BFD_RELOC_SCORE_DUMMY2,
4862: BFD_RELOC_SCORE_JMP,
4863:
4864: /* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
4865: BFD_RELOC_SCORE_BRANCH,
4866:
4867: /* This is a 32-bit reloc for 48-bit instructions. */
4868: BFD_RELOC_SCORE_IMM30,
4869:
4870: /* This is a 32-bit reloc for 48-bit instructions. */
4871: BFD_RELOC_SCORE_IMM32,
4872:
4873: /* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
4874: BFD_RELOC_SCORE16_JMP,
4875:
4876: /* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
4877: BFD_RELOC_SCORE16_BRANCH,
4878:
4879: /* This is a 9-bit reloc with the right 1 bit assumed to be 0 */
4880: BFD_RELOC_SCORE_BCMP,
4881:
4882: /* Undocumented Score relocs */
4883: BFD_RELOC_SCORE_GOT15,
4884: BFD_RELOC_SCORE_GOT_LO16,
4885: BFD_RELOC_SCORE_CALL15,
4886: BFD_RELOC_SCORE_DUMMY_HI16,
4887:
4888: /* Scenix IP2K - 9-bit register number / data address */
4889: BFD_RELOC_IP2K_FR9,
4890:
4891: /* Scenix IP2K - 4-bit register/data bank number */
4892: BFD_RELOC_IP2K_BANK,
4893:
4894: /* Scenix IP2K - low 13 bits of instruction word address */
4895: BFD_RELOC_IP2K_ADDR16CJP,
4896:
4897: /* Scenix IP2K - high 3 bits of instruction word address */
4898: BFD_RELOC_IP2K_PAGE3,
4899:
4900: /* Scenix IP2K - ext/low/high 8 bits of data address */
4901: BFD_RELOC_IP2K_LO8DATA,
4902: BFD_RELOC_IP2K_HI8DATA,
4903: BFD_RELOC_IP2K_EX8DATA,
4904:
4905: /* Scenix IP2K - low/high 8 bits of instruction word address */
4906: BFD_RELOC_IP2K_LO8INSN,
4907: BFD_RELOC_IP2K_HI8INSN,
4908:
4909: /* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
4910: BFD_RELOC_IP2K_PC_SKIP,
4911:
4912: /* Scenix IP2K - 16 bit word address in text section. */
4913: BFD_RELOC_IP2K_TEXT,
4914:
4915: /* Scenix IP2K - 7-bit sp or dp offset */
4916: BFD_RELOC_IP2K_FR_OFFSET,
4917:
4918: /* Scenix VPE4K coprocessor - data/insn-space addressing */
4919: BFD_RELOC_VPE4KMATH_DATA,
4920: BFD_RELOC_VPE4KMATH_INSN,
4921:
4922: /* These two relocations are used by the linker to determine which of
4923: the entries in a C++ virtual function table are actually used. When
4924: the --gc-sections option is given, the linker will zero out the entries
4925: that are not used, so that the code for those functions need not be
4926: included in the output.
4927:
4928: VTABLE_INHERIT is a zero-space relocation used to describe to the
4929: linker the inheritance tree of a C++ virtual function table. The
4930: relocation's symbol should be the parent class' vtable, and the
4931: relocation should be located at the child vtable.
4932:
4933: VTABLE_ENTRY is a zero-space relocation that describes the use of a
4934: virtual function table entry. The reloc's symbol should refer to the
4935: table of the class mentioned in the code. Off of that base, an offset
4936: describes the entry that is being used. For Rela hosts, this offset
4937: is stored in the reloc's addend. For Rel hosts, we are forced to put
4938: this offset in the reloc's section offset. */
4939: BFD_RELOC_VTABLE_INHERIT,
4940: BFD_RELOC_VTABLE_ENTRY,
4941:
4942: /* Intel IA64 Relocations. */
4943: BFD_RELOC_IA64_IMM14,
4944: BFD_RELOC_IA64_IMM22,
4945: BFD_RELOC_IA64_IMM64,
4946: BFD_RELOC_IA64_DIR32MSB,
4947: BFD_RELOC_IA64_DIR32LSB,
4948: BFD_RELOC_IA64_DIR64MSB,
4949: BFD_RELOC_IA64_DIR64LSB,
4950: BFD_RELOC_IA64_GPREL22,
4951: BFD_RELOC_IA64_GPREL64I,
4952: BFD_RELOC_IA64_GPREL32MSB,
4953: BFD_RELOC_IA64_GPREL32LSB,
4954: BFD_RELOC_IA64_GPREL64MSB,
4955: BFD_RELOC_IA64_GPREL64LSB,
4956: BFD_RELOC_IA64_LTOFF22,
4957: BFD_RELOC_IA64_LTOFF64I,
4958: BFD_RELOC_IA64_PLTOFF22,
4959: BFD_RELOC_IA64_PLTOFF64I,
4960: BFD_RELOC_IA64_PLTOFF64MSB,
4961: BFD_RELOC_IA64_PLTOFF64LSB,
4962: BFD_RELOC_IA64_FPTR64I,
4963: BFD_RELOC_IA64_FPTR32MSB,
4964: BFD_RELOC_IA64_FPTR32LSB,
4965: BFD_RELOC_IA64_FPTR64MSB,
4966: BFD_RELOC_IA64_FPTR64LSB,
4967: BFD_RELOC_IA64_PCREL21B,
4968: BFD_RELOC_IA64_PCREL21BI,
4969: BFD_RELOC_IA64_PCREL21M,
4970: BFD_RELOC_IA64_PCREL21F,
4971: BFD_RELOC_IA64_PCREL22,
4972: BFD_RELOC_IA64_PCREL60B,
4973: BFD_RELOC_IA64_PCREL64I,
4974: BFD_RELOC_IA64_PCREL32MSB,
4975: BFD_RELOC_IA64_PCREL32LSB,
4976: BFD_RELOC_IA64_PCREL64MSB,
4977: BFD_RELOC_IA64_PCREL64LSB,
4978: BFD_RELOC_IA64_LTOFF_FPTR22,
4979: BFD_RELOC_IA64_LTOFF_FPTR64I,
4980: BFD_RELOC_IA64_LTOFF_FPTR32MSB,
4981: BFD_RELOC_IA64_LTOFF_FPTR32LSB,
4982: BFD_RELOC_IA64_LTOFF_FPTR64MSB,
4983: BFD_RELOC_IA64_LTOFF_FPTR64LSB,
4984: BFD_RELOC_IA64_SEGREL32MSB,
4985: BFD_RELOC_IA64_SEGREL32LSB,
4986: BFD_RELOC_IA64_SEGREL64MSB,
4987: BFD_RELOC_IA64_SEGREL64LSB,
4988: BFD_RELOC_IA64_SECREL32MSB,
4989: BFD_RELOC_IA64_SECREL32LSB,
4990: BFD_RELOC_IA64_SECREL64MSB,
4991: BFD_RELOC_IA64_SECREL64LSB,
4992: BFD_RELOC_IA64_REL32MSB,
4993: BFD_RELOC_IA64_REL32LSB,
4994: BFD_RELOC_IA64_REL64MSB,
4995: BFD_RELOC_IA64_REL64LSB,
4996: BFD_RELOC_IA64_LTV32MSB,
4997: BFD_RELOC_IA64_LTV32LSB,
4998: BFD_RELOC_IA64_LTV64MSB,
4999: BFD_RELOC_IA64_LTV64LSB,
5000: BFD_RELOC_IA64_IPLTMSB,
5001: BFD_RELOC_IA64_IPLTLSB,
5002: BFD_RELOC_IA64_COPY,
5003: BFD_RELOC_IA64_LTOFF22X,
5004: BFD_RELOC_IA64_LDXMOV,
5005: BFD_RELOC_IA64_TPREL14,
5006: BFD_RELOC_IA64_TPREL22,
5007: BFD_RELOC_IA64_TPREL64I,
5008: BFD_RELOC_IA64_TPREL64MSB,
5009: BFD_RELOC_IA64_TPREL64LSB,
5010: BFD_RELOC_IA64_LTOFF_TPREL22,
5011: BFD_RELOC_IA64_DTPMOD64MSB,
5012: BFD_RELOC_IA64_DTPMOD64LSB,
5013: BFD_RELOC_IA64_LTOFF_DTPMOD22,
5014: BFD_RELOC_IA64_DTPREL14,
5015: BFD_RELOC_IA64_DTPREL22,
5016: BFD_RELOC_IA64_DTPREL64I,
5017: BFD_RELOC_IA64_DTPREL32MSB,
5018: BFD_RELOC_IA64_DTPREL32LSB,
5019: BFD_RELOC_IA64_DTPREL64MSB,
5020: BFD_RELOC_IA64_DTPREL64LSB,
5021: BFD_RELOC_IA64_LTOFF_DTPREL22,
5022:
5023: /* Motorola 68HC11 reloc.
5024: This is the 8 bit high part of an absolute address. */
5025: BFD_RELOC_M68HC11_HI8,
5026:
5027: /* Motorola 68HC11 reloc.
5028: This is the 8 bit low part of an absolute address. */
5029: BFD_RELOC_M68HC11_LO8,
5030:
5031: /* Motorola 68HC11 reloc.
5032: This is the 3 bit of a value. */
5033: BFD_RELOC_M68HC11_3B,
5034:
5035: /* Motorola 68HC11 reloc.
5036: This reloc marks the beginning of a jump/call instruction.
5037: It is used for linker relaxation to correctly identify beginning
5038: of instruction and change some branches to use PC-relative
5039: addressing mode. */
5040: BFD_RELOC_M68HC11_RL_JUMP,
5041:
5042: /* Motorola 68HC11 reloc.
5043: This reloc marks a group of several instructions that gcc generates
5044: and for which the linker relaxation pass can modify and/or remove
5045: some of them. */
5046: BFD_RELOC_M68HC11_RL_GROUP,
5047:
5048: /* Motorola 68HC11 reloc.
5049: This is the 16-bit lower part of an address. It is used for 'call'
5050: instruction to specify the symbol address without any special
5051: transformation (due to memory bank window). */
5052: BFD_RELOC_M68HC11_LO16,
5053:
5054: /* Motorola 68HC11 reloc.
5055: This is a 8-bit reloc that specifies the page number of an address.
5056: It is used by 'call' instruction to specify the page number of
5057: the symbol. */
5058: BFD_RELOC_M68HC11_PAGE,
5059:
5060: /* Motorola 68HC11 reloc.
5061: This is a 24-bit reloc that represents the address with a 16-bit
5062: value and a 8-bit page number. The symbol address is transformed
5063: to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
5064: BFD_RELOC_M68HC11_24,
5065:
5066: /* Motorola 68HC12 reloc.
5067: This is the 5 bits of a value. */
5068: BFD_RELOC_M68HC12_5B,
5069:
5070: /* Freescale XGATE reloc.
5071: This reloc marks the beginning of a bra/jal instruction. */
5072: BFD_RELOC_XGATE_RL_JUMP,
5073:
5074: /* Freescale XGATE reloc.
5075: This reloc marks a group of several instructions that gcc generates
5076: and for which the linker relaxation pass can modify and/or remove
5077: some of them. */
5078: BFD_RELOC_XGATE_RL_GROUP,
5079:
5080: /* Freescale XGATE reloc.
5081: This is the 16-bit lower part of an address. It is used for the '16-bit'
5082: instructions. */
5083: BFD_RELOC_XGATE_LO16,
5084:
5085: /* Freescale XGATE reloc. */
5086: BFD_RELOC_XGATE_GPAGE,
5087:
5088: /* Freescale XGATE reloc. */
5089: BFD_RELOC_XGATE_24,
5090:
5091: /* Freescale XGATE reloc.
5092: This is a 9-bit pc-relative reloc. */
5093: BFD_RELOC_XGATE_PCREL_9,
5094:
5095: /* Freescale XGATE reloc.
5096: This is a 10-bit pc-relative reloc. */
5097: BFD_RELOC_XGATE_PCREL_10,
5098:
5099: /* Freescale XGATE reloc.
5100: This is the 16-bit lower part of an address. It is used for the '16-bit'
5101: instructions. */
5102: BFD_RELOC_XGATE_IMM8_LO,
5103:
5104: /* Freescale XGATE reloc.
5105: This is the 16-bit higher part of an address. It is used for the '16-bit'
5106: instructions. */
5107: BFD_RELOC_XGATE_IMM8_HI,
5108:
5109: /* Freescale XGATE reloc.
5110: This is a 3-bit pc-relative reloc. */
5111: BFD_RELOC_XGATE_IMM3,
5112:
5113: /* Freescale XGATE reloc.
5114: This is a 4-bit pc-relative reloc. */
5115: BFD_RELOC_XGATE_IMM4,
5116:
5117: /* Freescale XGATE reloc.
5118: This is a 5-bit pc-relative reloc. */
5119: BFD_RELOC_XGATE_IMM5,
5120:
5121: /* Motorola 68HC12 reloc.
5122: This is the 9 bits of a value. */
5123: BFD_RELOC_M68HC12_9B,
5124:
5125: /* Motorola 68HC12 reloc.
5126: This is the 16 bits of a value. */
5127: BFD_RELOC_M68HC12_16B,
5128:
5129: /* Motorola 68HC12/XGATE reloc.
5130: This is a PCREL9 branch. */
5131: BFD_RELOC_M68HC12_9_PCREL,
5132:
5133: /* Motorola 68HC12/XGATE reloc.
5134: This is a PCREL10 branch. */
5135: BFD_RELOC_M68HC12_10_PCREL,
5136:
5137: /* Motorola 68HC12/XGATE reloc.
5138: This is the 8 bit low part of an absolute address and immediately precedes
5139: a matching HI8XG part. */
5140: BFD_RELOC_M68HC12_LO8XG,
5141:
5142: /* Motorola 68HC12/XGATE reloc.
5143: This is the 8 bit high part of an absolute address and immediately follows
5144: a matching LO8XG part. */
5145: BFD_RELOC_M68HC12_HI8XG,
5146:
5147: /* NS CR16C Relocations. */
5148: BFD_RELOC_16C_NUM08,
5149: BFD_RELOC_16C_NUM08_C,
5150: BFD_RELOC_16C_NUM16,
5151: BFD_RELOC_16C_NUM16_C,
5152: BFD_RELOC_16C_NUM32,
5153: BFD_RELOC_16C_NUM32_C,
5154: BFD_RELOC_16C_DISP04,
5155: BFD_RELOC_16C_DISP04_C,
5156: BFD_RELOC_16C_DISP08,
5157: BFD_RELOC_16C_DISP08_C,
5158: BFD_RELOC_16C_DISP16,
5159: BFD_RELOC_16C_DISP16_C,
5160: BFD_RELOC_16C_DISP24,
5161: BFD_RELOC_16C_DISP24_C,
5162: BFD_RELOC_16C_DISP24a,
5163: BFD_RELOC_16C_DISP24a_C,
5164: BFD_RELOC_16C_REG04,
5165: BFD_RELOC_16C_REG04_C,
5166: BFD_RELOC_16C_REG04a,
5167: BFD_RELOC_16C_REG04a_C,
5168: BFD_RELOC_16C_REG14,
5169: BFD_RELOC_16C_REG14_C,
5170: BFD_RELOC_16C_REG16,
5171: BFD_RELOC_16C_REG16_C,
5172: BFD_RELOC_16C_REG20,
5173: BFD_RELOC_16C_REG20_C,
5174: BFD_RELOC_16C_ABS20,
5175: BFD_RELOC_16C_ABS20_C,
5176: BFD_RELOC_16C_ABS24,
5177: BFD_RELOC_16C_ABS24_C,
5178: BFD_RELOC_16C_IMM04,
5179: BFD_RELOC_16C_IMM04_C,
5180: BFD_RELOC_16C_IMM16,
5181: BFD_RELOC_16C_IMM16_C,
5182: BFD_RELOC_16C_IMM20,
5183: BFD_RELOC_16C_IMM20_C,
5184: BFD_RELOC_16C_IMM24,
5185: BFD_RELOC_16C_IMM24_C,
5186: BFD_RELOC_16C_IMM32,
5187: BFD_RELOC_16C_IMM32_C,
5188:
5189: /* NS CR16 Relocations. */
5190: BFD_RELOC_CR16_NUM8,
5191: BFD_RELOC_CR16_NUM16,
5192: BFD_RELOC_CR16_NUM32,
5193: BFD_RELOC_CR16_NUM32a,
5194: BFD_RELOC_CR16_REGREL0,
5195: BFD_RELOC_CR16_REGREL4,
5196: BFD_RELOC_CR16_REGREL4a,
5197: BFD_RELOC_CR16_REGREL14,
5198: BFD_RELOC_CR16_REGREL14a,
5199: BFD_RELOC_CR16_REGREL16,
5200: BFD_RELOC_CR16_REGREL20,
5201: BFD_RELOC_CR16_REGREL20a,
5202: BFD_RELOC_CR16_ABS20,
5203: BFD_RELOC_CR16_ABS24,
5204: BFD_RELOC_CR16_IMM4,
5205: BFD_RELOC_CR16_IMM8,
5206: BFD_RELOC_CR16_IMM16,
5207: BFD_RELOC_CR16_IMM20,
5208: BFD_RELOC_CR16_IMM24,
5209: BFD_RELOC_CR16_IMM32,
5210: BFD_RELOC_CR16_IMM32a,
5211: BFD_RELOC_CR16_DISP4,
5212: BFD_RELOC_CR16_DISP8,
5213: BFD_RELOC_CR16_DISP16,
5214: BFD_RELOC_CR16_DISP20,
5215: BFD_RELOC_CR16_DISP24,
5216: BFD_RELOC_CR16_DISP24a,
5217: BFD_RELOC_CR16_SWITCH8,
5218: BFD_RELOC_CR16_SWITCH16,
5219: BFD_RELOC_CR16_SWITCH32,
5220: BFD_RELOC_CR16_GOT_REGREL20,
5221: BFD_RELOC_CR16_GOTC_REGREL20,
5222: BFD_RELOC_CR16_GLOB_DAT,
5223:
5224: /* NS CRX Relocations. */
5225: BFD_RELOC_CRX_REL4,
5226: BFD_RELOC_CRX_REL8,
5227: BFD_RELOC_CRX_REL8_CMP,
5228: BFD_RELOC_CRX_REL16,
5229: BFD_RELOC_CRX_REL24,
5230: BFD_RELOC_CRX_REL32,
5231: BFD_RELOC_CRX_REGREL12,
5232: BFD_RELOC_CRX_REGREL22,
5233: BFD_RELOC_CRX_REGREL28,
5234: BFD_RELOC_CRX_REGREL32,
5235: BFD_RELOC_CRX_ABS16,
5236: BFD_RELOC_CRX_ABS32,
5237: BFD_RELOC_CRX_NUM8,
5238: BFD_RELOC_CRX_NUM16,
5239: BFD_RELOC_CRX_NUM32,
5240: BFD_RELOC_CRX_IMM16,
5241: BFD_RELOC_CRX_IMM32,
5242: BFD_RELOC_CRX_SWITCH8,
5243: BFD_RELOC_CRX_SWITCH16,
5244: BFD_RELOC_CRX_SWITCH32,
5245:
5246: /* These relocs are only used within the CRIS assembler. They are not
5247: (at present) written to any object files. */
5248: BFD_RELOC_CRIS_BDISP8,
5249: BFD_RELOC_CRIS_UNSIGNED_5,
5250: BFD_RELOC_CRIS_SIGNED_6,
5251: BFD_RELOC_CRIS_UNSIGNED_6,
5252: BFD_RELOC_CRIS_SIGNED_8,
5253: BFD_RELOC_CRIS_UNSIGNED_8,
5254: BFD_RELOC_CRIS_SIGNED_16,
5255: BFD_RELOC_CRIS_UNSIGNED_16,
5256: BFD_RELOC_CRIS_LAPCQ_OFFSET,
5257: BFD_RELOC_CRIS_UNSIGNED_4,
5258:
5259: /* Relocs used in ELF shared libraries for CRIS. */
5260: BFD_RELOC_CRIS_COPY,
5261: BFD_RELOC_CRIS_GLOB_DAT,
5262: BFD_RELOC_CRIS_JUMP_SLOT,
5263: BFD_RELOC_CRIS_RELATIVE,
5264:
5265: /* 32-bit offset to symbol-entry within GOT. */
5266: BFD_RELOC_CRIS_32_GOT,
5267:
5268: /* 16-bit offset to symbol-entry within GOT. */
5269: BFD_RELOC_CRIS_16_GOT,
5270:
5271: /* 32-bit offset to symbol-entry within GOT, with PLT handling. */
5272: BFD_RELOC_CRIS_32_GOTPLT,
5273:
5274: /* 16-bit offset to symbol-entry within GOT, with PLT handling. */
5275: BFD_RELOC_CRIS_16_GOTPLT,
5276:
5277: /* 32-bit offset to symbol, relative to GOT. */
5278: BFD_RELOC_CRIS_32_GOTREL,
5279:
5280: /* 32-bit offset to symbol with PLT entry, relative to GOT. */
5281: BFD_RELOC_CRIS_32_PLT_GOTREL,
5282:
5283: /* 32-bit offset to symbol with PLT entry, relative to this relocation. */
5284: BFD_RELOC_CRIS_32_PLT_PCREL,
5285:
5286: /* Relocs used in TLS code for CRIS. */
5287: BFD_RELOC_CRIS_32_GOT_GD,
5288: BFD_RELOC_CRIS_16_GOT_GD,
5289: BFD_RELOC_CRIS_32_GD,
5290: BFD_RELOC_CRIS_DTP,
5291: BFD_RELOC_CRIS_32_DTPREL,
5292: BFD_RELOC_CRIS_16_DTPREL,
5293: BFD_RELOC_CRIS_32_GOT_TPREL,
5294: BFD_RELOC_CRIS_16_GOT_TPREL,
5295: BFD_RELOC_CRIS_32_TPREL,
5296: BFD_RELOC_CRIS_16_TPREL,
5297: BFD_RELOC_CRIS_DTPMOD,
5298: BFD_RELOC_CRIS_32_IE,
5299:
5300: /* Intel i860 Relocations. */
5301: BFD_RELOC_860_COPY,
5302: BFD_RELOC_860_GLOB_DAT,
5303: BFD_RELOC_860_JUMP_SLOT,
5304: BFD_RELOC_860_RELATIVE,
5305: BFD_RELOC_860_PC26,
5306: BFD_RELOC_860_PLT26,
5307: BFD_RELOC_860_PC16,
5308: BFD_RELOC_860_LOW0,
5309: BFD_RELOC_860_SPLIT0,
5310: BFD_RELOC_860_LOW1,
5311: BFD_RELOC_860_SPLIT1,
5312: BFD_RELOC_860_LOW2,
5313: BFD_RELOC_860_SPLIT2,
5314: BFD_RELOC_860_LOW3,
5315: BFD_RELOC_860_LOGOT0,
5316: BFD_RELOC_860_SPGOT0,
5317: BFD_RELOC_860_LOGOT1,
5318: BFD_RELOC_860_SPGOT1,
5319: BFD_RELOC_860_LOGOTOFF0,
5320: BFD_RELOC_860_SPGOTOFF0,
5321: BFD_RELOC_860_LOGOTOFF1,
5322: BFD_RELOC_860_SPGOTOFF1,
5323: BFD_RELOC_860_LOGOTOFF2,
5324: BFD_RELOC_860_LOGOTOFF3,
5325: BFD_RELOC_860_LOPC,
5326: BFD_RELOC_860_HIGHADJ,
5327: BFD_RELOC_860_HAGOT,
5328: BFD_RELOC_860_HAGOTOFF,
5329: BFD_RELOC_860_HAPC,
5330: BFD_RELOC_860_HIGH,
5331: BFD_RELOC_860_HIGOT,
5332: BFD_RELOC_860_HIGOTOFF,
5333:
1.1.1.2 christos 5334: /* OpenRISC 1000 Relocations. */
5335: BFD_RELOC_OR1K_REL_26,
5336: BFD_RELOC_OR1K_GOTPC_HI16,
5337: BFD_RELOC_OR1K_GOTPC_LO16,
5338: BFD_RELOC_OR1K_GOT16,
5339: BFD_RELOC_OR1K_PLT26,
5340: BFD_RELOC_OR1K_GOTOFF_HI16,
5341: BFD_RELOC_OR1K_GOTOFF_LO16,
5342: BFD_RELOC_OR1K_COPY,
5343: BFD_RELOC_OR1K_GLOB_DAT,
5344: BFD_RELOC_OR1K_JMP_SLOT,
5345: BFD_RELOC_OR1K_RELATIVE,
5346: BFD_RELOC_OR1K_TLS_GD_HI16,
5347: BFD_RELOC_OR1K_TLS_GD_LO16,
5348: BFD_RELOC_OR1K_TLS_LDM_HI16,
5349: BFD_RELOC_OR1K_TLS_LDM_LO16,
5350: BFD_RELOC_OR1K_TLS_LDO_HI16,
5351: BFD_RELOC_OR1K_TLS_LDO_LO16,
5352: BFD_RELOC_OR1K_TLS_IE_HI16,
5353: BFD_RELOC_OR1K_TLS_IE_LO16,
5354: BFD_RELOC_OR1K_TLS_LE_HI16,
5355: BFD_RELOC_OR1K_TLS_LE_LO16,
5356: BFD_RELOC_OR1K_TLS_TPOFF,
5357: BFD_RELOC_OR1K_TLS_DTPOFF,
5358: BFD_RELOC_OR1K_TLS_DTPMOD,
5359:
5360: /* RISC-V relocations. */
5361: BFD_RELOC_RISCV_HI20,
5362: BFD_RELOC_RISCV_PCREL_HI20,
5363: BFD_RELOC_RISCV_PCREL_LO12_I,
5364: BFD_RELOC_RISCV_PCREL_LO12_S,
5365: BFD_RELOC_RISCV_LO12_I,
5366: BFD_RELOC_RISCV_LO12_S,
5367: BFD_RELOC_RISCV_GPREL12_I,
5368: BFD_RELOC_RISCV_GPREL12_S,
5369: BFD_RELOC_RISCV_TPREL_HI20,
5370: BFD_RELOC_RISCV_TPREL_LO12_I,
5371: BFD_RELOC_RISCV_TPREL_LO12_S,
5372: BFD_RELOC_RISCV_TPREL_ADD,
5373: BFD_RELOC_RISCV_CALL,
5374: BFD_RELOC_RISCV_CALL_PLT,
5375: BFD_RELOC_RISCV_ADD8,
5376: BFD_RELOC_RISCV_ADD16,
5377: BFD_RELOC_RISCV_ADD32,
5378: BFD_RELOC_RISCV_ADD64,
5379: BFD_RELOC_RISCV_SUB8,
5380: BFD_RELOC_RISCV_SUB16,
5381: BFD_RELOC_RISCV_SUB32,
5382: BFD_RELOC_RISCV_SUB64,
5383: BFD_RELOC_RISCV_GOT_HI20,
5384: BFD_RELOC_RISCV_TLS_GOT_HI20,
5385: BFD_RELOC_RISCV_TLS_GD_HI20,
5386: BFD_RELOC_RISCV_JMP,
5387: BFD_RELOC_RISCV_TLS_DTPMOD32,
5388: BFD_RELOC_RISCV_TLS_DTPREL32,
5389: BFD_RELOC_RISCV_TLS_DTPMOD64,
5390: BFD_RELOC_RISCV_TLS_DTPREL64,
5391: BFD_RELOC_RISCV_TLS_TPREL32,
5392: BFD_RELOC_RISCV_TLS_TPREL64,
5393: BFD_RELOC_RISCV_ALIGN,
1.1 christos 5394:
5395: /* H8 elf Relocations. */
5396: BFD_RELOC_H8_DIR16A8,
5397: BFD_RELOC_H8_DIR16R8,
5398: BFD_RELOC_H8_DIR24A8,
5399: BFD_RELOC_H8_DIR24R8,
5400: BFD_RELOC_H8_DIR32A16,
1.1.1.2 christos 5401: BFD_RELOC_H8_DISP32A16,
1.1 christos 5402:
5403: /* Sony Xstormy16 Relocations. */
5404: BFD_RELOC_XSTORMY16_REL_12,
5405: BFD_RELOC_XSTORMY16_12,
5406: BFD_RELOC_XSTORMY16_24,
5407: BFD_RELOC_XSTORMY16_FPTR16,
5408:
5409: /* Self-describing complex relocations. */
5410: BFD_RELOC_RELC,
5411:
5412:
5413: /* Infineon Relocations. */
5414: BFD_RELOC_XC16X_PAG,
5415: BFD_RELOC_XC16X_POF,
5416: BFD_RELOC_XC16X_SEG,
5417: BFD_RELOC_XC16X_SOF,
5418:
5419: /* Relocations used by VAX ELF. */
5420: BFD_RELOC_VAX_GLOB_DAT,
5421: BFD_RELOC_VAX_JMP_SLOT,
5422: BFD_RELOC_VAX_RELATIVE,
5423:
5424: /* Morpho MT - 16 bit immediate relocation. */
5425: BFD_RELOC_MT_PC16,
5426:
5427: /* Morpho MT - Hi 16 bits of an address. */
5428: BFD_RELOC_MT_HI16,
5429:
5430: /* Morpho MT - Low 16 bits of an address. */
5431: BFD_RELOC_MT_LO16,
5432:
5433: /* Morpho MT - Used to tell the linker which vtable entries are used. */
5434: BFD_RELOC_MT_GNU_VTINHERIT,
5435:
5436: /* Morpho MT - Used to tell the linker which vtable entries are used. */
5437: BFD_RELOC_MT_GNU_VTENTRY,
5438:
5439: /* Morpho MT - 8 bit immediate relocation. */
5440: BFD_RELOC_MT_PCINSN8,
5441:
5442: /* msp430 specific relocation codes */
5443: BFD_RELOC_MSP430_10_PCREL,
5444: BFD_RELOC_MSP430_16_PCREL,
5445: BFD_RELOC_MSP430_16,
5446: BFD_RELOC_MSP430_16_PCREL_BYTE,
5447: BFD_RELOC_MSP430_16_BYTE,
5448: BFD_RELOC_MSP430_2X_PCREL,
5449: BFD_RELOC_MSP430_RL_PCREL,
1.1.1.2 christos 5450: BFD_RELOC_MSP430_ABS8,
5451: BFD_RELOC_MSP430X_PCR20_EXT_SRC,
5452: BFD_RELOC_MSP430X_PCR20_EXT_DST,
5453: BFD_RELOC_MSP430X_PCR20_EXT_ODST,
5454: BFD_RELOC_MSP430X_ABS20_EXT_SRC,
5455: BFD_RELOC_MSP430X_ABS20_EXT_DST,
5456: BFD_RELOC_MSP430X_ABS20_EXT_ODST,
5457: BFD_RELOC_MSP430X_ABS20_ADR_SRC,
5458: BFD_RELOC_MSP430X_ABS20_ADR_DST,
5459: BFD_RELOC_MSP430X_PCR16,
5460: BFD_RELOC_MSP430X_PCR20_CALL,
5461: BFD_RELOC_MSP430X_ABS16,
5462: BFD_RELOC_MSP430_ABS_HI16,
5463: BFD_RELOC_MSP430_PREL31,
5464: BFD_RELOC_MSP430_SYM_DIFF,
5465:
5466: /* Relocations used by the Altera Nios II core. */
5467: BFD_RELOC_NIOS2_S16,
5468: BFD_RELOC_NIOS2_U16,
5469: BFD_RELOC_NIOS2_CALL26,
5470: BFD_RELOC_NIOS2_IMM5,
5471: BFD_RELOC_NIOS2_CACHE_OPX,
5472: BFD_RELOC_NIOS2_IMM6,
5473: BFD_RELOC_NIOS2_IMM8,
5474: BFD_RELOC_NIOS2_HI16,
5475: BFD_RELOC_NIOS2_LO16,
5476: BFD_RELOC_NIOS2_HIADJ16,
5477: BFD_RELOC_NIOS2_GPREL,
5478: BFD_RELOC_NIOS2_UJMP,
5479: BFD_RELOC_NIOS2_CJMP,
5480: BFD_RELOC_NIOS2_CALLR,
5481: BFD_RELOC_NIOS2_ALIGN,
5482: BFD_RELOC_NIOS2_GOT16,
5483: BFD_RELOC_NIOS2_CALL16,
5484: BFD_RELOC_NIOS2_GOTOFF_LO,
5485: BFD_RELOC_NIOS2_GOTOFF_HA,
5486: BFD_RELOC_NIOS2_PCREL_LO,
5487: BFD_RELOC_NIOS2_PCREL_HA,
5488: BFD_RELOC_NIOS2_TLS_GD16,
5489: BFD_RELOC_NIOS2_TLS_LDM16,
5490: BFD_RELOC_NIOS2_TLS_LDO16,
5491: BFD_RELOC_NIOS2_TLS_IE16,
5492: BFD_RELOC_NIOS2_TLS_LE16,
5493: BFD_RELOC_NIOS2_TLS_DTPMOD,
5494: BFD_RELOC_NIOS2_TLS_DTPREL,
5495: BFD_RELOC_NIOS2_TLS_TPREL,
5496: BFD_RELOC_NIOS2_COPY,
5497: BFD_RELOC_NIOS2_GLOB_DAT,
5498: BFD_RELOC_NIOS2_JUMP_SLOT,
5499: BFD_RELOC_NIOS2_RELATIVE,
5500: BFD_RELOC_NIOS2_GOTOFF,
5501: BFD_RELOC_NIOS2_CALL26_NOAT,
5502: BFD_RELOC_NIOS2_GOT_LO,
5503: BFD_RELOC_NIOS2_GOT_HA,
5504: BFD_RELOC_NIOS2_CALL_LO,
5505: BFD_RELOC_NIOS2_CALL_HA,
5506: BFD_RELOC_NIOS2_R2_S12,
5507: BFD_RELOC_NIOS2_R2_I10_1_PCREL,
5508: BFD_RELOC_NIOS2_R2_T1I7_1_PCREL,
5509: BFD_RELOC_NIOS2_R2_T1I7_2,
5510: BFD_RELOC_NIOS2_R2_T2I4,
5511: BFD_RELOC_NIOS2_R2_T2I4_1,
5512: BFD_RELOC_NIOS2_R2_T2I4_2,
5513: BFD_RELOC_NIOS2_R2_X1I7_2,
5514: BFD_RELOC_NIOS2_R2_X2L5,
5515: BFD_RELOC_NIOS2_R2_F1I5_2,
5516: BFD_RELOC_NIOS2_R2_L5I4X1,
5517: BFD_RELOC_NIOS2_R2_T1X1I6,
5518: BFD_RELOC_NIOS2_R2_T1X1I6_2,
1.1 christos 5519:
5520: /* IQ2000 Relocations. */
5521: BFD_RELOC_IQ2000_OFFSET_16,
5522: BFD_RELOC_IQ2000_OFFSET_21,
5523: BFD_RELOC_IQ2000_UHI16,
5524:
5525: /* Special Xtensa relocation used only by PLT entries in ELF shared
5526: objects to indicate that the runtime linker should set the value
5527: to one of its own internal functions or data structures. */
5528: BFD_RELOC_XTENSA_RTLD,
5529:
5530: /* Xtensa relocations for ELF shared objects. */
5531: BFD_RELOC_XTENSA_GLOB_DAT,
5532: BFD_RELOC_XTENSA_JMP_SLOT,
5533: BFD_RELOC_XTENSA_RELATIVE,
5534:
5535: /* Xtensa relocation used in ELF object files for symbols that may require
5536: PLT entries. Otherwise, this is just a generic 32-bit relocation. */
5537: BFD_RELOC_XTENSA_PLT,
5538:
5539: /* Xtensa relocations to mark the difference of two local symbols.
5540: These are only needed to support linker relaxation and can be ignored
5541: when not relaxing. The field is set to the value of the difference
5542: assuming no relaxation. The relocation encodes the position of the
5543: first symbol so the linker can determine whether to adjust the field
5544: value. */
5545: BFD_RELOC_XTENSA_DIFF8,
5546: BFD_RELOC_XTENSA_DIFF16,
5547: BFD_RELOC_XTENSA_DIFF32,
5548:
5549: /* Generic Xtensa relocations for instruction operands. Only the slot
5550: number is encoded in the relocation. The relocation applies to the
5551: last PC-relative immediate operand, or if there are no PC-relative
5552: immediates, to the last immediate operand. */
5553: BFD_RELOC_XTENSA_SLOT0_OP,
5554: BFD_RELOC_XTENSA_SLOT1_OP,
5555: BFD_RELOC_XTENSA_SLOT2_OP,
5556: BFD_RELOC_XTENSA_SLOT3_OP,
5557: BFD_RELOC_XTENSA_SLOT4_OP,
5558: BFD_RELOC_XTENSA_SLOT5_OP,
5559: BFD_RELOC_XTENSA_SLOT6_OP,
5560: BFD_RELOC_XTENSA_SLOT7_OP,
5561: BFD_RELOC_XTENSA_SLOT8_OP,
5562: BFD_RELOC_XTENSA_SLOT9_OP,
5563: BFD_RELOC_XTENSA_SLOT10_OP,
5564: BFD_RELOC_XTENSA_SLOT11_OP,
5565: BFD_RELOC_XTENSA_SLOT12_OP,
5566: BFD_RELOC_XTENSA_SLOT13_OP,
5567: BFD_RELOC_XTENSA_SLOT14_OP,
5568:
5569: /* Alternate Xtensa relocations. Only the slot is encoded in the
5570: relocation. The meaning of these relocations is opcode-specific. */
5571: BFD_RELOC_XTENSA_SLOT0_ALT,
5572: BFD_RELOC_XTENSA_SLOT1_ALT,
5573: BFD_RELOC_XTENSA_SLOT2_ALT,
5574: BFD_RELOC_XTENSA_SLOT3_ALT,
5575: BFD_RELOC_XTENSA_SLOT4_ALT,
5576: BFD_RELOC_XTENSA_SLOT5_ALT,
5577: BFD_RELOC_XTENSA_SLOT6_ALT,
5578: BFD_RELOC_XTENSA_SLOT7_ALT,
5579: BFD_RELOC_XTENSA_SLOT8_ALT,
5580: BFD_RELOC_XTENSA_SLOT9_ALT,
5581: BFD_RELOC_XTENSA_SLOT10_ALT,
5582: BFD_RELOC_XTENSA_SLOT11_ALT,
5583: BFD_RELOC_XTENSA_SLOT12_ALT,
5584: BFD_RELOC_XTENSA_SLOT13_ALT,
5585: BFD_RELOC_XTENSA_SLOT14_ALT,
5586:
5587: /* Xtensa relocations for backward compatibility. These have all been
5588: replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
5589: BFD_RELOC_XTENSA_OP0,
5590: BFD_RELOC_XTENSA_OP1,
5591: BFD_RELOC_XTENSA_OP2,
5592:
5593: /* Xtensa relocation to mark that the assembler expanded the
5594: instructions from an original target. The expansion size is
5595: encoded in the reloc size. */
5596: BFD_RELOC_XTENSA_ASM_EXPAND,
5597:
5598: /* Xtensa relocation to mark that the linker should simplify
5599: assembler-expanded instructions. This is commonly used
5600: internally by the linker after analysis of a
5601: BFD_RELOC_XTENSA_ASM_EXPAND. */
5602: BFD_RELOC_XTENSA_ASM_SIMPLIFY,
5603:
5604: /* Xtensa TLS relocations. */
5605: BFD_RELOC_XTENSA_TLSDESC_FN,
5606: BFD_RELOC_XTENSA_TLSDESC_ARG,
5607: BFD_RELOC_XTENSA_TLS_DTPOFF,
5608: BFD_RELOC_XTENSA_TLS_TPOFF,
5609: BFD_RELOC_XTENSA_TLS_FUNC,
5610: BFD_RELOC_XTENSA_TLS_ARG,
5611: BFD_RELOC_XTENSA_TLS_CALL,
5612:
5613: /* 8 bit signed offset in (ix+d) or (iy+d). */
5614: BFD_RELOC_Z80_DISP8,
5615:
5616: /* DJNZ offset. */
5617: BFD_RELOC_Z8K_DISP7,
5618:
5619: /* CALR offset. */
5620: BFD_RELOC_Z8K_CALLR,
5621:
5622: /* 4 bit value. */
5623: BFD_RELOC_Z8K_IMM4L,
5624:
5625: /* Lattice Mico32 relocations. */
5626: BFD_RELOC_LM32_CALL,
5627: BFD_RELOC_LM32_BRANCH,
5628: BFD_RELOC_LM32_16_GOT,
5629: BFD_RELOC_LM32_GOTOFF_HI16,
5630: BFD_RELOC_LM32_GOTOFF_LO16,
5631: BFD_RELOC_LM32_COPY,
5632: BFD_RELOC_LM32_GLOB_DAT,
5633: BFD_RELOC_LM32_JMP_SLOT,
5634: BFD_RELOC_LM32_RELATIVE,
5635:
5636: /* Difference between two section addreses. Must be followed by a
5637: BFD_RELOC_MACH_O_PAIR. */
5638: BFD_RELOC_MACH_O_SECTDIFF,
5639:
5640: /* Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol. */
5641: BFD_RELOC_MACH_O_LOCAL_SECTDIFF,
5642:
5643: /* Pair of relocation. Contains the first symbol. */
5644: BFD_RELOC_MACH_O_PAIR,
5645:
1.1.1.3 ! christos 5646: /* Symbol will be substracted. Must be followed by a BFD_RELOC_32. */
! 5647: BFD_RELOC_MACH_O_SUBTRACTOR32,
! 5648:
! 5649: /* Symbol will be substracted. Must be followed by a BFD_RELOC_64. */
! 5650: BFD_RELOC_MACH_O_SUBTRACTOR64,
! 5651:
1.1 christos 5652: /* PCREL relocations. They are marked as branch to create PLT entry if
5653: required. */
5654: BFD_RELOC_MACH_O_X86_64_BRANCH32,
5655: BFD_RELOC_MACH_O_X86_64_BRANCH8,
5656:
5657: /* Used when referencing a GOT entry. */
5658: BFD_RELOC_MACH_O_X86_64_GOT,
5659:
5660: /* Used when loading a GOT entry with movq. It is specially marked so that
5661: the linker could optimize the movq to a leaq if possible. */
5662: BFD_RELOC_MACH_O_X86_64_GOT_LOAD,
5663:
5664: /* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. */
5665: BFD_RELOC_MACH_O_X86_64_PCREL32_1,
5666:
5667: /* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. */
5668: BFD_RELOC_MACH_O_X86_64_PCREL32_2,
5669:
5670: /* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. */
5671: BFD_RELOC_MACH_O_X86_64_PCREL32_4,
5672:
1.1.1.3 ! christos 5673: /* Addend for PAGE or PAGEOFF. */
! 5674: BFD_RELOC_MACH_O_ARM64_ADDEND,
! 5675:
! 5676: /* Relative offset to page of GOT slot. */
! 5677: BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21,
! 5678:
! 5679: /* Relative offset within page of GOT slot. */
! 5680: BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12,
! 5681:
! 5682: /* Address of a GOT entry. */
! 5683: BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT,
! 5684:
1.1.1.2 christos 5685: /* This is a 32 bit reloc for the microblaze that stores the
1.1 christos 5686: low 16 bits of a value */
5687: BFD_RELOC_MICROBLAZE_32_LO,
5688:
1.1.1.2 christos 5689: /* This is a 32 bit pc-relative reloc for the microblaze that
1.1 christos 5690: stores the low 16 bits of a value */
5691: BFD_RELOC_MICROBLAZE_32_LO_PCREL,
5692:
1.1.1.2 christos 5693: /* This is a 32 bit reloc for the microblaze that stores a
1.1 christos 5694: value relative to the read-only small data area anchor */
5695: BFD_RELOC_MICROBLAZE_32_ROSDA,
5696:
1.1.1.2 christos 5697: /* This is a 32 bit reloc for the microblaze that stores a
1.1 christos 5698: value relative to the read-write small data area anchor */
5699: BFD_RELOC_MICROBLAZE_32_RWSDA,
5700:
1.1.1.2 christos 5701: /* This is a 32 bit reloc for the microblaze to handle
1.1 christos 5702: expressions of the form "Symbol Op Symbol" */
5703: BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM,
5704:
1.1.1.2 christos 5705: /* This is a 64 bit reloc that stores the 32 bit pc relative
5706: value in two words (with an imm instruction). No relocation is
1.1 christos 5707: done here - only used for relaxing */
5708: BFD_RELOC_MICROBLAZE_64_NONE,
5709:
1.1.1.2 christos 5710: /* This is a 64 bit reloc that stores the 32 bit pc relative
1.1 christos 5711: value in two words (with an imm instruction). The relocation is
5712: PC-relative GOT offset */
5713: BFD_RELOC_MICROBLAZE_64_GOTPC,
5714:
1.1.1.2 christos 5715: /* This is a 64 bit reloc that stores the 32 bit pc relative
1.1 christos 5716: value in two words (with an imm instruction). The relocation is
5717: GOT offset */
5718: BFD_RELOC_MICROBLAZE_64_GOT,
5719:
1.1.1.2 christos 5720: /* This is a 64 bit reloc that stores the 32 bit pc relative
1.1 christos 5721: value in two words (with an imm instruction). The relocation is
5722: PC-relative offset into PLT */
5723: BFD_RELOC_MICROBLAZE_64_PLT,
5724:
1.1.1.2 christos 5725: /* This is a 64 bit reloc that stores the 32 bit GOT relative
1.1 christos 5726: value in two words (with an imm instruction). The relocation is
5727: relative offset from _GLOBAL_OFFSET_TABLE_ */
5728: BFD_RELOC_MICROBLAZE_64_GOTOFF,
5729:
1.1.1.2 christos 5730: /* This is a 32 bit reloc that stores the 32 bit GOT relative
1.1 christos 5731: value in a word. The relocation is relative offset from */
5732: BFD_RELOC_MICROBLAZE_32_GOTOFF,
5733:
5734: /* This is used to tell the dynamic linker to copy the value out of
5735: the dynamic object into the runtime process image. */
5736: BFD_RELOC_MICROBLAZE_COPY,
5737:
1.1.1.2 christos 5738: /* Unused Reloc */
5739: BFD_RELOC_MICROBLAZE_64_TLS,
1.1 christos 5740:
1.1.1.2 christos 5741: /* This is a 64 bit reloc that stores the 32 bit GOT relative value
5742: of the GOT TLS GD info entry in two words (with an imm instruction). The
5743: relocation is GOT offset. */
5744: BFD_RELOC_MICROBLAZE_64_TLSGD,
5745:
5746: /* This is a 64 bit reloc that stores the 32 bit GOT relative value
5747: of the GOT TLS LD info entry in two words (with an imm instruction). The
5748: relocation is GOT offset. */
5749: BFD_RELOC_MICROBLAZE_64_TLSLD,
5750:
5751: /* This is a 32 bit reloc that stores the Module ID to GOT(n). */
5752: BFD_RELOC_MICROBLAZE_32_TLSDTPMOD,
5753:
5754: /* This is a 32 bit reloc that stores TLS offset to GOT(n+1). */
5755: BFD_RELOC_MICROBLAZE_32_TLSDTPREL,
5756:
5757: /* This is a 32 bit reloc for storing TLS offset to two words (uses imm
5758: instruction) */
5759: BFD_RELOC_MICROBLAZE_64_TLSDTPREL,
5760:
5761: /* This is a 64 bit reloc that stores 32-bit thread pointer relative offset
5762: to two words (uses imm instruction). */
5763: BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL,
5764:
5765: /* This is a 64 bit reloc that stores 32-bit thread pointer relative offset
5766: to two words (uses imm instruction). */
5767: BFD_RELOC_MICROBLAZE_64_TLSTPREL,
5768:
5769: /* AArch64 pseudo relocation code to mark the start of the AArch64
5770: relocation enumerators. N.B. the order of the enumerators is
5771: important as several tables in the AArch64 bfd backend are indexed
5772: by these enumerators; make sure they are all synced. */
5773: BFD_RELOC_AARCH64_RELOC_START,
5774:
1.1.1.3 ! christos 5775: /* Deprecated AArch64 null relocation code. */
! 5776: BFD_RELOC_AARCH64_NULL,
! 5777:
1.1.1.2 christos 5778: /* AArch64 null relocation code. */
5779: BFD_RELOC_AARCH64_NONE,
5780:
5781: /* Basic absolute relocations of N bits. These are equivalent to
5782: BFD_RELOC_N and they were added to assist the indexing of the howto
5783: table. */
5784: BFD_RELOC_AARCH64_64,
5785: BFD_RELOC_AARCH64_32,
5786: BFD_RELOC_AARCH64_16,
5787:
5788: /* PC-relative relocations. These are equivalent to BFD_RELOC_N_PCREL
5789: and they were added to assist the indexing of the howto table. */
5790: BFD_RELOC_AARCH64_64_PCREL,
5791: BFD_RELOC_AARCH64_32_PCREL,
5792: BFD_RELOC_AARCH64_16_PCREL,
5793:
5794: /* AArch64 MOV[NZK] instruction with most significant bits 0 to 15
5795: of an unsigned address/value. */
5796: BFD_RELOC_AARCH64_MOVW_G0,
5797:
5798: /* AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
5799: an address/value. No overflow checking. */
5800: BFD_RELOC_AARCH64_MOVW_G0_NC,
5801:
5802: /* AArch64 MOV[NZK] instruction with most significant bits 16 to 31
5803: of an unsigned address/value. */
5804: BFD_RELOC_AARCH64_MOVW_G1,
5805:
5806: /* AArch64 MOV[NZK] instruction with less significant bits 16 to 31
5807: of an address/value. No overflow checking. */
5808: BFD_RELOC_AARCH64_MOVW_G1_NC,
5809:
5810: /* AArch64 MOV[NZK] instruction with most significant bits 32 to 47
5811: of an unsigned address/value. */
5812: BFD_RELOC_AARCH64_MOVW_G2,
5813:
5814: /* AArch64 MOV[NZK] instruction with less significant bits 32 to 47
5815: of an address/value. No overflow checking. */
5816: BFD_RELOC_AARCH64_MOVW_G2_NC,
5817:
5818: /* AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
5819: of a signed or unsigned address/value. */
5820: BFD_RELOC_AARCH64_MOVW_G3,
5821:
5822: /* AArch64 MOV[NZ] instruction with most significant bits 0 to 15
5823: of a signed value. Changes instruction to MOVZ or MOVN depending on the
5824: value's sign. */
5825: BFD_RELOC_AARCH64_MOVW_G0_S,
5826:
5827: /* AArch64 MOV[NZ] instruction with most significant bits 16 to 31
5828: of a signed value. Changes instruction to MOVZ or MOVN depending on the
5829: value's sign. */
5830: BFD_RELOC_AARCH64_MOVW_G1_S,
5831:
5832: /* AArch64 MOV[NZ] instruction with most significant bits 32 to 47
5833: of a signed value. Changes instruction to MOVZ or MOVN depending on the
5834: value's sign. */
5835: BFD_RELOC_AARCH64_MOVW_G2_S,
5836:
5837: /* AArch64 Load Literal instruction, holding a 19 bit pc-relative word
5838: offset. The lowest two bits must be zero and are not stored in the
5839: instruction, giving a 21 bit signed byte offset. */
5840: BFD_RELOC_AARCH64_LD_LO19_PCREL,
5841:
5842: /* AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset. */
5843: BFD_RELOC_AARCH64_ADR_LO21_PCREL,
1.1 christos 5844:
5845: /* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
5846: offset, giving a 4KB aligned page base address. */
5847: BFD_RELOC_AARCH64_ADR_HI21_PCREL,
5848:
5849: /* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
5850: offset, giving a 4KB aligned page base address, but with no overflow
5851: checking. */
5852: BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL,
5853:
1.1.1.2 christos 5854: /* AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
5855: Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
5856: BFD_RELOC_AARCH64_ADD_LO12,
5857:
5858: /* AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
5859: address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
5860: BFD_RELOC_AARCH64_LDST8_LO12,
5861:
5862: /* AArch64 14 bit pc-relative test bit and branch.
5863: The lowest two bits must be zero and are not stored in the instruction,
5864: giving a 16 bit signed byte offset. */
5865: BFD_RELOC_AARCH64_TSTBR14,
1.1 christos 5866:
5867: /* AArch64 19 bit pc-relative conditional branch and compare & branch.
5868: The lowest two bits must be zero and are not stored in the instruction,
5869: giving a 21 bit signed byte offset. */
5870: BFD_RELOC_AARCH64_BRANCH19,
5871:
5872: /* AArch64 26 bit pc-relative unconditional branch.
5873: The lowest two bits must be zero and are not stored in the instruction,
5874: giving a 28 bit signed byte offset. */
5875: BFD_RELOC_AARCH64_JUMP26,
5876:
1.1.1.2 christos 5877: /* AArch64 26 bit pc-relative unconditional branch and link.
5878: The lowest two bits must be zero and are not stored in the instruction,
5879: giving a 28 bit signed byte offset. */
5880: BFD_RELOC_AARCH64_CALL26,
1.1 christos 5881:
5882: /* AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
5883: address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
5884: BFD_RELOC_AARCH64_LDST16_LO12,
5885:
5886: /* AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
5887: address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
5888: BFD_RELOC_AARCH64_LDST32_LO12,
5889:
5890: /* AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
5891: address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
5892: BFD_RELOC_AARCH64_LDST64_LO12,
5893:
5894: /* AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
5895: address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
5896: BFD_RELOC_AARCH64_LDST128_LO12,
5897:
1.1.1.2 christos 5898: /* AArch64 Load Literal instruction, holding a 19 bit PC relative word
5899: offset of the global offset table entry for a symbol. The lowest two
5900: bits must be zero and are not stored in the instruction, giving a 21
5901: bit signed byte offset. This relocation type requires signed overflow
5902: checking. */
5903: BFD_RELOC_AARCH64_GOT_LD_PREL19,
1.1 christos 5904:
1.1.1.2 christos 5905: /* Get to the page base of the global offset table entry for a symbol as
5906: part of an ADRP instruction using a 21 bit PC relative value.Used in
5907: conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC. */
5908: BFD_RELOC_AARCH64_ADR_GOT_PAGE,
1.1 christos 5909:
1.1.1.2 christos 5910: /* Unsigned 12 bit byte offset for 64 bit load/store from the page of
5911: the GOT entry for this symbol. Used in conjunction with
5912: BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in LP64 ABI only. */
5913: BFD_RELOC_AARCH64_LD64_GOT_LO12_NC,
1.1 christos 5914:
1.1.1.2 christos 5915: /* Unsigned 12 bit byte offset for 32 bit load/store from the page of
5916: the GOT entry for this symbol. Used in conjunction with
5917: BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only. */
5918: BFD_RELOC_AARCH64_LD32_GOT_LO12_NC,
1.1 christos 5919:
1.1.1.2 christos 5920: /* Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry
5921: for this symbol. Valid in LP64 ABI only. */
5922: BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC,
5923:
5924: /* Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
5925: for this symbol. Valid in LP64 ABI only. */
5926: BFD_RELOC_AARCH64_MOVW_GOTOFF_G1,
5927:
5928: /* Unsigned 15 bit byte offset for 64 bit load/store from the page of
5929: the GOT entry for this symbol. Valid in LP64 ABI only. */
5930: BFD_RELOC_AARCH64_LD64_GOTOFF_LO15,
1.1 christos 5931:
1.1.1.2 christos 5932: /* Scaled 14 bit byte offset to the page base of the global offset table. */
5933: BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14,
1.1 christos 5934:
1.1.1.2 christos 5935: /* Scaled 15 bit byte offset to the page base of the global offset table. */
5936: BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15,
1.1 christos 5937:
1.1.1.2 christos 5938: /* Get to the page base of the global offset table entry for a symbols
5939: tls_index structure as part of an adrp instruction using a 21 bit PC
5940: relative value. Used in conjunction with
5941: BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC. */
5942: BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21,
1.1 christos 5943:
1.1.1.2 christos 5944: /* AArch64 TLS General Dynamic */
5945: BFD_RELOC_AARCH64_TLSGD_ADR_PREL21,
1.1 christos 5946:
1.1.1.2 christos 5947: /* Unsigned 12 bit byte offset to global offset table entry for a symbols
5948: tls_index structure. Used in conjunction with
5949: BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21. */
5950: BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC,
1.1 christos 5951:
1.1.1.2 christos 5952: /* AArch64 TLS General Dynamic relocation. */
5953: BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC,
1.1 christos 5954:
1.1.1.2 christos 5955: /* AArch64 TLS General Dynamic relocation. */
5956: BFD_RELOC_AARCH64_TLSGD_MOVW_G1,
1.1 christos 5957:
1.1.1.2 christos 5958: /* AArch64 TLS INITIAL EXEC relocation. */
5959: BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,
1.1 christos 5960:
1.1.1.2 christos 5961: /* AArch64 TLS INITIAL EXEC relocation. */
5962: BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,
1.1 christos 5963:
1.1.1.2 christos 5964: /* AArch64 TLS INITIAL EXEC relocation. */
5965: BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC,
1.1 christos 5966:
1.1.1.2 christos 5967: /* AArch64 TLS INITIAL EXEC relocation. */
5968: BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19,
1.1 christos 5969:
1.1.1.2 christos 5970: /* AArch64 TLS INITIAL EXEC relocation. */
5971: BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,
1.1 christos 5972:
1.1.1.2 christos 5973: /* AArch64 TLS INITIAL EXEC relocation. */
5974: BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1,
1.1 christos 5975:
1.1.1.2 christos 5976: /* bit[23:12] of byte offset to module TLS base address. */
5977: BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12,
1.1 christos 5978:
1.1.1.2 christos 5979: /* Unsigned 12 bit byte offset to module TLS base address. */
5980: BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12,
1.1 christos 5981:
1.1.1.2 christos 5982: /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12. */
5983: BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC,
1.1 christos 5984:
5985: /* Unsigned 12 bit byte offset to global offset table entry for a symbols
5986: tls_index structure. Used in conjunction with
1.1.1.2 christos 5987: BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21. */
5988: BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC,
1.1 christos 5989:
1.1.1.2 christos 5990: /* GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP
5991: instruction. */
5992: BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21,
1.1 christos 5993:
1.1.1.2 christos 5994: /* GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction. */
5995: BFD_RELOC_AARCH64_TLSLD_ADR_PREL21,
1.1 christos 5996:
1.1.1.2 christos 5997: /* bit[11:1] of byte offset to module TLS base address, encoded in ldst
5998: instructions. */
5999: BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12,
1.1 christos 6000:
1.1.1.2 christos 6001: /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check. */
6002: BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC,
1.1 christos 6003:
1.1.1.2 christos 6004: /* bit[11:2] of byte offset to module TLS base address, encoded in ldst
6005: instructions. */
6006: BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12,
1.1 christos 6007:
1.1.1.2 christos 6008: /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check. */
6009: BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC,
6010:
6011: /* bit[11:3] of byte offset to module TLS base address, encoded in ldst
6012: instructions. */
6013: BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12,
6014:
6015: /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check. */
6016: BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC,
6017:
6018: /* bit[11:0] of byte offset to module TLS base address, encoded in ldst
6019: instructions. */
6020: BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12,
6021:
6022: /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check. */
6023: BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC,
6024:
6025: /* bit[15:0] of byte offset to module TLS base address. */
6026: BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0,
6027:
6028: /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0 */
6029: BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC,
6030:
6031: /* bit[31:16] of byte offset to module TLS base address. */
6032: BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1,
6033:
6034: /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1 */
6035: BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC,
6036:
6037: /* bit[47:32] of byte offset to module TLS base address. */
6038: BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2,
1.1 christos 6039:
6040: /* AArch64 TLS LOCAL EXEC relocation. */
1.1.1.2 christos 6041: BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2,
1.1 christos 6042:
6043: /* AArch64 TLS LOCAL EXEC relocation. */
1.1.1.2 christos 6044: BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1,
1.1 christos 6045:
6046: /* AArch64 TLS LOCAL EXEC relocation. */
1.1.1.2 christos 6047: BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC,
1.1 christos 6048:
6049: /* AArch64 TLS LOCAL EXEC relocation. */
6050: BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0,
6051:
6052: /* AArch64 TLS LOCAL EXEC relocation. */
6053: BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC,
6054:
6055: /* AArch64 TLS LOCAL EXEC relocation. */
1.1.1.2 christos 6056: BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12,
1.1 christos 6057:
6058: /* AArch64 TLS LOCAL EXEC relocation. */
1.1.1.2 christos 6059: BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12,
1.1 christos 6060:
6061: /* AArch64 TLS LOCAL EXEC relocation. */
1.1.1.2 christos 6062: BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC,
6063:
6064: /* AArch64 TLS DESC relocation. */
6065: BFD_RELOC_AARCH64_TLSDESC_LD_PREL19,
6066:
6067: /* AArch64 TLS DESC relocation. */
6068: BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21,
6069:
6070: /* AArch64 TLS DESC relocation. */
6071: BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21,
6072:
6073: /* AArch64 TLS DESC relocation. */
6074: BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC,
6075:
6076: /* AArch64 TLS DESC relocation. */
6077: BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC,
6078:
6079: /* AArch64 TLS DESC relocation. */
6080: BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC,
6081:
6082: /* AArch64 TLS DESC relocation. */
6083: BFD_RELOC_AARCH64_TLSDESC_OFF_G1,
6084:
6085: /* AArch64 TLS DESC relocation. */
6086: BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC,
6087:
6088: /* AArch64 TLS DESC relocation. */
6089: BFD_RELOC_AARCH64_TLSDESC_LDR,
6090:
6091: /* AArch64 TLS DESC relocation. */
6092: BFD_RELOC_AARCH64_TLSDESC_ADD,
6093:
6094: /* AArch64 TLS DESC relocation. */
6095: BFD_RELOC_AARCH64_TLSDESC_CALL,
1.1 christos 6096:
6097: /* AArch64 TLS relocation. */
1.1.1.2 christos 6098: BFD_RELOC_AARCH64_COPY,
1.1 christos 6099:
6100: /* AArch64 TLS relocation. */
1.1.1.2 christos 6101: BFD_RELOC_AARCH64_GLOB_DAT,
1.1 christos 6102:
6103: /* AArch64 TLS relocation. */
1.1.1.2 christos 6104: BFD_RELOC_AARCH64_JUMP_SLOT,
1.1 christos 6105:
1.1.1.2 christos 6106: /* AArch64 TLS relocation. */
6107: BFD_RELOC_AARCH64_RELATIVE,
6108:
6109: /* AArch64 TLS relocation. */
6110: BFD_RELOC_AARCH64_TLS_DTPMOD,
6111:
6112: /* AArch64 TLS relocation. */
6113: BFD_RELOC_AARCH64_TLS_DTPREL,
6114:
6115: /* AArch64 TLS relocation. */
6116: BFD_RELOC_AARCH64_TLS_TPREL,
6117:
6118: /* AArch64 TLS relocation. */
6119: BFD_RELOC_AARCH64_TLSDESC,
6120:
6121: /* AArch64 support for STT_GNU_IFUNC. */
6122: BFD_RELOC_AARCH64_IRELATIVE,
6123:
6124: /* AArch64 pseudo relocation code to mark the end of the AArch64
6125: relocation enumerators that have direct mapping to ELF reloc codes.
6126: There are a few more enumerators after this one; those are mainly
6127: used by the AArch64 assembler for the internal fixup or to select
6128: one of the above enumerators. */
6129: BFD_RELOC_AARCH64_RELOC_END,
6130:
6131: /* AArch64 pseudo relocation code to be used internally by the AArch64
6132: assembler and not (currently) written to any object files. */
6133: BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP,
6134:
6135: /* AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
6136: address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. */
6137: BFD_RELOC_AARCH64_LDST_LO12,
6138:
6139: /* AArch64 pseudo relocation code for TLS local dynamic mode. It's to be
6140: used internally by the AArch64 assembler and not (currently) written to
6141: any object files. */
6142: BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12,
6143:
6144: /* Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check. */
6145: BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC,
6146:
6147: /* AArch64 pseudo relocation code to be used internally by the AArch64
6148: assembler and not (currently) written to any object files. */
6149: BFD_RELOC_AARCH64_LD_GOT_LO12_NC,
6150:
6151: /* AArch64 pseudo relocation code to be used internally by the AArch64
6152: assembler and not (currently) written to any object files. */
6153: BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC,
6154:
6155: /* AArch64 pseudo relocation code to be used internally by the AArch64
6156: assembler and not (currently) written to any object files. */
6157: BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC,
1.1 christos 6158:
6159: /* Tilera TILEPro Relocations. */
6160: BFD_RELOC_TILEPRO_COPY,
6161: BFD_RELOC_TILEPRO_GLOB_DAT,
6162: BFD_RELOC_TILEPRO_JMP_SLOT,
6163: BFD_RELOC_TILEPRO_RELATIVE,
6164: BFD_RELOC_TILEPRO_BROFF_X1,
6165: BFD_RELOC_TILEPRO_JOFFLONG_X1,
6166: BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT,
6167: BFD_RELOC_TILEPRO_IMM8_X0,
6168: BFD_RELOC_TILEPRO_IMM8_Y0,
6169: BFD_RELOC_TILEPRO_IMM8_X1,
6170: BFD_RELOC_TILEPRO_IMM8_Y1,
6171: BFD_RELOC_TILEPRO_DEST_IMM8_X1,
6172: BFD_RELOC_TILEPRO_MT_IMM15_X1,
6173: BFD_RELOC_TILEPRO_MF_IMM15_X1,
6174: BFD_RELOC_TILEPRO_IMM16_X0,
6175: BFD_RELOC_TILEPRO_IMM16_X1,
6176: BFD_RELOC_TILEPRO_IMM16_X0_LO,
6177: BFD_RELOC_TILEPRO_IMM16_X1_LO,
6178: BFD_RELOC_TILEPRO_IMM16_X0_HI,
6179: BFD_RELOC_TILEPRO_IMM16_X1_HI,
6180: BFD_RELOC_TILEPRO_IMM16_X0_HA,
6181: BFD_RELOC_TILEPRO_IMM16_X1_HA,
6182: BFD_RELOC_TILEPRO_IMM16_X0_PCREL,
6183: BFD_RELOC_TILEPRO_IMM16_X1_PCREL,
6184: BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL,
6185: BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL,
6186: BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL,
6187: BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL,
6188: BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL,
6189: BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL,
6190: BFD_RELOC_TILEPRO_IMM16_X0_GOT,
6191: BFD_RELOC_TILEPRO_IMM16_X1_GOT,
6192: BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO,
6193: BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO,
6194: BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI,
6195: BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI,
6196: BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA,
6197: BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA,
6198: BFD_RELOC_TILEPRO_MMSTART_X0,
6199: BFD_RELOC_TILEPRO_MMEND_X0,
6200: BFD_RELOC_TILEPRO_MMSTART_X1,
6201: BFD_RELOC_TILEPRO_MMEND_X1,
6202: BFD_RELOC_TILEPRO_SHAMT_X0,
6203: BFD_RELOC_TILEPRO_SHAMT_X1,
6204: BFD_RELOC_TILEPRO_SHAMT_Y0,
6205: BFD_RELOC_TILEPRO_SHAMT_Y1,
6206: BFD_RELOC_TILEPRO_TLS_GD_CALL,
6207: BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD,
6208: BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD,
6209: BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD,
6210: BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD,
6211: BFD_RELOC_TILEPRO_TLS_IE_LOAD,
6212: BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD,
6213: BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD,
6214: BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO,
6215: BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO,
6216: BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI,
6217: BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI,
6218: BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA,
6219: BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA,
6220: BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE,
6221: BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE,
6222: BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO,
6223: BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO,
6224: BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI,
6225: BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI,
6226: BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA,
6227: BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA,
6228: BFD_RELOC_TILEPRO_TLS_DTPMOD32,
6229: BFD_RELOC_TILEPRO_TLS_DTPOFF32,
6230: BFD_RELOC_TILEPRO_TLS_TPOFF32,
6231: BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE,
6232: BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE,
6233: BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO,
6234: BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO,
6235: BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI,
6236: BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI,
6237: BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA,
6238: BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA,
6239:
6240: /* Tilera TILE-Gx Relocations. */
6241: BFD_RELOC_TILEGX_HW0,
6242: BFD_RELOC_TILEGX_HW1,
6243: BFD_RELOC_TILEGX_HW2,
6244: BFD_RELOC_TILEGX_HW3,
6245: BFD_RELOC_TILEGX_HW0_LAST,
6246: BFD_RELOC_TILEGX_HW1_LAST,
6247: BFD_RELOC_TILEGX_HW2_LAST,
6248: BFD_RELOC_TILEGX_COPY,
6249: BFD_RELOC_TILEGX_GLOB_DAT,
6250: BFD_RELOC_TILEGX_JMP_SLOT,
6251: BFD_RELOC_TILEGX_RELATIVE,
6252: BFD_RELOC_TILEGX_BROFF_X1,
6253: BFD_RELOC_TILEGX_JUMPOFF_X1,
6254: BFD_RELOC_TILEGX_JUMPOFF_X1_PLT,
6255: BFD_RELOC_TILEGX_IMM8_X0,
6256: BFD_RELOC_TILEGX_IMM8_Y0,
6257: BFD_RELOC_TILEGX_IMM8_X1,
6258: BFD_RELOC_TILEGX_IMM8_Y1,
6259: BFD_RELOC_TILEGX_DEST_IMM8_X1,
6260: BFD_RELOC_TILEGX_MT_IMM14_X1,
6261: BFD_RELOC_TILEGX_MF_IMM14_X1,
6262: BFD_RELOC_TILEGX_MMSTART_X0,
6263: BFD_RELOC_TILEGX_MMEND_X0,
6264: BFD_RELOC_TILEGX_SHAMT_X0,
6265: BFD_RELOC_TILEGX_SHAMT_X1,
6266: BFD_RELOC_TILEGX_SHAMT_Y0,
6267: BFD_RELOC_TILEGX_SHAMT_Y1,
6268: BFD_RELOC_TILEGX_IMM16_X0_HW0,
6269: BFD_RELOC_TILEGX_IMM16_X1_HW0,
6270: BFD_RELOC_TILEGX_IMM16_X0_HW1,
6271: BFD_RELOC_TILEGX_IMM16_X1_HW1,
6272: BFD_RELOC_TILEGX_IMM16_X0_HW2,
6273: BFD_RELOC_TILEGX_IMM16_X1_HW2,
6274: BFD_RELOC_TILEGX_IMM16_X0_HW3,
6275: BFD_RELOC_TILEGX_IMM16_X1_HW3,
6276: BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST,
6277: BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST,
6278: BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST,
6279: BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST,
6280: BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST,
6281: BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST,
6282: BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL,
6283: BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL,
6284: BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL,
6285: BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL,
6286: BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL,
6287: BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL,
6288: BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL,
6289: BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL,
6290: BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL,
6291: BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL,
6292: BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL,
6293: BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL,
6294: BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL,
6295: BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL,
6296: BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT,
6297: BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT,
1.1.1.2 christos 6298: BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL,
6299: BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL,
6300: BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL,
6301: BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL,
6302: BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL,
6303: BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL,
1.1 christos 6304: BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT,
6305: BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT,
6306: BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT,
6307: BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT,
1.1.1.2 christos 6308: BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL,
6309: BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL,
1.1 christos 6310: BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD,
6311: BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD,
6312: BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE,
6313: BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE,
6314: BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE,
6315: BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE,
6316: BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE,
6317: BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE,
6318: BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD,
6319: BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD,
6320: BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD,
6321: BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD,
6322: BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE,
6323: BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE,
1.1.1.2 christos 6324: BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL,
6325: BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL,
6326: BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL,
6327: BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL,
6328: BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL,
6329: BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL,
1.1 christos 6330: BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE,
6331: BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE,
6332: BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE,
6333: BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE,
6334: BFD_RELOC_TILEGX_TLS_DTPMOD64,
6335: BFD_RELOC_TILEGX_TLS_DTPOFF64,
6336: BFD_RELOC_TILEGX_TLS_TPOFF64,
6337: BFD_RELOC_TILEGX_TLS_DTPMOD32,
6338: BFD_RELOC_TILEGX_TLS_DTPOFF32,
6339: BFD_RELOC_TILEGX_TLS_TPOFF32,
6340: BFD_RELOC_TILEGX_TLS_GD_CALL,
6341: BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD,
6342: BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD,
6343: BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD,
6344: BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD,
6345: BFD_RELOC_TILEGX_TLS_IE_LOAD,
6346: BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD,
6347: BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD,
6348: BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD,
6349: BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD,
6350:
6351: /* Adapteva EPIPHANY - 8 bit signed pc-relative displacement */
6352: BFD_RELOC_EPIPHANY_SIMM8,
6353:
6354: /* Adapteva EPIPHANY - 24 bit signed pc-relative displacement */
6355: BFD_RELOC_EPIPHANY_SIMM24,
6356:
6357: /* Adapteva EPIPHANY - 16 most-significant bits of absolute address */
6358: BFD_RELOC_EPIPHANY_HIGH,
6359:
6360: /* Adapteva EPIPHANY - 16 least-significant bits of absolute address */
6361: BFD_RELOC_EPIPHANY_LOW,
6362:
6363: /* Adapteva EPIPHANY - 11 bit signed number - add/sub immediate */
6364: BFD_RELOC_EPIPHANY_SIMM11,
6365:
6366: /* Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement) */
6367: BFD_RELOC_EPIPHANY_IMM11,
6368:
6369: /* Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction. */
6370: BFD_RELOC_EPIPHANY_IMM8,
1.1.1.2 christos 6371:
6372: /* Visium Relocations. */
6373: BFD_RELOC_VISIUM_HI16,
6374: BFD_RELOC_VISIUM_LO16,
6375: BFD_RELOC_VISIUM_IM16,
6376: BFD_RELOC_VISIUM_REL16,
6377: BFD_RELOC_VISIUM_HI16_PCREL,
6378: BFD_RELOC_VISIUM_LO16_PCREL,
6379: BFD_RELOC_VISIUM_IM16_PCREL,
1.1 christos 6380: BFD_RELOC_UNUSED };
1.1.1.2 christos 6381:
1.1 christos 6382: typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
6383: reloc_howto_type *bfd_reloc_type_lookup
6384: (bfd *abfd, bfd_reloc_code_real_type code);
6385: reloc_howto_type *bfd_reloc_name_lookup
6386: (bfd *abfd, const char *reloc_name);
6387:
6388: const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
6389:
6390: /* Extracted from syms.c. */
6391:
6392: typedef struct bfd_symbol
6393: {
6394: /* A pointer to the BFD which owns the symbol. This information
6395: is necessary so that a back end can work out what additional
6396: information (invisible to the application writer) is carried
6397: with the symbol.
6398:
6399: This field is *almost* redundant, since you can use section->owner
6400: instead, except that some symbols point to the global sections
6401: bfd_{abs,com,und}_section. This could be fixed by making
6402: these globals be per-bfd (or per-target-flavor). FIXME. */
6403: struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
6404:
6405: /* The text of the symbol. The name is left alone, and not copied; the
6406: application may not alter it. */
6407: const char *name;
6408:
6409: /* The value of the symbol. This really should be a union of a
6410: numeric value with a pointer, since some flags indicate that
6411: a pointer to another symbol is stored here. */
6412: symvalue value;
6413:
6414: /* Attributes of a symbol. */
6415: #define BSF_NO_FLAGS 0x00
6416:
6417: /* The symbol has local scope; <<static>> in <<C>>. The value
6418: is the offset into the section of the data. */
6419: #define BSF_LOCAL (1 << 0)
6420:
6421: /* The symbol has global scope; initialized data in <<C>>. The
6422: value is the offset into the section of the data. */
6423: #define BSF_GLOBAL (1 << 1)
6424:
6425: /* The symbol has global scope and is exported. The value is
6426: the offset into the section of the data. */
6427: #define BSF_EXPORT BSF_GLOBAL /* No real difference. */
6428:
6429: /* A normal C symbol would be one of:
1.1.1.3 ! christos 6430: <<BSF_LOCAL>>, <<BSF_UNDEFINED>> or <<BSF_GLOBAL>>. */
1.1 christos 6431:
6432: /* The symbol is a debugging record. The value has an arbitrary
6433: meaning, unless BSF_DEBUGGING_RELOC is also set. */
6434: #define BSF_DEBUGGING (1 << 2)
6435:
6436: /* The symbol denotes a function entry point. Used in ELF,
6437: perhaps others someday. */
6438: #define BSF_FUNCTION (1 << 3)
6439:
6440: /* Used by the linker. */
6441: #define BSF_KEEP (1 << 5)
1.1.1.3 ! christos 6442:
! 6443: /* An ELF common symbol. */
! 6444: #define BSF_ELF_COMMON (1 << 6)
1.1 christos 6445:
6446: /* A weak global symbol, overridable without warnings by
6447: a regular global symbol of the same name. */
6448: #define BSF_WEAK (1 << 7)
6449:
6450: /* This symbol was created to point to a section, e.g. ELF's
6451: STT_SECTION symbols. */
6452: #define BSF_SECTION_SYM (1 << 8)
6453:
6454: /* The symbol used to be a common symbol, but now it is
6455: allocated. */
6456: #define BSF_OLD_COMMON (1 << 9)
6457:
6458: /* In some files the type of a symbol sometimes alters its
6459: location in an output file - ie in coff a <<ISFCN>> symbol
6460: which is also <<C_EXT>> symbol appears where it was
6461: declared and not at the end of a section. This bit is set
6462: by the target BFD part to convey this information. */
6463: #define BSF_NOT_AT_END (1 << 10)
6464:
6465: /* Signal that the symbol is the label of constructor section. */
6466: #define BSF_CONSTRUCTOR (1 << 11)
6467:
6468: /* Signal that the symbol is a warning symbol. The name is a
6469: warning. The name of the next symbol is the one to warn about;
6470: if a reference is made to a symbol with the same name as the next
6471: symbol, a warning is issued by the linker. */
6472: #define BSF_WARNING (1 << 12)
6473:
6474: /* Signal that the symbol is indirect. This symbol is an indirect
6475: pointer to the symbol with the same name as the next symbol. */
6476: #define BSF_INDIRECT (1 << 13)
6477:
6478: /* BSF_FILE marks symbols that contain a file name. This is used
6479: for ELF STT_FILE symbols. */
6480: #define BSF_FILE (1 << 14)
6481:
6482: /* Symbol is from dynamic linking information. */
6483: #define BSF_DYNAMIC (1 << 15)
6484:
6485: /* The symbol denotes a data object. Used in ELF, and perhaps
6486: others someday. */
6487: #define BSF_OBJECT (1 << 16)
6488:
6489: /* This symbol is a debugging symbol. The value is the offset
6490: into the section of the data. BSF_DEBUGGING should be set
6491: as well. */
6492: #define BSF_DEBUGGING_RELOC (1 << 17)
6493:
6494: /* This symbol is thread local. Used in ELF. */
6495: #define BSF_THREAD_LOCAL (1 << 18)
6496:
6497: /* This symbol represents a complex relocation expression,
6498: with the expression tree serialized in the symbol name. */
6499: #define BSF_RELC (1 << 19)
6500:
6501: /* This symbol represents a signed complex relocation expression,
6502: with the expression tree serialized in the symbol name. */
6503: #define BSF_SRELC (1 << 20)
6504:
6505: /* This symbol was created by bfd_get_synthetic_symtab. */
6506: #define BSF_SYNTHETIC (1 << 21)
6507:
6508: /* This symbol is an indirect code object. Unrelated to BSF_INDIRECT.
6509: The dynamic linker will compute the value of this symbol by
6510: calling the function that it points to. BSF_FUNCTION must
6511: also be also set. */
6512: #define BSF_GNU_INDIRECT_FUNCTION (1 << 22)
6513: /* This symbol is a globally unique data object. The dynamic linker
6514: will make sure that in the entire process there is just one symbol
6515: with this name and type in use. BSF_OBJECT must also be set. */
6516: #define BSF_GNU_UNIQUE (1 << 23)
6517:
6518: flagword flags;
6519:
6520: /* A pointer to the section to which this symbol is
6521: relative. This will always be non NULL, there are special
6522: sections for undefined and absolute symbols. */
6523: struct bfd_section *section;
6524:
6525: /* Back end special data. */
6526: union
6527: {
6528: void *p;
6529: bfd_vma i;
6530: }
6531: udata;
6532: }
6533: asymbol;
6534:
6535: #define bfd_get_symtab_upper_bound(abfd) \
6536: BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
6537:
6538: bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
6539:
6540: bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
6541:
6542: #define bfd_is_local_label_name(abfd, name) \
6543: BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
6544:
6545: bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
6546:
6547: #define bfd_is_target_special_symbol(abfd, sym) \
6548: BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
6549:
6550: #define bfd_canonicalize_symtab(abfd, location) \
6551: BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
6552:
6553: bfd_boolean bfd_set_symtab
6554: (bfd *abfd, asymbol **location, unsigned int count);
6555:
6556: void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
6557:
6558: #define bfd_make_empty_symbol(abfd) \
6559: BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
6560:
6561: asymbol *_bfd_generic_make_empty_symbol (bfd *);
6562:
6563: #define bfd_make_debug_symbol(abfd,ptr,size) \
6564: BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
6565:
6566: int bfd_decode_symclass (asymbol *symbol);
6567:
6568: bfd_boolean bfd_is_undefined_symclass (int symclass);
6569:
6570: void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
6571:
6572: bfd_boolean bfd_copy_private_symbol_data
6573: (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
6574:
6575: #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
6576: BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
6577: (ibfd, isymbol, obfd, osymbol))
6578:
6579: /* Extracted from bfd.c. */
1.1.1.2 christos 6580:
1.1 christos 6581: enum bfd_direction
6582: {
6583: no_direction = 0,
6584: read_direction = 1,
6585: write_direction = 2,
6586: both_direction = 3
6587: };
6588:
1.1.1.2 christos 6589: enum bfd_plugin_format
6590: {
1.1.1.3 ! christos 6591: bfd_plugin_unknown = 0,
1.1.1.2 christos 6592: bfd_plugin_yes = 1,
6593: bfd_plugin_no = 2
6594: };
6595:
6596: struct bfd_build_id
6597: {
6598: bfd_size_type size;
6599: bfd_byte data[1];
6600: };
6601:
1.1 christos 6602: struct bfd
6603: {
6604: /* The filename the application opened the BFD with. */
6605: const char *filename;
6606:
6607: /* A pointer to the target jump table. */
6608: const struct bfd_target *xvec;
6609:
6610: /* The IOSTREAM, and corresponding IO vector that provide access
6611: to the file backing the BFD. */
6612: void *iostream;
6613: const struct bfd_iovec *iovec;
6614:
6615: /* The caching routines use these to maintain a
6616: least-recently-used list of BFDs. */
6617: struct bfd *lru_prev, *lru_next;
6618:
6619: /* When a file is closed by the caching routines, BFD retains
6620: state information on the file here... */
6621: ufile_ptr where;
6622:
6623: /* File modified time, if mtime_set is TRUE. */
6624: long mtime;
6625:
1.1.1.2 christos 6626: /* A unique identifier of the BFD */
6627: unsigned int id;
1.1 christos 6628:
6629: /* The format which belongs to the BFD. (object, core, etc.) */
1.1.1.2 christos 6630: ENUM_BITFIELD (bfd_format) format : 3;
1.1 christos 6631:
6632: /* The direction with which the BFD was opened. */
1.1.1.2 christos 6633: ENUM_BITFIELD (bfd_direction) direction : 2;
1.1 christos 6634:
6635: /* Format_specific flags. */
1.1.1.3 ! christos 6636: flagword flags : 20;
1.1 christos 6637:
6638: /* Values that may appear in the flags field of a BFD. These also
6639: appear in the object_flags field of the bfd_target structure, where
6640: they indicate the set of flags used by that backend (not all flags
6641: are meaningful for all object file formats) (FIXME: at the moment,
6642: the object_flags values have mostly just been copied from backend
6643: to another, and are not necessarily correct). */
6644:
6645: #define BFD_NO_FLAGS 0x00
6646:
6647: /* BFD contains relocation entries. */
6648: #define HAS_RELOC 0x01
6649:
6650: /* BFD is directly executable. */
6651: #define EXEC_P 0x02
6652:
6653: /* BFD has line number information (basically used for F_LNNO in a
6654: COFF header). */
6655: #define HAS_LINENO 0x04
6656:
6657: /* BFD has debugging information. */
6658: #define HAS_DEBUG 0x08
6659:
6660: /* BFD has symbols. */
6661: #define HAS_SYMS 0x10
6662:
6663: /* BFD has local symbols (basically used for F_LSYMS in a COFF
6664: header). */
6665: #define HAS_LOCALS 0x20
6666:
6667: /* BFD is a dynamic object. */
6668: #define DYNAMIC 0x40
6669:
6670: /* Text section is write protected (if D_PAGED is not set, this is
6671: like an a.out NMAGIC file) (the linker sets this by default, but
6672: clears it for -r or -N). */
6673: #define WP_TEXT 0x80
6674:
6675: /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
6676: linker sets this by default, but clears it for -r or -n or -N). */
6677: #define D_PAGED 0x100
6678:
6679: /* BFD is relaxable (this means that bfd_relax_section may be able to
6680: do something) (sometimes bfd_relax_section can do something even if
6681: this is not set). */
6682: #define BFD_IS_RELAXABLE 0x200
6683:
6684: /* This may be set before writing out a BFD to request using a
6685: traditional format. For example, this is used to request that when
6686: writing out an a.out object the symbols not be hashed to eliminate
6687: duplicates. */
6688: #define BFD_TRADITIONAL_FORMAT 0x400
6689:
6690: /* This flag indicates that the BFD contents are actually cached
6691: in memory. If this is set, iostream points to a bfd_in_memory
6692: struct. */
6693: #define BFD_IN_MEMORY 0x800
6694:
6695: /* This BFD has been created by the linker and doesn't correspond
6696: to any input file. */
1.1.1.2 christos 6697: #define BFD_LINKER_CREATED 0x1000
1.1 christos 6698:
6699: /* This may be set before writing out a BFD to request that it
6700: be written using values for UIDs, GIDs, timestamps, etc. that
6701: will be consistent from run to run. */
1.1.1.2 christos 6702: #define BFD_DETERMINISTIC_OUTPUT 0x2000
1.1 christos 6703:
6704: /* Compress sections in this BFD. */
1.1.1.2 christos 6705: #define BFD_COMPRESS 0x4000
1.1 christos 6706:
6707: /* Decompress sections in this BFD. */
1.1.1.2 christos 6708: #define BFD_DECOMPRESS 0x8000
1.1 christos 6709:
6710: /* BFD is a dummy, for plugins. */
1.1.1.2 christos 6711: #define BFD_PLUGIN 0x10000
6712:
6713: /* Compress sections in this BFD with SHF_COMPRESSED from gABI. */
6714: #define BFD_COMPRESS_GABI 0x20000
1.1 christos 6715:
1.1.1.3 ! christos 6716: /* Convert ELF common symbol type to STT_COMMON or STT_OBJECT in this
! 6717: BFD. */
! 6718: #define BFD_CONVERT_ELF_COMMON 0x40000
! 6719:
! 6720: /* Use the ELF STT_COMMON type in this BFD. */
! 6721: #define BFD_USE_ELF_STT_COMMON 0x80000
! 6722:
1.1 christos 6723: /* Flags bits to be saved in bfd_preserve_save. */
6724: #define BFD_FLAGS_SAVED \
1.1.1.2 christos 6725: (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN \
1.1.1.3 ! christos 6726: | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
1.1 christos 6727:
6728: /* Flags bits which are for BFD use only. */
6729: #define BFD_FLAGS_FOR_BFD_USE_MASK \
6730: (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
1.1.1.2 christos 6731: | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
1.1.1.3 ! christos 6732: | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
1.1.1.2 christos 6733:
6734: /* Is the file descriptor being cached? That is, can it be closed as
6735: needed, and re-opened when accessed later? */
6736: unsigned int cacheable : 1;
6737:
6738: /* Marks whether there was a default target specified when the
6739: BFD was opened. This is used to select which matching algorithm
6740: to use to choose the back end. */
6741: unsigned int target_defaulted : 1;
6742:
6743: /* ... and here: (``once'' means at least once). */
6744: unsigned int opened_once : 1;
6745:
6746: /* Set if we have a locally maintained mtime value, rather than
6747: getting it from the file each time. */
6748: unsigned int mtime_set : 1;
6749:
6750: /* Flag set if symbols from this BFD should not be exported. */
6751: unsigned int no_export : 1;
6752:
6753: /* Remember when output has begun, to stop strange things
6754: from happening. */
6755: unsigned int output_has_begun : 1;
6756:
6757: /* Have archive map. */
6758: unsigned int has_armap : 1;
6759:
6760: /* Set if this is a thin archive. */
6761: unsigned int is_thin_archive : 1;
6762:
6763: /* Set if only required symbols should be added in the link hash table for
6764: this object. Used by VMS linkers. */
6765: unsigned int selective_search : 1;
6766:
6767: /* Set if this is the linker output BFD. */
6768: unsigned int is_linker_output : 1;
6769:
6770: /* Set if this is the linker input BFD. */
6771: unsigned int is_linker_input : 1;
6772:
6773: /* If this is an input for a compiler plug-in library. */
6774: ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2;
6775:
6776: /* Set if this is a plugin output file. */
6777: unsigned int lto_output : 1;
6778:
6779: /* Set to dummy BFD created when claimed by a compiler plug-in
6780: library. */
6781: bfd *plugin_dummy_bfd;
1.1 christos 6782:
6783: /* Currently my_archive is tested before adding origin to
6784: anything. I believe that this can become always an add of
6785: origin, with origin set to 0 for non archive files. */
6786: ufile_ptr origin;
6787:
6788: /* The origin in the archive of the proxy entry. This will
6789: normally be the same as origin, except for thin archives,
6790: when it will contain the current offset of the proxy in the
6791: thin archive rather than the offset of the bfd in its actual
6792: container. */
6793: ufile_ptr proxy_origin;
6794:
6795: /* A hash table for section names. */
6796: struct bfd_hash_table section_htab;
6797:
6798: /* Pointer to linked list of sections. */
6799: struct bfd_section *sections;
6800:
6801: /* The last section on the section list. */
6802: struct bfd_section *section_last;
6803:
6804: /* The number of sections. */
6805: unsigned int section_count;
6806:
1.1.1.2 christos 6807: /* A field used by _bfd_generic_link_add_archive_symbols. This will
6808: be used only for archive elements. */
6809: int archive_pass;
6810:
1.1 christos 6811: /* Stuff only useful for object files:
6812: The start address. */
6813: bfd_vma start_address;
6814:
6815: /* Symbol table for output BFD (with symcount entries).
6816: Also used by the linker to cache input BFD symbols. */
6817: struct bfd_symbol **outsymbols;
6818:
1.1.1.2 christos 6819: /* Used for input and output. */
6820: unsigned int symcount;
6821:
1.1 christos 6822: /* Used for slurped dynamic symbol tables. */
6823: unsigned int dynsymcount;
6824:
6825: /* Pointer to structure which contains architecture information. */
6826: const struct bfd_arch_info *arch_info;
6827:
6828: /* Stuff only useful for archives. */
6829: void *arelt_data;
6830: struct bfd *my_archive; /* The containing archive BFD. */
6831: struct bfd *archive_next; /* The next BFD in the archive. */
6832: struct bfd *archive_head; /* The first BFD in the archive. */
6833: struct bfd *nested_archives; /* List of nested archive in a flattened
6834: thin archive. */
6835:
1.1.1.2 christos 6836: union {
6837: /* For input BFDs, a chain of BFDs involved in a link. */
6838: struct bfd *next;
6839: /* For output BFD, the linker hash table. */
6840: struct bfd_link_hash_table *hash;
6841: } link;
1.1 christos 6842:
6843: /* Used by the back end to hold private data. */
6844: union
6845: {
6846: struct aout_data_struct *aout_data;
6847: struct artdata *aout_ar_data;
6848: struct _oasys_data *oasys_obj_data;
6849: struct _oasys_ar_data *oasys_ar_data;
6850: struct coff_tdata *coff_obj_data;
6851: struct pe_tdata *pe_obj_data;
6852: struct xcoff_tdata *xcoff_obj_data;
6853: struct ecoff_tdata *ecoff_obj_data;
6854: struct ieee_data_struct *ieee_data;
6855: struct ieee_ar_data_struct *ieee_ar_data;
6856: struct srec_data_struct *srec_data;
6857: struct verilog_data_struct *verilog_data;
6858: struct ihex_data_struct *ihex_data;
6859: struct tekhex_data_struct *tekhex_data;
6860: struct elf_obj_tdata *elf_obj_data;
6861: struct nlm_obj_tdata *nlm_obj_data;
6862: struct bout_data_struct *bout_data;
6863: struct mmo_data_struct *mmo_data;
6864: struct sun_core_struct *sun_core_data;
6865: struct sco5_core_struct *sco5_core_data;
6866: struct trad_core_struct *trad_core_data;
6867: struct som_data_struct *som_data;
6868: struct hpux_core_struct *hpux_core_data;
6869: struct hppabsd_core_struct *hppabsd_core_data;
6870: struct sgi_core_struct *sgi_core_data;
6871: struct lynx_core_struct *lynx_core_data;
6872: struct osf_core_struct *osf_core_data;
6873: struct cisco_core_struct *cisco_core_data;
6874: struct versados_data_struct *versados_data;
6875: struct netbsd_core_struct *netbsd_core_data;
6876: struct mach_o_data_struct *mach_o_data;
6877: struct mach_o_fat_data_struct *mach_o_fat_data;
6878: struct plugin_data_struct *plugin_data;
6879: struct bfd_pef_data_struct *pef_data;
6880: struct bfd_pef_xlib_data_struct *pef_xlib_data;
6881: struct bfd_sym_data_struct *sym_data;
6882: void *any;
6883: }
6884: tdata;
6885:
6886: /* Used by the application to hold private data. */
6887: void *usrdata;
6888:
6889: /* Where all the allocated stuff under this BFD goes. This is a
6890: struct objalloc *, but we use void * to avoid requiring the inclusion
6891: of objalloc.h. */
6892: void *memory;
6893:
1.1.1.2 christos 6894: /* For input BFDs, the build ID, if the object has one. */
6895: const struct bfd_build_id *build_id;
6896: };
1.1 christos 6897:
1.1.1.2 christos 6898: /* See note beside bfd_set_section_userdata. */
6899: static inline bfd_boolean
6900: bfd_set_cacheable (bfd * abfd, bfd_boolean val)
6901: {
6902: abfd->cacheable = val;
6903: return TRUE;
6904: }
1.1 christos 6905:
6906:
6907: typedef enum bfd_error
6908: {
6909: bfd_error_no_error = 0,
6910: bfd_error_system_call,
6911: bfd_error_invalid_target,
6912: bfd_error_wrong_format,
6913: bfd_error_wrong_object_format,
6914: bfd_error_invalid_operation,
6915: bfd_error_no_memory,
6916: bfd_error_no_symbols,
6917: bfd_error_no_armap,
6918: bfd_error_no_more_archived_files,
6919: bfd_error_malformed_archive,
1.1.1.2 christos 6920: bfd_error_missing_dso,
1.1 christos 6921: bfd_error_file_not_recognized,
6922: bfd_error_file_ambiguously_recognized,
6923: bfd_error_no_contents,
6924: bfd_error_nonrepresentable_section,
6925: bfd_error_no_debug_section,
6926: bfd_error_bad_value,
6927: bfd_error_file_truncated,
6928: bfd_error_file_too_big,
6929: bfd_error_on_input,
6930: bfd_error_invalid_error_code
6931: }
6932: bfd_error_type;
6933:
6934: bfd_error_type bfd_get_error (void);
6935:
6936: void bfd_set_error (bfd_error_type error_tag, ...);
6937:
6938: const char *bfd_errmsg (bfd_error_type error_tag);
6939:
6940: void bfd_perror (const char *message);
6941:
1.1.1.2 christos 6942:
1.1 christos 6943: typedef void (*bfd_error_handler_type) (const char *, ...);
6944:
6945: bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
6946:
6947: void bfd_set_error_program_name (const char *);
6948:
6949: bfd_error_handler_type bfd_get_error_handler (void);
6950:
1.1.1.2 christos 6951:
1.1 christos 6952: typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
6953: const char *bfd_version,
6954: const char *bfd_file,
6955: int bfd_line);
6956:
6957: bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
6958:
6959: bfd_assert_handler_type bfd_get_assert_handler (void);
6960:
6961: long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
6962:
6963: long bfd_canonicalize_reloc
6964: (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
6965:
6966: void bfd_set_reloc
6967: (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
6968:
6969: bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
6970:
6971: int bfd_get_arch_size (bfd *abfd);
6972:
6973: int bfd_get_sign_extend_vma (bfd *abfd);
6974:
6975: bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
6976:
6977: unsigned int bfd_get_gp_size (bfd *abfd);
6978:
6979: void bfd_set_gp_size (bfd *abfd, unsigned int i);
6980:
6981: bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
6982:
6983: bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
6984:
6985: #define bfd_copy_private_header_data(ibfd, obfd) \
6986: BFD_SEND (obfd, _bfd_copy_private_header_data, \
6987: (ibfd, obfd))
6988: bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
6989:
6990: #define bfd_copy_private_bfd_data(ibfd, obfd) \
6991: BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
6992: (ibfd, obfd))
6993: bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
6994:
6995: #define bfd_merge_private_bfd_data(ibfd, obfd) \
6996: BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
6997: (ibfd, obfd))
6998: bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
6999:
7000: #define bfd_set_private_flags(abfd, flags) \
7001: BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
7002: #define bfd_sizeof_headers(abfd, info) \
7003: BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
7004:
7005: #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
7006: BFD_SEND (abfd, _bfd_find_nearest_line, \
1.1.1.2 christos 7007: (abfd, syms, sec, off, file, func, line, NULL))
1.1 christos 7008:
7009: #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
7010: line, disc) \
1.1.1.2 christos 7011: BFD_SEND (abfd, _bfd_find_nearest_line, \
7012: (abfd, syms, sec, off, file, func, line, disc))
1.1 christos 7013:
7014: #define bfd_find_line(abfd, syms, sym, file, line) \
7015: BFD_SEND (abfd, _bfd_find_line, \
7016: (abfd, syms, sym, file, line))
7017:
7018: #define bfd_find_inliner_info(abfd, file, func, line) \
7019: BFD_SEND (abfd, _bfd_find_inliner_info, \
7020: (abfd, file, func, line))
7021:
7022: #define bfd_debug_info_start(abfd) \
7023: BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
7024:
7025: #define bfd_debug_info_end(abfd) \
7026: BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
7027:
7028: #define bfd_debug_info_accumulate(abfd, section) \
7029: BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
7030:
7031: #define bfd_stat_arch_elt(abfd, stat) \
7032: BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
7033:
7034: #define bfd_update_armap_timestamp(abfd) \
7035: BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
7036:
7037: #define bfd_set_arch_mach(abfd, arch, mach)\
7038: BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
7039:
7040: #define bfd_relax_section(abfd, section, link_info, again) \
7041: BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
7042:
7043: #define bfd_gc_sections(abfd, link_info) \
7044: BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
7045:
7046: #define bfd_lookup_section_flags(link_info, flag_info, section) \
7047: BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
7048:
7049: #define bfd_merge_sections(abfd, link_info) \
7050: BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
7051:
7052: #define bfd_is_group_section(abfd, sec) \
7053: BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
7054:
7055: #define bfd_discard_group(abfd, sec) \
7056: BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
7057:
7058: #define bfd_link_hash_table_create(abfd) \
7059: BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
7060:
7061: #define bfd_link_add_symbols(abfd, info) \
7062: BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
7063:
7064: #define bfd_link_just_syms(abfd, sec, info) \
7065: BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
7066:
7067: #define bfd_final_link(abfd, info) \
7068: BFD_SEND (abfd, _bfd_final_link, (abfd, info))
7069:
7070: #define bfd_free_cached_info(abfd) \
7071: BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
7072:
7073: #define bfd_get_dynamic_symtab_upper_bound(abfd) \
7074: BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
7075:
7076: #define bfd_print_private_bfd_data(abfd, file)\
7077: BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
7078:
7079: #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
7080: BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
7081:
7082: #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
7083: BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
7084: dyncount, dynsyms, ret))
7085:
7086: #define bfd_get_dynamic_reloc_upper_bound(abfd) \
7087: BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
7088:
7089: #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
7090: BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
7091:
7092: extern bfd_byte *bfd_get_relocated_section_contents
7093: (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
7094: bfd_boolean, asymbol **);
7095:
7096: bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
7097:
7098: bfd_vma bfd_emul_get_maxpagesize (const char *);
7099:
7100: void bfd_emul_set_maxpagesize (const char *, bfd_vma);
7101:
7102: bfd_vma bfd_emul_get_commonpagesize (const char *);
7103:
7104: void bfd_emul_set_commonpagesize (const char *, bfd_vma);
7105:
7106: char *bfd_demangle (bfd *, const char *, int);
7107:
1.1.1.2 christos 7108: void bfd_update_compression_header
7109: (bfd *abfd, bfd_byte *contents, asection *sec);
7110:
7111: bfd_boolean bfd_check_compression_header
7112: (bfd *abfd, bfd_byte *contents, asection *sec,
7113: bfd_size_type *uncompressed_size);
7114:
7115: int bfd_get_compression_header_size (bfd *abfd, asection *sec);
7116:
7117: bfd_size_type bfd_convert_section_size
7118: (bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size);
7119:
7120: bfd_boolean bfd_convert_section_contents
7121: (bfd *ibfd, asection *isec, bfd *obfd,
7122: bfd_byte **ptr, bfd_size_type *ptr_size);
7123:
1.1 christos 7124: /* Extracted from archive.c. */
7125: symindex bfd_get_next_mapent
7126: (bfd *abfd, symindex previous, carsym **sym);
7127:
7128: bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
7129:
7130: bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
7131:
7132: /* Extracted from corefile.c. */
7133: const char *bfd_core_file_failing_command (bfd *abfd);
7134:
7135: int bfd_core_file_failing_signal (bfd *abfd);
7136:
7137: int bfd_core_file_pid (bfd *abfd);
7138:
7139: bfd_boolean core_file_matches_executable_p
7140: (bfd *core_bfd, bfd *exec_bfd);
7141:
7142: bfd_boolean generic_core_file_matches_executable_p
7143: (bfd *core_bfd, bfd *exec_bfd);
7144:
7145: /* Extracted from targets.c. */
7146: #define BFD_SEND(bfd, message, arglist) \
7147: ((*((bfd)->xvec->message)) arglist)
7148:
7149: #ifdef DEBUG_BFD_SEND
7150: #undef BFD_SEND
7151: #define BFD_SEND(bfd, message, arglist) \
7152: (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
7153: ((*((bfd)->xvec->message)) arglist) : \
7154: (bfd_assert (__FILE__,__LINE__), NULL))
7155: #endif
7156: #define BFD_SEND_FMT(bfd, message, arglist) \
7157: (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
7158:
7159: #ifdef DEBUG_BFD_SEND
7160: #undef BFD_SEND_FMT
7161: #define BFD_SEND_FMT(bfd, message, arglist) \
7162: (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
7163: (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
7164: (bfd_assert (__FILE__,__LINE__), NULL))
7165: #endif
7166:
7167: enum bfd_flavour
7168: {
1.1.1.2 christos 7169: /* N.B. Update bfd_flavour_name if you change this. */
1.1 christos 7170: bfd_target_unknown_flavour,
7171: bfd_target_aout_flavour,
7172: bfd_target_coff_flavour,
7173: bfd_target_ecoff_flavour,
7174: bfd_target_xcoff_flavour,
7175: bfd_target_elf_flavour,
7176: bfd_target_ieee_flavour,
7177: bfd_target_nlm_flavour,
7178: bfd_target_oasys_flavour,
7179: bfd_target_tekhex_flavour,
7180: bfd_target_srec_flavour,
7181: bfd_target_verilog_flavour,
7182: bfd_target_ihex_flavour,
7183: bfd_target_som_flavour,
7184: bfd_target_os9k_flavour,
7185: bfd_target_versados_flavour,
7186: bfd_target_msdos_flavour,
7187: bfd_target_ovax_flavour,
7188: bfd_target_evax_flavour,
7189: bfd_target_mmo_flavour,
7190: bfd_target_mach_o_flavour,
7191: bfd_target_pef_flavour,
7192: bfd_target_pef_xlib_flavour,
7193: bfd_target_sym_flavour
7194: };
7195:
7196: enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
7197:
7198: /* Forward declaration. */
7199: typedef struct bfd_link_info _bfd_link_info;
7200:
7201: /* Forward declaration. */
7202: typedef struct flag_info flag_info;
7203:
7204: typedef struct bfd_target
7205: {
7206: /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
7207: char *name;
7208:
7209: /* The "flavour" of a back end is a general indication about
7210: the contents of a file. */
7211: enum bfd_flavour flavour;
7212:
7213: /* The order of bytes within the data area of a file. */
7214: enum bfd_endian byteorder;
7215:
7216: /* The order of bytes within the header parts of a file. */
7217: enum bfd_endian header_byteorder;
7218:
7219: /* A mask of all the flags which an executable may have set -
7220: from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
7221: flagword object_flags;
7222:
7223: /* A mask of all the flags which a section may have set - from
7224: the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
7225: flagword section_flags;
7226:
7227: /* The character normally found at the front of a symbol.
7228: (if any), perhaps `_'. */
7229: char symbol_leading_char;
7230:
7231: /* The pad character for file names within an archive header. */
7232: char ar_pad_char;
7233:
7234: /* The maximum number of characters in an archive header. */
7235: unsigned char ar_max_namelen;
7236:
7237: /* How well this target matches, used to select between various
7238: possible targets when more than one target matches. */
7239: unsigned char match_priority;
7240:
7241: /* Entries for byte swapping for data. These are different from the
7242: other entry points, since they don't take a BFD as the first argument.
7243: Certain other handlers could do the same. */
7244: bfd_uint64_t (*bfd_getx64) (const void *);
7245: bfd_int64_t (*bfd_getx_signed_64) (const void *);
7246: void (*bfd_putx64) (bfd_uint64_t, void *);
7247: bfd_vma (*bfd_getx32) (const void *);
7248: bfd_signed_vma (*bfd_getx_signed_32) (const void *);
7249: void (*bfd_putx32) (bfd_vma, void *);
7250: bfd_vma (*bfd_getx16) (const void *);
7251: bfd_signed_vma (*bfd_getx_signed_16) (const void *);
7252: void (*bfd_putx16) (bfd_vma, void *);
7253:
7254: /* Byte swapping for the headers. */
7255: bfd_uint64_t (*bfd_h_getx64) (const void *);
7256: bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
7257: void (*bfd_h_putx64) (bfd_uint64_t, void *);
7258: bfd_vma (*bfd_h_getx32) (const void *);
7259: bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
7260: void (*bfd_h_putx32) (bfd_vma, void *);
7261: bfd_vma (*bfd_h_getx16) (const void *);
7262: bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
7263: void (*bfd_h_putx16) (bfd_vma, void *);
7264:
7265: /* Format dependent routines: these are vectors of entry points
7266: within the target vector structure, one for each format to check. */
7267:
7268: /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
7269: const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
7270:
7271: /* Set the format of a file being written. */
7272: bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
7273:
7274: /* Write cached information into a file being written, at <<bfd_close>>. */
7275: bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
7276:
7277:
7278: /* Generic entry points. */
7279: #define BFD_JUMP_TABLE_GENERIC(NAME) \
7280: NAME##_close_and_cleanup, \
7281: NAME##_bfd_free_cached_info, \
7282: NAME##_new_section_hook, \
7283: NAME##_get_section_contents, \
7284: NAME##_get_section_contents_in_window
7285:
7286: /* Called when the BFD is being closed to do any necessary cleanup. */
7287: bfd_boolean (*_close_and_cleanup) (bfd *);
7288: /* Ask the BFD to free all cached information. */
7289: bfd_boolean (*_bfd_free_cached_info) (bfd *);
7290: /* Called when a new section is created. */
7291: bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
7292: /* Read the contents of a section. */
7293: bfd_boolean (*_bfd_get_section_contents)
7294: (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
7295: bfd_boolean (*_bfd_get_section_contents_in_window)
7296: (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
7297:
7298: /* Entry points to copy private data. */
7299: #define BFD_JUMP_TABLE_COPY(NAME) \
7300: NAME##_bfd_copy_private_bfd_data, \
7301: NAME##_bfd_merge_private_bfd_data, \
7302: _bfd_generic_init_private_section_data, \
7303: NAME##_bfd_copy_private_section_data, \
7304: NAME##_bfd_copy_private_symbol_data, \
7305: NAME##_bfd_copy_private_header_data, \
7306: NAME##_bfd_set_private_flags, \
7307: NAME##_bfd_print_private_bfd_data
7308:
7309: /* Called to copy BFD general private data from one object file
7310: to another. */
7311: bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
7312: /* Called to merge BFD general private data from one object file
7313: to a common output file when linking. */
7314: bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
7315: /* Called to initialize BFD private section data from one object file
7316: to another. */
7317: #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
7318: BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
7319: bfd_boolean (*_bfd_init_private_section_data)
7320: (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
7321: /* Called to copy BFD private section data from one object file
7322: to another. */
7323: bfd_boolean (*_bfd_copy_private_section_data)
7324: (bfd *, sec_ptr, bfd *, sec_ptr);
7325: /* Called to copy BFD private symbol data from one symbol
7326: to another. */
7327: bfd_boolean (*_bfd_copy_private_symbol_data)
7328: (bfd *, asymbol *, bfd *, asymbol *);
7329: /* Called to copy BFD private header data from one object file
7330: to another. */
7331: bfd_boolean (*_bfd_copy_private_header_data)
7332: (bfd *, bfd *);
7333: /* Called to set private backend flags. */
7334: bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
7335:
7336: /* Called to print private BFD data. */
7337: bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
7338:
7339: /* Core file entry points. */
7340: #define BFD_JUMP_TABLE_CORE(NAME) \
7341: NAME##_core_file_failing_command, \
7342: NAME##_core_file_failing_signal, \
7343: NAME##_core_file_matches_executable_p, \
7344: NAME##_core_file_pid
7345:
7346: char * (*_core_file_failing_command) (bfd *);
7347: int (*_core_file_failing_signal) (bfd *);
7348: bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
7349: int (*_core_file_pid) (bfd *);
7350:
7351: /* Archive entry points. */
7352: #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
7353: NAME##_slurp_armap, \
7354: NAME##_slurp_extended_name_table, \
7355: NAME##_construct_extended_name_table, \
7356: NAME##_truncate_arname, \
7357: NAME##_write_armap, \
7358: NAME##_read_ar_hdr, \
7359: NAME##_write_ar_hdr, \
7360: NAME##_openr_next_archived_file, \
7361: NAME##_get_elt_at_index, \
7362: NAME##_generic_stat_arch_elt, \
7363: NAME##_update_armap_timestamp
7364:
7365: bfd_boolean (*_bfd_slurp_armap) (bfd *);
7366: bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
7367: bfd_boolean (*_bfd_construct_extended_name_table)
7368: (bfd *, char **, bfd_size_type *, const char **);
7369: void (*_bfd_truncate_arname) (bfd *, const char *, char *);
7370: bfd_boolean (*write_armap)
7371: (bfd *, unsigned int, struct orl *, unsigned int, int);
7372: void * (*_bfd_read_ar_hdr_fn) (bfd *);
7373: bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
7374: bfd * (*openr_next_archived_file) (bfd *, bfd *);
7375: #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
7376: bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
7377: int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
7378: bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
7379:
7380: /* Entry points used for symbols. */
7381: #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
7382: NAME##_get_symtab_upper_bound, \
7383: NAME##_canonicalize_symtab, \
7384: NAME##_make_empty_symbol, \
7385: NAME##_print_symbol, \
7386: NAME##_get_symbol_info, \
1.1.1.2 christos 7387: NAME##_get_symbol_version_string, \
1.1 christos 7388: NAME##_bfd_is_local_label_name, \
7389: NAME##_bfd_is_target_special_symbol, \
7390: NAME##_get_lineno, \
7391: NAME##_find_nearest_line, \
1.1.1.2 christos 7392: NAME##_find_line, \
1.1 christos 7393: NAME##_find_inliner_info, \
7394: NAME##_bfd_make_debug_symbol, \
7395: NAME##_read_minisymbols, \
7396: NAME##_minisymbol_to_symbol
7397:
7398: long (*_bfd_get_symtab_upper_bound) (bfd *);
7399: long (*_bfd_canonicalize_symtab)
7400: (bfd *, struct bfd_symbol **);
7401: struct bfd_symbol *
7402: (*_bfd_make_empty_symbol) (bfd *);
7403: void (*_bfd_print_symbol)
7404: (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
7405: #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
7406: void (*_bfd_get_symbol_info)
7407: (bfd *, struct bfd_symbol *, symbol_info *);
7408: #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
1.1.1.2 christos 7409: const char *(*_bfd_get_symbol_version_string)
7410: (bfd *, struct bfd_symbol *, bfd_boolean *);
7411: #define bfd_get_symbol_version_string(b,s,h) BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))
1.1 christos 7412: bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
7413: bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
7414: alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
7415: bfd_boolean (*_bfd_find_nearest_line)
1.1.1.2 christos 7416: (bfd *, struct bfd_symbol **, struct bfd_section *, bfd_vma,
1.1 christos 7417: const char **, const char **, unsigned int *, unsigned int *);
7418: bfd_boolean (*_bfd_find_line)
7419: (bfd *, struct bfd_symbol **, struct bfd_symbol *,
7420: const char **, unsigned int *);
7421: bfd_boolean (*_bfd_find_inliner_info)
7422: (bfd *, const char **, const char **, unsigned int *);
7423: /* Back-door to allow format-aware applications to create debug symbols
7424: while using BFD for everything else. Currently used by the assembler
7425: when creating COFF files. */
7426: asymbol * (*_bfd_make_debug_symbol)
7427: (bfd *, void *, unsigned long size);
7428: #define bfd_read_minisymbols(b, d, m, s) \
7429: BFD_SEND (b, _read_minisymbols, (b, d, m, s))
7430: long (*_read_minisymbols)
7431: (bfd *, bfd_boolean, void **, unsigned int *);
7432: #define bfd_minisymbol_to_symbol(b, d, m, f) \
7433: BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
7434: asymbol * (*_minisymbol_to_symbol)
7435: (bfd *, bfd_boolean, const void *, asymbol *);
7436:
7437: /* Routines for relocs. */
7438: #define BFD_JUMP_TABLE_RELOCS(NAME) \
7439: NAME##_get_reloc_upper_bound, \
7440: NAME##_canonicalize_reloc, \
7441: NAME##_bfd_reloc_type_lookup, \
7442: NAME##_bfd_reloc_name_lookup
7443:
7444: long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
7445: long (*_bfd_canonicalize_reloc)
7446: (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
7447: /* See documentation on reloc types. */
7448: reloc_howto_type *
7449: (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
7450: reloc_howto_type *
7451: (*reloc_name_lookup) (bfd *, const char *);
7452:
7453:
7454: /* Routines used when writing an object file. */
7455: #define BFD_JUMP_TABLE_WRITE(NAME) \
7456: NAME##_set_arch_mach, \
7457: NAME##_set_section_contents
7458:
7459: bfd_boolean (*_bfd_set_arch_mach)
7460: (bfd *, enum bfd_architecture, unsigned long);
7461: bfd_boolean (*_bfd_set_section_contents)
7462: (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
7463:
7464: /* Routines used by the linker. */
7465: #define BFD_JUMP_TABLE_LINK(NAME) \
7466: NAME##_sizeof_headers, \
7467: NAME##_bfd_get_relocated_section_contents, \
7468: NAME##_bfd_relax_section, \
7469: NAME##_bfd_link_hash_table_create, \
7470: NAME##_bfd_link_add_symbols, \
7471: NAME##_bfd_link_just_syms, \
7472: NAME##_bfd_copy_link_hash_symbol_type, \
7473: NAME##_bfd_final_link, \
7474: NAME##_bfd_link_split_section, \
1.1.1.3 ! christos 7475: NAME##_bfd_link_check_relocs, \
1.1 christos 7476: NAME##_bfd_gc_sections, \
7477: NAME##_bfd_lookup_section_flags, \
7478: NAME##_bfd_merge_sections, \
7479: NAME##_bfd_is_group_section, \
7480: NAME##_bfd_discard_group, \
7481: NAME##_section_already_linked, \
7482: NAME##_bfd_define_common_symbol
7483:
7484: int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
7485: bfd_byte * (*_bfd_get_relocated_section_contents)
7486: (bfd *, struct bfd_link_info *, struct bfd_link_order *,
7487: bfd_byte *, bfd_boolean, struct bfd_symbol **);
7488:
7489: bfd_boolean (*_bfd_relax_section)
7490: (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
7491:
7492: /* Create a hash table for the linker. Different backends store
7493: different information in this table. */
7494: struct bfd_link_hash_table *
7495: (*_bfd_link_hash_table_create) (bfd *);
7496:
7497: /* Add symbols from this object file into the hash table. */
7498: bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
7499:
7500: /* Indicate that we are only retrieving symbol values from this section. */
7501: void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
7502:
1.1.1.2 christos 7503: /* Copy the symbol type and other attributes for a linker script
7504: assignment of one symbol to another. */
1.1 christos 7505: #define bfd_copy_link_hash_symbol_type(b, t, f) \
7506: BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
7507: void (*_bfd_copy_link_hash_symbol_type)
7508: (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
7509:
7510: /* Do a link based on the link_order structures attached to each
7511: section of the BFD. */
7512: bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
7513:
7514: /* Should this section be split up into smaller pieces during linking. */
7515: bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
7516:
1.1.1.3 ! christos 7517: /* Check the relocations in the bfd for validity. */
! 7518: bfd_boolean (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
! 7519:
1.1 christos 7520: /* Remove sections that are not referenced from the output. */
7521: bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
7522:
7523: /* Sets the bitmask of allowed and disallowed section flags. */
7524: bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
7525: struct flag_info *,
7526: asection *);
7527:
7528: /* Attempt to merge SEC_MERGE sections. */
7529: bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
7530:
7531: /* Is this section a member of a group? */
7532: bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
7533:
7534: /* Discard members of a group. */
7535: bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
7536:
7537: /* Check if SEC has been already linked during a reloceatable or
7538: final link. */
7539: bfd_boolean (*_section_already_linked) (bfd *, asection *,
7540: struct bfd_link_info *);
7541:
7542: /* Define a common symbol. */
7543: bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
7544: struct bfd_link_hash_entry *);
7545:
7546: /* Routines to handle dynamic symbols and relocs. */
7547: #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
7548: NAME##_get_dynamic_symtab_upper_bound, \
7549: NAME##_canonicalize_dynamic_symtab, \
7550: NAME##_get_synthetic_symtab, \
7551: NAME##_get_dynamic_reloc_upper_bound, \
7552: NAME##_canonicalize_dynamic_reloc
7553:
7554: /* Get the amount of memory required to hold the dynamic symbols. */
7555: long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
7556: /* Read in the dynamic symbols. */
7557: long (*_bfd_canonicalize_dynamic_symtab)
7558: (bfd *, struct bfd_symbol **);
7559: /* Create synthetized symbols. */
7560: long (*_bfd_get_synthetic_symtab)
7561: (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
7562: struct bfd_symbol **);
7563: /* Get the amount of memory required to hold the dynamic relocs. */
7564: long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
7565: /* Read in the dynamic relocs. */
7566: long (*_bfd_canonicalize_dynamic_reloc)
7567: (bfd *, arelent **, struct bfd_symbol **);
7568:
7569: /* Opposite endian version of this target. */
7570: const struct bfd_target * alternative_target;
7571:
7572: /* Data for use by back-end routines, which isn't
7573: generic enough to belong in this structure. */
7574: const void *backend_data;
7575:
7576: } bfd_target;
7577:
7578: bfd_boolean bfd_set_default_target (const char *name);
7579:
7580: const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
7581:
7582: const bfd_target *bfd_get_target_info (const char *target_name,
7583: bfd *abfd,
7584: bfd_boolean *is_bigendian,
7585: int *underscoring,
7586: const char **def_target_arch);
7587: const char ** bfd_target_list (void);
7588:
7589: const bfd_target *bfd_search_for_target
7590: (int (*search_func) (const bfd_target *, void *),
7591: void *);
7592:
1.1.1.2 christos 7593: const char *bfd_flavour_name (enum bfd_flavour flavour);
7594:
1.1 christos 7595: /* Extracted from format.c. */
7596: bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
7597:
7598: bfd_boolean bfd_check_format_matches
7599: (bfd *abfd, bfd_format format, char ***matching);
7600:
7601: bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
7602:
7603: const char *bfd_format_string (bfd_format format);
7604:
7605: /* Extracted from linker.c. */
7606: bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
7607:
7608: #define bfd_link_split_section(abfd, sec) \
7609: BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
7610:
7611: bfd_boolean bfd_section_already_linked (bfd *abfd,
7612: asection *sec,
7613: struct bfd_link_info *info);
7614:
7615: #define bfd_section_already_linked(abfd, sec, info) \
7616: BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
7617:
7618: bfd_boolean bfd_generic_define_common_symbol
7619: (bfd *output_bfd, struct bfd_link_info *info,
7620: struct bfd_link_hash_entry *h);
7621:
7622: #define bfd_define_common_symbol(output_bfd, info, h) \
7623: BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
7624:
7625: struct bfd_elf_version_tree * bfd_find_version_for_sym
7626: (struct bfd_elf_version_tree *verdefs,
7627: const char *sym_name, bfd_boolean *hide);
7628:
7629: bfd_boolean bfd_hide_sym_by_version
7630: (struct bfd_elf_version_tree *verdefs, const char *sym_name);
7631:
1.1.1.3 ! christos 7632: bfd_boolean bfd_link_check_relocs
! 7633: (bfd *abfd, struct bfd_link_info *info);
! 7634:
! 7635: bfd_boolean _bfd_generic_link_check_relocs
! 7636: (bfd *abfd, struct bfd_link_info *info);
! 7637:
1.1 christos 7638: /* Extracted from simple.c. */
7639: bfd_byte *bfd_simple_get_relocated_section_contents
7640: (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
7641:
7642: /* Extracted from compress.c. */
7643: bfd_boolean bfd_get_full_section_contents
7644: (bfd *abfd, asection *section, bfd_byte **ptr);
7645:
1.1.1.2 christos 7646: void bfd_cache_section_contents
7647: (asection *sec, void *contents);
7648:
7649: bfd_boolean bfd_is_section_compressed_with_header
7650: (bfd *abfd, asection *section,
7651: int *compression_header_size_p,
7652: bfd_size_type *uncompressed_size_p);
7653:
1.1 christos 7654: bfd_boolean bfd_is_section_compressed
7655: (bfd *abfd, asection *section);
7656:
7657: bfd_boolean bfd_init_section_decompress_status
7658: (bfd *abfd, asection *section);
7659:
7660: bfd_boolean bfd_init_section_compress_status
7661: (bfd *abfd, asection *section);
7662:
1.1.1.2 christos 7663: bfd_boolean bfd_compress_section
7664: (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer);
7665:
1.1 christos 7666: #ifdef __cplusplus
7667: }
7668: #endif
7669: #endif
CVSweb <webmaster@jp.NetBSD.org>