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