Coverage Report

Created: 2023-08-28 06:25

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