1 /* BFD support for handling relocation entries. 2 Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 3 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 4 2012 5 Free Software Foundation, Inc. 6 Written by Cygnus Support. 7 8 This file is part of BFD, the Binary File Descriptor library. 9 10 This program is free software; you can redistribute it and/or modify 11 it under the terms of the GNU General Public License as published by 12 the Free Software Foundation; either version 3 of the License, or 13 (at your option) any later version. 14 15 This program is distributed in the hope that it will be useful, 16 but WITHOUT ANY WARRANTY; without even the implied warranty of 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 GNU General Public License for more details. 19 20 You should have received a copy of the GNU General Public License 21 along with this program; if not, write to the Free Software 22 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 23 MA 02110-1301, USA. */ 24 25 /* 26 SECTION 27 Relocations 28 29 BFD maintains relocations in much the same way it maintains 30 symbols: they are left alone until required, then read in 31 en-masse and translated into an internal form. A common 32 routine <<bfd_perform_relocation>> acts upon the 33 canonical form to do the fixup. 34 35 Relocations are maintained on a per section basis, 36 while symbols are maintained on a per BFD basis. 37 38 All that a back end has to do to fit the BFD interface is to create 39 a <<struct reloc_cache_entry>> for each relocation 40 in a particular section, and fill in the right bits of the structures. 41 42 @menu 43 @* typedef arelent:: 44 @* howto manager:: 45 @end menu 46 47 */ 48 49 /* DO compile in the reloc_code name table from libbfd.h. */ 50 #define _BFD_MAKE_TABLE_bfd_reloc_code_real 51 52 #include "sysdep.h" 53 #include "bfd.h" 54 #include "bfdlink.h" 55 #include "libbfd.h" 56 /* 57 DOCDD 58 INODE 59 typedef arelent, howto manager, Relocations, Relocations 60 61 SUBSECTION 62 typedef arelent 63 64 This is the structure of a relocation entry: 65 66 CODE_FRAGMENT 67 . 68 .typedef enum bfd_reloc_status 69 .{ 70 . {* No errors detected. *} 71 . bfd_reloc_ok, 72 . 73 . {* The relocation was performed, but there was an overflow. *} 74 . bfd_reloc_overflow, 75 . 76 . {* The address to relocate was not within the section supplied. *} 77 . bfd_reloc_outofrange, 78 . 79 . {* Used by special functions. *} 80 . bfd_reloc_continue, 81 . 82 . {* Unsupported relocation size requested. *} 83 . bfd_reloc_notsupported, 84 . 85 . {* Unused. *} 86 . bfd_reloc_other, 87 . 88 . {* The symbol to relocate against was undefined. *} 89 . bfd_reloc_undefined, 90 . 91 . {* The relocation was performed, but may not be ok - presently 92 . generated only when linking i960 coff files with i960 b.out 93 . symbols. If this type is returned, the error_message argument 94 . to bfd_perform_relocation will be set. *} 95 . bfd_reloc_dangerous 96 . } 97 . bfd_reloc_status_type; 98 . 99 . 100 .typedef struct reloc_cache_entry 101 .{ 102 . {* A pointer into the canonical table of pointers. *} 103 . struct bfd_symbol **sym_ptr_ptr; 104 . 105 . {* offset in section. *} 106 . bfd_size_type address; 107 . 108 . {* addend for relocation value. *} 109 . bfd_vma addend; 110 . 111 . {* Pointer to how to perform the required relocation. *} 112 . reloc_howto_type *howto; 113 . 114 .} 115 .arelent; 116 . 117 */ 118 119 /* 120 DESCRIPTION 121 122 Here is a description of each of the fields within an <<arelent>>: 123 124 o <<sym_ptr_ptr>> 125 126 The symbol table pointer points to a pointer to the symbol 127 associated with the relocation request. It is the pointer 128 into the table returned by the back end's 129 <<canonicalize_symtab>> action. @xref{Symbols}. The symbol is 130 referenced through a pointer to a pointer so that tools like 131 the linker can fix up all the symbols of the same name by 132 modifying only one pointer. The relocation routine looks in 133 the symbol and uses the base of the section the symbol is 134 attached to and the value of the symbol as the initial 135 relocation offset. If the symbol pointer is zero, then the 136 section provided is looked up. 137 138 o <<address>> 139 140 The <<address>> field gives the offset in bytes from the base of 141 the section data which owns the relocation record to the first 142 byte of relocatable information. The actual data relocated 143 will be relative to this point; for example, a relocation 144 type which modifies the bottom two bytes of a four byte word 145 would not touch the first byte pointed to in a big endian 146 world. 147 148 o <<addend>> 149 150 The <<addend>> is a value provided by the back end to be added (!) 151 to the relocation offset. Its interpretation is dependent upon 152 the howto. For example, on the 68k the code: 153 154 | char foo[]; 155 | main() 156 | { 157 | return foo[0x12345678]; 158 | } 159 160 Could be compiled into: 161 162 | linkw fp,#-4 163 | moveb @@#12345678,d0 164 | extbl d0 165 | unlk fp 166 | rts 167 168 This could create a reloc pointing to <<foo>>, but leave the 169 offset in the data, something like: 170 171 |RELOCATION RECORDS FOR [.text]: 172 |offset type value 173 |00000006 32 _foo 174 | 175 |00000000 4e56 fffc ; linkw fp,#-4 176 |00000004 1039 1234 5678 ; moveb @@#12345678,d0 177 |0000000a 49c0 ; extbl d0 178 |0000000c 4e5e ; unlk fp 179 |0000000e 4e75 ; rts 180 181 Using coff and an 88k, some instructions don't have enough 182 space in them to represent the full address range, and 183 pointers have to be loaded in two parts. So you'd get something like: 184 185 | or.u r13,r0,hi16(_foo+0x12345678) 186 | ld.b r2,r13,lo16(_foo+0x12345678) 187 | jmp r1 188 189 This should create two relocs, both pointing to <<_foo>>, and with 190 0x12340000 in their addend field. The data would consist of: 191 192 |RELOCATION RECORDS FOR [.text]: 193 |offset type value 194 |00000002 HVRT16 _foo+0x12340000 195 |00000006 LVRT16 _foo+0x12340000 196 | 197 |00000000 5da05678 ; or.u r13,r0,0x5678 198 |00000004 1c4d5678 ; ld.b r2,r13,0x5678 199 |00000008 f400c001 ; jmp r1 200 201 The relocation routine digs out the value from the data, adds 202 it to the addend to get the original offset, and then adds the 203 value of <<_foo>>. Note that all 32 bits have to be kept around 204 somewhere, to cope with carry from bit 15 to bit 16. 205 206 One further example is the sparc and the a.out format. The 207 sparc has a similar problem to the 88k, in that some 208 instructions don't have room for an entire offset, but on the 209 sparc the parts are created in odd sized lumps. The designers of 210 the a.out format chose to not use the data within the section 211 for storing part of the offset; all the offset is kept within 212 the reloc. Anything in the data should be ignored. 213 214 | save %sp,-112,%sp 215 | sethi %hi(_foo+0x12345678),%g2 216 | ldsb [%g2+%lo(_foo+0x12345678)],%i0 217 | ret 218 | restore 219 220 Both relocs contain a pointer to <<foo>>, and the offsets 221 contain junk. 222 223 |RELOCATION RECORDS FOR [.text]: 224 |offset type value 225 |00000004 HI22 _foo+0x12345678 226 |00000008 LO10 _foo+0x12345678 227 | 228 |00000000 9de3bf90 ; save %sp,-112,%sp 229 |00000004 05000000 ; sethi %hi(_foo+0),%g2 230 |00000008 f048a000 ; ldsb [%g2+%lo(_foo+0)],%i0 231 |0000000c 81c7e008 ; ret 232 |00000010 81e80000 ; restore 233 234 o <<howto>> 235 236 The <<howto>> field can be imagined as a 237 relocation instruction. It is a pointer to a structure which 238 contains information on what to do with all of the other 239 information in the reloc record and data section. A back end 240 would normally have a relocation instruction set and turn 241 relocations into pointers to the correct structure on input - 242 but it would be possible to create each howto field on demand. 243 244 */ 245 246 /* 247 SUBSUBSECTION 248 <<enum complain_overflow>> 249 250 Indicates what sort of overflow checking should be done when 251 performing a relocation. 252 253 CODE_FRAGMENT 254 . 255 .enum complain_overflow 256 .{ 257 . {* Do not complain on overflow. *} 258 . complain_overflow_dont, 259 . 260 . {* Complain if the value overflows when considered as a signed 261 . number one bit larger than the field. ie. A bitfield of N bits 262 . is allowed to represent -2**n to 2**n-1. *} 263 . complain_overflow_bitfield, 264 . 265 . {* Complain if the value overflows when considered as a signed 266 . number. *} 267 . complain_overflow_signed, 268 . 269 . {* Complain if the value overflows when considered as an 270 . unsigned number. *} 271 . complain_overflow_unsigned 272 .}; 273 274 */ 275 276 /* 277 SUBSUBSECTION 278 <<reloc_howto_type>> 279 280 The <<reloc_howto_type>> is a structure which contains all the 281 information that libbfd needs to know to tie up a back end's data. 282 283 CODE_FRAGMENT 284 .struct bfd_symbol; {* Forward declaration. *} 285 . 286 .struct reloc_howto_struct 287 .{ 288 . {* The type field has mainly a documentary use - the back end can 289 . do what it wants with it, though normally the back end's 290 . external idea of what a reloc number is stored 291 . in this field. For example, a PC relative word relocation 292 . in a coff environment has the type 023 - because that's 293 . what the outside world calls a R_PCRWORD reloc. *} 294 . unsigned int type; 295 . 296 . {* The value the final relocation is shifted right by. This drops 297 . unwanted data from the relocation. *} 298 . unsigned int rightshift; 299 . 300 . {* The size of the item to be relocated. This is *not* a 301 . power-of-two measure. To get the number of bytes operated 302 . on by a type of relocation, use bfd_get_reloc_size. *} 303 . int size; 304 . 305 . {* The number of bits in the item to be relocated. This is used 306 . when doing overflow checking. *} 307 . unsigned int bitsize; 308 . 309 . {* The relocation is relative to the field being relocated. *} 310 . bfd_boolean pc_relative; 311 . 312 . {* The bit position of the reloc value in the destination. 313 . The relocated value is left shifted by this amount. *} 314 . unsigned int bitpos; 315 . 316 . {* What type of overflow error should be checked for when 317 . relocating. *} 318 . enum complain_overflow complain_on_overflow; 319 . 320 . {* If this field is non null, then the supplied function is 321 . called rather than the normal function. This allows really 322 . strange relocation methods to be accommodated (e.g., i960 callj 323 . instructions). *} 324 . bfd_reloc_status_type (*special_function) 325 . (bfd *, arelent *, struct bfd_symbol *, void *, asection *, 326 . bfd *, char **); 327 . 328 . {* The textual name of the relocation type. *} 329 . char *name; 330 . 331 . {* Some formats record a relocation addend in the section contents 332 . rather than with the relocation. For ELF formats this is the 333 . distinction between USE_REL and USE_RELA (though the code checks 334 . for USE_REL == 1/0). The value of this field is TRUE if the 335 . addend is recorded with the section contents; when performing a 336 . partial link (ld -r) the section contents (the data) will be 337 . modified. The value of this field is FALSE if addends are 338 . recorded with the relocation (in arelent.addend); when performing 339 . a partial link the relocation will be modified. 340 . All relocations for all ELF USE_RELA targets should set this field 341 . to FALSE (values of TRUE should be looked on with suspicion). 342 . However, the converse is not true: not all relocations of all ELF 343 . USE_REL targets set this field to TRUE. Why this is so is peculiar 344 . to each particular target. For relocs that aren't used in partial 345 . links (e.g. GOT stuff) it doesn't matter what this is set to. *} 346 . bfd_boolean partial_inplace; 347 . 348 . {* src_mask selects the part of the instruction (or data) to be used 349 . in the relocation sum. If the target relocations don't have an 350 . addend in the reloc, eg. ELF USE_REL, src_mask will normally equal 351 . dst_mask to extract the addend from the section contents. If 352 . relocations do have an addend in the reloc, eg. ELF USE_RELA, this 353 . field should be zero. Non-zero values for ELF USE_RELA targets are 354 . bogus as in those cases the value in the dst_mask part of the 355 . section contents should be treated as garbage. *} 356 . bfd_vma src_mask; 357 . 358 . {* dst_mask selects which parts of the instruction (or data) are 359 . replaced with a relocated value. *} 360 . bfd_vma dst_mask; 361 . 362 . {* When some formats create PC relative instructions, they leave 363 . the value of the pc of the place being relocated in the offset 364 . slot of the instruction, so that a PC relative relocation can 365 . be made just by adding in an ordinary offset (e.g., sun3 a.out). 366 . Some formats leave the displacement part of an instruction 367 . empty (e.g., m88k bcs); this flag signals the fact. *} 368 . bfd_boolean pcrel_offset; 369 .}; 370 . 371 */ 372 373 /* 374 FUNCTION 375 The HOWTO Macro 376 377 DESCRIPTION 378 The HOWTO define is horrible and will go away. 379 380 .#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \ 381 . { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC } 382 383 DESCRIPTION 384 And will be replaced with the totally magic way. But for the 385 moment, we are compatible, so do it this way. 386 387 .#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \ 388 . HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \ 389 . NAME, FALSE, 0, 0, IN) 390 . 391 392 DESCRIPTION 393 This is used to fill in an empty howto entry in an array. 394 395 .#define EMPTY_HOWTO(C) \ 396 . HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \ 397 . NULL, FALSE, 0, 0, FALSE) 398 . 399 400 DESCRIPTION 401 Helper routine to turn a symbol into a relocation value. 402 403 .#define HOWTO_PREPARE(relocation, symbol) \ 404 . { \ 405 . if (symbol != NULL) \ 406 . { \ 407 . if (bfd_is_com_section (symbol->section)) \ 408 . { \ 409 . relocation = 0; \ 410 . } \ 411 . else \ 412 . { \ 413 . relocation = symbol->value; \ 414 . } \ 415 . } \ 416 . } 417 . 418 */ 419 420 /* 421 FUNCTION 422 bfd_get_reloc_size 423 424 SYNOPSIS 425 unsigned int bfd_get_reloc_size (reloc_howto_type *); 426 427 DESCRIPTION 428 For a reloc_howto_type that operates on a fixed number of bytes, 429 this returns the number of bytes operated on. 430 */ 431 432 unsigned int 433 bfd_get_reloc_size (reloc_howto_type *howto) 434 { 435 switch (howto->size) 436 { 437 case 0: return 1; 438 case 1: return 2; 439 case 2: return 4; 440 case 3: return 0; 441 case 4: return 8; 442 case 8: return 16; 443 case -2: return 4; 444 default: abort (); 445 } 446 } 447 448 /* 449 TYPEDEF 450 arelent_chain 451 452 DESCRIPTION 453 454 How relocs are tied together in an <<asection>>: 455 456 .typedef struct relent_chain 457 .{ 458 . arelent relent; 459 . struct relent_chain *next; 460 .} 461 .arelent_chain; 462 . 463 */ 464 465 /* N_ONES produces N one bits, without overflowing machine arithmetic. */ 466 #define N_ONES(n) (((((bfd_vma) 1 << ((n) - 1)) - 1) << 1) | 1) 467 468 /* 469 FUNCTION 470 bfd_check_overflow 471 472 SYNOPSIS 473 bfd_reloc_status_type bfd_check_overflow 474 (enum complain_overflow how, 475 unsigned int bitsize, 476 unsigned int rightshift, 477 unsigned int addrsize, 478 bfd_vma relocation); 479 480 DESCRIPTION 481 Perform overflow checking on @var{relocation} which has 482 @var{bitsize} significant bits and will be shifted right by 483 @var{rightshift} bits, on a machine with addresses containing 484 @var{addrsize} significant bits. The result is either of 485 @code{bfd_reloc_ok} or @code{bfd_reloc_overflow}. 486 487 */ 488 489 bfd_reloc_status_type 490 bfd_check_overflow (enum complain_overflow how, 491 unsigned int bitsize, 492 unsigned int rightshift, 493 unsigned int addrsize, 494 bfd_vma relocation) 495 { 496 bfd_vma fieldmask, addrmask, signmask, ss, a; 497 bfd_reloc_status_type flag = bfd_reloc_ok; 498 499 /* Note: BITSIZE should always be <= ADDRSIZE, but in case it's not, 500 we'll be permissive: extra bits in the field mask will 501 automatically extend the address mask for purposes of the 502 overflow check. */ 503 fieldmask = N_ONES (bitsize); 504 signmask = ~fieldmask; 505 addrmask = N_ONES (addrsize) | (fieldmask << rightshift); 506 a = (relocation & addrmask) >> rightshift;; 507 508 switch (how) 509 { 510 case complain_overflow_dont: 511 break; 512 513 case complain_overflow_signed: 514 /* If any sign bits are set, all sign bits must be set. That 515 is, A must be a valid negative address after shifting. */ 516 signmask = ~ (fieldmask >> 1); 517 /* Fall thru */ 518 519 case complain_overflow_bitfield: 520 /* Bitfields are sometimes signed, sometimes unsigned. We 521 explicitly allow an address wrap too, which means a bitfield 522 of n bits is allowed to store -2**n to 2**n-1. Thus overflow 523 if the value has some, but not all, bits set outside the 524 field. */ 525 ss = a & signmask; 526 if (ss != 0 && ss != ((addrmask >> rightshift) & signmask)) 527 flag = bfd_reloc_overflow; 528 break; 529 530 case complain_overflow_unsigned: 531 /* We have an overflow if the address does not fit in the field. */ 532 if ((a & signmask) != 0) 533 flag = bfd_reloc_overflow; 534 break; 535 536 default: 537 abort (); 538 } 539 540 return flag; 541 } 542 543 /* 544 FUNCTION 545 bfd_perform_relocation 546 547 SYNOPSIS 548 bfd_reloc_status_type bfd_perform_relocation 549 (bfd *abfd, 550 arelent *reloc_entry, 551 void *data, 552 asection *input_section, 553 bfd *output_bfd, 554 char **error_message); 555 556 DESCRIPTION 557 If @var{output_bfd} is supplied to this function, the 558 generated image will be relocatable; the relocations are 559 copied to the output file after they have been changed to 560 reflect the new state of the world. There are two ways of 561 reflecting the results of partial linkage in an output file: 562 by modifying the output data in place, and by modifying the 563 relocation record. Some native formats (e.g., basic a.out and 564 basic coff) have no way of specifying an addend in the 565 relocation type, so the addend has to go in the output data. 566 This is no big deal since in these formats the output data 567 slot will always be big enough for the addend. Complex reloc 568 types with addends were invented to solve just this problem. 569 The @var{error_message} argument is set to an error message if 570 this return @code{bfd_reloc_dangerous}. 571 572 */ 573 574 bfd_reloc_status_type 575 bfd_perform_relocation (bfd *abfd, 576 arelent *reloc_entry, 577 void *data, 578 asection *input_section, 579 bfd *output_bfd, 580 char **error_message) 581 { 582 bfd_vma relocation; 583 bfd_reloc_status_type flag = bfd_reloc_ok; 584 bfd_size_type octets = reloc_entry->address * bfd_octets_per_byte (abfd); 585 bfd_vma output_base = 0; 586 reloc_howto_type *howto = reloc_entry->howto; 587 asection *reloc_target_output_section; 588 asymbol *symbol; 589 590 symbol = *(reloc_entry->sym_ptr_ptr); 591 if (bfd_is_abs_section (symbol->section) 592 && output_bfd != NULL) 593 { 594 reloc_entry->address += input_section->output_offset; 595 return bfd_reloc_ok; 596 } 597 598 /* If we are not producing relocatable output, return an error if 599 the symbol is not defined. An undefined weak symbol is 600 considered to have a value of zero (SVR4 ABI, p. 4-27). */ 601 if (bfd_is_und_section (symbol->section) 602 && (symbol->flags & BSF_WEAK) == 0 603 && output_bfd == NULL) 604 flag = bfd_reloc_undefined; 605 606 /* If there is a function supplied to handle this relocation type, 607 call it. It'll return `bfd_reloc_continue' if further processing 608 can be done. */ 609 if (howto->special_function) 610 { 611 bfd_reloc_status_type cont; 612 cont = howto->special_function (abfd, reloc_entry, symbol, data, 613 input_section, output_bfd, 614 error_message); 615 if (cont != bfd_reloc_continue) 616 return cont; 617 } 618 619 /* Is the address of the relocation really within the section? */ 620 if (reloc_entry->address > bfd_get_section_limit (abfd, input_section)) 621 return bfd_reloc_outofrange; 622 623 /* Work out which section the relocation is targeted at and the 624 initial relocation command value. */ 625 626 /* Get symbol value. (Common symbols are special.) */ 627 if (bfd_is_com_section (symbol->section)) 628 relocation = 0; 629 else 630 relocation = symbol->value; 631 632 reloc_target_output_section = symbol->section->output_section; 633 634 /* Convert input-section-relative symbol value to absolute. */ 635 if ((output_bfd && ! howto->partial_inplace) 636 || reloc_target_output_section == NULL) 637 output_base = 0; 638 else 639 output_base = reloc_target_output_section->vma; 640 641 relocation += output_base + symbol->section->output_offset; 642 643 /* Add in supplied addend. */ 644 relocation += reloc_entry->addend; 645 646 /* Here the variable relocation holds the final address of the 647 symbol we are relocating against, plus any addend. */ 648 649 if (howto->pc_relative) 650 { 651 /* This is a PC relative relocation. We want to set RELOCATION 652 to the distance between the address of the symbol and the 653 location. RELOCATION is already the address of the symbol. 654 655 We start by subtracting the address of the section containing 656 the location. 657 658 If pcrel_offset is set, we must further subtract the position 659 of the location within the section. Some targets arrange for 660 the addend to be the negative of the position of the location 661 within the section; for example, i386-aout does this. For 662 i386-aout, pcrel_offset is FALSE. Some other targets do not 663 include the position of the location; for example, m88kbcs, 664 or ELF. For those targets, pcrel_offset is TRUE. 665 666 If we are producing relocatable output, then we must ensure 667 that this reloc will be correctly computed when the final 668 relocation is done. If pcrel_offset is FALSE we want to wind 669 up with the negative of the location within the section, 670 which means we must adjust the existing addend by the change 671 in the location within the section. If pcrel_offset is TRUE 672 we do not want to adjust the existing addend at all. 673 674 FIXME: This seems logical to me, but for the case of 675 producing relocatable output it is not what the code 676 actually does. I don't want to change it, because it seems 677 far too likely that something will break. */ 678 679 relocation -= 680 input_section->output_section->vma + input_section->output_offset; 681 682 if (howto->pcrel_offset) 683 relocation -= reloc_entry->address; 684 } 685 686 if (output_bfd != NULL) 687 { 688 if (! howto->partial_inplace) 689 { 690 /* This is a partial relocation, and we want to apply the relocation 691 to the reloc entry rather than the raw data. Modify the reloc 692 inplace to reflect what we now know. */ 693 reloc_entry->addend = relocation; 694 reloc_entry->address += input_section->output_offset; 695 return flag; 696 } 697 else 698 { 699 /* This is a partial relocation, but inplace, so modify the 700 reloc record a bit. 701 702 If we've relocated with a symbol with a section, change 703 into a ref to the section belonging to the symbol. */ 704 705 reloc_entry->address += input_section->output_offset; 706 707 /* WTF?? */ 708 if (abfd->xvec->flavour == bfd_target_coff_flavour 709 && strcmp (abfd->xvec->name, "coff-Intel-little") != 0 710 && strcmp (abfd->xvec->name, "coff-Intel-big") != 0) 711 { 712 /* For m68k-coff, the addend was being subtracted twice during 713 relocation with -r. Removing the line below this comment 714 fixes that problem; see PR 2953. 715 716 However, Ian wrote the following, regarding removing the line below, 717 which explains why it is still enabled: --djm 718 719 If you put a patch like that into BFD you need to check all the COFF 720 linkers. I am fairly certain that patch will break coff-i386 (e.g., 721 SCO); see coff_i386_reloc in coff-i386.c where I worked around the 722 problem in a different way. There may very well be a reason that the 723 code works as it does. 724 725 Hmmm. The first obvious point is that bfd_perform_relocation should 726 not have any tests that depend upon the flavour. It's seem like 727 entirely the wrong place for such a thing. The second obvious point 728 is that the current code ignores the reloc addend when producing 729 relocatable output for COFF. That's peculiar. In fact, I really 730 have no idea what the point of the line you want to remove is. 731 732 A typical COFF reloc subtracts the old value of the symbol and adds in 733 the new value to the location in the object file (if it's a pc 734 relative reloc it adds the difference between the symbol value and the 735 location). When relocating we need to preserve that property. 736 737 BFD handles this by setting the addend to the negative of the old 738 value of the symbol. Unfortunately it handles common symbols in a 739 non-standard way (it doesn't subtract the old value) but that's a 740 different story (we can't change it without losing backward 741 compatibility with old object files) (coff-i386 does subtract the old 742 value, to be compatible with existing coff-i386 targets, like SCO). 743 744 So everything works fine when not producing relocatable output. When 745 we are producing relocatable output, logically we should do exactly 746 what we do when not producing relocatable output. Therefore, your 747 patch is correct. In fact, it should probably always just set 748 reloc_entry->addend to 0 for all cases, since it is, in fact, going to 749 add the value into the object file. This won't hurt the COFF code, 750 which doesn't use the addend; I'm not sure what it will do to other 751 formats (the thing to check for would be whether any formats both use 752 the addend and set partial_inplace). 753 754 When I wanted to make coff-i386 produce relocatable output, I ran 755 into the problem that you are running into: I wanted to remove that 756 line. Rather than risk it, I made the coff-i386 relocs use a special 757 function; it's coff_i386_reloc in coff-i386.c. The function 758 specifically adds the addend field into the object file, knowing that 759 bfd_perform_relocation is not going to. If you remove that line, then 760 coff-i386.c will wind up adding the addend field in twice. It's 761 trivial to fix; it just needs to be done. 762 763 The problem with removing the line is just that it may break some 764 working code. With BFD it's hard to be sure of anything. The right 765 way to deal with this is simply to build and test at least all the 766 supported COFF targets. It should be straightforward if time and disk 767 space consuming. For each target: 768 1) build the linker 769 2) generate some executable, and link it using -r (I would 770 probably use paranoia.o and link against newlib/libc.a, which 771 for all the supported targets would be available in 772 /usr/cygnus/progressive/H-host/target/lib/libc.a). 773 3) make the change to reloc.c 774 4) rebuild the linker 775 5) repeat step 2 776 6) if the resulting object files are the same, you have at least 777 made it no worse 778 7) if they are different you have to figure out which version is 779 right 780 */ 781 relocation -= reloc_entry->addend; 782 reloc_entry->addend = 0; 783 } 784 else 785 { 786 reloc_entry->addend = relocation; 787 } 788 } 789 } 790 else 791 { 792 reloc_entry->addend = 0; 793 } 794 795 /* FIXME: This overflow checking is incomplete, because the value 796 might have overflowed before we get here. For a correct check we 797 need to compute the value in a size larger than bitsize, but we 798 can't reasonably do that for a reloc the same size as a host 799 machine word. 800 FIXME: We should also do overflow checking on the result after 801 adding in the value contained in the object file. */ 802 if (howto->complain_on_overflow != complain_overflow_dont 803 && flag == bfd_reloc_ok) 804 flag = bfd_check_overflow (howto->complain_on_overflow, 805 howto->bitsize, 806 howto->rightshift, 807 bfd_arch_bits_per_address (abfd), 808 relocation); 809 810 /* Either we are relocating all the way, or we don't want to apply 811 the relocation to the reloc entry (probably because there isn't 812 any room in the output format to describe addends to relocs). */ 813 814 /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler 815 (OSF version 1.3, compiler version 3.11). It miscompiles the 816 following program: 817 818 struct str 819 { 820 unsigned int i0; 821 } s = { 0 }; 822 823 int 824 main () 825 { 826 unsigned long x; 827 828 x = 0x100000000; 829 x <<= (unsigned long) s.i0; 830 if (x == 0) 831 printf ("failed\n"); 832 else 833 printf ("succeeded (%lx)\n", x); 834 } 835 */ 836 837 relocation >>= (bfd_vma) howto->rightshift; 838 839 /* Shift everything up to where it's going to be used. */ 840 relocation <<= (bfd_vma) howto->bitpos; 841 842 /* Wait for the day when all have the mask in them. */ 843 844 /* What we do: 845 i instruction to be left alone 846 o offset within instruction 847 r relocation offset to apply 848 S src mask 849 D dst mask 850 N ~dst mask 851 A part 1 852 B part 2 853 R result 854 855 Do this: 856 (( i i i i i o o o o o from bfd_get<size> 857 and S S S S S) to get the size offset we want 858 + r r r r r r r r r r) to get the final value to place 859 and D D D D D to chop to right size 860 ----------------------- 861 = A A A A A 862 And this: 863 ( i i i i i o o o o o from bfd_get<size> 864 and N N N N N ) get instruction 865 ----------------------- 866 = B B B B B 867 868 And then: 869 ( B B B B B 870 or A A A A A) 871 ----------------------- 872 = R R R R R R R R R R put into bfd_put<size> 873 */ 874 875 #define DOIT(x) \ 876 x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) + relocation) & howto->dst_mask)) 877 878 switch (howto->size) 879 { 880 case 0: 881 { 882 char x = bfd_get_8 (abfd, (char *) data + octets); 883 DOIT (x); 884 bfd_put_8 (abfd, x, (unsigned char *) data + octets); 885 } 886 break; 887 888 case 1: 889 { 890 short x = bfd_get_16 (abfd, (bfd_byte *) data + octets); 891 DOIT (x); 892 bfd_put_16 (abfd, (bfd_vma) x, (unsigned char *) data + octets); 893 } 894 break; 895 case 2: 896 { 897 long x = bfd_get_32 (abfd, (bfd_byte *) data + octets); 898 DOIT (x); 899 bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets); 900 } 901 break; 902 case -2: 903 { 904 long x = bfd_get_32 (abfd, (bfd_byte *) data + octets); 905 relocation = -relocation; 906 DOIT (x); 907 bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets); 908 } 909 break; 910 911 case -1: 912 { 913 long x = bfd_get_16 (abfd, (bfd_byte *) data + octets); 914 relocation = -relocation; 915 DOIT (x); 916 bfd_put_16 (abfd, (bfd_vma) x, (bfd_byte *) data + octets); 917 } 918 break; 919 920 case 3: 921 /* Do nothing */ 922 break; 923 924 case 4: 925 #ifdef BFD64 926 { 927 bfd_vma x = bfd_get_64 (abfd, (bfd_byte *) data + octets); 928 DOIT (x); 929 bfd_put_64 (abfd, x, (bfd_byte *) data + octets); 930 } 931 #else 932 abort (); 933 #endif 934 break; 935 default: 936 return bfd_reloc_other; 937 } 938 939 return flag; 940 } 941 942 /* 943 FUNCTION 944 bfd_install_relocation 945 946 SYNOPSIS 947 bfd_reloc_status_type bfd_install_relocation 948 (bfd *abfd, 949 arelent *reloc_entry, 950 void *data, bfd_vma data_start, 951 asection *input_section, 952 char **error_message); 953 954 DESCRIPTION 955 This looks remarkably like <<bfd_perform_relocation>>, except it 956 does not expect that the section contents have been filled in. 957 I.e., it's suitable for use when creating, rather than applying 958 a relocation. 959 960 For now, this function should be considered reserved for the 961 assembler. 962 */ 963 964 bfd_reloc_status_type 965 bfd_install_relocation (bfd *abfd, 966 arelent *reloc_entry, 967 void *data_start, 968 bfd_vma data_start_offset, 969 asection *input_section, 970 char **error_message) 971 { 972 bfd_vma relocation; 973 bfd_reloc_status_type flag = bfd_reloc_ok; 974 bfd_size_type octets = reloc_entry->address * bfd_octets_per_byte (abfd); 975 bfd_vma output_base = 0; 976 reloc_howto_type *howto = reloc_entry->howto; 977 asection *reloc_target_output_section; 978 asymbol *symbol; 979 bfd_byte *data; 980 981 symbol = *(reloc_entry->sym_ptr_ptr); 982 if (bfd_is_abs_section (symbol->section)) 983 { 984 reloc_entry->address += input_section->output_offset; 985 return bfd_reloc_ok; 986 } 987 988 /* If there is a function supplied to handle this relocation type, 989 call it. It'll return `bfd_reloc_continue' if further processing 990 can be done. */ 991 if (howto->special_function) 992 { 993 bfd_reloc_status_type cont; 994 995 /* XXX - The special_function calls haven't been fixed up to deal 996 with creating new relocations and section contents. */ 997 cont = howto->special_function (abfd, reloc_entry, symbol, 998 /* XXX - Non-portable! */ 999 ((bfd_byte *) data_start 1000 - data_start_offset), 1001 input_section, abfd, error_message); 1002 if (cont != bfd_reloc_continue) 1003 return cont; 1004 } 1005 1006 /* Is the address of the relocation really within the section? */ 1007 if (reloc_entry->address > bfd_get_section_limit (abfd, input_section)) 1008 return bfd_reloc_outofrange; 1009 1010 /* Work out which section the relocation is targeted at and the 1011 initial relocation command value. */ 1012 1013 /* Get symbol value. (Common symbols are special.) */ 1014 if (bfd_is_com_section (symbol->section)) 1015 relocation = 0; 1016 else 1017 relocation = symbol->value; 1018 1019 reloc_target_output_section = symbol->section->output_section; 1020 1021 /* Convert input-section-relative symbol value to absolute. */ 1022 if (! howto->partial_inplace) 1023 output_base = 0; 1024 else 1025 output_base = reloc_target_output_section->vma; 1026 1027 relocation += output_base + symbol->section->output_offset; 1028 1029 /* Add in supplied addend. */ 1030 relocation += reloc_entry->addend; 1031 1032 /* Here the variable relocation holds the final address of the 1033 symbol we are relocating against, plus any addend. */ 1034 1035 if (howto->pc_relative) 1036 { 1037 /* This is a PC relative relocation. We want to set RELOCATION 1038 to the distance between the address of the symbol and the 1039 location. RELOCATION is already the address of the symbol. 1040 1041 We start by subtracting the address of the section containing 1042 the location. 1043 1044 If pcrel_offset is set, we must further subtract the position 1045 of the location within the section. Some targets arrange for 1046 the addend to be the negative of the position of the location 1047 within the section; for example, i386-aout does this. For 1048 i386-aout, pcrel_offset is FALSE. Some other targets do not 1049 include the position of the location; for example, m88kbcs, 1050 or ELF. For those targets, pcrel_offset is TRUE. 1051 1052 If we are producing relocatable output, then we must ensure 1053 that this reloc will be correctly computed when the final 1054 relocation is done. If pcrel_offset is FALSE we want to wind 1055 up with the negative of the location within the section, 1056 which means we must adjust the existing addend by the change 1057 in the location within the section. If pcrel_offset is TRUE 1058 we do not want to adjust the existing addend at all. 1059 1060 FIXME: This seems logical to me, but for the case of 1061 producing relocatable output it is not what the code 1062 actually does. I don't want to change it, because it seems 1063 far too likely that something will break. */ 1064 1065 relocation -= 1066 input_section->output_section->vma + input_section->output_offset; 1067 1068 if (howto->pcrel_offset && howto->partial_inplace) 1069 relocation -= reloc_entry->address; 1070 } 1071 1072 if (! howto->partial_inplace) 1073 { 1074 /* This is a partial relocation, and we want to apply the relocation 1075 to the reloc entry rather than the raw data. Modify the reloc 1076 inplace to reflect what we now know. */ 1077 reloc_entry->addend = relocation; 1078 reloc_entry->address += input_section->output_offset; 1079 return flag; 1080 } 1081 else 1082 { 1083 /* This is a partial relocation, but inplace, so modify the 1084 reloc record a bit. 1085 1086 If we've relocated with a symbol with a section, change 1087 into a ref to the section belonging to the symbol. */ 1088 reloc_entry->address += input_section->output_offset; 1089 1090 /* WTF?? */ 1091 if (abfd->xvec->flavour == bfd_target_coff_flavour 1092 && strcmp (abfd->xvec->name, "coff-Intel-little") != 0 1093 && strcmp (abfd->xvec->name, "coff-Intel-big") != 0) 1094 { 1095 1096 /* For m68k-coff, the addend was being subtracted twice during 1097 relocation with -r. Removing the line below this comment 1098 fixes that problem; see PR 2953. 1099 1100 However, Ian wrote the following, regarding removing the line below, 1101 which explains why it is still enabled: --djm 1102 1103 If you put a patch like that into BFD you need to check all the COFF 1104 linkers. I am fairly certain that patch will break coff-i386 (e.g., 1105 SCO); see coff_i386_reloc in coff-i386.c where I worked around the 1106 problem in a different way. There may very well be a reason that the 1107 code works as it does. 1108 1109 Hmmm. The first obvious point is that bfd_install_relocation should 1110 not have any tests that depend upon the flavour. It's seem like 1111 entirely the wrong place for such a thing. The second obvious point 1112 is that the current code ignores the reloc addend when producing 1113 relocatable output for COFF. That's peculiar. In fact, I really 1114 have no idea what the point of the line you want to remove is. 1115 1116 A typical COFF reloc subtracts the old value of the symbol and adds in 1117 the new value to the location in the object file (if it's a pc 1118 relative reloc it adds the difference between the symbol value and the 1119 location). When relocating we need to preserve that property. 1120 1121 BFD handles this by setting the addend to the negative of the old 1122 value of the symbol. Unfortunately it handles common symbols in a 1123 non-standard way (it doesn't subtract the old value) but that's a 1124 different story (we can't change it without losing backward 1125 compatibility with old object files) (coff-i386 does subtract the old 1126 value, to be compatible with existing coff-i386 targets, like SCO). 1127 1128 So everything works fine when not producing relocatable output. When 1129 we are producing relocatable output, logically we should do exactly 1130 what we do when not producing relocatable output. Therefore, your 1131 patch is correct. In fact, it should probably always just set 1132 reloc_entry->addend to 0 for all cases, since it is, in fact, going to 1133 add the value into the object file. This won't hurt the COFF code, 1134 which doesn't use the addend; I'm not sure what it will do to other 1135 formats (the thing to check for would be whether any formats both use 1136 the addend and set partial_inplace). 1137 1138 When I wanted to make coff-i386 produce relocatable output, I ran 1139 into the problem that you are running into: I wanted to remove that 1140 line. Rather than risk it, I made the coff-i386 relocs use a special 1141 function; it's coff_i386_reloc in coff-i386.c. The function 1142 specifically adds the addend field into the object file, knowing that 1143 bfd_install_relocation is not going to. If you remove that line, then 1144 coff-i386.c will wind up adding the addend field in twice. It's 1145 trivial to fix; it just needs to be done. 1146 1147 The problem with removing the line is just that it may break some 1148 working code. With BFD it's hard to be sure of anything. The right 1149 way to deal with this is simply to build and test at least all the 1150 supported COFF targets. It should be straightforward if time and disk 1151 space consuming. For each target: 1152 1) build the linker 1153 2) generate some executable, and link it using -r (I would 1154 probably use paranoia.o and link against newlib/libc.a, which 1155 for all the supported targets would be available in 1156 /usr/cygnus/progressive/H-host/target/lib/libc.a). 1157 3) make the change to reloc.c 1158 4) rebuild the linker 1159 5) repeat step 2 1160 6) if the resulting object files are the same, you have at least 1161 made it no worse 1162 7) if they are different you have to figure out which version is 1163 right. */ 1164 relocation -= reloc_entry->addend; 1165 /* FIXME: There should be no target specific code here... */ 1166 if (strcmp (abfd->xvec->name, "coff-z8k") != 0) 1167 reloc_entry->addend = 0; 1168 } 1169 else 1170 { 1171 reloc_entry->addend = relocation; 1172 } 1173 } 1174 1175 /* FIXME: This overflow checking is incomplete, because the value 1176 might have overflowed before we get here. For a correct check we 1177 need to compute the value in a size larger than bitsize, but we 1178 can't reasonably do that for a reloc the same size as a host 1179 machine word. 1180 FIXME: We should also do overflow checking on the result after 1181 adding in the value contained in the object file. */ 1182 if (howto->complain_on_overflow != complain_overflow_dont) 1183 flag = bfd_check_overflow (howto->complain_on_overflow, 1184 howto->bitsize, 1185 howto->rightshift, 1186 bfd_arch_bits_per_address (abfd), 1187 relocation); 1188 1189 /* Either we are relocating all the way, or we don't want to apply 1190 the relocation to the reloc entry (probably because there isn't 1191 any room in the output format to describe addends to relocs). */ 1192 1193 /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler 1194 (OSF version 1.3, compiler version 3.11). It miscompiles the 1195 following program: 1196 1197 struct str 1198 { 1199 unsigned int i0; 1200 } s = { 0 }; 1201 1202 int 1203 main () 1204 { 1205 unsigned long x; 1206 1207 x = 0x100000000; 1208 x <<= (unsigned long) s.i0; 1209 if (x == 0) 1210 printf ("failed\n"); 1211 else 1212 printf ("succeeded (%lx)\n", x); 1213 } 1214 */ 1215 1216 relocation >>= (bfd_vma) howto->rightshift; 1217 1218 /* Shift everything up to where it's going to be used. */ 1219 relocation <<= (bfd_vma) howto->bitpos; 1220 1221 /* Wait for the day when all have the mask in them. */ 1222 1223 /* What we do: 1224 i instruction to be left alone 1225 o offset within instruction 1226 r relocation offset to apply 1227 S src mask 1228 D dst mask 1229 N ~dst mask 1230 A part 1 1231 B part 2 1232 R result 1233 1234 Do this: 1235 (( i i i i i o o o o o from bfd_get<size> 1236 and S S S S S) to get the size offset we want 1237 + r r r r r r r r r r) to get the final value to place 1238 and D D D D D to chop to right size 1239 ----------------------- 1240 = A A A A A 1241 And this: 1242 ( i i i i i o o o o o from bfd_get<size> 1243 and N N N N N ) get instruction 1244 ----------------------- 1245 = B B B B B 1246 1247 And then: 1248 ( B B B B B 1249 or A A A A A) 1250 ----------------------- 1251 = R R R R R R R R R R put into bfd_put<size> 1252 */ 1253 1254 #define DOIT(x) \ 1255 x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) + relocation) & howto->dst_mask)) 1256 1257 data = (bfd_byte *) data_start + (octets - data_start_offset); 1258 1259 switch (howto->size) 1260 { 1261 case 0: 1262 { 1263 char x = bfd_get_8 (abfd, data); 1264 DOIT (x); 1265 bfd_put_8 (abfd, x, data); 1266 } 1267 break; 1268 1269 case 1: 1270 { 1271 short x = bfd_get_16 (abfd, data); 1272 DOIT (x); 1273 bfd_put_16 (abfd, (bfd_vma) x, data); 1274 } 1275 break; 1276 case 2: 1277 { 1278 long x = bfd_get_32 (abfd, data); 1279 DOIT (x); 1280 bfd_put_32 (abfd, (bfd_vma) x, data); 1281 } 1282 break; 1283 case -2: 1284 { 1285 long x = bfd_get_32 (abfd, data); 1286 relocation = -relocation; 1287 DOIT (x); 1288 bfd_put_32 (abfd, (bfd_vma) x, data); 1289 } 1290 break; 1291 1292 case 3: 1293 /* Do nothing */ 1294 break; 1295 1296 case 4: 1297 { 1298 bfd_vma x = bfd_get_64 (abfd, data); 1299 DOIT (x); 1300 bfd_put_64 (abfd, x, data); 1301 } 1302 break; 1303 default: 1304 return bfd_reloc_other; 1305 } 1306 1307 return flag; 1308 } 1309 1310 /* This relocation routine is used by some of the backend linkers. 1311 They do not construct asymbol or arelent structures, so there is no 1312 reason for them to use bfd_perform_relocation. Also, 1313 bfd_perform_relocation is so hacked up it is easier to write a new 1314 function than to try to deal with it. 1315 1316 This routine does a final relocation. Whether it is useful for a 1317 relocatable link depends upon how the object format defines 1318 relocations. 1319 1320 FIXME: This routine ignores any special_function in the HOWTO, 1321 since the existing special_function values have been written for 1322 bfd_perform_relocation. 1323 1324 HOWTO is the reloc howto information. 1325 INPUT_BFD is the BFD which the reloc applies to. 1326 INPUT_SECTION is the section which the reloc applies to. 1327 CONTENTS is the contents of the section. 1328 ADDRESS is the address of the reloc within INPUT_SECTION. 1329 VALUE is the value of the symbol the reloc refers to. 1330 ADDEND is the addend of the reloc. */ 1331 1332 bfd_reloc_status_type 1333 _bfd_final_link_relocate (reloc_howto_type *howto, 1334 bfd *input_bfd, 1335 asection *input_section, 1336 bfd_byte *contents, 1337 bfd_vma address, 1338 bfd_vma value, 1339 bfd_vma addend) 1340 { 1341 bfd_vma relocation; 1342 1343 /* Sanity check the address. */ 1344 if (address > bfd_get_section_limit (input_bfd, input_section)) 1345 return bfd_reloc_outofrange; 1346 1347 /* This function assumes that we are dealing with a basic relocation 1348 against a symbol. We want to compute the value of the symbol to 1349 relocate to. This is just VALUE, the value of the symbol, plus 1350 ADDEND, any addend associated with the reloc. */ 1351 relocation = value + addend; 1352 1353 /* If the relocation is PC relative, we want to set RELOCATION to 1354 the distance between the symbol (currently in RELOCATION) and the 1355 location we are relocating. Some targets (e.g., i386-aout) 1356 arrange for the contents of the section to be the negative of the 1357 offset of the location within the section; for such targets 1358 pcrel_offset is FALSE. Other targets (e.g., m88kbcs or ELF) 1359 simply leave the contents of the section as zero; for such 1360 targets pcrel_offset is TRUE. If pcrel_offset is FALSE we do not 1361 need to subtract out the offset of the location within the 1362 section (which is just ADDRESS). */ 1363 if (howto->pc_relative) 1364 { 1365 relocation -= (input_section->output_section->vma 1366 + input_section->output_offset); 1367 if (howto->pcrel_offset) 1368 relocation -= address; 1369 } 1370 1371 return _bfd_relocate_contents (howto, input_bfd, relocation, 1372 contents + address); 1373 } 1374 1375 /* Relocate a given location using a given value and howto. */ 1376 1377 bfd_reloc_status_type 1378 _bfd_relocate_contents (reloc_howto_type *howto, 1379 bfd *input_bfd, 1380 bfd_vma relocation, 1381 bfd_byte *location) 1382 { 1383 int size; 1384 bfd_vma x = 0; 1385 bfd_reloc_status_type flag; 1386 unsigned int rightshift = howto->rightshift; 1387 unsigned int bitpos = howto->bitpos; 1388 1389 /* If the size is negative, negate RELOCATION. This isn't very 1390 general. */ 1391 if (howto->size < 0) 1392 relocation = -relocation; 1393 1394 /* Get the value we are going to relocate. */ 1395 size = bfd_get_reloc_size (howto); 1396 switch (size) 1397 { 1398 default: 1399 case 0: 1400 abort (); 1401 case 1: 1402 x = bfd_get_8 (input_bfd, location); 1403 break; 1404 case 2: 1405 x = bfd_get_16 (input_bfd, location); 1406 break; 1407 case 4: 1408 x = bfd_get_32 (input_bfd, location); 1409 break; 1410 case 8: 1411 #ifdef BFD64 1412 x = bfd_get_64 (input_bfd, location); 1413 #else 1414 abort (); 1415 #endif 1416 break; 1417 } 1418 1419 /* Check for overflow. FIXME: We may drop bits during the addition 1420 which we don't check for. We must either check at every single 1421 operation, which would be tedious, or we must do the computations 1422 in a type larger than bfd_vma, which would be inefficient. */ 1423 flag = bfd_reloc_ok; 1424 if (howto->complain_on_overflow != complain_overflow_dont) 1425 { 1426 bfd_vma addrmask, fieldmask, signmask, ss; 1427 bfd_vma a, b, sum; 1428 1429 /* Get the values to be added together. For signed and unsigned 1430 relocations, we assume that all values should be truncated to 1431 the size of an address. For bitfields, all the bits matter. 1432 See also bfd_check_overflow. */ 1433 fieldmask = N_ONES (howto->bitsize); 1434 signmask = ~fieldmask; 1435 addrmask = (N_ONES (bfd_arch_bits_per_address (input_bfd)) 1436 | (fieldmask << rightshift)); 1437 a = (relocation & addrmask) >> rightshift; 1438 b = (x & howto->src_mask & addrmask) >> bitpos; 1439 addrmask >>= rightshift; 1440 1441 switch (howto->complain_on_overflow) 1442 { 1443 case complain_overflow_signed: 1444 /* If any sign bits are set, all sign bits must be set. 1445 That is, A must be a valid negative address after 1446 shifting. */ 1447 signmask = ~(fieldmask >> 1); 1448 /* Fall thru */ 1449 1450 case complain_overflow_bitfield: 1451 /* Much like the signed check, but for a field one bit 1452 wider. We allow a bitfield to represent numbers in the 1453 range -2**n to 2**n-1, where n is the number of bits in the 1454 field. Note that when bfd_vma is 32 bits, a 32-bit reloc 1455 can't overflow, which is exactly what we want. */ 1456 ss = a & signmask; 1457 if (ss != 0 && ss != (addrmask & signmask)) 1458 flag = bfd_reloc_overflow; 1459 1460 /* We only need this next bit of code if the sign bit of B 1461 is below the sign bit of A. This would only happen if 1462 SRC_MASK had fewer bits than BITSIZE. Note that if 1463 SRC_MASK has more bits than BITSIZE, we can get into 1464 trouble; we would need to verify that B is in range, as 1465 we do for A above. */ 1466 ss = ((~howto->src_mask) >> 1) & howto->src_mask; 1467 ss >>= bitpos; 1468 1469 /* Set all the bits above the sign bit. */ 1470 b = (b ^ ss) - ss; 1471 1472 /* Now we can do the addition. */ 1473 sum = a + b; 1474 1475 /* See if the result has the correct sign. Bits above the 1476 sign bit are junk now; ignore them. If the sum is 1477 positive, make sure we did not have all negative inputs; 1478 if the sum is negative, make sure we did not have all 1479 positive inputs. The test below looks only at the sign 1480 bits, and it really just 1481 SIGN (A) == SIGN (B) && SIGN (A) != SIGN (SUM) 1482 1483 We mask with addrmask here to explicitly allow an address 1484 wrap-around. The Linux kernel relies on it, and it is 1485 the only way to write assembler code which can run when 1486 loaded at a location 0x80000000 away from the location at 1487 which it is linked. */ 1488 if (((~(a ^ b)) & (a ^ sum)) & signmask & addrmask) 1489 flag = bfd_reloc_overflow; 1490 break; 1491 1492 case complain_overflow_unsigned: 1493 /* Checking for an unsigned overflow is relatively easy: 1494 trim the addresses and add, and trim the result as well. 1495 Overflow is normally indicated when the result does not 1496 fit in the field. However, we also need to consider the 1497 case when, e.g., fieldmask is 0x7fffffff or smaller, an 1498 input is 0x80000000, and bfd_vma is only 32 bits; then we 1499 will get sum == 0, but there is an overflow, since the 1500 inputs did not fit in the field. Instead of doing a 1501 separate test, we can check for this by or-ing in the 1502 operands when testing for the sum overflowing its final 1503 field. */ 1504 sum = (a + b) & addrmask; 1505 if ((a | b | sum) & signmask) 1506 flag = bfd_reloc_overflow; 1507 break; 1508 1509 default: 1510 abort (); 1511 } 1512 } 1513 1514 /* Put RELOCATION in the right bits. */ 1515 relocation >>= (bfd_vma) rightshift; 1516 relocation <<= (bfd_vma) bitpos; 1517 1518 /* Add RELOCATION to the right bits of X. */ 1519 x = ((x & ~howto->dst_mask) 1520 | (((x & howto->src_mask) + relocation) & howto->dst_mask)); 1521 1522 /* Put the relocated value back in the object file. */ 1523 switch (size) 1524 { 1525 default: 1526 abort (); 1527 case 1: 1528 bfd_put_8 (input_bfd, x, location); 1529 break; 1530 case 2: 1531 bfd_put_16 (input_bfd, x, location); 1532 break; 1533 case 4: 1534 bfd_put_32 (input_bfd, x, location); 1535 break; 1536 case 8: 1537 #ifdef BFD64 1538 bfd_put_64 (input_bfd, x, location); 1539 #else 1540 abort (); 1541 #endif 1542 break; 1543 } 1544 1545 return flag; 1546 } 1547 1548 /* Clear a given location using a given howto, by applying a fixed relocation 1549 value and discarding any in-place addend. This is used for fixed-up 1550 relocations against discarded symbols, to make ignorable debug or unwind 1551 information more obvious. */ 1552 1553 void 1554 _bfd_clear_contents (reloc_howto_type *howto, 1555 bfd *input_bfd, 1556 asection *input_section, 1557 bfd_byte *location) 1558 { 1559 int size; 1560 bfd_vma x = 0; 1561 1562 /* Get the value we are going to relocate. */ 1563 size = bfd_get_reloc_size (howto); 1564 switch (size) 1565 { 1566 default: 1567 case 0: 1568 abort (); 1569 case 1: 1570 x = bfd_get_8 (input_bfd, location); 1571 break; 1572 case 2: 1573 x = bfd_get_16 (input_bfd, location); 1574 break; 1575 case 4: 1576 x = bfd_get_32 (input_bfd, location); 1577 break; 1578 case 8: 1579 #ifdef BFD64 1580 x = bfd_get_64 (input_bfd, location); 1581 #else 1582 abort (); 1583 #endif 1584 break; 1585 } 1586 1587 /* Zero out the unwanted bits of X. */ 1588 x &= ~howto->dst_mask; 1589 1590 /* For a range list, use 1 instead of 0 as placeholder. 0 1591 would terminate the list, hiding any later entries. */ 1592 if (strcmp (bfd_get_section_name (input_bfd, input_section), 1593 ".debug_ranges") == 0 1594 && (howto->dst_mask & 1) != 0) 1595 x |= 1; 1596 1597 /* Put the relocated value back in the object file. */ 1598 switch (size) 1599 { 1600 default: 1601 case 0: 1602 abort (); 1603 case 1: 1604 bfd_put_8 (input_bfd, x, location); 1605 break; 1606 case 2: 1607 bfd_put_16 (input_bfd, x, location); 1608 break; 1609 case 4: 1610 bfd_put_32 (input_bfd, x, location); 1611 break; 1612 case 8: 1613 #ifdef BFD64 1614 bfd_put_64 (input_bfd, x, location); 1615 #else 1616 abort (); 1617 #endif 1618 break; 1619 } 1620 } 1621 1622 /* 1623 DOCDD 1624 INODE 1625 howto manager, , typedef arelent, Relocations 1626 1627 SUBSECTION 1628 The howto manager 1629 1630 When an application wants to create a relocation, but doesn't 1631 know what the target machine might call it, it can find out by 1632 using this bit of code. 1633 1634 */ 1635 1636 /* 1637 TYPEDEF 1638 bfd_reloc_code_type 1639 1640 DESCRIPTION 1641 The insides of a reloc code. The idea is that, eventually, there 1642 will be one enumerator for every type of relocation we ever do. 1643 Pass one of these values to <<bfd_reloc_type_lookup>>, and it'll 1644 return a howto pointer. 1645 1646 This does mean that the application must determine the correct 1647 enumerator value; you can't get a howto pointer from a random set 1648 of attributes. 1649 1650 SENUM 1651 bfd_reloc_code_real 1652 1653 ENUM 1654 BFD_RELOC_64 1655 ENUMX 1656 BFD_RELOC_32 1657 ENUMX 1658 BFD_RELOC_26 1659 ENUMX 1660 BFD_RELOC_24 1661 ENUMX 1662 BFD_RELOC_16 1663 ENUMX 1664 BFD_RELOC_14 1665 ENUMX 1666 BFD_RELOC_8 1667 ENUMDOC 1668 Basic absolute relocations of N bits. 1669 1670 ENUM 1671 BFD_RELOC_64_PCREL 1672 ENUMX 1673 BFD_RELOC_32_PCREL 1674 ENUMX 1675 BFD_RELOC_24_PCREL 1676 ENUMX 1677 BFD_RELOC_16_PCREL 1678 ENUMX 1679 BFD_RELOC_12_PCREL 1680 ENUMX 1681 BFD_RELOC_8_PCREL 1682 ENUMDOC 1683 PC-relative relocations. Sometimes these are relative to the address 1684 of the relocation itself; sometimes they are relative to the start of 1685 the section containing the relocation. It depends on the specific target. 1686 1687 The 24-bit relocation is used in some Intel 960 configurations. 1688 1689 ENUM 1690 BFD_RELOC_32_SECREL 1691 ENUMDOC 1692 Section relative relocations. Some targets need this for DWARF2. 1693 1694 ENUM 1695 BFD_RELOC_32_GOT_PCREL 1696 ENUMX 1697 BFD_RELOC_16_GOT_PCREL 1698 ENUMX 1699 BFD_RELOC_8_GOT_PCREL 1700 ENUMX 1701 BFD_RELOC_32_GOTOFF 1702 ENUMX 1703 BFD_RELOC_16_GOTOFF 1704 ENUMX 1705 BFD_RELOC_LO16_GOTOFF 1706 ENUMX 1707 BFD_RELOC_HI16_GOTOFF 1708 ENUMX 1709 BFD_RELOC_HI16_S_GOTOFF 1710 ENUMX 1711 BFD_RELOC_8_GOTOFF 1712 ENUMX 1713 BFD_RELOC_64_PLT_PCREL 1714 ENUMX 1715 BFD_RELOC_32_PLT_PCREL 1716 ENUMX 1717 BFD_RELOC_24_PLT_PCREL 1718 ENUMX 1719 BFD_RELOC_16_PLT_PCREL 1720 ENUMX 1721 BFD_RELOC_8_PLT_PCREL 1722 ENUMX 1723 BFD_RELOC_64_PLTOFF 1724 ENUMX 1725 BFD_RELOC_32_PLTOFF 1726 ENUMX 1727 BFD_RELOC_16_PLTOFF 1728 ENUMX 1729 BFD_RELOC_LO16_PLTOFF 1730 ENUMX 1731 BFD_RELOC_HI16_PLTOFF 1732 ENUMX 1733 BFD_RELOC_HI16_S_PLTOFF 1734 ENUMX 1735 BFD_RELOC_8_PLTOFF 1736 ENUMDOC 1737 For ELF. 1738 1739 ENUM 1740 BFD_RELOC_68K_GLOB_DAT 1741 ENUMX 1742 BFD_RELOC_68K_JMP_SLOT 1743 ENUMX 1744 BFD_RELOC_68K_RELATIVE 1745 ENUMX 1746 BFD_RELOC_68K_TLS_GD32 1747 ENUMX 1748 BFD_RELOC_68K_TLS_GD16 1749 ENUMX 1750 BFD_RELOC_68K_TLS_GD8 1751 ENUMX 1752 BFD_RELOC_68K_TLS_LDM32 1753 ENUMX 1754 BFD_RELOC_68K_TLS_LDM16 1755 ENUMX 1756 BFD_RELOC_68K_TLS_LDM8 1757 ENUMX 1758 BFD_RELOC_68K_TLS_LDO32 1759 ENUMX 1760 BFD_RELOC_68K_TLS_LDO16 1761 ENUMX 1762 BFD_RELOC_68K_TLS_LDO8 1763 ENUMX 1764 BFD_RELOC_68K_TLS_IE32 1765 ENUMX 1766 BFD_RELOC_68K_TLS_IE16 1767 ENUMX 1768 BFD_RELOC_68K_TLS_IE8 1769 ENUMX 1770 BFD_RELOC_68K_TLS_LE32 1771 ENUMX 1772 BFD_RELOC_68K_TLS_LE16 1773 ENUMX 1774 BFD_RELOC_68K_TLS_LE8 1775 ENUMDOC 1776 Relocations used by 68K ELF. 1777 1778 ENUM 1779 BFD_RELOC_VAX_GLOB_DAT 1780 ENUMX 1781 BFD_RELOC_VAX_GLOB_REF 1782 ENUMX 1783 BFD_RELOC_VAX_JMP_SLOT 1784 ENUMX 1785 BFD_RELOC_VAX_RELATIVE 1786 ENUMDOC 1787 Relocations used by VAX ELF. 1788 1789 ENUM 1790 BFD_RELOC_32_BASEREL 1791 ENUMX 1792 BFD_RELOC_16_BASEREL 1793 ENUMX 1794 BFD_RELOC_LO16_BASEREL 1795 ENUMX 1796 BFD_RELOC_HI16_BASEREL 1797 ENUMX 1798 BFD_RELOC_HI16_S_BASEREL 1799 ENUMX 1800 BFD_RELOC_8_BASEREL 1801 ENUMX 1802 BFD_RELOC_RVA 1803 ENUMDOC 1804 Linkage-table relative. 1805 1806 ENUM 1807 BFD_RELOC_8_FFnn 1808 ENUMDOC 1809 Absolute 8-bit relocation, but used to form an address like 0xFFnn. 1810 1811 ENUM 1812 BFD_RELOC_32_PCREL_S2 1813 ENUMX 1814 BFD_RELOC_16_PCREL_S2 1815 ENUMX 1816 BFD_RELOC_23_PCREL_S2 1817 ENUMDOC 1818 These PC-relative relocations are stored as word displacements -- 1819 i.e., byte displacements shifted right two bits. The 30-bit word 1820 displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the 1821 SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The 1822 signed 16-bit displacement is used on the MIPS, and the 23-bit 1823 displacement is used on the Alpha. 1824 1825 ENUM 1826 BFD_RELOC_HI22 1827 ENUMX 1828 BFD_RELOC_LO10 1829 ENUMDOC 1830 High 22 bits and low 10 bits of 32-bit value, placed into lower bits of 1831 the target word. These are used on the SPARC. 1832 1833 ENUM 1834 BFD_RELOC_GPREL16 1835 ENUMX 1836 BFD_RELOC_GPREL32 1837 ENUMDOC 1838 For systems that allocate a Global Pointer register, these are 1839 displacements off that register. These relocation types are 1840 handled specially, because the value the register will have is 1841 decided relatively late. 1842 1843 ENUM 1844 BFD_RELOC_I960_CALLJ 1845 ENUMDOC 1846 Reloc types used for i960/b.out. 1847 1848 ENUM 1849 BFD_RELOC_NONE 1850 ENUMX 1851 BFD_RELOC_SPARC_WDISP22 1852 ENUMX 1853 BFD_RELOC_SPARC22 1854 ENUMX 1855 BFD_RELOC_SPARC13 1856 ENUMX 1857 BFD_RELOC_SPARC_GOT10 1858 ENUMX 1859 BFD_RELOC_SPARC_GOT13 1860 ENUMX 1861 BFD_RELOC_SPARC_GOT22 1862 ENUMX 1863 BFD_RELOC_SPARC_PC10 1864 ENUMX 1865 BFD_RELOC_SPARC_PC22 1866 ENUMX 1867 BFD_RELOC_SPARC_WPLT30 1868 ENUMX 1869 BFD_RELOC_SPARC_COPY 1870 ENUMX 1871 BFD_RELOC_SPARC_GLOB_DAT 1872 ENUMX 1873 BFD_RELOC_SPARC_JMP_SLOT 1874 ENUMX 1875 BFD_RELOC_SPARC_RELATIVE 1876 ENUMX 1877 BFD_RELOC_SPARC_UA16 1878 ENUMX 1879 BFD_RELOC_SPARC_UA32 1880 ENUMX 1881 BFD_RELOC_SPARC_UA64 1882 ENUMX 1883 BFD_RELOC_SPARC_GOTDATA_HIX22 1884 ENUMX 1885 BFD_RELOC_SPARC_GOTDATA_LOX10 1886 ENUMX 1887 BFD_RELOC_SPARC_GOTDATA_OP_HIX22 1888 ENUMX 1889 BFD_RELOC_SPARC_GOTDATA_OP_LOX10 1890 ENUMX 1891 BFD_RELOC_SPARC_GOTDATA_OP 1892 ENUMX 1893 BFD_RELOC_SPARC_JMP_IREL 1894 ENUMX 1895 BFD_RELOC_SPARC_IRELATIVE 1896 ENUMDOC 1897 SPARC ELF relocations. There is probably some overlap with other 1898 relocation types already defined. 1899 1900 ENUM 1901 BFD_RELOC_SPARC_BASE13 1902 ENUMX 1903 BFD_RELOC_SPARC_BASE22 1904 ENUMDOC 1905 I think these are specific to SPARC a.out (e.g., Sun 4). 1906 1907 ENUMEQ 1908 BFD_RELOC_SPARC_64 1909 BFD_RELOC_64 1910 ENUMX 1911 BFD_RELOC_SPARC_10 1912 ENUMX 1913 BFD_RELOC_SPARC_11 1914 ENUMX 1915 BFD_RELOC_SPARC_OLO10 1916 ENUMX 1917 BFD_RELOC_SPARC_HH22 1918 ENUMX 1919 BFD_RELOC_SPARC_HM10 1920 ENUMX 1921 BFD_RELOC_SPARC_LM22 1922 ENUMX 1923 BFD_RELOC_SPARC_PC_HH22 1924 ENUMX 1925 BFD_RELOC_SPARC_PC_HM10 1926 ENUMX 1927 BFD_RELOC_SPARC_PC_LM22 1928 ENUMX 1929 BFD_RELOC_SPARC_WDISP16 1930 ENUMX 1931 BFD_RELOC_SPARC_WDISP19 1932 ENUMX 1933 BFD_RELOC_SPARC_7 1934 ENUMX 1935 BFD_RELOC_SPARC_6 1936 ENUMX 1937 BFD_RELOC_SPARC_5 1938 ENUMEQX 1939 BFD_RELOC_SPARC_DISP64 1940 BFD_RELOC_64_PCREL 1941 ENUMX 1942 BFD_RELOC_SPARC_PLT32 1943 ENUMX 1944 BFD_RELOC_SPARC_PLT64 1945 ENUMX 1946 BFD_RELOC_SPARC_HIX22 1947 ENUMX 1948 BFD_RELOC_SPARC_LOX10 1949 ENUMX 1950 BFD_RELOC_SPARC_H44 1951 ENUMX 1952 BFD_RELOC_SPARC_M44 1953 ENUMX 1954 BFD_RELOC_SPARC_L44 1955 ENUMX 1956 BFD_RELOC_SPARC_REGISTER 1957 ENUMX 1958 BFD_RELOC_SPARC_H34 1959 ENUMX 1960 BFD_RELOC_SPARC_SIZE32 1961 ENUMX 1962 BFD_RELOC_SPARC_SIZE64 1963 ENUMX 1964 BFD_RELOC_SPARC_WDISP10 1965 ENUMDOC 1966 SPARC64 relocations 1967 1968 ENUM 1969 BFD_RELOC_SPARC_REV32 1970 ENUMDOC 1971 SPARC little endian relocation 1972 ENUM 1973 BFD_RELOC_SPARC_TLS_GD_HI22 1974 ENUMX 1975 BFD_RELOC_SPARC_TLS_GD_LO10 1976 ENUMX 1977 BFD_RELOC_SPARC_TLS_GD_ADD 1978 ENUMX 1979 BFD_RELOC_SPARC_TLS_GD_CALL 1980 ENUMX 1981 BFD_RELOC_SPARC_TLS_LDM_HI22 1982 ENUMX 1983 BFD_RELOC_SPARC_TLS_LDM_LO10 1984 ENUMX 1985 BFD_RELOC_SPARC_TLS_LDM_ADD 1986 ENUMX 1987 BFD_RELOC_SPARC_TLS_LDM_CALL 1988 ENUMX 1989 BFD_RELOC_SPARC_TLS_LDO_HIX22 1990 ENUMX 1991 BFD_RELOC_SPARC_TLS_LDO_LOX10 1992 ENUMX 1993 BFD_RELOC_SPARC_TLS_LDO_ADD 1994 ENUMX 1995 BFD_RELOC_SPARC_TLS_IE_HI22 1996 ENUMX 1997 BFD_RELOC_SPARC_TLS_IE_LO10 1998 ENUMX 1999 BFD_RELOC_SPARC_TLS_IE_LD 2000 ENUMX 2001 BFD_RELOC_SPARC_TLS_IE_LDX 2002 ENUMX 2003 BFD_RELOC_SPARC_TLS_IE_ADD 2004 ENUMX 2005 BFD_RELOC_SPARC_TLS_LE_HIX22 2006 ENUMX 2007 BFD_RELOC_SPARC_TLS_LE_LOX10 2008 ENUMX 2009 BFD_RELOC_SPARC_TLS_DTPMOD32 2010 ENUMX 2011 BFD_RELOC_SPARC_TLS_DTPMOD64 2012 ENUMX 2013 BFD_RELOC_SPARC_TLS_DTPOFF32 2014 ENUMX 2015 BFD_RELOC_SPARC_TLS_DTPOFF64 2016 ENUMX 2017 BFD_RELOC_SPARC_TLS_TPOFF32 2018 ENUMX 2019 BFD_RELOC_SPARC_TLS_TPOFF64 2020 ENUMDOC 2021 SPARC TLS relocations 2022 2023 ENUM 2024 BFD_RELOC_SPU_IMM7 2025 ENUMX 2026 BFD_RELOC_SPU_IMM8 2027 ENUMX 2028 BFD_RELOC_SPU_IMM10 2029 ENUMX 2030 BFD_RELOC_SPU_IMM10W 2031 ENUMX 2032 BFD_RELOC_SPU_IMM16 2033 ENUMX 2034 BFD_RELOC_SPU_IMM16W 2035 ENUMX 2036 BFD_RELOC_SPU_IMM18 2037 ENUMX 2038 BFD_RELOC_SPU_PCREL9a 2039 ENUMX 2040 BFD_RELOC_SPU_PCREL9b 2041 ENUMX 2042 BFD_RELOC_SPU_PCREL16 2043 ENUMX 2044 BFD_RELOC_SPU_LO16 2045 ENUMX 2046 BFD_RELOC_SPU_HI16 2047 ENUMX 2048 BFD_RELOC_SPU_PPU32 2049 ENUMX 2050 BFD_RELOC_SPU_PPU64 2051 ENUMX 2052 BFD_RELOC_SPU_ADD_PIC 2053 ENUMDOC 2054 SPU Relocations. 2055 2056 ENUM 2057 BFD_RELOC_ALPHA_GPDISP_HI16 2058 ENUMDOC 2059 Alpha ECOFF and ELF relocations. Some of these treat the symbol or 2060 "addend" in some special way. 2061 For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when 2062 writing; when reading, it will be the absolute section symbol. The 2063 addend is the displacement in bytes of the "lda" instruction from 2064 the "ldah" instruction (which is at the address of this reloc). 2065 ENUM 2066 BFD_RELOC_ALPHA_GPDISP_LO16 2067 ENUMDOC 2068 For GPDISP_LO16 ("ignore") relocations, the symbol is handled as 2069 with GPDISP_HI16 relocs. The addend is ignored when writing the 2070 relocations out, and is filled in with the file's GP value on 2071 reading, for convenience. 2072 2073 ENUM 2074 BFD_RELOC_ALPHA_GPDISP 2075 ENUMDOC 2076 The ELF GPDISP relocation is exactly the same as the GPDISP_HI16 2077 relocation except that there is no accompanying GPDISP_LO16 2078 relocation. 2079 2080 ENUM 2081 BFD_RELOC_ALPHA_LITERAL 2082 ENUMX 2083 BFD_RELOC_ALPHA_ELF_LITERAL 2084 ENUMX 2085 BFD_RELOC_ALPHA_LITUSE 2086 ENUMDOC 2087 The Alpha LITERAL/LITUSE relocs are produced by a symbol reference; 2088 the assembler turns it into a LDQ instruction to load the address of 2089 the symbol, and then fills in a register in the real instruction. 2090 2091 The LITERAL reloc, at the LDQ instruction, refers to the .lita 2092 section symbol. The addend is ignored when writing, but is filled 2093 in with the file's GP value on reading, for convenience, as with the 2094 GPDISP_LO16 reloc. 2095 2096 The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16. 2097 It should refer to the symbol to be referenced, as with 16_GOTOFF, 2098 but it generates output not based on the position within the .got 2099 section, but relative to the GP value chosen for the file during the 2100 final link stage. 2101 2102 The LITUSE reloc, on the instruction using the loaded address, gives 2103 information to the linker that it might be able to use to optimize 2104 away some literal section references. The symbol is ignored (read 2105 as the absolute section symbol), and the "addend" indicates the type 2106 of instruction using the register: 2107 1 - "memory" fmt insn 2108 2 - byte-manipulation (byte offset reg) 2109 3 - jsr (target of branch) 2110 2111 ENUM 2112 BFD_RELOC_ALPHA_HINT 2113 ENUMDOC 2114 The HINT relocation indicates a value that should be filled into the 2115 "hint" field of a jmp/jsr/ret instruction, for possible branch- 2116 prediction logic which may be provided on some processors. 2117 2118 ENUM 2119 BFD_RELOC_ALPHA_LINKAGE 2120 ENUMDOC 2121 The LINKAGE relocation outputs a linkage pair in the object file, 2122 which is filled by the linker. 2123 2124 ENUM 2125 BFD_RELOC_ALPHA_CODEADDR 2126 ENUMDOC 2127 The CODEADDR relocation outputs a STO_CA in the object file, 2128 which is filled by the linker. 2129 2130 ENUM 2131 BFD_RELOC_ALPHA_GPREL_HI16 2132 ENUMX 2133 BFD_RELOC_ALPHA_GPREL_LO16 2134 ENUMDOC 2135 The GPREL_HI/LO relocations together form a 32-bit offset from the 2136 GP register. 2137 2138 ENUM 2139 BFD_RELOC_ALPHA_BRSGP 2140 ENUMDOC 2141 Like BFD_RELOC_23_PCREL_S2, except that the source and target must 2142 share a common GP, and the target address is adjusted for 2143 STO_ALPHA_STD_GPLOAD. 2144 2145 ENUM 2146 BFD_RELOC_ALPHA_NOP 2147 ENUMDOC 2148 The NOP relocation outputs a NOP if the longword displacement 2149 between two procedure entry points is < 2^21. 2150 2151 ENUM 2152 BFD_RELOC_ALPHA_BSR 2153 ENUMDOC 2154 The BSR relocation outputs a BSR if the longword displacement 2155 between two procedure entry points is < 2^21. 2156 2157 ENUM 2158 BFD_RELOC_ALPHA_LDA 2159 ENUMDOC 2160 The LDA relocation outputs a LDA if the longword displacement 2161 between two procedure entry points is < 2^16. 2162 2163 ENUM 2164 BFD_RELOC_ALPHA_BOH 2165 ENUMDOC 2166 The BOH relocation outputs a BSR if the longword displacement 2167 between two procedure entry points is < 2^21, or else a hint. 2168 2169 ENUM 2170 BFD_RELOC_ALPHA_TLSGD 2171 ENUMX 2172 BFD_RELOC_ALPHA_TLSLDM 2173 ENUMX 2174 BFD_RELOC_ALPHA_DTPMOD64 2175 ENUMX 2176 BFD_RELOC_ALPHA_GOTDTPREL16 2177 ENUMX 2178 BFD_RELOC_ALPHA_DTPREL64 2179 ENUMX 2180 BFD_RELOC_ALPHA_DTPREL_HI16 2181 ENUMX 2182 BFD_RELOC_ALPHA_DTPREL_LO16 2183 ENUMX 2184 BFD_RELOC_ALPHA_DTPREL16 2185 ENUMX 2186 BFD_RELOC_ALPHA_GOTTPREL16 2187 ENUMX 2188 BFD_RELOC_ALPHA_TPREL64 2189 ENUMX 2190 BFD_RELOC_ALPHA_TPREL_HI16 2191 ENUMX 2192 BFD_RELOC_ALPHA_TPREL_LO16 2193 ENUMX 2194 BFD_RELOC_ALPHA_TPREL16 2195 ENUMDOC 2196 Alpha thread-local storage relocations. 2197 2198 ENUM 2199 BFD_RELOC_MIPS_JMP 2200 ENUMX 2201 BFD_RELOC_MICROMIPS_JMP 2202 ENUMDOC 2203 The MIPS jump instruction. 2204 2205 ENUM 2206 BFD_RELOC_MIPS16_JMP 2207 ENUMDOC 2208 The MIPS16 jump instruction. 2209 2210 ENUM 2211 BFD_RELOC_MIPS16_GPREL 2212 ENUMDOC 2213 MIPS16 GP relative reloc. 2214 2215 ENUM 2216 BFD_RELOC_HI16 2217 ENUMDOC 2218 High 16 bits of 32-bit value; simple reloc. 2219 2220 ENUM 2221 BFD_RELOC_HI16_S 2222 ENUMDOC 2223 High 16 bits of 32-bit value but the low 16 bits will be sign 2224 extended and added to form the final result. If the low 16 2225 bits form a negative number, we need to add one to the high value 2226 to compensate for the borrow when the low bits are added. 2227 2228 ENUM 2229 BFD_RELOC_LO16 2230 ENUMDOC 2231 Low 16 bits. 2232 2233 ENUM 2234 BFD_RELOC_HI16_PCREL 2235 ENUMDOC 2236 High 16 bits of 32-bit pc-relative value 2237 ENUM 2238 BFD_RELOC_HI16_S_PCREL 2239 ENUMDOC 2240 High 16 bits of 32-bit pc-relative value, adjusted 2241 ENUM 2242 BFD_RELOC_LO16_PCREL 2243 ENUMDOC 2244 Low 16 bits of pc-relative value 2245 2246 ENUM 2247 BFD_RELOC_MIPS16_GOT16 2248 ENUMX 2249 BFD_RELOC_MIPS16_CALL16 2250 ENUMDOC 2251 Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of 2252 16-bit immediate fields 2253 ENUM 2254 BFD_RELOC_MIPS16_HI16 2255 ENUMDOC 2256 MIPS16 high 16 bits of 32-bit value. 2257 ENUM 2258 BFD_RELOC_MIPS16_HI16_S 2259 ENUMDOC 2260 MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign 2261 extended and added to form the final result. If the low 16 2262 bits form a negative number, we need to add one to the high value 2263 to compensate for the borrow when the low bits are added. 2264 ENUM 2265 BFD_RELOC_MIPS16_LO16 2266 ENUMDOC 2267 MIPS16 low 16 bits. 2268 2269 ENUM 2270 BFD_RELOC_MIPS16_TLS_GD 2271 ENUMX 2272 BFD_RELOC_MIPS16_TLS_LDM 2273 ENUMX 2274 BFD_RELOC_MIPS16_TLS_DTPREL_HI16 2275 ENUMX 2276 BFD_RELOC_MIPS16_TLS_DTPREL_LO16 2277 ENUMX 2278 BFD_RELOC_MIPS16_TLS_GOTTPREL 2279 ENUMX 2280 BFD_RELOC_MIPS16_TLS_TPREL_HI16 2281 ENUMX 2282 BFD_RELOC_MIPS16_TLS_TPREL_LO16 2283 ENUMDOC 2284 MIPS16 TLS relocations 2285 2286 ENUM 2287 BFD_RELOC_MIPS_LITERAL 2288 ENUMX 2289 BFD_RELOC_MICROMIPS_LITERAL 2290 ENUMDOC 2291 Relocation against a MIPS literal section. 2292 2293 ENUM 2294 BFD_RELOC_MICROMIPS_7_PCREL_S1 2295 ENUMX 2296 BFD_RELOC_MICROMIPS_10_PCREL_S1 2297 ENUMX 2298 BFD_RELOC_MICROMIPS_16_PCREL_S1 2299 ENUMDOC 2300 microMIPS PC-relative relocations. 2301 2302 ENUM 2303 BFD_RELOC_MICROMIPS_GPREL16 2304 ENUMX 2305 BFD_RELOC_MICROMIPS_HI16 2306 ENUMX 2307 BFD_RELOC_MICROMIPS_HI16_S 2308 ENUMX 2309 BFD_RELOC_MICROMIPS_LO16 2310 ENUMDOC 2311 microMIPS versions of generic BFD relocs. 2312 2313 ENUM 2314 BFD_RELOC_MIPS_GOT16 2315 ENUMX 2316 BFD_RELOC_MICROMIPS_GOT16 2317 ENUMX 2318 BFD_RELOC_MIPS_CALL16 2319 ENUMX 2320 BFD_RELOC_MICROMIPS_CALL16 2321 ENUMX 2322 BFD_RELOC_MIPS_GOT_HI16 2323 ENUMX 2324 BFD_RELOC_MICROMIPS_GOT_HI16 2325 ENUMX 2326 BFD_RELOC_MIPS_GOT_LO16 2327 ENUMX 2328 BFD_RELOC_MICROMIPS_GOT_LO16 2329 ENUMX 2330 BFD_RELOC_MIPS_CALL_HI16 2331 ENUMX 2332 BFD_RELOC_MICROMIPS_CALL_HI16 2333 ENUMX 2334 BFD_RELOC_MIPS_CALL_LO16 2335 ENUMX 2336 BFD_RELOC_MICROMIPS_CALL_LO16 2337 ENUMX 2338 BFD_RELOC_MIPS_SUB 2339 ENUMX 2340 BFD_RELOC_MICROMIPS_SUB 2341 ENUMX 2342 BFD_RELOC_MIPS_GOT_PAGE 2343 ENUMX 2344 BFD_RELOC_MICROMIPS_GOT_PAGE 2345 ENUMX 2346 BFD_RELOC_MIPS_GOT_OFST 2347 ENUMX 2348 BFD_RELOC_MICROMIPS_GOT_OFST 2349 ENUMX 2350 BFD_RELOC_MIPS_GOT_DISP 2351 ENUMX 2352 BFD_RELOC_MICROMIPS_GOT_DISP 2353 ENUMX 2354 BFD_RELOC_MIPS_SHIFT5 2355 ENUMX 2356 BFD_RELOC_MIPS_SHIFT6 2357 ENUMX 2358 BFD_RELOC_MIPS_INSERT_A 2359 ENUMX 2360 BFD_RELOC_MIPS_INSERT_B 2361 ENUMX 2362 BFD_RELOC_MIPS_DELETE 2363 ENUMX 2364 BFD_RELOC_MIPS_HIGHEST 2365 ENUMX 2366 BFD_RELOC_MICROMIPS_HIGHEST 2367 ENUMX 2368 BFD_RELOC_MIPS_HIGHER 2369 ENUMX 2370 BFD_RELOC_MICROMIPS_HIGHER 2371 ENUMX 2372 BFD_RELOC_MIPS_SCN_DISP 2373 ENUMX 2374 BFD_RELOC_MICROMIPS_SCN_DISP 2375 ENUMX 2376 BFD_RELOC_MIPS_REL16 2377 ENUMX 2378 BFD_RELOC_MIPS_RELGOT 2379 ENUMX 2380 BFD_RELOC_MIPS_JALR 2381 ENUMX 2382 BFD_RELOC_MICROMIPS_JALR 2383 ENUMX 2384 BFD_RELOC_MIPS_TLS_DTPMOD32 2385 ENUMX 2386 BFD_RELOC_MIPS_TLS_DTPREL32 2387 ENUMX 2388 BFD_RELOC_MIPS_TLS_DTPMOD64 2389 ENUMX 2390 BFD_RELOC_MIPS_TLS_DTPREL64 2391 ENUMX 2392 BFD_RELOC_MIPS_TLS_GD 2393 ENUMX 2394 BFD_RELOC_MICROMIPS_TLS_GD 2395 ENUMX 2396 BFD_RELOC_MIPS_TLS_LDM 2397 ENUMX 2398 BFD_RELOC_MICROMIPS_TLS_LDM 2399 ENUMX 2400 BFD_RELOC_MIPS_TLS_DTPREL_HI16 2401 ENUMX 2402 BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16 2403 ENUMX 2404 BFD_RELOC_MIPS_TLS_DTPREL_LO16 2405 ENUMX 2406 BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16 2407 ENUMX 2408 BFD_RELOC_MIPS_TLS_GOTTPREL 2409 ENUMX 2410 BFD_RELOC_MICROMIPS_TLS_GOTTPREL 2411 ENUMX 2412 BFD_RELOC_MIPS_TLS_TPREL32 2413 ENUMX 2414 BFD_RELOC_MIPS_TLS_TPREL64 2415 ENUMX 2416 BFD_RELOC_MIPS_TLS_TPREL_HI16 2417 ENUMX 2418 BFD_RELOC_MICROMIPS_TLS_TPREL_HI16 2419 ENUMX 2420 BFD_RELOC_MIPS_TLS_TPREL_LO16 2421 ENUMX 2422 BFD_RELOC_MICROMIPS_TLS_TPREL_LO16 2423 ENUMDOC 2424 MIPS ELF relocations. 2425 COMMENT 2426 2427 ENUM 2428 BFD_RELOC_MIPS_COPY 2429 ENUMX 2430 BFD_RELOC_MIPS_JUMP_SLOT 2431 ENUMDOC 2432 MIPS ELF relocations (VxWorks and PLT extensions). 2433 COMMENT 2434 2435 ENUM 2436 BFD_RELOC_MOXIE_10_PCREL 2437 ENUMDOC 2438 Moxie ELF relocations. 2439 COMMENT 2440 2441 ENUM 2442 BFD_RELOC_FRV_LABEL16 2443 ENUMX 2444 BFD_RELOC_FRV_LABEL24 2445 ENUMX 2446 BFD_RELOC_FRV_LO16 2447 ENUMX 2448 BFD_RELOC_FRV_HI16 2449 ENUMX 2450 BFD_RELOC_FRV_GPREL12 2451 ENUMX 2452 BFD_RELOC_FRV_GPRELU12 2453 ENUMX 2454 BFD_RELOC_FRV_GPREL32 2455 ENUMX 2456 BFD_RELOC_FRV_GPRELHI 2457 ENUMX 2458 BFD_RELOC_FRV_GPRELLO 2459 ENUMX 2460 BFD_RELOC_FRV_GOT12 2461 ENUMX 2462 BFD_RELOC_FRV_GOTHI 2463 ENUMX 2464 BFD_RELOC_FRV_GOTLO 2465 ENUMX 2466 BFD_RELOC_FRV_FUNCDESC 2467 ENUMX 2468 BFD_RELOC_FRV_FUNCDESC_GOT12 2469 ENUMX 2470 BFD_RELOC_FRV_FUNCDESC_GOTHI 2471 ENUMX 2472 BFD_RELOC_FRV_FUNCDESC_GOTLO 2473 ENUMX 2474 BFD_RELOC_FRV_FUNCDESC_VALUE 2475 ENUMX 2476 BFD_RELOC_FRV_FUNCDESC_GOTOFF12 2477 ENUMX 2478 BFD_RELOC_FRV_FUNCDESC_GOTOFFHI 2479 ENUMX 2480 BFD_RELOC_FRV_FUNCDESC_GOTOFFLO 2481 ENUMX 2482 BFD_RELOC_FRV_GOTOFF12 2483 ENUMX 2484 BFD_RELOC_FRV_GOTOFFHI 2485 ENUMX 2486 BFD_RELOC_FRV_GOTOFFLO 2487 ENUMX 2488 BFD_RELOC_FRV_GETTLSOFF 2489 ENUMX 2490 BFD_RELOC_FRV_TLSDESC_VALUE 2491 ENUMX 2492 BFD_RELOC_FRV_GOTTLSDESC12 2493 ENUMX 2494 BFD_RELOC_FRV_GOTTLSDESCHI 2495 ENUMX 2496 BFD_RELOC_FRV_GOTTLSDESCLO 2497 ENUMX 2498 BFD_RELOC_FRV_TLSMOFF12 2499 ENUMX 2500 BFD_RELOC_FRV_TLSMOFFHI 2501 ENUMX 2502 BFD_RELOC_FRV_TLSMOFFLO 2503 ENUMX 2504 BFD_RELOC_FRV_GOTTLSOFF12 2505 ENUMX 2506 BFD_RELOC_FRV_GOTTLSOFFHI 2507 ENUMX 2508 BFD_RELOC_FRV_GOTTLSOFFLO 2509 ENUMX 2510 BFD_RELOC_FRV_TLSOFF 2511 ENUMX 2512 BFD_RELOC_FRV_TLSDESC_RELAX 2513 ENUMX 2514 BFD_RELOC_FRV_GETTLSOFF_RELAX 2515 ENUMX 2516 BFD_RELOC_FRV_TLSOFF_RELAX 2517 ENUMX 2518 BFD_RELOC_FRV_TLSMOFF 2519 ENUMDOC 2520 Fujitsu Frv Relocations. 2521 COMMENT 2522 2523 ENUM 2524 BFD_RELOC_MN10300_GOTOFF24 2525 ENUMDOC 2526 This is a 24bit GOT-relative reloc for the mn10300. 2527 ENUM 2528 BFD_RELOC_MN10300_GOT32 2529 ENUMDOC 2530 This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes 2531 in the instruction. 2532 ENUM 2533 BFD_RELOC_MN10300_GOT24 2534 ENUMDOC 2535 This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes 2536 in the instruction. 2537 ENUM 2538 BFD_RELOC_MN10300_GOT16 2539 ENUMDOC 2540 This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes 2541 in the instruction. 2542 ENUM 2543 BFD_RELOC_MN10300_COPY 2544 ENUMDOC 2545 Copy symbol at runtime. 2546 ENUM 2547 BFD_RELOC_MN10300_GLOB_DAT 2548 ENUMDOC 2549 Create GOT entry. 2550 ENUM 2551 BFD_RELOC_MN10300_JMP_SLOT 2552 ENUMDOC 2553 Create PLT entry. 2554 ENUM 2555 BFD_RELOC_MN10300_RELATIVE 2556 ENUMDOC 2557 Adjust by program base. 2558 ENUM 2559 BFD_RELOC_MN10300_SYM_DIFF 2560 ENUMDOC 2561 Together with another reloc targeted at the same location, 2562 allows for a value that is the difference of two symbols 2563 in the same section. 2564 ENUM 2565 BFD_RELOC_MN10300_ALIGN 2566 ENUMDOC 2567 The addend of this reloc is an alignment power that must 2568 be honoured at the offset's location, regardless of linker 2569 relaxation. 2570 ENUM 2571 BFD_RELOC_MN10300_TLS_GD 2572 ENUMX 2573 BFD_RELOC_MN10300_TLS_LD 2574 ENUMX 2575 BFD_RELOC_MN10300_TLS_LDO 2576 ENUMX 2577 BFD_RELOC_MN10300_TLS_GOTIE 2578 ENUMX 2579 BFD_RELOC_MN10300_TLS_IE 2580 ENUMX 2581 BFD_RELOC_MN10300_TLS_LE 2582 ENUMX 2583 BFD_RELOC_MN10300_TLS_DTPMOD 2584 ENUMX 2585 BFD_RELOC_MN10300_TLS_DTPOFF 2586 ENUMX 2587 BFD_RELOC_MN10300_TLS_TPOFF 2588 ENUMDOC 2589 Various TLS-related relocations. 2590 ENUM 2591 BFD_RELOC_MN10300_32_PCREL 2592 ENUMDOC 2593 This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the 2594 instruction. 2595 ENUM 2596 BFD_RELOC_MN10300_16_PCREL 2597 ENUMDOC 2598 This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the 2599 instruction. 2600 COMMENT 2601 2602 ENUM 2603 BFD_RELOC_386_GOT32 2604 ENUMX 2605 BFD_RELOC_386_PLT32 2606 ENUMX 2607 BFD_RELOC_386_COPY 2608 ENUMX 2609 BFD_RELOC_386_GLOB_DAT 2610 ENUMX 2611 BFD_RELOC_386_JUMP_SLOT 2612 ENUMX 2613 BFD_RELOC_386_RELATIVE 2614 ENUMX 2615 BFD_RELOC_386_GOTOFF 2616 ENUMX 2617 BFD_RELOC_386_GOTPC 2618 ENUMX 2619 BFD_RELOC_386_TLS_TPOFF 2620 ENUMX 2621 BFD_RELOC_386_TLS_IE 2622 ENUMX 2623 BFD_RELOC_386_TLS_GOTIE 2624 ENUMX 2625 BFD_RELOC_386_TLS_LE 2626 ENUMX 2627 BFD_RELOC_386_TLS_GD 2628 ENUMX 2629 BFD_RELOC_386_TLS_LDM 2630 ENUMX 2631 BFD_RELOC_386_TLS_LDO_32 2632 ENUMX 2633 BFD_RELOC_386_TLS_IE_32 2634 ENUMX 2635 BFD_RELOC_386_TLS_LE_32 2636 ENUMX 2637 BFD_RELOC_386_TLS_DTPMOD32 2638 ENUMX 2639 BFD_RELOC_386_TLS_DTPOFF32 2640 ENUMX 2641 BFD_RELOC_386_TLS_TPOFF32 2642 ENUMX 2643 BFD_RELOC_386_TLS_GOTDESC 2644 ENUMX 2645 BFD_RELOC_386_TLS_DESC_CALL 2646 ENUMX 2647 BFD_RELOC_386_TLS_DESC 2648 ENUMX 2649 BFD_RELOC_386_IRELATIVE 2650 ENUMDOC 2651 i386/elf relocations 2652 2653 ENUM 2654 BFD_RELOC_X86_64_GOT32 2655 ENUMX 2656 BFD_RELOC_X86_64_PLT32 2657 ENUMX 2658 BFD_RELOC_X86_64_COPY 2659 ENUMX 2660 BFD_RELOC_X86_64_GLOB_DAT 2661 ENUMX 2662 BFD_RELOC_X86_64_JUMP_SLOT 2663 ENUMX 2664 BFD_RELOC_X86_64_RELATIVE 2665 ENUMX 2666 BFD_RELOC_X86_64_GOTPCREL 2667 ENUMX 2668 BFD_RELOC_X86_64_32S 2669 ENUMX 2670 BFD_RELOC_X86_64_DTPMOD64 2671 ENUMX 2672 BFD_RELOC_X86_64_DTPOFF64 2673 ENUMX 2674 BFD_RELOC_X86_64_TPOFF64 2675 ENUMX 2676 BFD_RELOC_X86_64_TLSGD 2677 ENUMX 2678 BFD_RELOC_X86_64_TLSLD 2679 ENUMX 2680 BFD_RELOC_X86_64_DTPOFF32 2681 ENUMX 2682 BFD_RELOC_X86_64_GOTTPOFF 2683 ENUMX 2684 BFD_RELOC_X86_64_TPOFF32 2685 ENUMX 2686 BFD_RELOC_X86_64_GOTOFF64 2687 ENUMX 2688 BFD_RELOC_X86_64_GOTPC32 2689 ENUMX 2690 BFD_RELOC_X86_64_GOT64 2691 ENUMX 2692 BFD_RELOC_X86_64_GOTPCREL64 2693 ENUMX 2694 BFD_RELOC_X86_64_GOTPC64 2695 ENUMX 2696 BFD_RELOC_X86_64_GOTPLT64 2697 ENUMX 2698 BFD_RELOC_X86_64_PLTOFF64 2699 ENUMX 2700 BFD_RELOC_X86_64_GOTPC32_TLSDESC 2701 ENUMX 2702 BFD_RELOC_X86_64_TLSDESC_CALL 2703 ENUMX 2704 BFD_RELOC_X86_64_TLSDESC 2705 ENUMX 2706 BFD_RELOC_X86_64_IRELATIVE 2707 ENUMDOC 2708 x86-64/elf relocations 2709 2710 ENUM 2711 BFD_RELOC_NS32K_IMM_8 2712 ENUMX 2713 BFD_RELOC_NS32K_IMM_16 2714 ENUMX 2715 BFD_RELOC_NS32K_IMM_32 2716 ENUMX 2717 BFD_RELOC_NS32K_IMM_8_PCREL 2718 ENUMX 2719 BFD_RELOC_NS32K_IMM_16_PCREL 2720 ENUMX 2721 BFD_RELOC_NS32K_IMM_32_PCREL 2722 ENUMX 2723 BFD_RELOC_NS32K_DISP_8 2724 ENUMX 2725 BFD_RELOC_NS32K_DISP_16 2726 ENUMX 2727 BFD_RELOC_NS32K_DISP_32 2728 ENUMX 2729 BFD_RELOC_NS32K_DISP_8_PCREL 2730 ENUMX 2731 BFD_RELOC_NS32K_DISP_16_PCREL 2732 ENUMX 2733 BFD_RELOC_NS32K_DISP_32_PCREL 2734 ENUMDOC 2735 ns32k relocations 2736 2737 ENUM 2738 BFD_RELOC_PDP11_DISP_8_PCREL 2739 ENUMX 2740 BFD_RELOC_PDP11_DISP_6_PCREL 2741 ENUMDOC 2742 PDP11 relocations 2743 2744 ENUM 2745 BFD_RELOC_PJ_CODE_HI16 2746 ENUMX 2747 BFD_RELOC_PJ_CODE_LO16 2748 ENUMX 2749 BFD_RELOC_PJ_CODE_DIR16 2750 ENUMX 2751 BFD_RELOC_PJ_CODE_DIR32 2752 ENUMX 2753 BFD_RELOC_PJ_CODE_REL16 2754 ENUMX 2755 BFD_RELOC_PJ_CODE_REL32 2756 ENUMDOC 2757 Picojava relocs. Not all of these appear in object files. 2758 2759 ENUM 2760 BFD_RELOC_PPC_B26 2761 ENUMX 2762 BFD_RELOC_PPC_BA26 2763 ENUMX 2764 BFD_RELOC_PPC_TOC16 2765 ENUMX 2766 BFD_RELOC_PPC_B16 2767 ENUMX 2768 BFD_RELOC_PPC_B16_BRTAKEN 2769 ENUMX 2770 BFD_RELOC_PPC_B16_BRNTAKEN 2771 ENUMX 2772 BFD_RELOC_PPC_BA16 2773 ENUMX 2774 BFD_RELOC_PPC_BA16_BRTAKEN 2775 ENUMX 2776 BFD_RELOC_PPC_BA16_BRNTAKEN 2777 ENUMX 2778 BFD_RELOC_PPC_COPY 2779 ENUMX 2780 BFD_RELOC_PPC_GLOB_DAT 2781 ENUMX 2782 BFD_RELOC_PPC_JMP_SLOT 2783 ENUMX 2784 BFD_RELOC_PPC_RELATIVE 2785 ENUMX 2786 BFD_RELOC_PPC_LOCAL24PC 2787 ENUMX 2788 BFD_RELOC_PPC_EMB_NADDR32 2789 ENUMX 2790 BFD_RELOC_PPC_EMB_NADDR16 2791 ENUMX 2792 BFD_RELOC_PPC_EMB_NADDR16_LO 2793 ENUMX 2794 BFD_RELOC_PPC_EMB_NADDR16_HI 2795 ENUMX 2796 BFD_RELOC_PPC_EMB_NADDR16_HA 2797 ENUMX 2798 BFD_RELOC_PPC_EMB_SDAI16 2799 ENUMX 2800 BFD_RELOC_PPC_EMB_SDA2I16 2801 ENUMX 2802 BFD_RELOC_PPC_EMB_SDA2REL 2803 ENUMX 2804 BFD_RELOC_PPC_EMB_SDA21 2805 ENUMX 2806 BFD_RELOC_PPC_EMB_MRKREF 2807 ENUMX 2808 BFD_RELOC_PPC_EMB_RELSEC16 2809 ENUMX 2810 BFD_RELOC_PPC_EMB_RELST_LO 2811 ENUMX 2812 BFD_RELOC_PPC_EMB_RELST_HI 2813 ENUMX 2814 BFD_RELOC_PPC_EMB_RELST_HA 2815 ENUMX 2816 BFD_RELOC_PPC_EMB_BIT_FLD 2817 ENUMX 2818 BFD_RELOC_PPC_EMB_RELSDA 2819 ENUMX 2820 BFD_RELOC_PPC_VLE_REL8 2821 ENUMX 2822 BFD_RELOC_PPC_VLE_REL15 2823 ENUMX 2824 BFD_RELOC_PPC_VLE_REL24 2825 ENUMX 2826 BFD_RELOC_PPC_VLE_LO16A 2827 ENUMX 2828 BFD_RELOC_PPC_VLE_LO16D 2829 ENUMX 2830 BFD_RELOC_PPC_VLE_HI16A 2831 ENUMX 2832 BFD_RELOC_PPC_VLE_HI16D 2833 ENUMX 2834 BFD_RELOC_PPC_VLE_HA16A 2835 ENUMX 2836 BFD_RELOC_PPC_VLE_HA16D 2837 ENUMX 2838 BFD_RELOC_PPC_VLE_SDA21 2839 ENUMX 2840 BFD_RELOC_PPC_VLE_SDA21_LO 2841 ENUMX 2842 BFD_RELOC_PPC_VLE_SDAREL_LO16A 2843 ENUMX 2844 BFD_RELOC_PPC_VLE_SDAREL_LO16D 2845 ENUMX 2846 BFD_RELOC_PPC_VLE_SDAREL_HI16A 2847 ENUMX 2848 BFD_RELOC_PPC_VLE_SDAREL_HI16D 2849 ENUMX 2850 BFD_RELOC_PPC_VLE_SDAREL_HA16A 2851 ENUMX 2852 BFD_RELOC_PPC_VLE_SDAREL_HA16D 2853 ENUMX 2854 BFD_RELOC_PPC64_HIGHER 2855 ENUMX 2856 BFD_RELOC_PPC64_HIGHER_S 2857 ENUMX 2858 BFD_RELOC_PPC64_HIGHEST 2859 ENUMX 2860 BFD_RELOC_PPC64_HIGHEST_S 2861 ENUMX 2862 BFD_RELOC_PPC64_TOC16_LO 2863 ENUMX 2864 BFD_RELOC_PPC64_TOC16_HI 2865 ENUMX 2866 BFD_RELOC_PPC64_TOC16_HA 2867 ENUMX 2868 BFD_RELOC_PPC64_TOC 2869 ENUMX 2870 BFD_RELOC_PPC64_PLTGOT16 2871 ENUMX 2872 BFD_RELOC_PPC64_PLTGOT16_LO 2873 ENUMX 2874 BFD_RELOC_PPC64_PLTGOT16_HI 2875 ENUMX 2876 BFD_RELOC_PPC64_PLTGOT16_HA 2877 ENUMX 2878 BFD_RELOC_PPC64_ADDR16_DS 2879 ENUMX 2880 BFD_RELOC_PPC64_ADDR16_LO_DS 2881 ENUMX 2882 BFD_RELOC_PPC64_GOT16_DS 2883 ENUMX 2884 BFD_RELOC_PPC64_GOT16_LO_DS 2885 ENUMX 2886 BFD_RELOC_PPC64_PLT16_LO_DS 2887 ENUMX 2888 BFD_RELOC_PPC64_SECTOFF_DS 2889 ENUMX 2890 BFD_RELOC_PPC64_SECTOFF_LO_DS 2891 ENUMX 2892 BFD_RELOC_PPC64_TOC16_DS 2893 ENUMX 2894 BFD_RELOC_PPC64_TOC16_LO_DS 2895 ENUMX 2896 BFD_RELOC_PPC64_PLTGOT16_DS 2897 ENUMX 2898 BFD_RELOC_PPC64_PLTGOT16_LO_DS 2899 ENUMDOC 2900 Power(rs6000) and PowerPC relocations. 2901 2902 ENUM 2903 BFD_RELOC_PPC_TLS 2904 ENUMX 2905 BFD_RELOC_PPC_TLSGD 2906 ENUMX 2907 BFD_RELOC_PPC_TLSLD 2908 ENUMX 2909 BFD_RELOC_PPC_DTPMOD 2910 ENUMX 2911 BFD_RELOC_PPC_TPREL16 2912 ENUMX 2913 BFD_RELOC_PPC_TPREL16_LO 2914 ENUMX 2915 BFD_RELOC_PPC_TPREL16_HI 2916 ENUMX 2917 BFD_RELOC_PPC_TPREL16_HA 2918 ENUMX 2919 BFD_RELOC_PPC_TPREL 2920 ENUMX 2921 BFD_RELOC_PPC_DTPREL16 2922 ENUMX 2923 BFD_RELOC_PPC_DTPREL16_LO 2924 ENUMX 2925 BFD_RELOC_PPC_DTPREL16_HI 2926 ENUMX 2927 BFD_RELOC_PPC_DTPREL16_HA 2928 ENUMX 2929 BFD_RELOC_PPC_DTPREL 2930 ENUMX 2931 BFD_RELOC_PPC_GOT_TLSGD16 2932 ENUMX 2933 BFD_RELOC_PPC_GOT_TLSGD16_LO 2934 ENUMX 2935 BFD_RELOC_PPC_GOT_TLSGD16_HI 2936 ENUMX 2937 BFD_RELOC_PPC_GOT_TLSGD16_HA 2938 ENUMX 2939 BFD_RELOC_PPC_GOT_TLSLD16 2940 ENUMX 2941 BFD_RELOC_PPC_GOT_TLSLD16_LO 2942 ENUMX 2943 BFD_RELOC_PPC_GOT_TLSLD16_HI 2944 ENUMX 2945 BFD_RELOC_PPC_GOT_TLSLD16_HA 2946 ENUMX 2947 BFD_RELOC_PPC_GOT_TPREL16 2948 ENUMX 2949 BFD_RELOC_PPC_GOT_TPREL16_LO 2950 ENUMX 2951 BFD_RELOC_PPC_GOT_TPREL16_HI 2952 ENUMX 2953 BFD_RELOC_PPC_GOT_TPREL16_HA 2954 ENUMX 2955 BFD_RELOC_PPC_GOT_DTPREL16 2956 ENUMX 2957 BFD_RELOC_PPC_GOT_DTPREL16_LO 2958 ENUMX 2959 BFD_RELOC_PPC_GOT_DTPREL16_HI 2960 ENUMX 2961 BFD_RELOC_PPC_GOT_DTPREL16_HA 2962 ENUMX 2963 BFD_RELOC_PPC64_TPREL16_DS 2964 ENUMX 2965 BFD_RELOC_PPC64_TPREL16_LO_DS 2966 ENUMX 2967 BFD_RELOC_PPC64_TPREL16_HIGHER 2968 ENUMX 2969 BFD_RELOC_PPC64_TPREL16_HIGHERA 2970 ENUMX 2971 BFD_RELOC_PPC64_TPREL16_HIGHEST 2972 ENUMX 2973 BFD_RELOC_PPC64_TPREL16_HIGHESTA 2974 ENUMX 2975 BFD_RELOC_PPC64_DTPREL16_DS 2976 ENUMX 2977 BFD_RELOC_PPC64_DTPREL16_LO_DS 2978 ENUMX 2979 BFD_RELOC_PPC64_DTPREL16_HIGHER 2980 ENUMX 2981 BFD_RELOC_PPC64_DTPREL16_HIGHERA 2982 ENUMX 2983 BFD_RELOC_PPC64_DTPREL16_HIGHEST 2984 ENUMX 2985 BFD_RELOC_PPC64_DTPREL16_HIGHESTA 2986 ENUMDOC 2987 PowerPC and PowerPC64 thread-local storage relocations. 2988 2989 ENUM 2990 BFD_RELOC_I370_D12 2991 ENUMDOC 2992 IBM 370/390 relocations 2993 2994 ENUM 2995 BFD_RELOC_CTOR 2996 ENUMDOC 2997 The type of reloc used to build a constructor table - at the moment 2998 probably a 32 bit wide absolute relocation, but the target can choose. 2999 It generally does map to one of the other relocation types. 3000 3001 ENUM 3002 BFD_RELOC_ARM_PCREL_BRANCH 3003 ENUMDOC 3004 ARM 26 bit pc-relative branch. The lowest two bits must be zero and are 3005 not stored in the instruction. 3006 ENUM 3007 BFD_RELOC_ARM_PCREL_BLX 3008 ENUMDOC 3009 ARM 26 bit pc-relative branch. The lowest bit must be zero and is 3010 not stored in the instruction. The 2nd lowest bit comes from a 1 bit 3011 field in the instruction. 3012 ENUM 3013 BFD_RELOC_THUMB_PCREL_BLX 3014 ENUMDOC 3015 Thumb 22 bit pc-relative branch. The lowest bit must be zero and is 3016 not stored in the instruction. The 2nd lowest bit comes from a 1 bit 3017 field in the instruction. 3018 ENUM 3019 BFD_RELOC_ARM_PCREL_CALL 3020 ENUMDOC 3021 ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. 3022 ENUM 3023 BFD_RELOC_ARM_PCREL_JUMP 3024 ENUMDOC 3025 ARM 26-bit pc-relative branch for B or conditional BL instruction. 3026 3027 ENUM 3028 BFD_RELOC_THUMB_PCREL_BRANCH7 3029 ENUMX 3030 BFD_RELOC_THUMB_PCREL_BRANCH9 3031 ENUMX 3032 BFD_RELOC_THUMB_PCREL_BRANCH12 3033 ENUMX 3034 BFD_RELOC_THUMB_PCREL_BRANCH20 3035 ENUMX 3036 BFD_RELOC_THUMB_PCREL_BRANCH23 3037 ENUMX 3038 BFD_RELOC_THUMB_PCREL_BRANCH25 3039 ENUMDOC 3040 Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches. 3041 The lowest bit must be zero and is not stored in the instruction. 3042 Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an 3043 "nn" one smaller in all cases. Note further that BRANCH23 3044 corresponds to R_ARM_THM_CALL. 3045 3046 ENUM 3047 BFD_RELOC_ARM_OFFSET_IMM 3048 ENUMDOC 3049 12-bit immediate offset, used in ARM-format ldr and str instructions. 3050 3051 ENUM 3052 BFD_RELOC_ARM_THUMB_OFFSET 3053 ENUMDOC 3054 5-bit immediate offset, used in Thumb-format ldr and str instructions. 3055 3056 ENUM 3057 BFD_RELOC_ARM_TARGET1 3058 ENUMDOC 3059 Pc-relative or absolute relocation depending on target. Used for 3060 entries in .init_array sections. 3061 ENUM 3062 BFD_RELOC_ARM_ROSEGREL32 3063 ENUMDOC 3064 Read-only segment base relative address. 3065 ENUM 3066 BFD_RELOC_ARM_SBREL32 3067 ENUMDOC 3068 Data segment base relative address. 3069 ENUM 3070 BFD_RELOC_ARM_TARGET2 3071 ENUMDOC 3072 This reloc is used for references to RTTI data from exception handling 3073 tables. The actual definition depends on the target. It may be a 3074 pc-relative or some form of GOT-indirect relocation. 3075 ENUM 3076 BFD_RELOC_ARM_PREL31 3077 ENUMDOC 3078 31-bit PC relative address. 3079 ENUM 3080 BFD_RELOC_ARM_MOVW 3081 ENUMX 3082 BFD_RELOC_ARM_MOVT 3083 ENUMX 3084 BFD_RELOC_ARM_MOVW_PCREL 3085 ENUMX 3086 BFD_RELOC_ARM_MOVT_PCREL 3087 ENUMX 3088 BFD_RELOC_ARM_THUMB_MOVW 3089 ENUMX 3090 BFD_RELOC_ARM_THUMB_MOVT 3091 ENUMX 3092 BFD_RELOC_ARM_THUMB_MOVW_PCREL 3093 ENUMX 3094 BFD_RELOC_ARM_THUMB_MOVT_PCREL 3095 ENUMDOC 3096 Low and High halfword relocations for MOVW and MOVT instructions. 3097 3098 ENUM 3099 BFD_RELOC_ARM_JUMP_SLOT 3100 ENUMX 3101 BFD_RELOC_ARM_GLOB_DAT 3102 ENUMX 3103 BFD_RELOC_ARM_GOT32 3104 ENUMX 3105 BFD_RELOC_ARM_PLT32 3106 ENUMX 3107 BFD_RELOC_ARM_RELATIVE 3108 ENUMX 3109 BFD_RELOC_ARM_GOTOFF 3110 ENUMX 3111 BFD_RELOC_ARM_GOTPC 3112 ENUMX 3113 BFD_RELOC_ARM_GOT_PREL 3114 ENUMDOC 3115 Relocations for setting up GOTs and PLTs for shared libraries. 3116 3117 ENUM 3118 BFD_RELOC_ARM_TLS_GD32 3119 ENUMX 3120 BFD_RELOC_ARM_TLS_LDO32 3121 ENUMX 3122 BFD_RELOC_ARM_TLS_LDM32 3123 ENUMX 3124 BFD_RELOC_ARM_TLS_DTPOFF32 3125 ENUMX 3126 BFD_RELOC_ARM_TLS_DTPMOD32 3127 ENUMX 3128 BFD_RELOC_ARM_TLS_TPOFF32 3129 ENUMX 3130 BFD_RELOC_ARM_TLS_IE32 3131 ENUMX 3132 BFD_RELOC_ARM_TLS_LE32 3133 ENUMX 3134 BFD_RELOC_ARM_TLS_GOTDESC 3135 ENUMX 3136 BFD_RELOC_ARM_TLS_CALL 3137 ENUMX 3138 BFD_RELOC_ARM_THM_TLS_CALL 3139 ENUMX 3140 BFD_RELOC_ARM_TLS_DESCSEQ 3141 ENUMX 3142 BFD_RELOC_ARM_THM_TLS_DESCSEQ 3143 ENUMX 3144 BFD_RELOC_ARM_TLS_DESC 3145 ENUMDOC 3146 ARM thread-local storage relocations. 3147 3148 ENUM 3149 BFD_RELOC_ARM_ALU_PC_G0_NC 3150 ENUMX 3151 BFD_RELOC_ARM_ALU_PC_G0 3152 ENUMX 3153 BFD_RELOC_ARM_ALU_PC_G1_NC 3154 ENUMX 3155 BFD_RELOC_ARM_ALU_PC_G1 3156 ENUMX 3157 BFD_RELOC_ARM_ALU_PC_G2 3158 ENUMX 3159 BFD_RELOC_ARM_LDR_PC_G0 3160 ENUMX 3161 BFD_RELOC_ARM_LDR_PC_G1 3162 ENUMX 3163 BFD_RELOC_ARM_LDR_PC_G2 3164 ENUMX 3165 BFD_RELOC_ARM_LDRS_PC_G0 3166 ENUMX 3167 BFD_RELOC_ARM_LDRS_PC_G1 3168 ENUMX 3169 BFD_RELOC_ARM_LDRS_PC_G2 3170 ENUMX 3171 BFD_RELOC_ARM_LDC_PC_G0 3172 ENUMX 3173 BFD_RELOC_ARM_LDC_PC_G1 3174 ENUMX 3175 BFD_RELOC_ARM_LDC_PC_G2 3176 ENUMX 3177 BFD_RELOC_ARM_ALU_SB_G0_NC 3178 ENUMX 3179 BFD_RELOC_ARM_ALU_SB_G0 3180 ENUMX 3181 BFD_RELOC_ARM_ALU_SB_G1_NC 3182 ENUMX 3183 BFD_RELOC_ARM_ALU_SB_G1 3184 ENUMX 3185 BFD_RELOC_ARM_ALU_SB_G2 3186 ENUMX 3187 BFD_RELOC_ARM_LDR_SB_G0 3188 ENUMX 3189 BFD_RELOC_ARM_LDR_SB_G1 3190 ENUMX 3191 BFD_RELOC_ARM_LDR_SB_G2 3192 ENUMX 3193 BFD_RELOC_ARM_LDRS_SB_G0 3194 ENUMX 3195 BFD_RELOC_ARM_LDRS_SB_G1 3196 ENUMX 3197 BFD_RELOC_ARM_LDRS_SB_G2 3198 ENUMX 3199 BFD_RELOC_ARM_LDC_SB_G0 3200 ENUMX 3201 BFD_RELOC_ARM_LDC_SB_G1 3202 ENUMX 3203 BFD_RELOC_ARM_LDC_SB_G2 3204 ENUMDOC 3205 ARM group relocations. 3206 3207 ENUM 3208 BFD_RELOC_ARM_V4BX 3209 ENUMDOC 3210 Annotation of BX instructions. 3211 3212 ENUM 3213 BFD_RELOC_ARM_IRELATIVE 3214 ENUMDOC 3215 ARM support for STT_GNU_IFUNC. 3216 3217 ENUM 3218 BFD_RELOC_ARM_IMMEDIATE 3219 ENUMX 3220 BFD_RELOC_ARM_ADRL_IMMEDIATE 3221 ENUMX 3222 BFD_RELOC_ARM_T32_IMMEDIATE 3223 ENUMX 3224 BFD_RELOC_ARM_T32_ADD_IMM 3225 ENUMX 3226 BFD_RELOC_ARM_T32_IMM12 3227 ENUMX 3228 BFD_RELOC_ARM_T32_ADD_PC12 3229 ENUMX 3230 BFD_RELOC_ARM_SHIFT_IMM 3231 ENUMX 3232 BFD_RELOC_ARM_SMC 3233 ENUMX 3234 BFD_RELOC_ARM_HVC 3235 ENUMX 3236 BFD_RELOC_ARM_SWI 3237 ENUMX 3238 BFD_RELOC_ARM_MULTI 3239 ENUMX 3240 BFD_RELOC_ARM_CP_OFF_IMM 3241 ENUMX 3242 BFD_RELOC_ARM_CP_OFF_IMM_S2 3243 ENUMX 3244 BFD_RELOC_ARM_T32_CP_OFF_IMM 3245 ENUMX 3246 BFD_RELOC_ARM_T32_CP_OFF_IMM_S2 3247 ENUMX 3248 BFD_RELOC_ARM_ADR_IMM 3249 ENUMX 3250 BFD_RELOC_ARM_LDR_IMM 3251 ENUMX 3252 BFD_RELOC_ARM_LITERAL 3253 ENUMX 3254 BFD_RELOC_ARM_IN_POOL 3255 ENUMX 3256 BFD_RELOC_ARM_OFFSET_IMM8 3257 ENUMX 3258 BFD_RELOC_ARM_T32_OFFSET_U8 3259 ENUMX 3260 BFD_RELOC_ARM_T32_OFFSET_IMM 3261 ENUMX 3262 BFD_RELOC_ARM_HWLITERAL 3263 ENUMX 3264 BFD_RELOC_ARM_THUMB_ADD 3265 ENUMX 3266 BFD_RELOC_ARM_THUMB_IMM 3267 ENUMX 3268 BFD_RELOC_ARM_THUMB_SHIFT 3269 ENUMDOC 3270 These relocs are only used within the ARM assembler. They are not 3271 (at present) written to any object files. 3272 3273 ENUM 3274 BFD_RELOC_SH_PCDISP8BY2 3275 ENUMX 3276 BFD_RELOC_SH_PCDISP12BY2 3277 ENUMX 3278 BFD_RELOC_SH_IMM3 3279 ENUMX 3280 BFD_RELOC_SH_IMM3U 3281 ENUMX 3282 BFD_RELOC_SH_DISP12 3283 ENUMX 3284 BFD_RELOC_SH_DISP12BY2 3285 ENUMX 3286 BFD_RELOC_SH_DISP12BY4 3287 ENUMX 3288 BFD_RELOC_SH_DISP12BY8 3289 ENUMX 3290 BFD_RELOC_SH_DISP20 3291 ENUMX 3292 BFD_RELOC_SH_DISP20BY8 3293 ENUMX 3294 BFD_RELOC_SH_IMM4 3295 ENUMX 3296 BFD_RELOC_SH_IMM4BY2 3297 ENUMX 3298 BFD_RELOC_SH_IMM4BY4 3299 ENUMX 3300 BFD_RELOC_SH_IMM8 3301 ENUMX 3302 BFD_RELOC_SH_IMM8BY2 3303 ENUMX 3304 BFD_RELOC_SH_IMM8BY4 3305 ENUMX 3306 BFD_RELOC_SH_PCRELIMM8BY2 3307 ENUMX 3308 BFD_RELOC_SH_PCRELIMM8BY4 3309 ENUMX 3310 BFD_RELOC_SH_SWITCH16 3311 ENUMX 3312 BFD_RELOC_SH_SWITCH32 3313 ENUMX 3314 BFD_RELOC_SH_USES 3315 ENUMX 3316 BFD_RELOC_SH_COUNT 3317 ENUMX 3318 BFD_RELOC_SH_ALIGN 3319 ENUMX 3320 BFD_RELOC_SH_CODE 3321 ENUMX 3322 BFD_RELOC_SH_DATA 3323 ENUMX 3324 BFD_RELOC_SH_LABEL 3325 ENUMX 3326 BFD_RELOC_SH_LOOP_START 3327 ENUMX 3328 BFD_RELOC_SH_LOOP_END 3329 ENUMX 3330 BFD_RELOC_SH_COPY 3331 ENUMX 3332 BFD_RELOC_SH_GLOB_DAT 3333 ENUMX 3334 BFD_RELOC_SH_JMP_SLOT 3335 ENUMX 3336 BFD_RELOC_SH_RELATIVE 3337 ENUMX 3338 BFD_RELOC_SH_GOTPC 3339 ENUMX 3340 BFD_RELOC_SH_GOT_LOW16 3341 ENUMX 3342 BFD_RELOC_SH_GOT_MEDLOW16 3343 ENUMX 3344 BFD_RELOC_SH_GOT_MEDHI16 3345 ENUMX 3346 BFD_RELOC_SH_GOT_HI16 3347 ENUMX 3348 BFD_RELOC_SH_GOTPLT_LOW16 3349 ENUMX 3350 BFD_RELOC_SH_GOTPLT_MEDLOW16 3351 ENUMX 3352 BFD_RELOC_SH_GOTPLT_MEDHI16 3353 ENUMX 3354 BFD_RELOC_SH_GOTPLT_HI16 3355 ENUMX 3356 BFD_RELOC_SH_PLT_LOW16 3357 ENUMX 3358 BFD_RELOC_SH_PLT_MEDLOW16 3359 ENUMX 3360 BFD_RELOC_SH_PLT_MEDHI16 3361 ENUMX 3362 BFD_RELOC_SH_PLT_HI16 3363 ENUMX 3364 BFD_RELOC_SH_GOTOFF_LOW16 3365 ENUMX 3366 BFD_RELOC_SH_GOTOFF_MEDLOW16 3367 ENUMX 3368 BFD_RELOC_SH_GOTOFF_MEDHI16 3369 ENUMX 3370 BFD_RELOC_SH_GOTOFF_HI16 3371 ENUMX 3372 BFD_RELOC_SH_GOTPC_LOW16 3373 ENUMX 3374 BFD_RELOC_SH_GOTPC_MEDLOW16 3375 ENUMX 3376 BFD_RELOC_SH_GOTPC_MEDHI16 3377 ENUMX 3378 BFD_RELOC_SH_GOTPC_HI16 3379 ENUMX 3380 BFD_RELOC_SH_COPY64 3381 ENUMX 3382 BFD_RELOC_SH_GLOB_DAT64 3383 ENUMX 3384 BFD_RELOC_SH_JMP_SLOT64 3385 ENUMX 3386 BFD_RELOC_SH_RELATIVE64 3387 ENUMX 3388 BFD_RELOC_SH_GOT10BY4 3389 ENUMX 3390 BFD_RELOC_SH_GOT10BY8 3391 ENUMX 3392 BFD_RELOC_SH_GOTPLT10BY4 3393 ENUMX 3394 BFD_RELOC_SH_GOTPLT10BY8 3395 ENUMX 3396 BFD_RELOC_SH_GOTPLT32 3397 ENUMX 3398 BFD_RELOC_SH_SHMEDIA_CODE 3399 ENUMX 3400 BFD_RELOC_SH_IMMU5 3401 ENUMX 3402 BFD_RELOC_SH_IMMS6 3403 ENUMX 3404 BFD_RELOC_SH_IMMS6BY32 3405 ENUMX 3406 BFD_RELOC_SH_IMMU6 3407 ENUMX 3408 BFD_RELOC_SH_IMMS10 3409 ENUMX 3410 BFD_RELOC_SH_IMMS10BY2 3411 ENUMX 3412 BFD_RELOC_SH_IMMS10BY4 3413 ENUMX 3414 BFD_RELOC_SH_IMMS10BY8 3415 ENUMX 3416 BFD_RELOC_SH_IMMS16 3417 ENUMX 3418 BFD_RELOC_SH_IMMU16 3419 ENUMX 3420 BFD_RELOC_SH_IMM_LOW16 3421 ENUMX 3422 BFD_RELOC_SH_IMM_LOW16_PCREL 3423 ENUMX 3424 BFD_RELOC_SH_IMM_MEDLOW16 3425 ENUMX 3426 BFD_RELOC_SH_IMM_MEDLOW16_PCREL 3427 ENUMX 3428 BFD_RELOC_SH_IMM_MEDHI16 3429 ENUMX 3430 BFD_RELOC_SH_IMM_MEDHI16_PCREL 3431 ENUMX 3432 BFD_RELOC_SH_IMM_HI16 3433 ENUMX 3434 BFD_RELOC_SH_IMM_HI16_PCREL 3435 ENUMX 3436 BFD_RELOC_SH_PT_16 3437 ENUMX 3438 BFD_RELOC_SH_TLS_GD_32 3439 ENUMX 3440 BFD_RELOC_SH_TLS_LD_32 3441 ENUMX 3442 BFD_RELOC_SH_TLS_LDO_32 3443 ENUMX 3444 BFD_RELOC_SH_TLS_IE_32 3445 ENUMX 3446 BFD_RELOC_SH_TLS_LE_32 3447 ENUMX 3448 BFD_RELOC_SH_TLS_DTPMOD32 3449 ENUMX 3450 BFD_RELOC_SH_TLS_DTPOFF32 3451 ENUMX 3452 BFD_RELOC_SH_TLS_TPOFF32 3453 ENUMX 3454 BFD_RELOC_SH_GOT20 3455 ENUMX 3456 BFD_RELOC_SH_GOTOFF20 3457 ENUMX 3458 BFD_RELOC_SH_GOTFUNCDESC 3459 ENUMX 3460 BFD_RELOC_SH_GOTFUNCDESC20 3461 ENUMX 3462 BFD_RELOC_SH_GOTOFFFUNCDESC 3463 ENUMX 3464 BFD_RELOC_SH_GOTOFFFUNCDESC20 3465 ENUMX 3466 BFD_RELOC_SH_FUNCDESC 3467 ENUMDOC 3468 Renesas / SuperH SH relocs. Not all of these appear in object files. 3469 3470 ENUM 3471 BFD_RELOC_ARC_B22_PCREL 3472 ENUMDOC 3473 ARC Cores relocs. 3474 ARC 22 bit pc-relative branch. The lowest two bits must be zero and are 3475 not stored in the instruction. The high 20 bits are installed in bits 26 3476 through 7 of the instruction. 3477 ENUM 3478 BFD_RELOC_ARC_B26 3479 ENUMDOC 3480 ARC 26 bit absolute branch. The lowest two bits must be zero and are not 3481 stored in the instruction. The high 24 bits are installed in bits 23 3482 through 0. 3483 3484 ENUM 3485 BFD_RELOC_BFIN_16_IMM 3486 ENUMDOC 3487 ADI Blackfin 16 bit immediate absolute reloc. 3488 ENUM 3489 BFD_RELOC_BFIN_16_HIGH 3490 ENUMDOC 3491 ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. 3492 ENUM 3493 BFD_RELOC_BFIN_4_PCREL 3494 ENUMDOC 3495 ADI Blackfin 'a' part of LSETUP. 3496 ENUM 3497 BFD_RELOC_BFIN_5_PCREL 3498 ENUMDOC 3499 ADI Blackfin. 3500 ENUM 3501 BFD_RELOC_BFIN_16_LOW 3502 ENUMDOC 3503 ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. 3504 ENUM 3505 BFD_RELOC_BFIN_10_PCREL 3506 ENUMDOC 3507 ADI Blackfin. 3508 ENUM 3509 BFD_RELOC_BFIN_11_PCREL 3510 ENUMDOC 3511 ADI Blackfin 'b' part of LSETUP. 3512 ENUM 3513 BFD_RELOC_BFIN_12_PCREL_JUMP 3514 ENUMDOC 3515 ADI Blackfin. 3516 ENUM 3517 BFD_RELOC_BFIN_12_PCREL_JUMP_S 3518 ENUMDOC 3519 ADI Blackfin Short jump, pcrel. 3520 ENUM 3521 BFD_RELOC_BFIN_24_PCREL_CALL_X 3522 ENUMDOC 3523 ADI Blackfin Call.x not implemented. 3524 ENUM 3525 BFD_RELOC_BFIN_24_PCREL_JUMP_L 3526 ENUMDOC 3527 ADI Blackfin Long Jump pcrel. 3528 ENUM 3529 BFD_RELOC_BFIN_GOT17M4 3530 ENUMX 3531 BFD_RELOC_BFIN_GOTHI 3532 ENUMX 3533 BFD_RELOC_BFIN_GOTLO 3534 ENUMX 3535 BFD_RELOC_BFIN_FUNCDESC 3536 ENUMX 3537 BFD_RELOC_BFIN_FUNCDESC_GOT17M4 3538 ENUMX 3539 BFD_RELOC_BFIN_FUNCDESC_GOTHI 3540 ENUMX 3541 BFD_RELOC_BFIN_FUNCDESC_GOTLO 3542 ENUMX 3543 BFD_RELOC_BFIN_FUNCDESC_VALUE 3544 ENUMX 3545 BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4 3546 ENUMX 3547 BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI 3548 ENUMX 3549 BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO 3550 ENUMX 3551 BFD_RELOC_BFIN_GOTOFF17M4 3552 ENUMX 3553 BFD_RELOC_BFIN_GOTOFFHI 3554 ENUMX 3555 BFD_RELOC_BFIN_GOTOFFLO 3556 ENUMDOC 3557 ADI Blackfin FD-PIC relocations. 3558 ENUM 3559 BFD_RELOC_BFIN_GOT 3560 ENUMDOC 3561 ADI Blackfin GOT relocation. 3562 ENUM 3563 BFD_RELOC_BFIN_PLTPC 3564 ENUMDOC 3565 ADI Blackfin PLTPC relocation. 3566 ENUM 3567 BFD_ARELOC_BFIN_PUSH 3568 ENUMDOC 3569 ADI Blackfin arithmetic relocation. 3570 ENUM 3571 BFD_ARELOC_BFIN_CONST 3572 ENUMDOC 3573 ADI Blackfin arithmetic relocation. 3574 ENUM 3575 BFD_ARELOC_BFIN_ADD 3576 ENUMDOC 3577 ADI Blackfin arithmetic relocation. 3578 ENUM 3579 BFD_ARELOC_BFIN_SUB 3580 ENUMDOC 3581 ADI Blackfin arithmetic relocation. 3582 ENUM 3583 BFD_ARELOC_BFIN_MULT 3584 ENUMDOC 3585 ADI Blackfin arithmetic relocation. 3586 ENUM 3587 BFD_ARELOC_BFIN_DIV 3588 ENUMDOC 3589 ADI Blackfin arithmetic relocation. 3590 ENUM 3591 BFD_ARELOC_BFIN_MOD 3592 ENUMDOC 3593 ADI Blackfin arithmetic relocation. 3594 ENUM 3595 BFD_ARELOC_BFIN_LSHIFT 3596 ENUMDOC 3597 ADI Blackfin arithmetic relocation. 3598 ENUM 3599 BFD_ARELOC_BFIN_RSHIFT 3600 ENUMDOC 3601 ADI Blackfin arithmetic relocation. 3602 ENUM 3603 BFD_ARELOC_BFIN_AND 3604 ENUMDOC 3605 ADI Blackfin arithmetic relocation. 3606 ENUM 3607 BFD_ARELOC_BFIN_OR 3608 ENUMDOC 3609 ADI Blackfin arithmetic relocation. 3610 ENUM 3611 BFD_ARELOC_BFIN_XOR 3612 ENUMDOC 3613 ADI Blackfin arithmetic relocation. 3614 ENUM 3615 BFD_ARELOC_BFIN_LAND 3616 ENUMDOC 3617 ADI Blackfin arithmetic relocation. 3618 ENUM 3619 BFD_ARELOC_BFIN_LOR 3620 ENUMDOC 3621 ADI Blackfin arithmetic relocation. 3622 ENUM 3623 BFD_ARELOC_BFIN_LEN 3624 ENUMDOC 3625 ADI Blackfin arithmetic relocation. 3626 ENUM 3627 BFD_ARELOC_BFIN_NEG 3628 ENUMDOC 3629 ADI Blackfin arithmetic relocation. 3630 ENUM 3631 BFD_ARELOC_BFIN_COMP 3632 ENUMDOC 3633 ADI Blackfin arithmetic relocation. 3634 ENUM 3635 BFD_ARELOC_BFIN_PAGE 3636 ENUMDOC 3637 ADI Blackfin arithmetic relocation. 3638 ENUM 3639 BFD_ARELOC_BFIN_HWPAGE 3640 ENUMDOC 3641 ADI Blackfin arithmetic relocation. 3642 ENUM 3643 BFD_ARELOC_BFIN_ADDR 3644 ENUMDOC 3645 ADI Blackfin arithmetic relocation. 3646 3647 ENUM 3648 BFD_RELOC_D10V_10_PCREL_R 3649 ENUMDOC 3650 Mitsubishi D10V relocs. 3651 This is a 10-bit reloc with the right 2 bits 3652 assumed to be 0. 3653 ENUM 3654 BFD_RELOC_D10V_10_PCREL_L 3655 ENUMDOC 3656 Mitsubishi D10V relocs. 3657 This is a 10-bit reloc with the right 2 bits 3658 assumed to be 0. This is the same as the previous reloc 3659 except it is in the left container, i.e., 3660 shifted left 15 bits. 3661 ENUM 3662 BFD_RELOC_D10V_18 3663 ENUMDOC 3664 This is an 18-bit reloc with the right 2 bits 3665 assumed to be 0. 3666 ENUM 3667 BFD_RELOC_D10V_18_PCREL 3668 ENUMDOC 3669 This is an 18-bit reloc with the right 2 bits 3670 assumed to be 0. 3671 3672 ENUM 3673 BFD_RELOC_D30V_6 3674 ENUMDOC 3675 Mitsubishi D30V relocs. 3676 This is a 6-bit absolute reloc. 3677 ENUM 3678 BFD_RELOC_D30V_9_PCREL 3679 ENUMDOC 3680 This is a 6-bit pc-relative reloc with 3681 the right 3 bits assumed to be 0. 3682 ENUM 3683 BFD_RELOC_D30V_9_PCREL_R 3684 ENUMDOC 3685 This is a 6-bit pc-relative reloc with 3686 the right 3 bits assumed to be 0. Same 3687 as the previous reloc but on the right side 3688 of the container. 3689 ENUM 3690 BFD_RELOC_D30V_15 3691 ENUMDOC 3692 This is a 12-bit absolute reloc with the 3693 right 3 bitsassumed to be 0. 3694 ENUM 3695 BFD_RELOC_D30V_15_PCREL 3696 ENUMDOC 3697 This is a 12-bit pc-relative reloc with 3698 the right 3 bits assumed to be 0. 3699 ENUM 3700 BFD_RELOC_D30V_15_PCREL_R 3701 ENUMDOC 3702 This is a 12-bit pc-relative reloc with 3703 the right 3 bits assumed to be 0. Same 3704 as the previous reloc but on the right side 3705 of the container. 3706 ENUM 3707 BFD_RELOC_D30V_21 3708 ENUMDOC 3709 This is an 18-bit absolute reloc with 3710 the right 3 bits assumed to be 0. 3711 ENUM 3712 BFD_RELOC_D30V_21_PCREL 3713 ENUMDOC 3714 This is an 18-bit pc-relative reloc with 3715 the right 3 bits assumed to be 0. 3716 ENUM 3717 BFD_RELOC_D30V_21_PCREL_R 3718 ENUMDOC 3719 This is an 18-bit pc-relative reloc with 3720 the right 3 bits assumed to be 0. Same 3721 as the previous reloc but on the right side 3722 of the container. 3723 ENUM 3724 BFD_RELOC_D30V_32 3725 ENUMDOC 3726 This is a 32-bit absolute reloc. 3727 ENUM 3728 BFD_RELOC_D30V_32_PCREL 3729 ENUMDOC 3730 This is a 32-bit pc-relative reloc. 3731 3732 ENUM 3733 BFD_RELOC_DLX_HI16_S 3734 ENUMDOC 3735 DLX relocs 3736 ENUM 3737 BFD_RELOC_DLX_LO16 3738 ENUMDOC 3739 DLX relocs 3740 ENUM 3741 BFD_RELOC_DLX_JMP26 3742 ENUMDOC 3743 DLX relocs 3744 3745 ENUM 3746 BFD_RELOC_M32C_HI8 3747 ENUMX 3748 BFD_RELOC_M32C_RL_JUMP 3749 ENUMX 3750 BFD_RELOC_M32C_RL_1ADDR 3751 ENUMX 3752 BFD_RELOC_M32C_RL_2ADDR 3753 ENUMDOC 3754 Renesas M16C/M32C Relocations. 3755 3756 ENUM 3757 BFD_RELOC_M32R_24 3758 ENUMDOC 3759 Renesas M32R (formerly Mitsubishi M32R) relocs. 3760 This is a 24 bit absolute address. 3761 ENUM 3762 BFD_RELOC_M32R_10_PCREL 3763 ENUMDOC 3764 This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. 3765 ENUM 3766 BFD_RELOC_M32R_18_PCREL 3767 ENUMDOC 3768 This is an 18-bit reloc with the right 2 bits assumed to be 0. 3769 ENUM 3770 BFD_RELOC_M32R_26_PCREL 3771 ENUMDOC 3772 This is a 26-bit reloc with the right 2 bits assumed to be 0. 3773 ENUM 3774 BFD_RELOC_M32R_HI16_ULO 3775 ENUMDOC 3776 This is a 16-bit reloc containing the high 16 bits of an address 3777 used when the lower 16 bits are treated as unsigned. 3778 ENUM 3779 BFD_RELOC_M32R_HI16_SLO 3780 ENUMDOC 3781 This is a 16-bit reloc containing the high 16 bits of an address 3782 used when the lower 16 bits are treated as signed. 3783 ENUM 3784 BFD_RELOC_M32R_LO16 3785 ENUMDOC 3786 This is a 16-bit reloc containing the lower 16 bits of an address. 3787 ENUM 3788 BFD_RELOC_M32R_SDA16 3789 ENUMDOC 3790 This is a 16-bit reloc containing the small data area offset for use in 3791 add3, load, and store instructions. 3792 ENUM 3793 BFD_RELOC_M32R_GOT24 3794 ENUMX 3795 BFD_RELOC_M32R_26_PLTREL 3796 ENUMX 3797 BFD_RELOC_M32R_COPY 3798 ENUMX 3799 BFD_RELOC_M32R_GLOB_DAT 3800 ENUMX 3801 BFD_RELOC_M32R_JMP_SLOT 3802 ENUMX 3803 BFD_RELOC_M32R_RELATIVE 3804 ENUMX 3805 BFD_RELOC_M32R_GOTOFF 3806 ENUMX 3807 BFD_RELOC_M32R_GOTOFF_HI_ULO 3808 ENUMX 3809 BFD_RELOC_M32R_GOTOFF_HI_SLO 3810 ENUMX 3811 BFD_RELOC_M32R_GOTOFF_LO 3812 ENUMX 3813 BFD_RELOC_M32R_GOTPC24 3814 ENUMX 3815 BFD_RELOC_M32R_GOT16_HI_ULO 3816 ENUMX 3817 BFD_RELOC_M32R_GOT16_HI_SLO 3818 ENUMX 3819 BFD_RELOC_M32R_GOT16_LO 3820 ENUMX 3821 BFD_RELOC_M32R_GOTPC_HI_ULO 3822 ENUMX 3823 BFD_RELOC_M32R_GOTPC_HI_SLO 3824 ENUMX 3825 BFD_RELOC_M32R_GOTPC_LO 3826 ENUMDOC 3827 For PIC. 3828 3829 3830 ENUM 3831 BFD_RELOC_V850_9_PCREL 3832 ENUMDOC 3833 This is a 9-bit reloc 3834 ENUM 3835 BFD_RELOC_V850_22_PCREL 3836 ENUMDOC 3837 This is a 22-bit reloc 3838 3839 ENUM 3840 BFD_RELOC_V850_SDA_16_16_OFFSET 3841 ENUMDOC 3842 This is a 16 bit offset from the short data area pointer. 3843 ENUM 3844 BFD_RELOC_V850_SDA_15_16_OFFSET 3845 ENUMDOC 3846 This is a 16 bit offset (of which only 15 bits are used) from the 3847 short data area pointer. 3848 ENUM 3849 BFD_RELOC_V850_ZDA_16_16_OFFSET 3850 ENUMDOC 3851 This is a 16 bit offset from the zero data area pointer. 3852 ENUM 3853 BFD_RELOC_V850_ZDA_15_16_OFFSET 3854 ENUMDOC 3855 This is a 16 bit offset (of which only 15 bits are used) from the 3856 zero data area pointer. 3857 ENUM 3858 BFD_RELOC_V850_TDA_6_8_OFFSET 3859 ENUMDOC 3860 This is an 8 bit offset (of which only 6 bits are used) from the 3861 tiny data area pointer. 3862 ENUM 3863 BFD_RELOC_V850_TDA_7_8_OFFSET 3864 ENUMDOC 3865 This is an 8bit offset (of which only 7 bits are used) from the tiny 3866 data area pointer. 3867 ENUM 3868 BFD_RELOC_V850_TDA_7_7_OFFSET 3869 ENUMDOC 3870 This is a 7 bit offset from the tiny data area pointer. 3871 ENUM 3872 BFD_RELOC_V850_TDA_16_16_OFFSET 3873 ENUMDOC 3874 This is a 16 bit offset from the tiny data area pointer. 3875 COMMENT 3876 ENUM 3877 BFD_RELOC_V850_TDA_4_5_OFFSET 3878 ENUMDOC 3879 This is a 5 bit offset (of which only 4 bits are used) from the tiny 3880 data area pointer. 3881 ENUM 3882 BFD_RELOC_V850_TDA_4_4_OFFSET 3883 ENUMDOC 3884 This is a 4 bit offset from the tiny data area pointer. 3885 ENUM 3886 BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET 3887 ENUMDOC 3888 This is a 16 bit offset from the short data area pointer, with the 3889 bits placed non-contiguously in the instruction. 3890 ENUM 3891 BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET 3892 ENUMDOC 3893 This is a 16 bit offset from the zero data area pointer, with the 3894 bits placed non-contiguously in the instruction. 3895 ENUM 3896 BFD_RELOC_V850_CALLT_6_7_OFFSET 3897 ENUMDOC 3898 This is a 6 bit offset from the call table base pointer. 3899 ENUM 3900 BFD_RELOC_V850_CALLT_16_16_OFFSET 3901 ENUMDOC 3902 This is a 16 bit offset from the call table base pointer. 3903 ENUM 3904 BFD_RELOC_V850_LONGCALL 3905 ENUMDOC 3906 Used for relaxing indirect function calls. 3907 ENUM 3908 BFD_RELOC_V850_LONGJUMP 3909 ENUMDOC 3910 Used for relaxing indirect jumps. 3911 ENUM 3912 BFD_RELOC_V850_ALIGN 3913 ENUMDOC 3914 Used to maintain alignment whilst relaxing. 3915 ENUM 3916 BFD_RELOC_V850_LO16_SPLIT_OFFSET 3917 ENUMDOC 3918 This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu 3919 instructions. 3920 ENUM 3921 BFD_RELOC_V850_16_PCREL 3922 ENUMDOC 3923 This is a 16-bit reloc. 3924 ENUM 3925 BFD_RELOC_V850_17_PCREL 3926 ENUMDOC 3927 This is a 17-bit reloc. 3928 ENUM 3929 BFD_RELOC_V850_23 3930 ENUMDOC 3931 This is a 23-bit reloc. 3932 ENUM 3933 BFD_RELOC_V850_32_PCREL 3934 ENUMDOC 3935 This is a 32-bit reloc. 3936 ENUM 3937 BFD_RELOC_V850_32_ABS 3938 ENUMDOC 3939 This is a 32-bit reloc. 3940 ENUM 3941 BFD_RELOC_V850_16_SPLIT_OFFSET 3942 ENUMDOC 3943 This is a 16-bit reloc. 3944 ENUM 3945 BFD_RELOC_V850_16_S1 3946 ENUMDOC 3947 This is a 16-bit reloc. 3948 ENUM 3949 BFD_RELOC_V850_LO16_S1 3950 ENUMDOC 3951 Low 16 bits. 16 bit shifted by 1. 3952 ENUM 3953 BFD_RELOC_V850_CALLT_15_16_OFFSET 3954 ENUMDOC 3955 This is a 16 bit offset from the call table base pointer. 3956 ENUM 3957 BFD_RELOC_V850_32_GOTPCREL 3958 ENUMDOC 3959 DSO relocations. 3960 ENUM 3961 BFD_RELOC_V850_16_GOT 3962 ENUMDOC 3963 DSO relocations. 3964 ENUM 3965 BFD_RELOC_V850_32_GOT 3966 ENUMDOC 3967 DSO relocations. 3968 ENUM 3969 BFD_RELOC_V850_22_PLT_PCREL 3970 ENUMDOC 3971 DSO relocations. 3972 ENUM 3973 BFD_RELOC_V850_32_PLT_PCREL 3974 ENUMDOC 3975 DSO relocations. 3976 ENUM 3977 BFD_RELOC_V850_COPY 3978 ENUMDOC 3979 DSO relocations. 3980 ENUM 3981 BFD_RELOC_V850_GLOB_DAT 3982 ENUMDOC 3983 DSO relocations. 3984 ENUM 3985 BFD_RELOC_V850_JMP_SLOT 3986 ENUMDOC 3987 DSO relocations. 3988 ENUM 3989 BFD_RELOC_V850_RELATIVE 3990 ENUMDOC 3991 DSO relocations. 3992 ENUM 3993 BFD_RELOC_V850_16_GOTOFF 3994 ENUMDOC 3995 DSO relocations. 3996 ENUM 3997 BFD_RELOC_V850_32_GOTOFF 3998 ENUMDOC 3999 DSO relocations. 4000 ENUM 4001 BFD_RELOC_V850_CODE 4002 ENUMDOC 4003 start code. 4004 ENUM 4005 BFD_RELOC_V850_DATA 4006 ENUMDOC 4007 start data in text. 4008 4009 ENUM 4010 BFD_RELOC_TIC30_LDP 4011 ENUMDOC 4012 This is a 8bit DP reloc for the tms320c30, where the most 4013 significant 8 bits of a 24 bit word are placed into the least 4014 significant 8 bits of the opcode. 4015 4016 ENUM 4017 BFD_RELOC_TIC54X_PARTLS7 4018 ENUMDOC 4019 This is a 7bit reloc for the tms320c54x, where the least 4020 significant 7 bits of a 16 bit word are placed into the least 4021 significant 7 bits of the opcode. 4022 4023 ENUM 4024 BFD_RELOC_TIC54X_PARTMS9 4025 ENUMDOC 4026 This is a 9bit DP reloc for the tms320c54x, where the most 4027 significant 9 bits of a 16 bit word are placed into the least 4028 significant 9 bits of the opcode. 4029 4030 ENUM 4031 BFD_RELOC_TIC54X_23 4032 ENUMDOC 4033 This is an extended address 23-bit reloc for the tms320c54x. 4034 4035 ENUM 4036 BFD_RELOC_TIC54X_16_OF_23 4037 ENUMDOC 4038 This is a 16-bit reloc for the tms320c54x, where the least 4039 significant 16 bits of a 23-bit extended address are placed into 4040 the opcode. 4041 4042 ENUM 4043 BFD_RELOC_TIC54X_MS7_OF_23 4044 ENUMDOC 4045 This is a reloc for the tms320c54x, where the most 4046 significant 7 bits of a 23-bit extended address are placed into 4047 the opcode. 4048 4049 ENUM 4050 BFD_RELOC_C6000_PCR_S21 4051 ENUMX 4052 BFD_RELOC_C6000_PCR_S12 4053 ENUMX 4054 BFD_RELOC_C6000_PCR_S10 4055 ENUMX 4056 BFD_RELOC_C6000_PCR_S7 4057 ENUMX 4058 BFD_RELOC_C6000_ABS_S16 4059 ENUMX 4060 BFD_RELOC_C6000_ABS_L16 4061 ENUMX 4062 BFD_RELOC_C6000_ABS_H16 4063 ENUMX 4064 BFD_RELOC_C6000_SBR_U15_B 4065 ENUMX 4066 BFD_RELOC_C6000_SBR_U15_H 4067 ENUMX 4068 BFD_RELOC_C6000_SBR_U15_W 4069 ENUMX 4070 BFD_RELOC_C6000_SBR_S16 4071 ENUMX 4072 BFD_RELOC_C6000_SBR_L16_B 4073 ENUMX 4074 BFD_RELOC_C6000_SBR_L16_H 4075 ENUMX 4076 BFD_RELOC_C6000_SBR_L16_W 4077 ENUMX 4078 BFD_RELOC_C6000_SBR_H16_B 4079 ENUMX 4080 BFD_RELOC_C6000_SBR_H16_H 4081 ENUMX 4082 BFD_RELOC_C6000_SBR_H16_W 4083 ENUMX 4084 BFD_RELOC_C6000_SBR_GOT_U15_W 4085 ENUMX 4086 BFD_RELOC_C6000_SBR_GOT_L16_W 4087 ENUMX 4088 BFD_RELOC_C6000_SBR_GOT_H16_W 4089 ENUMX 4090 BFD_RELOC_C6000_DSBT_INDEX 4091 ENUMX 4092 BFD_RELOC_C6000_PREL31 4093 ENUMX 4094 BFD_RELOC_C6000_COPY 4095 ENUMX 4096 BFD_RELOC_C6000_JUMP_SLOT 4097 ENUMX 4098 BFD_RELOC_C6000_EHTYPE 4099 ENUMX 4100 BFD_RELOC_C6000_PCR_H16 4101 ENUMX 4102 BFD_RELOC_C6000_PCR_L16 4103 ENUMX 4104 BFD_RELOC_C6000_ALIGN 4105 ENUMX 4106 BFD_RELOC_C6000_FPHEAD 4107 ENUMX 4108 BFD_RELOC_C6000_NOCMP 4109 ENUMDOC 4110 TMS320C6000 relocations. 4111 4112 ENUM 4113 BFD_RELOC_FR30_48 4114 ENUMDOC 4115 This is a 48 bit reloc for the FR30 that stores 32 bits. 4116 ENUM 4117 BFD_RELOC_FR30_20 4118 ENUMDOC 4119 This is a 32 bit reloc for the FR30 that stores 20 bits split up into 4120 two sections. 4121 ENUM 4122 BFD_RELOC_FR30_6_IN_4 4123 ENUMDOC 4124 This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in 4125 4 bits. 4126 ENUM 4127 BFD_RELOC_FR30_8_IN_8 4128 ENUMDOC 4129 This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset 4130 into 8 bits. 4131 ENUM 4132 BFD_RELOC_FR30_9_IN_8 4133 ENUMDOC 4134 This is a 16 bit reloc for the FR30 that stores a 9 bit short offset 4135 into 8 bits. 4136 ENUM 4137 BFD_RELOC_FR30_10_IN_8 4138 ENUMDOC 4139 This is a 16 bit reloc for the FR30 that stores a 10 bit word offset 4140 into 8 bits. 4141 ENUM 4142 BFD_RELOC_FR30_9_PCREL 4143 ENUMDOC 4144 This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative 4145 short offset into 8 bits. 4146 ENUM 4147 BFD_RELOC_FR30_12_PCREL 4148 ENUMDOC 4149 This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative 4150 short offset into 11 bits. 4151 4152 ENUM 4153 BFD_RELOC_MCORE_PCREL_IMM8BY4 4154 ENUMX 4155 BFD_RELOC_MCORE_PCREL_IMM11BY2 4156 ENUMX 4157 BFD_RELOC_MCORE_PCREL_IMM4BY2 4158 ENUMX 4159 BFD_RELOC_MCORE_PCREL_32 4160 ENUMX 4161 BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2 4162 ENUMX 4163 BFD_RELOC_MCORE_RVA 4164 ENUMDOC 4165 Motorola Mcore relocations. 4166 4167 ENUM 4168 BFD_RELOC_MEP_8 4169 ENUMX 4170 BFD_RELOC_MEP_16 4171 ENUMX 4172 BFD_RELOC_MEP_32 4173 ENUMX 4174 BFD_RELOC_MEP_PCREL8A2 4175 ENUMX 4176 BFD_RELOC_MEP_PCREL12A2 4177 ENUMX 4178 BFD_RELOC_MEP_PCREL17A2 4179 ENUMX 4180 BFD_RELOC_MEP_PCREL24A2 4181 ENUMX 4182 BFD_RELOC_MEP_PCABS24A2 4183 ENUMX 4184 BFD_RELOC_MEP_LOW16 4185 ENUMX 4186 BFD_RELOC_MEP_HI16U 4187 ENUMX 4188 BFD_RELOC_MEP_HI16S 4189 ENUMX 4190 BFD_RELOC_MEP_GPREL 4191 ENUMX 4192 BFD_RELOC_MEP_TPREL 4193 ENUMX 4194 BFD_RELOC_MEP_TPREL7 4195 ENUMX 4196 BFD_RELOC_MEP_TPREL7A2 4197 ENUMX 4198 BFD_RELOC_MEP_TPREL7A4 4199 ENUMX 4200 BFD_RELOC_MEP_UIMM24 4201 ENUMX 4202 BFD_RELOC_MEP_ADDR24A4 4203 ENUMX 4204 BFD_RELOC_MEP_GNU_VTINHERIT 4205 ENUMX 4206 BFD_RELOC_MEP_GNU_VTENTRY 4207 ENUMDOC 4208 Toshiba Media Processor Relocations. 4209 COMMENT 4210 4211 ENUM 4212 BFD_RELOC_MMIX_GETA 4213 ENUMX 4214 BFD_RELOC_MMIX_GETA_1 4215 ENUMX 4216 BFD_RELOC_MMIX_GETA_2 4217 ENUMX 4218 BFD_RELOC_MMIX_GETA_3 4219 ENUMDOC 4220 These are relocations for the GETA instruction. 4221 ENUM 4222 BFD_RELOC_MMIX_CBRANCH 4223 ENUMX 4224 BFD_RELOC_MMIX_CBRANCH_J 4225 ENUMX 4226 BFD_RELOC_MMIX_CBRANCH_1 4227 ENUMX 4228 BFD_RELOC_MMIX_CBRANCH_2 4229 ENUMX 4230 BFD_RELOC_MMIX_CBRANCH_3 4231 ENUMDOC 4232 These are relocations for a conditional branch instruction. 4233 ENUM 4234 BFD_RELOC_MMIX_PUSHJ 4235 ENUMX 4236 BFD_RELOC_MMIX_PUSHJ_1 4237 ENUMX 4238 BFD_RELOC_MMIX_PUSHJ_2 4239 ENUMX 4240 BFD_RELOC_MMIX_PUSHJ_3 4241 ENUMX 4242 BFD_RELOC_MMIX_PUSHJ_STUBBABLE 4243 ENUMDOC 4244 These are relocations for the PUSHJ instruction. 4245 ENUM 4246 BFD_RELOC_MMIX_JMP 4247 ENUMX 4248 BFD_RELOC_MMIX_JMP_1 4249 ENUMX 4250 BFD_RELOC_MMIX_JMP_2 4251 ENUMX 4252 BFD_RELOC_MMIX_JMP_3 4253 ENUMDOC 4254 These are relocations for the JMP instruction. 4255 ENUM 4256 BFD_RELOC_MMIX_ADDR19 4257 ENUMDOC 4258 This is a relocation for a relative address as in a GETA instruction or 4259 a branch. 4260 ENUM 4261 BFD_RELOC_MMIX_ADDR27 4262 ENUMDOC 4263 This is a relocation for a relative address as in a JMP instruction. 4264 ENUM 4265 BFD_RELOC_MMIX_REG_OR_BYTE 4266 ENUMDOC 4267 This is a relocation for an instruction field that may be a general 4268 register or a value 0..255. 4269 ENUM 4270 BFD_RELOC_MMIX_REG 4271 ENUMDOC 4272 This is a relocation for an instruction field that may be a general 4273 register. 4274 ENUM 4275 BFD_RELOC_MMIX_BASE_PLUS_OFFSET 4276 ENUMDOC 4277 This is a relocation for two instruction fields holding a register and 4278 an offset, the equivalent of the relocation. 4279 ENUM 4280 BFD_RELOC_MMIX_LOCAL 4281 ENUMDOC 4282 This relocation is an assertion that the expression is not allocated as 4283 a global register. It does not modify contents. 4284 4285 ENUM 4286 BFD_RELOC_AVR_7_PCREL 4287 ENUMDOC 4288 This is a 16 bit reloc for the AVR that stores 8 bit pc relative 4289 short offset into 7 bits. 4290 ENUM 4291 BFD_RELOC_AVR_13_PCREL 4292 ENUMDOC 4293 This is a 16 bit reloc for the AVR that stores 13 bit pc relative 4294 short offset into 12 bits. 4295 ENUM 4296 BFD_RELOC_AVR_16_PM 4297 ENUMDOC 4298 This is a 16 bit reloc for the AVR that stores 17 bit value (usually 4299 program memory address) into 16 bits. 4300 ENUM 4301 BFD_RELOC_AVR_LO8_LDI 4302 ENUMDOC 4303 This is a 16 bit reloc for the AVR that stores 8 bit value (usually 4304 data memory address) into 8 bit immediate value of LDI insn. 4305 ENUM 4306 BFD_RELOC_AVR_HI8_LDI 4307 ENUMDOC 4308 This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit 4309 of data memory address) into 8 bit immediate value of LDI insn. 4310 ENUM 4311 BFD_RELOC_AVR_HH8_LDI 4312 ENUMDOC 4313 This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit 4314 of program memory address) into 8 bit immediate value of LDI insn. 4315 ENUM 4316 BFD_RELOC_AVR_MS8_LDI 4317 ENUMDOC 4318 This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit 4319 of 32 bit value) into 8 bit immediate value of LDI insn. 4320 ENUM 4321 BFD_RELOC_AVR_LO8_LDI_NEG 4322 ENUMDOC 4323 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4324 (usually data memory address) into 8 bit immediate value of SUBI insn. 4325 ENUM 4326 BFD_RELOC_AVR_HI8_LDI_NEG 4327 ENUMDOC 4328 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4329 (high 8 bit of data memory address) into 8 bit immediate value of 4330 SUBI insn. 4331 ENUM 4332 BFD_RELOC_AVR_HH8_LDI_NEG 4333 ENUMDOC 4334 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4335 (most high 8 bit of program memory address) into 8 bit immediate value 4336 of LDI or SUBI insn. 4337 ENUM 4338 BFD_RELOC_AVR_MS8_LDI_NEG 4339 ENUMDOC 4340 This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb 4341 of 32 bit value) into 8 bit immediate value of LDI insn. 4342 ENUM 4343 BFD_RELOC_AVR_LO8_LDI_PM 4344 ENUMDOC 4345 This is a 16 bit reloc for the AVR that stores 8 bit value (usually 4346 command address) into 8 bit immediate value of LDI insn. 4347 ENUM 4348 BFD_RELOC_AVR_LO8_LDI_GS 4349 ENUMDOC 4350 This is a 16 bit reloc for the AVR that stores 8 bit value 4351 (command address) into 8 bit immediate value of LDI insn. If the address 4352 is beyond the 128k boundary, the linker inserts a jump stub for this reloc 4353 in the lower 128k. 4354 ENUM 4355 BFD_RELOC_AVR_HI8_LDI_PM 4356 ENUMDOC 4357 This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit 4358 of command address) into 8 bit immediate value of LDI insn. 4359 ENUM 4360 BFD_RELOC_AVR_HI8_LDI_GS 4361 ENUMDOC 4362 This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit 4363 of command address) into 8 bit immediate value of LDI insn. If the address 4364 is beyond the 128k boundary, the linker inserts a jump stub for this reloc 4365 below 128k. 4366 ENUM 4367 BFD_RELOC_AVR_HH8_LDI_PM 4368 ENUMDOC 4369 This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit 4370 of command address) into 8 bit immediate value of LDI insn. 4371 ENUM 4372 BFD_RELOC_AVR_LO8_LDI_PM_NEG 4373 ENUMDOC 4374 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4375 (usually command address) into 8 bit immediate value of SUBI insn. 4376 ENUM 4377 BFD_RELOC_AVR_HI8_LDI_PM_NEG 4378 ENUMDOC 4379 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4380 (high 8 bit of 16 bit command address) into 8 bit immediate value 4381 of SUBI insn. 4382 ENUM 4383 BFD_RELOC_AVR_HH8_LDI_PM_NEG 4384 ENUMDOC 4385 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4386 (high 6 bit of 22 bit command address) into 8 bit immediate 4387 value of SUBI insn. 4388 ENUM 4389 BFD_RELOC_AVR_CALL 4390 ENUMDOC 4391 This is a 32 bit reloc for the AVR that stores 23 bit value 4392 into 22 bits. 4393 ENUM 4394 BFD_RELOC_AVR_LDI 4395 ENUMDOC 4396 This is a 16 bit reloc for the AVR that stores all needed bits 4397 for absolute addressing with ldi with overflow check to linktime 4398 ENUM 4399 BFD_RELOC_AVR_6 4400 ENUMDOC 4401 This is a 6 bit reloc for the AVR that stores offset for ldd/std 4402 instructions 4403 ENUM 4404 BFD_RELOC_AVR_6_ADIW 4405 ENUMDOC 4406 This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw 4407 instructions 4408 ENUM 4409 BFD_RELOC_AVR_8_LO 4410 ENUMDOC 4411 This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol 4412 in .byte lo8(symbol) 4413 ENUM 4414 BFD_RELOC_AVR_8_HI 4415 ENUMDOC 4416 This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol 4417 in .byte hi8(symbol) 4418 ENUM 4419 BFD_RELOC_AVR_8_HLO 4420 ENUMDOC 4421 This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol 4422 in .byte hlo8(symbol) 4423 4424 ENUM 4425 BFD_RELOC_RL78_NEG8 4426 ENUMX 4427 BFD_RELOC_RL78_NEG16 4428 ENUMX 4429 BFD_RELOC_RL78_NEG24 4430 ENUMX 4431 BFD_RELOC_RL78_NEG32 4432 ENUMX 4433 BFD_RELOC_RL78_16_OP 4434 ENUMX 4435 BFD_RELOC_RL78_24_OP 4436 ENUMX 4437 BFD_RELOC_RL78_32_OP 4438 ENUMX 4439 BFD_RELOC_RL78_8U 4440 ENUMX 4441 BFD_RELOC_RL78_16U 4442 ENUMX 4443 BFD_RELOC_RL78_24U 4444 ENUMX 4445 BFD_RELOC_RL78_DIR3U_PCREL 4446 ENUMX 4447 BFD_RELOC_RL78_DIFF 4448 ENUMX 4449 BFD_RELOC_RL78_GPRELB 4450 ENUMX 4451 BFD_RELOC_RL78_GPRELW 4452 ENUMX 4453 BFD_RELOC_RL78_GPRELL 4454 ENUMX 4455 BFD_RELOC_RL78_SYM 4456 ENUMX 4457 BFD_RELOC_RL78_OP_SUBTRACT 4458 ENUMX 4459 BFD_RELOC_RL78_OP_NEG 4460 ENUMX 4461 BFD_RELOC_RL78_OP_AND 4462 ENUMX 4463 BFD_RELOC_RL78_OP_SHRA 4464 ENUMX 4465 BFD_RELOC_RL78_ABS8 4466 ENUMX 4467 BFD_RELOC_RL78_ABS16 4468 ENUMX 4469 BFD_RELOC_RL78_ABS16_REV 4470 ENUMX 4471 BFD_RELOC_RL78_ABS32 4472 ENUMX 4473 BFD_RELOC_RL78_ABS32_REV 4474 ENUMX 4475 BFD_RELOC_RL78_ABS16U 4476 ENUMX 4477 BFD_RELOC_RL78_ABS16UW 4478 ENUMX 4479 BFD_RELOC_RL78_ABS16UL 4480 ENUMX 4481 BFD_RELOC_RL78_RELAX 4482 ENUMX 4483 BFD_RELOC_RL78_HI16 4484 ENUMX 4485 BFD_RELOC_RL78_HI8 4486 ENUMX 4487 BFD_RELOC_RL78_LO16 4488 ENUMDOC 4489 Renesas RL78 Relocations. 4490 4491 ENUM 4492 BFD_RELOC_RX_NEG8 4493 ENUMX 4494 BFD_RELOC_RX_NEG16 4495 ENUMX 4496 BFD_RELOC_RX_NEG24 4497 ENUMX 4498 BFD_RELOC_RX_NEG32 4499 ENUMX 4500 BFD_RELOC_RX_16_OP 4501 ENUMX 4502 BFD_RELOC_RX_24_OP 4503 ENUMX 4504 BFD_RELOC_RX_32_OP 4505 ENUMX 4506 BFD_RELOC_RX_8U 4507 ENUMX 4508 BFD_RELOC_RX_16U 4509 ENUMX 4510 BFD_RELOC_RX_24U 4511 ENUMX 4512 BFD_RELOC_RX_DIR3U_PCREL 4513 ENUMX 4514 BFD_RELOC_RX_DIFF 4515 ENUMX 4516 BFD_RELOC_RX_GPRELB 4517 ENUMX 4518 BFD_RELOC_RX_GPRELW 4519 ENUMX 4520 BFD_RELOC_RX_GPRELL 4521 ENUMX 4522 BFD_RELOC_RX_SYM 4523 ENUMX 4524 BFD_RELOC_RX_OP_SUBTRACT 4525 ENUMX 4526 BFD_RELOC_RX_OP_NEG 4527 ENUMX 4528 BFD_RELOC_RX_ABS8 4529 ENUMX 4530 BFD_RELOC_RX_ABS16 4531 ENUMX 4532 BFD_RELOC_RX_ABS16_REV 4533 ENUMX 4534 BFD_RELOC_RX_ABS32 4535 ENUMX 4536 BFD_RELOC_RX_ABS32_REV 4537 ENUMX 4538 BFD_RELOC_RX_ABS16U 4539 ENUMX 4540 BFD_RELOC_RX_ABS16UW 4541 ENUMX 4542 BFD_RELOC_RX_ABS16UL 4543 ENUMX 4544 BFD_RELOC_RX_RELAX 4545 ENUMDOC 4546 Renesas RX Relocations. 4547 4548 ENUM 4549 BFD_RELOC_390_12 4550 ENUMDOC 4551 Direct 12 bit. 4552 ENUM 4553 BFD_RELOC_390_GOT12 4554 ENUMDOC 4555 12 bit GOT offset. 4556 ENUM 4557 BFD_RELOC_390_PLT32 4558 ENUMDOC 4559 32 bit PC relative PLT address. 4560 ENUM 4561 BFD_RELOC_390_COPY 4562 ENUMDOC 4563 Copy symbol at runtime. 4564 ENUM 4565 BFD_RELOC_390_GLOB_DAT 4566 ENUMDOC 4567 Create GOT entry. 4568 ENUM 4569 BFD_RELOC_390_JMP_SLOT 4570 ENUMDOC 4571 Create PLT entry. 4572 ENUM 4573 BFD_RELOC_390_RELATIVE 4574 ENUMDOC 4575 Adjust by program base. 4576 ENUM 4577 BFD_RELOC_390_GOTPC 4578 ENUMDOC 4579 32 bit PC relative offset to GOT. 4580 ENUM 4581 BFD_RELOC_390_GOT16 4582 ENUMDOC 4583 16 bit GOT offset. 4584 ENUM 4585 BFD_RELOC_390_PC16DBL 4586 ENUMDOC 4587 PC relative 16 bit shifted by 1. 4588 ENUM 4589 BFD_RELOC_390_PLT16DBL 4590 ENUMDOC 4591 16 bit PC rel. PLT shifted by 1. 4592 ENUM 4593 BFD_RELOC_390_PC32DBL 4594 ENUMDOC 4595 PC relative 32 bit shifted by 1. 4596 ENUM 4597 BFD_RELOC_390_PLT32DBL 4598 ENUMDOC 4599 32 bit PC rel. PLT shifted by 1. 4600 ENUM 4601 BFD_RELOC_390_GOTPCDBL 4602 ENUMDOC 4603 32 bit PC rel. GOT shifted by 1. 4604 ENUM 4605 BFD_RELOC_390_GOT64 4606 ENUMDOC 4607 64 bit GOT offset. 4608 ENUM 4609 BFD_RELOC_390_PLT64 4610 ENUMDOC 4611 64 bit PC relative PLT address. 4612 ENUM 4613 BFD_RELOC_390_GOTENT 4614 ENUMDOC 4615 32 bit rel. offset to GOT entry. 4616 ENUM 4617 BFD_RELOC_390_GOTOFF64 4618 ENUMDOC 4619 64 bit offset to GOT. 4620 ENUM 4621 BFD_RELOC_390_GOTPLT12 4622 ENUMDOC 4623 12-bit offset to symbol-entry within GOT, with PLT handling. 4624 ENUM 4625 BFD_RELOC_390_GOTPLT16 4626 ENUMDOC 4627 16-bit offset to symbol-entry within GOT, with PLT handling. 4628 ENUM 4629 BFD_RELOC_390_GOTPLT32 4630 ENUMDOC 4631 32-bit offset to symbol-entry within GOT, with PLT handling. 4632 ENUM 4633 BFD_RELOC_390_GOTPLT64 4634 ENUMDOC 4635 64-bit offset to symbol-entry within GOT, with PLT handling. 4636 ENUM 4637 BFD_RELOC_390_GOTPLTENT 4638 ENUMDOC 4639 32-bit rel. offset to symbol-entry within GOT, with PLT handling. 4640 ENUM 4641 BFD_RELOC_390_PLTOFF16 4642 ENUMDOC 4643 16-bit rel. offset from the GOT to a PLT entry. 4644 ENUM 4645 BFD_RELOC_390_PLTOFF32 4646 ENUMDOC 4647 32-bit rel. offset from the GOT to a PLT entry. 4648 ENUM 4649 BFD_RELOC_390_PLTOFF64 4650 ENUMDOC 4651 64-bit rel. offset from the GOT to a PLT entry. 4652 4653 ENUM 4654 BFD_RELOC_390_TLS_LOAD 4655 ENUMX 4656 BFD_RELOC_390_TLS_GDCALL 4657 ENUMX 4658 BFD_RELOC_390_TLS_LDCALL 4659 ENUMX 4660 BFD_RELOC_390_TLS_GD32 4661 ENUMX 4662 BFD_RELOC_390_TLS_GD64 4663 ENUMX 4664 BFD_RELOC_390_TLS_GOTIE12 4665 ENUMX 4666 BFD_RELOC_390_TLS_GOTIE32 4667 ENUMX 4668 BFD_RELOC_390_TLS_GOTIE64 4669 ENUMX 4670 BFD_RELOC_390_TLS_LDM32 4671 ENUMX 4672 BFD_RELOC_390_TLS_LDM64 4673 ENUMX 4674 BFD_RELOC_390_TLS_IE32 4675 ENUMX 4676 BFD_RELOC_390_TLS_IE64 4677 ENUMX 4678 BFD_RELOC_390_TLS_IEENT 4679 ENUMX 4680 BFD_RELOC_390_TLS_LE32 4681 ENUMX 4682 BFD_RELOC_390_TLS_LE64 4683 ENUMX 4684 BFD_RELOC_390_TLS_LDO32 4685 ENUMX 4686 BFD_RELOC_390_TLS_LDO64 4687 ENUMX 4688 BFD_RELOC_390_TLS_DTPMOD 4689 ENUMX 4690 BFD_RELOC_390_TLS_DTPOFF 4691 ENUMX 4692 BFD_RELOC_390_TLS_TPOFF 4693 ENUMDOC 4694 s390 tls relocations. 4695 4696 ENUM 4697 BFD_RELOC_390_20 4698 ENUMX 4699 BFD_RELOC_390_GOT20 4700 ENUMX 4701 BFD_RELOC_390_GOTPLT20 4702 ENUMX 4703 BFD_RELOC_390_TLS_GOTIE20 4704 ENUMDOC 4705 Long displacement extension. 4706 4707 ENUM 4708 BFD_RELOC_390_IRELATIVE 4709 ENUMDOC 4710 STT_GNU_IFUNC relocation. 4711 4712 ENUM 4713 BFD_RELOC_SCORE_GPREL15 4714 ENUMDOC 4715 Score relocations 4716 Low 16 bit for load/store 4717 ENUM 4718 BFD_RELOC_SCORE_DUMMY2 4719 ENUMX 4720 BFD_RELOC_SCORE_JMP 4721 ENUMDOC 4722 This is a 24-bit reloc with the right 1 bit assumed to be 0 4723 ENUM 4724 BFD_RELOC_SCORE_BRANCH 4725 ENUMDOC 4726 This is a 19-bit reloc with the right 1 bit assumed to be 0 4727 ENUM 4728 BFD_RELOC_SCORE_IMM30 4729 ENUMDOC 4730 This is a 32-bit reloc for 48-bit instructions. 4731 ENUM 4732 BFD_RELOC_SCORE_IMM32 4733 ENUMDOC 4734 This is a 32-bit reloc for 48-bit instructions. 4735 ENUM 4736 BFD_RELOC_SCORE16_JMP 4737 ENUMDOC 4738 This is a 11-bit reloc with the right 1 bit assumed to be 0 4739 ENUM 4740 BFD_RELOC_SCORE16_BRANCH 4741 ENUMDOC 4742 This is a 8-bit reloc with the right 1 bit assumed to be 0 4743 ENUM 4744 BFD_RELOC_SCORE_BCMP 4745 ENUMDOC 4746 This is a 9-bit reloc with the right 1 bit assumed to be 0 4747 ENUM 4748 BFD_RELOC_SCORE_GOT15 4749 ENUMX 4750 BFD_RELOC_SCORE_GOT_LO16 4751 ENUMX 4752 BFD_RELOC_SCORE_CALL15 4753 ENUMX 4754 BFD_RELOC_SCORE_DUMMY_HI16 4755 ENUMDOC 4756 Undocumented Score relocs 4757 4758 ENUM 4759 BFD_RELOC_IP2K_FR9 4760 ENUMDOC 4761 Scenix IP2K - 9-bit register number / data address 4762 ENUM 4763 BFD_RELOC_IP2K_BANK 4764 ENUMDOC 4765 Scenix IP2K - 4-bit register/data bank number 4766 ENUM 4767 BFD_RELOC_IP2K_ADDR16CJP 4768 ENUMDOC 4769 Scenix IP2K - low 13 bits of instruction word address 4770 ENUM 4771 BFD_RELOC_IP2K_PAGE3 4772 ENUMDOC 4773 Scenix IP2K - high 3 bits of instruction word address 4774 ENUM 4775 BFD_RELOC_IP2K_LO8DATA 4776 ENUMX 4777 BFD_RELOC_IP2K_HI8DATA 4778 ENUMX 4779 BFD_RELOC_IP2K_EX8DATA 4780 ENUMDOC 4781 Scenix IP2K - ext/low/high 8 bits of data address 4782 ENUM 4783 BFD_RELOC_IP2K_LO8INSN 4784 ENUMX 4785 BFD_RELOC_IP2K_HI8INSN 4786 ENUMDOC 4787 Scenix IP2K - low/high 8 bits of instruction word address 4788 ENUM 4789 BFD_RELOC_IP2K_PC_SKIP 4790 ENUMDOC 4791 Scenix IP2K - even/odd PC modifier to modify snb pcl.0 4792 ENUM 4793 BFD_RELOC_IP2K_TEXT 4794 ENUMDOC 4795 Scenix IP2K - 16 bit word address in text section. 4796 ENUM 4797 BFD_RELOC_IP2K_FR_OFFSET 4798 ENUMDOC 4799 Scenix IP2K - 7-bit sp or dp offset 4800 ENUM 4801 BFD_RELOC_VPE4KMATH_DATA 4802 ENUMX 4803 BFD_RELOC_VPE4KMATH_INSN 4804 ENUMDOC 4805 Scenix VPE4K coprocessor - data/insn-space addressing 4806 4807 ENUM 4808 BFD_RELOC_VTABLE_INHERIT 4809 ENUMX 4810 BFD_RELOC_VTABLE_ENTRY 4811 ENUMDOC 4812 These two relocations are used by the linker to determine which of 4813 the entries in a C++ virtual function table are actually used. When 4814 the --gc-sections option is given, the linker will zero out the entries 4815 that are not used, so that the code for those functions need not be 4816 included in the output. 4817 4818 VTABLE_INHERIT is a zero-space relocation used to describe to the 4819 linker the inheritance tree of a C++ virtual function table. The 4820 relocation's symbol should be the parent class' vtable, and the 4821 relocation should be located at the child vtable. 4822 4823 VTABLE_ENTRY is a zero-space relocation that describes the use of a 4824 virtual function table entry. The reloc's symbol should refer to the 4825 table of the class mentioned in the code. Off of that base, an offset 4826 describes the entry that is being used. For Rela hosts, this offset 4827 is stored in the reloc's addend. For Rel hosts, we are forced to put 4828 this offset in the reloc's section offset. 4829 4830 ENUM 4831 BFD_RELOC_IA64_IMM14 4832 ENUMX 4833 BFD_RELOC_IA64_IMM22 4834 ENUMX 4835 BFD_RELOC_IA64_IMM64 4836 ENUMX 4837 BFD_RELOC_IA64_DIR32MSB 4838 ENUMX 4839 BFD_RELOC_IA64_DIR32LSB 4840 ENUMX 4841 BFD_RELOC_IA64_DIR64MSB 4842 ENUMX 4843 BFD_RELOC_IA64_DIR64LSB 4844 ENUMX 4845 BFD_RELOC_IA64_GPREL22 4846 ENUMX 4847 BFD_RELOC_IA64_GPREL64I 4848 ENUMX 4849 BFD_RELOC_IA64_GPREL32MSB 4850 ENUMX 4851 BFD_RELOC_IA64_GPREL32LSB 4852 ENUMX 4853 BFD_RELOC_IA64_GPREL64MSB 4854 ENUMX 4855 BFD_RELOC_IA64_GPREL64LSB 4856 ENUMX 4857 BFD_RELOC_IA64_LTOFF22 4858 ENUMX 4859 BFD_RELOC_IA64_LTOFF64I 4860 ENUMX 4861 BFD_RELOC_IA64_PLTOFF22 4862 ENUMX 4863 BFD_RELOC_IA64_PLTOFF64I 4864 ENUMX 4865 BFD_RELOC_IA64_PLTOFF64MSB 4866 ENUMX 4867 BFD_RELOC_IA64_PLTOFF64LSB 4868 ENUMX 4869 BFD_RELOC_IA64_FPTR64I 4870 ENUMX 4871 BFD_RELOC_IA64_FPTR32MSB 4872 ENUMX 4873 BFD_RELOC_IA64_FPTR32LSB 4874 ENUMX 4875 BFD_RELOC_IA64_FPTR64MSB 4876 ENUMX 4877 BFD_RELOC_IA64_FPTR64LSB 4878 ENUMX 4879 BFD_RELOC_IA64_PCREL21B 4880 ENUMX 4881 BFD_RELOC_IA64_PCREL21BI 4882 ENUMX 4883 BFD_RELOC_IA64_PCREL21M 4884 ENUMX 4885 BFD_RELOC_IA64_PCREL21F 4886 ENUMX 4887 BFD_RELOC_IA64_PCREL22 4888 ENUMX 4889 BFD_RELOC_IA64_PCREL60B 4890 ENUMX 4891 BFD_RELOC_IA64_PCREL64I 4892 ENUMX 4893 BFD_RELOC_IA64_PCREL32MSB 4894 ENUMX 4895 BFD_RELOC_IA64_PCREL32LSB 4896 ENUMX 4897 BFD_RELOC_IA64_PCREL64MSB 4898 ENUMX 4899 BFD_RELOC_IA64_PCREL64LSB 4900 ENUMX 4901 BFD_RELOC_IA64_LTOFF_FPTR22 4902 ENUMX 4903 BFD_RELOC_IA64_LTOFF_FPTR64I 4904 ENUMX 4905 BFD_RELOC_IA64_LTOFF_FPTR32MSB 4906 ENUMX 4907 BFD_RELOC_IA64_LTOFF_FPTR32LSB 4908 ENUMX 4909 BFD_RELOC_IA64_LTOFF_FPTR64MSB 4910 ENUMX 4911 BFD_RELOC_IA64_LTOFF_FPTR64LSB 4912 ENUMX 4913 BFD_RELOC_IA64_SEGREL32MSB 4914 ENUMX 4915 BFD_RELOC_IA64_SEGREL32LSB 4916 ENUMX 4917 BFD_RELOC_IA64_SEGREL64MSB 4918 ENUMX 4919 BFD_RELOC_IA64_SEGREL64LSB 4920 ENUMX 4921 BFD_RELOC_IA64_SECREL32MSB 4922 ENUMX 4923 BFD_RELOC_IA64_SECREL32LSB 4924 ENUMX 4925 BFD_RELOC_IA64_SECREL64MSB 4926 ENUMX 4927 BFD_RELOC_IA64_SECREL64LSB 4928 ENUMX 4929 BFD_RELOC_IA64_REL32MSB 4930 ENUMX 4931 BFD_RELOC_IA64_REL32LSB 4932 ENUMX 4933 BFD_RELOC_IA64_REL64MSB 4934 ENUMX 4935 BFD_RELOC_IA64_REL64LSB 4936 ENUMX 4937 BFD_RELOC_IA64_LTV32MSB 4938 ENUMX 4939 BFD_RELOC_IA64_LTV32LSB 4940 ENUMX 4941 BFD_RELOC_IA64_LTV64MSB 4942 ENUMX 4943 BFD_RELOC_IA64_LTV64LSB 4944 ENUMX 4945 BFD_RELOC_IA64_IPLTMSB 4946 ENUMX 4947 BFD_RELOC_IA64_IPLTLSB 4948 ENUMX 4949 BFD_RELOC_IA64_COPY 4950 ENUMX 4951 BFD_RELOC_IA64_LTOFF22X 4952 ENUMX 4953 BFD_RELOC_IA64_LDXMOV 4954 ENUMX 4955 BFD_RELOC_IA64_TPREL14 4956 ENUMX 4957 BFD_RELOC_IA64_TPREL22 4958 ENUMX 4959 BFD_RELOC_IA64_TPREL64I 4960 ENUMX 4961 BFD_RELOC_IA64_TPREL64MSB 4962 ENUMX 4963 BFD_RELOC_IA64_TPREL64LSB 4964 ENUMX 4965 BFD_RELOC_IA64_LTOFF_TPREL22 4966 ENUMX 4967 BFD_RELOC_IA64_DTPMOD64MSB 4968 ENUMX 4969 BFD_RELOC_IA64_DTPMOD64LSB 4970 ENUMX 4971 BFD_RELOC_IA64_LTOFF_DTPMOD22 4972 ENUMX 4973 BFD_RELOC_IA64_DTPREL14 4974 ENUMX 4975 BFD_RELOC_IA64_DTPREL22 4976 ENUMX 4977 BFD_RELOC_IA64_DTPREL64I 4978 ENUMX 4979 BFD_RELOC_IA64_DTPREL32MSB 4980 ENUMX 4981 BFD_RELOC_IA64_DTPREL32LSB 4982 ENUMX 4983 BFD_RELOC_IA64_DTPREL64MSB 4984 ENUMX 4985 BFD_RELOC_IA64_DTPREL64LSB 4986 ENUMX 4987 BFD_RELOC_IA64_LTOFF_DTPREL22 4988 ENUMDOC 4989 Intel IA64 Relocations. 4990 4991 ENUM 4992 BFD_RELOC_M68HC11_HI8 4993 ENUMDOC 4994 Motorola 68HC11 reloc. 4995 This is the 8 bit high part of an absolute address. 4996 ENUM 4997 BFD_RELOC_M68HC11_LO8 4998 ENUMDOC 4999 Motorola 68HC11 reloc. 5000 This is the 8 bit low part of an absolute address. 5001 ENUM 5002 BFD_RELOC_M68HC11_3B 5003 ENUMDOC 5004 Motorola 68HC11 reloc. 5005 This is the 3 bit of a value. 5006 ENUM 5007 BFD_RELOC_M68HC11_RL_JUMP 5008 ENUMDOC 5009 Motorola 68HC11 reloc. 5010 This reloc marks the beginning of a jump/call instruction. 5011 It is used for linker relaxation to correctly identify beginning 5012 of instruction and change some branches to use PC-relative 5013 addressing mode. 5014 ENUM 5015 BFD_RELOC_M68HC11_RL_GROUP 5016 ENUMDOC 5017 Motorola 68HC11 reloc. 5018 This reloc marks a group of several instructions that gcc generates 5019 and for which the linker relaxation pass can modify and/or remove 5020 some of them. 5021 ENUM 5022 BFD_RELOC_M68HC11_LO16 5023 ENUMDOC 5024 Motorola 68HC11 reloc. 5025 This is the 16-bit lower part of an address. It is used for 'call' 5026 instruction to specify the symbol address without any special 5027 transformation (due to memory bank window). 5028 ENUM 5029 BFD_RELOC_M68HC11_PAGE 5030 ENUMDOC 5031 Motorola 68HC11 reloc. 5032 This is a 8-bit reloc that specifies the page number of an address. 5033 It is used by 'call' instruction to specify the page number of 5034 the symbol. 5035 ENUM 5036 BFD_RELOC_M68HC11_24 5037 ENUMDOC 5038 Motorola 68HC11 reloc. 5039 This is a 24-bit reloc that represents the address with a 16-bit 5040 value and a 8-bit page number. The symbol address is transformed 5041 to follow the 16K memory bank of 68HC12 (seen as mapped in the window). 5042 ENUM 5043 BFD_RELOC_M68HC12_5B 5044 ENUMDOC 5045 Motorola 68HC12 reloc. 5046 This is the 5 bits of a value. 5047 ENUM 5048 BFD_RELOC_XGATE_RL_JUMP 5049 ENUMDOC 5050 Freescale XGATE reloc. 5051 This reloc marks the beginning of a bra/jal instruction. 5052 ENUM 5053 BFD_RELOC_XGATE_RL_GROUP 5054 ENUMDOC 5055 Freescale XGATE reloc. 5056 This reloc marks a group of several instructions that gcc generates 5057 and for which the linker relaxation pass can modify and/or remove 5058 some of them. 5059 ENUM 5060 BFD_RELOC_XGATE_LO16 5061 ENUMDOC 5062 Freescale XGATE reloc. 5063 This is the 16-bit lower part of an address. It is used for the '16-bit' 5064 instructions. 5065 ENUM 5066 BFD_RELOC_XGATE_GPAGE 5067 ENUMDOC 5068 Freescale XGATE reloc. 5069 ENUM 5070 BFD_RELOC_XGATE_24 5071 ENUMDOC 5072 Freescale XGATE reloc. 5073 ENUM 5074 BFD_RELOC_XGATE_PCREL_9 5075 ENUMDOC 5076 Freescale XGATE reloc. 5077 This is a 9-bit pc-relative reloc. 5078 ENUM 5079 BFD_RELOC_XGATE_PCREL_10 5080 ENUMDOC 5081 Freescale XGATE reloc. 5082 This is a 10-bit pc-relative reloc. 5083 ENUM 5084 BFD_RELOC_XGATE_IMM8_LO 5085 ENUMDOC 5086 Freescale XGATE reloc. 5087 This is the 16-bit lower part of an address. It is used for the '16-bit' 5088 instructions. 5089 ENUM 5090 BFD_RELOC_XGATE_IMM8_HI 5091 ENUMDOC 5092 Freescale XGATE reloc. 5093 This is the 16-bit higher part of an address. It is used for the '16-bit' 5094 instructions. 5095 ENUM 5096 BFD_RELOC_XGATE_IMM3 5097 ENUMDOC 5098 Freescale XGATE reloc. 5099 This is a 3-bit pc-relative reloc. 5100 ENUM 5101 BFD_RELOC_XGATE_IMM4 5102 ENUMDOC 5103 Freescale XGATE reloc. 5104 This is a 4-bit pc-relative reloc. 5105 ENUM 5106 BFD_RELOC_XGATE_IMM5 5107 ENUMDOC 5108 Freescale XGATE reloc. 5109 This is a 5-bit pc-relative reloc. 5110 ENUM 5111 BFD_RELOC_M68HC12_9B 5112 ENUMDOC 5113 Motorola 68HC12 reloc. 5114 This is the 9 bits of a value. 5115 ENUM 5116 BFD_RELOC_M68HC12_16B 5117 ENUMDOC 5118 Motorola 68HC12 reloc. 5119 This is the 16 bits of a value. 5120 ENUM 5121 BFD_RELOC_M68HC12_9_PCREL 5122 ENUMDOC 5123 Motorola 68HC12/XGATE reloc. 5124 This is a PCREL9 branch. 5125 ENUM 5126 BFD_RELOC_M68HC12_10_PCREL 5127 ENUMDOC 5128 Motorola 68HC12/XGATE reloc. 5129 This is a PCREL10 branch. 5130 ENUM 5131 BFD_RELOC_M68HC12_LO8XG 5132 ENUMDOC 5133 Motorola 68HC12/XGATE reloc. 5134 This is the 8 bit low part of an absolute address and immediately precedes 5135 a matching HI8XG part. 5136 ENUM 5137 BFD_RELOC_M68HC12_HI8XG 5138 ENUMDOC 5139 Motorola 68HC12/XGATE reloc. 5140 This is the 8 bit high part of an absolute address and immediately follows 5141 a matching LO8XG part. 5142 ENUM 5143 BFD_RELOC_16C_NUM08 5144 ENUMX 5145 BFD_RELOC_16C_NUM08_C 5146 ENUMX 5147 BFD_RELOC_16C_NUM16 5148 ENUMX 5149 BFD_RELOC_16C_NUM16_C 5150 ENUMX 5151 BFD_RELOC_16C_NUM32 5152 ENUMX 5153 BFD_RELOC_16C_NUM32_C 5154 ENUMX 5155 BFD_RELOC_16C_DISP04 5156 ENUMX 5157 BFD_RELOC_16C_DISP04_C 5158 ENUMX 5159 BFD_RELOC_16C_DISP08 5160 ENUMX 5161 BFD_RELOC_16C_DISP08_C 5162 ENUMX 5163 BFD_RELOC_16C_DISP16 5164 ENUMX 5165 BFD_RELOC_16C_DISP16_C 5166 ENUMX 5167 BFD_RELOC_16C_DISP24 5168 ENUMX 5169 BFD_RELOC_16C_DISP24_C 5170 ENUMX 5171 BFD_RELOC_16C_DISP24a 5172 ENUMX 5173 BFD_RELOC_16C_DISP24a_C 5174 ENUMX 5175 BFD_RELOC_16C_REG04 5176 ENUMX 5177 BFD_RELOC_16C_REG04_C 5178 ENUMX 5179 BFD_RELOC_16C_REG04a 5180 ENUMX 5181 BFD_RELOC_16C_REG04a_C 5182 ENUMX 5183 BFD_RELOC_16C_REG14 5184 ENUMX 5185 BFD_RELOC_16C_REG14_C 5186 ENUMX 5187 BFD_RELOC_16C_REG16 5188 ENUMX 5189 BFD_RELOC_16C_REG16_C 5190 ENUMX 5191 BFD_RELOC_16C_REG20 5192 ENUMX 5193 BFD_RELOC_16C_REG20_C 5194 ENUMX 5195 BFD_RELOC_16C_ABS20 5196 ENUMX 5197 BFD_RELOC_16C_ABS20_C 5198 ENUMX 5199 BFD_RELOC_16C_ABS24 5200 ENUMX 5201 BFD_RELOC_16C_ABS24_C 5202 ENUMX 5203 BFD_RELOC_16C_IMM04 5204 ENUMX 5205 BFD_RELOC_16C_IMM04_C 5206 ENUMX 5207 BFD_RELOC_16C_IMM16 5208 ENUMX 5209 BFD_RELOC_16C_IMM16_C 5210 ENUMX 5211 BFD_RELOC_16C_IMM20 5212 ENUMX 5213 BFD_RELOC_16C_IMM20_C 5214 ENUMX 5215 BFD_RELOC_16C_IMM24 5216 ENUMX 5217 BFD_RELOC_16C_IMM24_C 5218 ENUMX 5219 BFD_RELOC_16C_IMM32 5220 ENUMX 5221 BFD_RELOC_16C_IMM32_C 5222 ENUMDOC 5223 NS CR16C Relocations. 5224 5225 ENUM 5226 BFD_RELOC_CR16_NUM8 5227 ENUMX 5228 BFD_RELOC_CR16_NUM16 5229 ENUMX 5230 BFD_RELOC_CR16_NUM32 5231 ENUMX 5232 BFD_RELOC_CR16_NUM32a 5233 ENUMX 5234 BFD_RELOC_CR16_REGREL0 5235 ENUMX 5236 BFD_RELOC_CR16_REGREL4 5237 ENUMX 5238 BFD_RELOC_CR16_REGREL4a 5239 ENUMX 5240 BFD_RELOC_CR16_REGREL14 5241 ENUMX 5242 BFD_RELOC_CR16_REGREL14a 5243 ENUMX 5244 BFD_RELOC_CR16_REGREL16 5245 ENUMX 5246 BFD_RELOC_CR16_REGREL20 5247 ENUMX 5248 BFD_RELOC_CR16_REGREL20a 5249 ENUMX 5250 BFD_RELOC_CR16_ABS20 5251 ENUMX 5252 BFD_RELOC_CR16_ABS24 5253 ENUMX 5254 BFD_RELOC_CR16_IMM4 5255 ENUMX 5256 BFD_RELOC_CR16_IMM8 5257 ENUMX 5258 BFD_RELOC_CR16_IMM16 5259 ENUMX 5260 BFD_RELOC_CR16_IMM20 5261 ENUMX 5262 BFD_RELOC_CR16_IMM24 5263 ENUMX 5264 BFD_RELOC_CR16_IMM32 5265 ENUMX 5266 BFD_RELOC_CR16_IMM32a 5267 ENUMX 5268 BFD_RELOC_CR16_DISP4 5269 ENUMX 5270 BFD_RELOC_CR16_DISP8 5271 ENUMX 5272 BFD_RELOC_CR16_DISP16 5273 ENUMX 5274 BFD_RELOC_CR16_DISP20 5275 ENUMX 5276 BFD_RELOC_CR16_DISP24 5277 ENUMX 5278 BFD_RELOC_CR16_DISP24a 5279 ENUMX 5280 BFD_RELOC_CR16_SWITCH8 5281 ENUMX 5282 BFD_RELOC_CR16_SWITCH16 5283 ENUMX 5284 BFD_RELOC_CR16_SWITCH32 5285 ENUMX 5286 BFD_RELOC_CR16_GOT_REGREL20 5287 ENUMX 5288 BFD_RELOC_CR16_GOTC_REGREL20 5289 ENUMX 5290 BFD_RELOC_CR16_GLOB_DAT 5291 ENUMDOC 5292 NS CR16 Relocations. 5293 5294 ENUM 5295 BFD_RELOC_CRX_REL4 5296 ENUMX 5297 BFD_RELOC_CRX_REL8 5298 ENUMX 5299 BFD_RELOC_CRX_REL8_CMP 5300 ENUMX 5301 BFD_RELOC_CRX_REL16 5302 ENUMX 5303 BFD_RELOC_CRX_REL24 5304 ENUMX 5305 BFD_RELOC_CRX_REL32 5306 ENUMX 5307 BFD_RELOC_CRX_REGREL12 5308 ENUMX 5309 BFD_RELOC_CRX_REGREL22 5310 ENUMX 5311 BFD_RELOC_CRX_REGREL28 5312 ENUMX 5313 BFD_RELOC_CRX_REGREL32 5314 ENUMX 5315 BFD_RELOC_CRX_ABS16 5316 ENUMX 5317 BFD_RELOC_CRX_ABS32 5318 ENUMX 5319 BFD_RELOC_CRX_NUM8 5320 ENUMX 5321 BFD_RELOC_CRX_NUM16 5322 ENUMX 5323 BFD_RELOC_CRX_NUM32 5324 ENUMX 5325 BFD_RELOC_CRX_IMM16 5326 ENUMX 5327 BFD_RELOC_CRX_IMM32 5328 ENUMX 5329 BFD_RELOC_CRX_SWITCH8 5330 ENUMX 5331 BFD_RELOC_CRX_SWITCH16 5332 ENUMX 5333 BFD_RELOC_CRX_SWITCH32 5334 ENUMDOC 5335 NS CRX Relocations. 5336 5337 ENUM 5338 BFD_RELOC_CRIS_BDISP8 5339 ENUMX 5340 BFD_RELOC_CRIS_UNSIGNED_5 5341 ENUMX 5342 BFD_RELOC_CRIS_SIGNED_6 5343 ENUMX 5344 BFD_RELOC_CRIS_UNSIGNED_6 5345 ENUMX 5346 BFD_RELOC_CRIS_SIGNED_8 5347 ENUMX 5348 BFD_RELOC_CRIS_UNSIGNED_8 5349 ENUMX 5350 BFD_RELOC_CRIS_SIGNED_16 5351 ENUMX 5352 BFD_RELOC_CRIS_UNSIGNED_16 5353 ENUMX 5354 BFD_RELOC_CRIS_LAPCQ_OFFSET 5355 ENUMX 5356 BFD_RELOC_CRIS_UNSIGNED_4 5357 ENUMDOC 5358 These relocs are only used within the CRIS assembler. They are not 5359 (at present) written to any object files. 5360 ENUM 5361 BFD_RELOC_CRIS_COPY 5362 ENUMX 5363 BFD_RELOC_CRIS_GLOB_DAT 5364 ENUMX 5365 BFD_RELOC_CRIS_JUMP_SLOT 5366 ENUMX 5367 BFD_RELOC_CRIS_RELATIVE 5368 ENUMDOC 5369 Relocs used in ELF shared libraries for CRIS. 5370 ENUM 5371 BFD_RELOC_CRIS_32_GOT 5372 ENUMDOC 5373 32-bit offset to symbol-entry within GOT. 5374 ENUM 5375 BFD_RELOC_CRIS_16_GOT 5376 ENUMDOC 5377 16-bit offset to symbol-entry within GOT. 5378 ENUM 5379 BFD_RELOC_CRIS_32_GOTPLT 5380 ENUMDOC 5381 32-bit offset to symbol-entry within GOT, with PLT handling. 5382 ENUM 5383 BFD_RELOC_CRIS_16_GOTPLT 5384 ENUMDOC 5385 16-bit offset to symbol-entry within GOT, with PLT handling. 5386 ENUM 5387 BFD_RELOC_CRIS_32_GOTREL 5388 ENUMDOC 5389 32-bit offset to symbol, relative to GOT. 5390 ENUM 5391 BFD_RELOC_CRIS_32_PLT_GOTREL 5392 ENUMDOC 5393 32-bit offset to symbol with PLT entry, relative to GOT. 5394 ENUM 5395 BFD_RELOC_CRIS_32_PLT_PCREL 5396 ENUMDOC 5397 32-bit offset to symbol with PLT entry, relative to this relocation. 5398 5399 ENUM 5400 BFD_RELOC_CRIS_32_GOT_GD 5401 ENUMX 5402 BFD_RELOC_CRIS_16_GOT_GD 5403 ENUMX 5404 BFD_RELOC_CRIS_32_GD 5405 ENUMX 5406 BFD_RELOC_CRIS_DTP 5407 ENUMX 5408 BFD_RELOC_CRIS_32_DTPREL 5409 ENUMX 5410 BFD_RELOC_CRIS_16_DTPREL 5411 ENUMX 5412 BFD_RELOC_CRIS_32_GOT_TPREL 5413 ENUMX 5414 BFD_RELOC_CRIS_16_GOT_TPREL 5415 ENUMX 5416 BFD_RELOC_CRIS_32_TPREL 5417 ENUMX 5418 BFD_RELOC_CRIS_16_TPREL 5419 ENUMX 5420 BFD_RELOC_CRIS_DTPMOD 5421 ENUMX 5422 BFD_RELOC_CRIS_32_IE 5423 ENUMDOC 5424 Relocs used in TLS code for CRIS. 5425 5426 ENUM 5427 BFD_RELOC_860_COPY 5428 ENUMX 5429 BFD_RELOC_860_GLOB_DAT 5430 ENUMX 5431 BFD_RELOC_860_JUMP_SLOT 5432 ENUMX 5433 BFD_RELOC_860_RELATIVE 5434 ENUMX 5435 BFD_RELOC_860_PC26 5436 ENUMX 5437 BFD_RELOC_860_PLT26 5438 ENUMX 5439 BFD_RELOC_860_PC16 5440 ENUMX 5441 BFD_RELOC_860_LOW0 5442 ENUMX 5443 BFD_RELOC_860_SPLIT0 5444 ENUMX 5445 BFD_RELOC_860_LOW1 5446 ENUMX 5447 BFD_RELOC_860_SPLIT1 5448 ENUMX 5449 BFD_RELOC_860_LOW2 5450 ENUMX 5451 BFD_RELOC_860_SPLIT2 5452 ENUMX 5453 BFD_RELOC_860_LOW3 5454 ENUMX 5455 BFD_RELOC_860_LOGOT0 5456 ENUMX 5457 BFD_RELOC_860_SPGOT0 5458 ENUMX 5459 BFD_RELOC_860_LOGOT1 5460 ENUMX 5461 BFD_RELOC_860_SPGOT1 5462 ENUMX 5463 BFD_RELOC_860_LOGOTOFF0 5464 ENUMX 5465 BFD_RELOC_860_SPGOTOFF0 5466 ENUMX 5467 BFD_RELOC_860_LOGOTOFF1 5468 ENUMX 5469 BFD_RELOC_860_SPGOTOFF1 5470 ENUMX 5471 BFD_RELOC_860_LOGOTOFF2 5472 ENUMX 5473 BFD_RELOC_860_LOGOTOFF3 5474 ENUMX 5475 BFD_RELOC_860_LOPC 5476 ENUMX 5477 BFD_RELOC_860_HIGHADJ 5478 ENUMX 5479 BFD_RELOC_860_HAGOT 5480 ENUMX 5481 BFD_RELOC_860_HAGOTOFF 5482 ENUMX 5483 BFD_RELOC_860_HAPC 5484 ENUMX 5485 BFD_RELOC_860_HIGH 5486 ENUMX 5487 BFD_RELOC_860_HIGOT 5488 ENUMX 5489 BFD_RELOC_860_HIGOTOFF 5490 ENUMDOC 5491 Intel i860 Relocations. 5492 5493 ENUM 5494 BFD_RELOC_OPENRISC_ABS_26 5495 ENUMX 5496 BFD_RELOC_OPENRISC_REL_26 5497 ENUMDOC 5498 OpenRISC Relocations. 5499 5500 ENUM 5501 BFD_RELOC_H8_DIR16A8 5502 ENUMX 5503 BFD_RELOC_H8_DIR16R8 5504 ENUMX 5505 BFD_RELOC_H8_DIR24A8 5506 ENUMX 5507 BFD_RELOC_H8_DIR24R8 5508 ENUMX 5509 BFD_RELOC_H8_DIR32A16 5510 ENUMDOC 5511 H8 elf Relocations. 5512 5513 ENUM 5514 BFD_RELOC_XSTORMY16_REL_12 5515 ENUMX 5516 BFD_RELOC_XSTORMY16_12 5517 ENUMX 5518 BFD_RELOC_XSTORMY16_24 5519 ENUMX 5520 BFD_RELOC_XSTORMY16_FPTR16 5521 ENUMDOC 5522 Sony Xstormy16 Relocations. 5523 5524 ENUM 5525 BFD_RELOC_RELC 5526 ENUMDOC 5527 Self-describing complex relocations. 5528 COMMENT 5529 5530 ENUM 5531 BFD_RELOC_XC16X_PAG 5532 ENUMX 5533 BFD_RELOC_XC16X_POF 5534 ENUMX 5535 BFD_RELOC_XC16X_SEG 5536 ENUMX 5537 BFD_RELOC_XC16X_SOF 5538 ENUMDOC 5539 Infineon Relocations. 5540 5541 ENUM 5542 BFD_RELOC_VAX_GLOB_DAT 5543 ENUMX 5544 BFD_RELOC_VAX_JMP_SLOT 5545 ENUMX 5546 BFD_RELOC_VAX_RELATIVE 5547 ENUMDOC 5548 Relocations used by VAX ELF. 5549 5550 ENUM 5551 BFD_RELOC_MT_PC16 5552 ENUMDOC 5553 Morpho MT - 16 bit immediate relocation. 5554 ENUM 5555 BFD_RELOC_MT_HI16 5556 ENUMDOC 5557 Morpho MT - Hi 16 bits of an address. 5558 ENUM 5559 BFD_RELOC_MT_LO16 5560 ENUMDOC 5561 Morpho MT - Low 16 bits of an address. 5562 ENUM 5563 BFD_RELOC_MT_GNU_VTINHERIT 5564 ENUMDOC 5565 Morpho MT - Used to tell the linker which vtable entries are used. 5566 ENUM 5567 BFD_RELOC_MT_GNU_VTENTRY 5568 ENUMDOC 5569 Morpho MT - Used to tell the linker which vtable entries are used. 5570 ENUM 5571 BFD_RELOC_MT_PCINSN8 5572 ENUMDOC 5573 Morpho MT - 8 bit immediate relocation. 5574 5575 ENUM 5576 BFD_RELOC_MSP430_10_PCREL 5577 ENUMX 5578 BFD_RELOC_MSP430_16_PCREL 5579 ENUMX 5580 BFD_RELOC_MSP430_16 5581 ENUMX 5582 BFD_RELOC_MSP430_16_PCREL_BYTE 5583 ENUMX 5584 BFD_RELOC_MSP430_16_BYTE 5585 ENUMX 5586 BFD_RELOC_MSP430_2X_PCREL 5587 ENUMX 5588 BFD_RELOC_MSP430_RL_PCREL 5589 ENUMDOC 5590 msp430 specific relocation codes 5591 5592 ENUM 5593 BFD_RELOC_IQ2000_OFFSET_16 5594 ENUMX 5595 BFD_RELOC_IQ2000_OFFSET_21 5596 ENUMX 5597 BFD_RELOC_IQ2000_UHI16 5598 ENUMDOC 5599 IQ2000 Relocations. 5600 5601 ENUM 5602 BFD_RELOC_XTENSA_RTLD 5603 ENUMDOC 5604 Special Xtensa relocation used only by PLT entries in ELF shared 5605 objects to indicate that the runtime linker should set the value 5606 to one of its own internal functions or data structures. 5607 ENUM 5608 BFD_RELOC_XTENSA_GLOB_DAT 5609 ENUMX 5610 BFD_RELOC_XTENSA_JMP_SLOT 5611 ENUMX 5612 BFD_RELOC_XTENSA_RELATIVE 5613 ENUMDOC 5614 Xtensa relocations for ELF shared objects. 5615 ENUM 5616 BFD_RELOC_XTENSA_PLT 5617 ENUMDOC 5618 Xtensa relocation used in ELF object files for symbols that may require 5619 PLT entries. Otherwise, this is just a generic 32-bit relocation. 5620 ENUM 5621 BFD_RELOC_XTENSA_DIFF8 5622 ENUMX 5623 BFD_RELOC_XTENSA_DIFF16 5624 ENUMX 5625 BFD_RELOC_XTENSA_DIFF32 5626 ENUMDOC 5627 Xtensa relocations to mark the difference of two local symbols. 5628 These are only needed to support linker relaxation and can be ignored 5629 when not relaxing. The field is set to the value of the difference 5630 assuming no relaxation. The relocation encodes the position of the 5631 first symbol so the linker can determine whether to adjust the field 5632 value. 5633 ENUM 5634 BFD_RELOC_XTENSA_SLOT0_OP 5635 ENUMX 5636 BFD_RELOC_XTENSA_SLOT1_OP 5637 ENUMX 5638 BFD_RELOC_XTENSA_SLOT2_OP 5639 ENUMX 5640 BFD_RELOC_XTENSA_SLOT3_OP 5641 ENUMX 5642 BFD_RELOC_XTENSA_SLOT4_OP 5643 ENUMX 5644 BFD_RELOC_XTENSA_SLOT5_OP 5645 ENUMX 5646 BFD_RELOC_XTENSA_SLOT6_OP 5647 ENUMX 5648 BFD_RELOC_XTENSA_SLOT7_OP 5649 ENUMX 5650 BFD_RELOC_XTENSA_SLOT8_OP 5651 ENUMX 5652 BFD_RELOC_XTENSA_SLOT9_OP 5653 ENUMX 5654 BFD_RELOC_XTENSA_SLOT10_OP 5655 ENUMX 5656 BFD_RELOC_XTENSA_SLOT11_OP 5657 ENUMX 5658 BFD_RELOC_XTENSA_SLOT12_OP 5659 ENUMX 5660 BFD_RELOC_XTENSA_SLOT13_OP 5661 ENUMX 5662 BFD_RELOC_XTENSA_SLOT14_OP 5663 ENUMDOC 5664 Generic Xtensa relocations for instruction operands. Only the slot 5665 number is encoded in the relocation. The relocation applies to the 5666 last PC-relative immediate operand, or if there are no PC-relative 5667 immediates, to the last immediate operand. 5668 ENUM 5669 BFD_RELOC_XTENSA_SLOT0_ALT 5670 ENUMX 5671 BFD_RELOC_XTENSA_SLOT1_ALT 5672 ENUMX 5673 BFD_RELOC_XTENSA_SLOT2_ALT 5674 ENUMX 5675 BFD_RELOC_XTENSA_SLOT3_ALT 5676 ENUMX 5677 BFD_RELOC_XTENSA_SLOT4_ALT 5678 ENUMX 5679 BFD_RELOC_XTENSA_SLOT5_ALT 5680 ENUMX 5681 BFD_RELOC_XTENSA_SLOT6_ALT 5682 ENUMX 5683 BFD_RELOC_XTENSA_SLOT7_ALT 5684 ENUMX 5685 BFD_RELOC_XTENSA_SLOT8_ALT 5686 ENUMX 5687 BFD_RELOC_XTENSA_SLOT9_ALT 5688 ENUMX 5689 BFD_RELOC_XTENSA_SLOT10_ALT 5690 ENUMX 5691 BFD_RELOC_XTENSA_SLOT11_ALT 5692 ENUMX 5693 BFD_RELOC_XTENSA_SLOT12_ALT 5694 ENUMX 5695 BFD_RELOC_XTENSA_SLOT13_ALT 5696 ENUMX 5697 BFD_RELOC_XTENSA_SLOT14_ALT 5698 ENUMDOC 5699 Alternate Xtensa relocations. Only the slot is encoded in the 5700 relocation. The meaning of these relocations is opcode-specific. 5701 ENUM 5702 BFD_RELOC_XTENSA_OP0 5703 ENUMX 5704 BFD_RELOC_XTENSA_OP1 5705 ENUMX 5706 BFD_RELOC_XTENSA_OP2 5707 ENUMDOC 5708 Xtensa relocations for backward compatibility. These have all been 5709 replaced by BFD_RELOC_XTENSA_SLOT0_OP. 5710 ENUM 5711 BFD_RELOC_XTENSA_ASM_EXPAND 5712 ENUMDOC 5713 Xtensa relocation to mark that the assembler expanded the 5714 instructions from an original target. The expansion size is 5715 encoded in the reloc size. 5716 ENUM 5717 BFD_RELOC_XTENSA_ASM_SIMPLIFY 5718 ENUMDOC 5719 Xtensa relocation to mark that the linker should simplify 5720 assembler-expanded instructions. This is commonly used 5721 internally by the linker after analysis of a 5722 BFD_RELOC_XTENSA_ASM_EXPAND. 5723 ENUM 5724 BFD_RELOC_XTENSA_TLSDESC_FN 5725 ENUMX 5726 BFD_RELOC_XTENSA_TLSDESC_ARG 5727 ENUMX 5728 BFD_RELOC_XTENSA_TLS_DTPOFF 5729 ENUMX 5730 BFD_RELOC_XTENSA_TLS_TPOFF 5731 ENUMX 5732 BFD_RELOC_XTENSA_TLS_FUNC 5733 ENUMX 5734 BFD_RELOC_XTENSA_TLS_ARG 5735 ENUMX 5736 BFD_RELOC_XTENSA_TLS_CALL 5737 ENUMDOC 5738 Xtensa TLS relocations. 5739 5740 ENUM 5741 BFD_RELOC_Z80_DISP8 5742 ENUMDOC 5743 8 bit signed offset in (ix+d) or (iy+d). 5744 5745 ENUM 5746 BFD_RELOC_Z8K_DISP7 5747 ENUMDOC 5748 DJNZ offset. 5749 ENUM 5750 BFD_RELOC_Z8K_CALLR 5751 ENUMDOC 5752 CALR offset. 5753 ENUM 5754 BFD_RELOC_Z8K_IMM4L 5755 ENUMDOC 5756 4 bit value. 5757 5758 ENUM 5759 BFD_RELOC_LM32_CALL 5760 ENUMX 5761 BFD_RELOC_LM32_BRANCH 5762 ENUMX 5763 BFD_RELOC_LM32_16_GOT 5764 ENUMX 5765 BFD_RELOC_LM32_GOTOFF_HI16 5766 ENUMX 5767 BFD_RELOC_LM32_GOTOFF_LO16 5768 ENUMX 5769 BFD_RELOC_LM32_COPY 5770 ENUMX 5771 BFD_RELOC_LM32_GLOB_DAT 5772 ENUMX 5773 BFD_RELOC_LM32_JMP_SLOT 5774 ENUMX 5775 BFD_RELOC_LM32_RELATIVE 5776 ENUMDOC 5777 Lattice Mico32 relocations. 5778 5779 ENUM 5780 BFD_RELOC_MACH_O_SECTDIFF 5781 ENUMDOC 5782 Difference between two section addreses. Must be followed by a 5783 BFD_RELOC_MACH_O_PAIR. 5784 ENUM 5785 BFD_RELOC_MACH_O_LOCAL_SECTDIFF 5786 ENUMDOC 5787 Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol. 5788 ENUM 5789 BFD_RELOC_MACH_O_PAIR 5790 ENUMDOC 5791 Pair of relocation. Contains the first symbol. 5792 5793 ENUM 5794 BFD_RELOC_MACH_O_X86_64_BRANCH32 5795 ENUMX 5796 BFD_RELOC_MACH_O_X86_64_BRANCH8 5797 ENUMDOC 5798 PCREL relocations. They are marked as branch to create PLT entry if 5799 required. 5800 ENUM 5801 BFD_RELOC_MACH_O_X86_64_GOT 5802 ENUMDOC 5803 Used when referencing a GOT entry. 5804 ENUM 5805 BFD_RELOC_MACH_O_X86_64_GOT_LOAD 5806 ENUMDOC 5807 Used when loading a GOT entry with movq. It is specially marked so that 5808 the linker could optimize the movq to a leaq if possible. 5809 ENUM 5810 BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32 5811 ENUMDOC 5812 Symbol will be substracted. Must be followed by a BFD_RELOC_64. 5813 ENUM 5814 BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64 5815 ENUMDOC 5816 Symbol will be substracted. Must be followed by a BFD_RELOC_64. 5817 ENUM 5818 BFD_RELOC_MACH_O_X86_64_PCREL32_1 5819 ENUMDOC 5820 Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. 5821 ENUM 5822 BFD_RELOC_MACH_O_X86_64_PCREL32_2 5823 ENUMDOC 5824 Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. 5825 ENUM 5826 BFD_RELOC_MACH_O_X86_64_PCREL32_4 5827 ENUMDOC 5828 Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. 5829 5830 ENUM 5831 BFD_RELOC_MICROBLAZE_32_LO 5832 ENUMDOC 5833 This is a 32 bit reloc for the microblaze that stores the 5834 low 16 bits of a value 5835 ENUM 5836 BFD_RELOC_MICROBLAZE_32_LO_PCREL 5837 ENUMDOC 5838 This is a 32 bit pc-relative reloc for the microblaze that 5839 stores the low 16 bits of a value 5840 ENUM 5841 BFD_RELOC_MICROBLAZE_32_ROSDA 5842 ENUMDOC 5843 This is a 32 bit reloc for the microblaze that stores a 5844 value relative to the read-only small data area anchor 5845 ENUM 5846 BFD_RELOC_MICROBLAZE_32_RWSDA 5847 ENUMDOC 5848 This is a 32 bit reloc for the microblaze that stores a 5849 value relative to the read-write small data area anchor 5850 ENUM 5851 BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM 5852 ENUMDOC 5853 This is a 32 bit reloc for the microblaze to handle 5854 expressions of the form "Symbol Op Symbol" 5855 ENUM 5856 BFD_RELOC_MICROBLAZE_64_NONE 5857 ENUMDOC 5858 This is a 64 bit reloc that stores the 32 bit pc relative 5859 value in two words (with an imm instruction). No relocation is 5860 done here - only used for relaxing 5861 ENUM 5862 BFD_RELOC_MICROBLAZE_64_GOTPC 5863 ENUMDOC 5864 This is a 64 bit reloc that stores the 32 bit pc relative 5865 value in two words (with an imm instruction). The relocation is 5866 PC-relative GOT offset 5867 ENUM 5868 BFD_RELOC_MICROBLAZE_64_GOT 5869 ENUMDOC 5870 This is a 64 bit reloc that stores the 32 bit pc relative 5871 value in two words (with an imm instruction). The relocation is 5872 GOT offset 5873 ENUM 5874 BFD_RELOC_MICROBLAZE_64_PLT 5875 ENUMDOC 5876 This is a 64 bit reloc that stores the 32 bit pc relative 5877 value in two words (with an imm instruction). The relocation is 5878 PC-relative offset into PLT 5879 ENUM 5880 BFD_RELOC_MICROBLAZE_64_GOTOFF 5881 ENUMDOC 5882 This is a 64 bit reloc that stores the 32 bit GOT relative 5883 value in two words (with an imm instruction). The relocation is 5884 relative offset from _GLOBAL_OFFSET_TABLE_ 5885 ENUM 5886 BFD_RELOC_MICROBLAZE_32_GOTOFF 5887 ENUMDOC 5888 This is a 32 bit reloc that stores the 32 bit GOT relative 5889 value in a word. The relocation is relative offset from 5890 _GLOBAL_OFFSET_TABLE_ 5891 ENUM 5892 BFD_RELOC_MICROBLAZE_COPY 5893 ENUMDOC 5894 This is used to tell the dynamic linker to copy the value out of 5895 the dynamic object into the runtime process image. 5896 5897 ENUM 5898 BFD_RELOC_AARCH64_ADD_LO12 5899 ENUMDOC 5900 AArch64 ADD immediate instruction, holding bits 0 to 11 of the address. 5901 Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. 5902 ENUM 5903 BFD_RELOC_AARCH64_ADR_GOT_PAGE 5904 ENUMDOC 5905 Get to the page base of the global offset table entry for a symbol as 5906 part of an ADRP instruction using a 21 bit PC relative value.Used in 5907 conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC. 5908 ENUM 5909 BFD_RELOC_AARCH64_ADR_HI21_PCREL 5910 ENUMDOC 5911 AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page 5912 offset, giving a 4KB aligned page base address. 5913 ENUM 5914 BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL 5915 ENUMDOC 5916 AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page 5917 offset, giving a 4KB aligned page base address, but with no overflow 5918 checking. 5919 ENUM 5920 BFD_RELOC_AARCH64_ADR_LO21_PCREL 5921 ENUMDOC 5922 AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset. 5923 ENUM 5924 BFD_RELOC_AARCH64_BRANCH19 5925 ENUMDOC 5926 AArch64 19 bit pc-relative conditional branch and compare & branch. 5927 The lowest two bits must be zero and are not stored in the instruction, 5928 giving a 21 bit signed byte offset. 5929 ENUM 5930 BFD_RELOC_AARCH64_CALL26 5931 ENUMDOC 5932 AArch64 26 bit pc-relative unconditional branch and link. 5933 The lowest two bits must be zero and are not stored in the instruction, 5934 giving a 28 bit signed byte offset. 5935 ENUM 5936 BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP 5937 ENUMDOC 5938 AArch64 pseudo relocation code to be used internally by the AArch64 5939 assembler and not (currently) written to any object files. 5940 ENUM 5941 BFD_RELOC_AARCH64_JUMP26 5942 ENUMDOC 5943 AArch64 26 bit pc-relative unconditional branch. 5944 The lowest two bits must be zero and are not stored in the instruction, 5945 giving a 28 bit signed byte offset. 5946 ENUM 5947 BFD_RELOC_AARCH64_LD_LO19_PCREL 5948 ENUMDOC 5949 AArch64 Load Literal instruction, holding a 19 bit pc-relative word 5950 offset. The lowest two bits must be zero and are not stored in the 5951 instruction, giving a 21 bit signed byte offset. 5952 ENUM 5953 BFD_RELOC_AARCH64_LD64_GOT_LO12_NC 5954 ENUMDOC 5955 Unsigned 12 bit byte offset for 64 bit load/store from the page of 5956 the GOT entry for this symbol. Used in conjunction with 5957 BFD_RELOC_AARCH64_ADR_GOTPAGE. 5958 ENUM 5959 BFD_RELOC_AARCH64_LDST_LO12 5960 ENUMDOC 5961 AArch64 unspecified load/store instruction, holding bits 0 to 11 of the 5962 address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. 5963 ENUM 5964 BFD_RELOC_AARCH64_LDST8_LO12 5965 ENUMDOC 5966 AArch64 8-bit load/store instruction, holding bits 0 to 11 of the 5967 address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. 5968 ENUM 5969 BFD_RELOC_AARCH64_LDST16_LO12 5970 ENUMDOC 5971 AArch64 16-bit load/store instruction, holding bits 0 to 11 of the 5972 address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. 5973 ENUM 5974 BFD_RELOC_AARCH64_LDST32_LO12 5975 ENUMDOC 5976 AArch64 32-bit load/store instruction, holding bits 0 to 11 of the 5977 address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. 5978 ENUM 5979 BFD_RELOC_AARCH64_LDST64_LO12 5980 ENUMDOC 5981 AArch64 64-bit load/store instruction, holding bits 0 to 11 of the 5982 address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. 5983 ENUM 5984 BFD_RELOC_AARCH64_LDST128_LO12 5985 ENUMDOC 5986 AArch64 128-bit load/store instruction, holding bits 0 to 11 of the 5987 address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. 5988 ENUM 5989 BFD_RELOC_AARCH64_MOVW_G0 5990 ENUMDOC 5991 AArch64 MOV[NZK] instruction with most significant bits 0 to 15 5992 of an unsigned address/value. 5993 ENUM 5994 BFD_RELOC_AARCH64_MOVW_G0_S 5995 ENUMDOC 5996 AArch64 MOV[NZ] instruction with most significant bits 0 to 15 5997 of a signed value. Changes instruction to MOVZ or MOVN depending on the 5998 value's sign. 5999 ENUM 6000 BFD_RELOC_AARCH64_MOVW_G0_NC 6001 ENUMDOC 6002 AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of 6003 an address/value. No overflow checking. 6004 ENUM 6005 BFD_RELOC_AARCH64_MOVW_G1 6006 ENUMDOC 6007 AArch64 MOV[NZK] instruction with most significant bits 16 to 31 6008 of an unsigned address/value. 6009 ENUM 6010 BFD_RELOC_AARCH64_MOVW_G1_NC 6011 ENUMDOC 6012 AArch64 MOV[NZK] instruction with less significant bits 16 to 31 6013 of an address/value. No overflow checking. 6014 ENUM 6015 BFD_RELOC_AARCH64_MOVW_G1_S 6016 ENUMDOC 6017 AArch64 MOV[NZ] instruction with most significant bits 16 to 31 6018 of a signed value. Changes instruction to MOVZ or MOVN depending on the 6019 value's sign. 6020 ENUM 6021 BFD_RELOC_AARCH64_MOVW_G2 6022 ENUMDOC 6023 AArch64 MOV[NZK] instruction with most significant bits 32 to 47 6024 of an unsigned address/value. 6025 ENUM 6026 BFD_RELOC_AARCH64_MOVW_G2_NC 6027 ENUMDOC 6028 AArch64 MOV[NZK] instruction with less significant bits 32 to 47 6029 of an address/value. No overflow checking. 6030 ENUM 6031 BFD_RELOC_AARCH64_MOVW_G2_S 6032 ENUMDOC 6033 AArch64 MOV[NZ] instruction with most significant bits 32 to 47 6034 of a signed value. Changes instruction to MOVZ or MOVN depending on the 6035 value's sign. 6036 ENUM 6037 BFD_RELOC_AARCH64_MOVW_G3 6038 ENUMDOC 6039 AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 6040 of a signed or unsigned address/value. 6041 ENUM 6042 BFD_RELOC_AARCH64_TLSDESC 6043 ENUMDOC 6044 AArch64 TLS relocation. 6045 ENUM 6046 BFD_RELOC_AARCH64_TLSDESC_ADD 6047 ENUMDOC 6048 AArch64 TLS DESC relocation. 6049 ENUM 6050 BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC 6051 ENUMDOC 6052 AArch64 TLS DESC relocation. 6053 ENUM 6054 BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE 6055 ENUMDOC 6056 AArch64 TLS DESC relocation. 6057 ENUM 6058 BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21 6059 ENUMDOC 6060 AArch64 TLS DESC relocation. 6061 ENUM 6062 BFD_RELOC_AARCH64_TLSDESC_CALL 6063 ENUMDOC 6064 AArch64 TLS DESC relocation. 6065 ENUM 6066 BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC 6067 ENUMDOC 6068 AArch64 TLS DESC relocation. 6069 ENUM 6070 BFD_RELOC_AARCH64_TLSDESC_LD64_PREL19 6071 ENUMDOC 6072 AArch64 TLS DESC relocation. 6073 ENUM 6074 BFD_RELOC_AARCH64_TLSDESC_LDR 6075 ENUMDOC 6076 AArch64 TLS DESC relocation. 6077 ENUM 6078 BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC 6079 ENUMDOC 6080 AArch64 TLS DESC relocation. 6081 ENUM 6082 BFD_RELOC_AARCH64_TLSDESC_OFF_G1 6083 ENUMDOC 6084 AArch64 TLS DESC relocation. 6085 ENUM 6086 BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC 6087 ENUMDOC 6088 Unsigned 12 bit byte offset to global offset table entry for a symbols 6089 tls_index structure. Used in conjunction with 6090 BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21. 6091 ENUM 6092 BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21 6093 ENUMDOC 6094 Get to the page base of the global offset table entry for a symbols 6095 tls_index structure as part of an adrp instruction using a 21 bit PC 6096 relative value. Used in conjunction with 6097 BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC. 6098 ENUM 6099 BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 6100 ENUMDOC 6101 AArch64 TLS INITIAL EXEC relocation. 6102 ENUM 6103 BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19 6104 ENUMDOC 6105 AArch64 TLS INITIAL EXEC relocation. 6106 ENUM 6107 BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 6108 ENUMDOC 6109 AArch64 TLS INITIAL EXEC relocation. 6110 ENUM 6111 BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 6112 ENUMDOC 6113 AArch64 TLS INITIAL EXEC relocation. 6114 ENUM 6115 BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1 6116 ENUMDOC 6117 AArch64 TLS INITIAL EXEC relocation. 6118 ENUM 6119 BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12 6120 ENUMDOC 6121 AArch64 TLS LOCAL EXEC relocation. 6122 ENUM 6123 BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12 6124 ENUMDOC 6125 AArch64 TLS LOCAL EXEC relocation. 6126 ENUM 6127 BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC 6128 ENUMDOC 6129 AArch64 TLS LOCAL EXEC relocation. 6130 ENUM 6131 BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0 6132 ENUMDOC 6133 AArch64 TLS LOCAL EXEC relocation. 6134 ENUM 6135 BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC 6136 ENUMDOC 6137 AArch64 TLS LOCAL EXEC relocation. 6138 ENUM 6139 BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1 6140 ENUMDOC 6141 AArch64 TLS LOCAL EXEC relocation. 6142 ENUM 6143 BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC 6144 ENUMDOC 6145 AArch64 TLS LOCAL EXEC relocation. 6146 ENUM 6147 BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2 6148 ENUMDOC 6149 AArch64 TLS LOCAL EXEC relocation. 6150 ENUM 6151 BFD_RELOC_AARCH64_TLS_DTPMOD64 6152 ENUMDOC 6153 AArch64 TLS relocation. 6154 ENUM 6155 BFD_RELOC_AARCH64_TLS_DTPREL64 6156 ENUMDOC 6157 AArch64 TLS relocation. 6158 ENUM 6159 BFD_RELOC_AARCH64_TLS_TPREL64 6160 ENUMDOC 6161 AArch64 TLS relocation. 6162 ENUM 6163 BFD_RELOC_AARCH64_TSTBR14 6164 ENUMDOC 6165 AArch64 14 bit pc-relative test bit and branch. 6166 The lowest two bits must be zero and are not stored in the instruction, 6167 giving a 16 bit signed byte offset. 6168 6169 ENUM 6170 BFD_RELOC_TILEPRO_COPY 6171 ENUMX 6172 BFD_RELOC_TILEPRO_GLOB_DAT 6173 ENUMX 6174 BFD_RELOC_TILEPRO_JMP_SLOT 6175 ENUMX 6176 BFD_RELOC_TILEPRO_RELATIVE 6177 ENUMX 6178 BFD_RELOC_TILEPRO_BROFF_X1 6179 ENUMX 6180 BFD_RELOC_TILEPRO_JOFFLONG_X1 6181 ENUMX 6182 BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT 6183 ENUMX 6184 BFD_RELOC_TILEPRO_IMM8_X0 6185 ENUMX 6186 BFD_RELOC_TILEPRO_IMM8_Y0 6187 ENUMX 6188 BFD_RELOC_TILEPRO_IMM8_X1 6189 ENUMX 6190 BFD_RELOC_TILEPRO_IMM8_Y1 6191 ENUMX 6192 BFD_RELOC_TILEPRO_DEST_IMM8_X1 6193 ENUMX 6194 BFD_RELOC_TILEPRO_MT_IMM15_X1 6195 ENUMX 6196 BFD_RELOC_TILEPRO_MF_IMM15_X1 6197 ENUMX 6198 BFD_RELOC_TILEPRO_IMM16_X0 6199 ENUMX 6200 BFD_RELOC_TILEPRO_IMM16_X1 6201 ENUMX 6202 BFD_RELOC_TILEPRO_IMM16_X0_LO 6203 ENUMX 6204 BFD_RELOC_TILEPRO_IMM16_X1_LO 6205 ENUMX 6206 BFD_RELOC_TILEPRO_IMM16_X0_HI 6207 ENUMX 6208 BFD_RELOC_TILEPRO_IMM16_X1_HI 6209 ENUMX 6210 BFD_RELOC_TILEPRO_IMM16_X0_HA 6211 ENUMX 6212 BFD_RELOC_TILEPRO_IMM16_X1_HA 6213 ENUMX 6214 BFD_RELOC_TILEPRO_IMM16_X0_PCREL 6215 ENUMX 6216 BFD_RELOC_TILEPRO_IMM16_X1_PCREL 6217 ENUMX 6218 BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL 6219 ENUMX 6220 BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL 6221 ENUMX 6222 BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL 6223 ENUMX 6224 BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL 6225 ENUMX 6226 BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL 6227 ENUMX 6228 BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL 6229 ENUMX 6230 BFD_RELOC_TILEPRO_IMM16_X0_GOT 6231 ENUMX 6232 BFD_RELOC_TILEPRO_IMM16_X1_GOT 6233 ENUMX 6234 BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO 6235 ENUMX 6236 BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO 6237 ENUMX 6238 BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI 6239 ENUMX 6240 BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI 6241 ENUMX 6242 BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA 6243 ENUMX 6244 BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA 6245 ENUMX 6246 BFD_RELOC_TILEPRO_MMSTART_X0 6247 ENUMX 6248 BFD_RELOC_TILEPRO_MMEND_X0 6249 ENUMX 6250 BFD_RELOC_TILEPRO_MMSTART_X1 6251 ENUMX 6252 BFD_RELOC_TILEPRO_MMEND_X1 6253 ENUMX 6254 BFD_RELOC_TILEPRO_SHAMT_X0 6255 ENUMX 6256 BFD_RELOC_TILEPRO_SHAMT_X1 6257 ENUMX 6258 BFD_RELOC_TILEPRO_SHAMT_Y0 6259 ENUMX 6260 BFD_RELOC_TILEPRO_SHAMT_Y1 6261 ENUMX 6262 BFD_RELOC_TILEPRO_TLS_GD_CALL 6263 ENUMX 6264 BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD 6265 ENUMX 6266 BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD 6267 ENUMX 6268 BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD 6269 ENUMX 6270 BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD 6271 ENUMX 6272 BFD_RELOC_TILEPRO_TLS_IE_LOAD 6273 ENUMX 6274 BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD 6275 ENUMX 6276 BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD 6277 ENUMX 6278 BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO 6279 ENUMX 6280 BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO 6281 ENUMX 6282 BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI 6283 ENUMX 6284 BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI 6285 ENUMX 6286 BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA 6287 ENUMX 6288 BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA 6289 ENUMX 6290 BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE 6291 ENUMX 6292 BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE 6293 ENUMX 6294 BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO 6295 ENUMX 6296 BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO 6297 ENUMX 6298 BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI 6299 ENUMX 6300 BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI 6301 ENUMX 6302 BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA 6303 ENUMX 6304 BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA 6305 ENUMX 6306 BFD_RELOC_TILEPRO_TLS_DTPMOD32 6307 ENUMX 6308 BFD_RELOC_TILEPRO_TLS_DTPOFF32 6309 ENUMX 6310 BFD_RELOC_TILEPRO_TLS_TPOFF32 6311 ENUMX 6312 BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE 6313 ENUMX 6314 BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE 6315 ENUMX 6316 BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO 6317 ENUMX 6318 BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO 6319 ENUMX 6320 BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI 6321 ENUMX 6322 BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI 6323 ENUMX 6324 BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA 6325 ENUMX 6326 BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA 6327 ENUMDOC 6328 Tilera TILEPro Relocations. 6329 ENUM 6330 BFD_RELOC_TILEGX_HW0 6331 ENUMX 6332 BFD_RELOC_TILEGX_HW1 6333 ENUMX 6334 BFD_RELOC_TILEGX_HW2 6335 ENUMX 6336 BFD_RELOC_TILEGX_HW3 6337 ENUMX 6338 BFD_RELOC_TILEGX_HW0_LAST 6339 ENUMX 6340 BFD_RELOC_TILEGX_HW1_LAST 6341 ENUMX 6342 BFD_RELOC_TILEGX_HW2_LAST 6343 ENUMX 6344 BFD_RELOC_TILEGX_COPY 6345 ENUMX 6346 BFD_RELOC_TILEGX_GLOB_DAT 6347 ENUMX 6348 BFD_RELOC_TILEGX_JMP_SLOT 6349 ENUMX 6350 BFD_RELOC_TILEGX_RELATIVE 6351 ENUMX 6352 BFD_RELOC_TILEGX_BROFF_X1 6353 ENUMX 6354 BFD_RELOC_TILEGX_JUMPOFF_X1 6355 ENUMX 6356 BFD_RELOC_TILEGX_JUMPOFF_X1_PLT 6357 ENUMX 6358 BFD_RELOC_TILEGX_IMM8_X0 6359 ENUMX 6360 BFD_RELOC_TILEGX_IMM8_Y0 6361 ENUMX 6362 BFD_RELOC_TILEGX_IMM8_X1 6363 ENUMX 6364 BFD_RELOC_TILEGX_IMM8_Y1 6365 ENUMX 6366 BFD_RELOC_TILEGX_DEST_IMM8_X1 6367 ENUMX 6368 BFD_RELOC_TILEGX_MT_IMM14_X1 6369 ENUMX 6370 BFD_RELOC_TILEGX_MF_IMM14_X1 6371 ENUMX 6372 BFD_RELOC_TILEGX_MMSTART_X0 6373 ENUMX 6374 BFD_RELOC_TILEGX_MMEND_X0 6375 ENUMX 6376 BFD_RELOC_TILEGX_SHAMT_X0 6377 ENUMX 6378 BFD_RELOC_TILEGX_SHAMT_X1 6379 ENUMX 6380 BFD_RELOC_TILEGX_SHAMT_Y0 6381 ENUMX 6382 BFD_RELOC_TILEGX_SHAMT_Y1 6383 ENUMX 6384 BFD_RELOC_TILEGX_IMM16_X0_HW0 6385 ENUMX 6386 BFD_RELOC_TILEGX_IMM16_X1_HW0 6387 ENUMX 6388 BFD_RELOC_TILEGX_IMM16_X0_HW1 6389 ENUMX 6390 BFD_RELOC_TILEGX_IMM16_X1_HW1 6391 ENUMX 6392 BFD_RELOC_TILEGX_IMM16_X0_HW2 6393 ENUMX 6394 BFD_RELOC_TILEGX_IMM16_X1_HW2 6395 ENUMX 6396 BFD_RELOC_TILEGX_IMM16_X0_HW3 6397 ENUMX 6398 BFD_RELOC_TILEGX_IMM16_X1_HW3 6399 ENUMX 6400 BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST 6401 ENUMX 6402 BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST 6403 ENUMX 6404 BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST 6405 ENUMX 6406 BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST 6407 ENUMX 6408 BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST 6409 ENUMX 6410 BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST 6411 ENUMX 6412 BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL 6413 ENUMX 6414 BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL 6415 ENUMX 6416 BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL 6417 ENUMX 6418 BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL 6419 ENUMX 6420 BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL 6421 ENUMX 6422 BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL 6423 ENUMX 6424 BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL 6425 ENUMX 6426 BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL 6427 ENUMX 6428 BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL 6429 ENUMX 6430 BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL 6431 ENUMX 6432 BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL 6433 ENUMX 6434 BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL 6435 ENUMX 6436 BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL 6437 ENUMX 6438 BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL 6439 ENUMX 6440 BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT 6441 ENUMX 6442 BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT 6443 ENUMX 6444 BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT 6445 ENUMX 6446 BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT 6447 ENUMX 6448 BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT 6449 ENUMX 6450 BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT 6451 ENUMX 6452 BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD 6453 ENUMX 6454 BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD 6455 ENUMX 6456 BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE 6457 ENUMX 6458 BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE 6459 ENUMX 6460 BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE 6461 ENUMX 6462 BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE 6463 ENUMX 6464 BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE 6465 ENUMX 6466 BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE 6467 ENUMX 6468 BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD 6469 ENUMX 6470 BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD 6471 ENUMX 6472 BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD 6473 ENUMX 6474 BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD 6475 ENUMX 6476 BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE 6477 ENUMX 6478 BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE 6479 ENUMX 6480 BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE 6481 ENUMX 6482 BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE 6483 ENUMX 6484 BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE 6485 ENUMX 6486 BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE 6487 ENUMX 6488 BFD_RELOC_TILEGX_TLS_DTPMOD64 6489 ENUMX 6490 BFD_RELOC_TILEGX_TLS_DTPOFF64 6491 ENUMX 6492 BFD_RELOC_TILEGX_TLS_TPOFF64 6493 ENUMX 6494 BFD_RELOC_TILEGX_TLS_DTPMOD32 6495 ENUMX 6496 BFD_RELOC_TILEGX_TLS_DTPOFF32 6497 ENUMX 6498 BFD_RELOC_TILEGX_TLS_TPOFF32 6499 ENUMX 6500 BFD_RELOC_TILEGX_TLS_GD_CALL 6501 ENUMX 6502 BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD 6503 ENUMX 6504 BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD 6505 ENUMX 6506 BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD 6507 ENUMX 6508 BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD 6509 ENUMX 6510 BFD_RELOC_TILEGX_TLS_IE_LOAD 6511 ENUMX 6512 BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD 6513 ENUMX 6514 BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD 6515 ENUMX 6516 BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD 6517 ENUMX 6518 BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD 6519 ENUMDOC 6520 Tilera TILE-Gx Relocations. 6521 ENUM 6522 BFD_RELOC_EPIPHANY_SIMM8 6523 ENUMDOC 6524 Adapteva EPIPHANY - 8 bit signed pc-relative displacement 6525 ENUM 6526 BFD_RELOC_EPIPHANY_SIMM24 6527 ENUMDOC 6528 Adapteva EPIPHANY - 24 bit signed pc-relative displacement 6529 ENUM 6530 BFD_RELOC_EPIPHANY_HIGH 6531 ENUMDOC 6532 Adapteva EPIPHANY - 16 most-significant bits of absolute address 6533 ENUM 6534 BFD_RELOC_EPIPHANY_LOW 6535 ENUMDOC 6536 Adapteva EPIPHANY - 16 least-significant bits of absolute address 6537 ENUM 6538 BFD_RELOC_EPIPHANY_SIMM11 6539 ENUMDOC 6540 Adapteva EPIPHANY - 11 bit signed number - add/sub immediate 6541 ENUM 6542 BFD_RELOC_EPIPHANY_IMM11 6543 ENUMDOC 6544 Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement) 6545 ENUM 6546 BFD_RELOC_EPIPHANY_IMM8 6547 ENUMDOC 6548 Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction. 6549 6550 6551 ENDSENUM 6552 BFD_RELOC_UNUSED 6553 CODE_FRAGMENT 6554 . 6555 .typedef enum bfd_reloc_code_real bfd_reloc_code_real_type; 6556 */ 6557 6558 /* 6559 FUNCTION 6560 bfd_reloc_type_lookup 6561 bfd_reloc_name_lookup 6562 6563 SYNOPSIS 6564 reloc_howto_type *bfd_reloc_type_lookup 6565 (bfd *abfd, bfd_reloc_code_real_type code); 6566 reloc_howto_type *bfd_reloc_name_lookup 6567 (bfd *abfd, const char *reloc_name); 6568 6569 DESCRIPTION 6570 Return a pointer to a howto structure which, when 6571 invoked, will perform the relocation @var{code} on data from the 6572 architecture noted. 6573 6574 */ 6575 6576 reloc_howto_type * 6577 bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code) 6578 { 6579 return BFD_SEND (abfd, reloc_type_lookup, (abfd, code)); 6580 } 6581 6582 reloc_howto_type * 6583 bfd_reloc_name_lookup (bfd *abfd, const char *reloc_name) 6584 { 6585 return BFD_SEND (abfd, reloc_name_lookup, (abfd, reloc_name)); 6586 } 6587 6588 static reloc_howto_type bfd_howto_32 = 6589 HOWTO (0, 00, 2, 32, FALSE, 0, complain_overflow_dont, 0, "VRT32", FALSE, 0xffffffff, 0xffffffff, TRUE); 6590 6591 /* 6592 INTERNAL_FUNCTION 6593 bfd_default_reloc_type_lookup 6594 6595 SYNOPSIS 6596 reloc_howto_type *bfd_default_reloc_type_lookup 6597 (bfd *abfd, bfd_reloc_code_real_type code); 6598 6599 DESCRIPTION 6600 Provides a default relocation lookup routine for any architecture. 6601 6602 */ 6603 6604 reloc_howto_type * 6605 bfd_default_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code) 6606 { 6607 switch (code) 6608 { 6609 case BFD_RELOC_CTOR: 6610 /* The type of reloc used in a ctor, which will be as wide as the 6611 address - so either a 64, 32, or 16 bitter. */ 6612 switch (bfd_arch_bits_per_address (abfd)) 6613 { 6614 case 64: 6615 BFD_FAIL (); 6616 case 32: 6617 return &bfd_howto_32; 6618 case 16: 6619 BFD_FAIL (); 6620 default: 6621 BFD_FAIL (); 6622 } 6623 default: 6624 BFD_FAIL (); 6625 } 6626 return NULL; 6627 } 6628 6629 /* 6630 FUNCTION 6631 bfd_get_reloc_code_name 6632 6633 SYNOPSIS 6634 const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code); 6635 6636 DESCRIPTION 6637 Provides a printable name for the supplied relocation code. 6638 Useful mainly for printing error messages. 6639 */ 6640 6641 const char * 6642 bfd_get_reloc_code_name (bfd_reloc_code_real_type code) 6643 { 6644 if (code > BFD_RELOC_UNUSED) 6645 return 0; 6646 return bfd_reloc_code_real_names[code]; 6647 } 6648 6649 /* 6650 INTERNAL_FUNCTION 6651 bfd_generic_relax_section 6652 6653 SYNOPSIS 6654 bfd_boolean bfd_generic_relax_section 6655 (bfd *abfd, 6656 asection *section, 6657 struct bfd_link_info *, 6658 bfd_boolean *); 6659 6660 DESCRIPTION 6661 Provides default handling for relaxing for back ends which 6662 don't do relaxing. 6663 */ 6664 6665 bfd_boolean 6666 bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED, 6667 asection *section ATTRIBUTE_UNUSED, 6668 struct bfd_link_info *link_info ATTRIBUTE_UNUSED, 6669 bfd_boolean *again) 6670 { 6671 if (link_info->relocatable) 6672 (*link_info->callbacks->einfo) 6673 (_("%P%F: --relax and -r may not be used together\n")); 6674 6675 *again = FALSE; 6676 return TRUE; 6677 } 6678 6679 /* 6680 INTERNAL_FUNCTION 6681 bfd_generic_gc_sections 6682 6683 SYNOPSIS 6684 bfd_boolean bfd_generic_gc_sections 6685 (bfd *, struct bfd_link_info *); 6686 6687 DESCRIPTION 6688 Provides default handling for relaxing for back ends which 6689 don't do section gc -- i.e., does nothing. 6690 */ 6691 6692 bfd_boolean 6693 bfd_generic_gc_sections (bfd *abfd ATTRIBUTE_UNUSED, 6694 struct bfd_link_info *info ATTRIBUTE_UNUSED) 6695 { 6696 return TRUE; 6697 } 6698 6699 /* 6700 INTERNAL_FUNCTION 6701 bfd_generic_lookup_section_flags 6702 6703 SYNOPSIS 6704 bfd_boolean bfd_generic_lookup_section_flags 6705 (struct bfd_link_info *, struct flag_info *, asection *); 6706 6707 DESCRIPTION 6708 Provides default handling for section flags lookup 6709 -- i.e., does nothing. 6710 Returns FALSE if the section should be omitted, otherwise TRUE. 6711 */ 6712 6713 bfd_boolean 6714 bfd_generic_lookup_section_flags (struct bfd_link_info *info ATTRIBUTE_UNUSED, 6715 struct flag_info *flaginfo, 6716 asection *section ATTRIBUTE_UNUSED) 6717 { 6718 if (flaginfo != NULL) 6719 { 6720 (*_bfd_error_handler) (_("INPUT_SECTION_FLAGS are not supported.\n")); 6721 return FALSE; 6722 } 6723 return TRUE; 6724 } 6725 6726 /* 6727 INTERNAL_FUNCTION 6728 bfd_generic_merge_sections 6729 6730 SYNOPSIS 6731 bfd_boolean bfd_generic_merge_sections 6732 (bfd *, struct bfd_link_info *); 6733 6734 DESCRIPTION 6735 Provides default handling for SEC_MERGE section merging for back ends 6736 which don't have SEC_MERGE support -- i.e., does nothing. 6737 */ 6738 6739 bfd_boolean 6740 bfd_generic_merge_sections (bfd *abfd ATTRIBUTE_UNUSED, 6741 struct bfd_link_info *link_info ATTRIBUTE_UNUSED) 6742 { 6743 return TRUE; 6744 } 6745 6746 /* 6747 INTERNAL_FUNCTION 6748 bfd_generic_get_relocated_section_contents 6749 6750 SYNOPSIS 6751 bfd_byte *bfd_generic_get_relocated_section_contents 6752 (bfd *abfd, 6753 struct bfd_link_info *link_info, 6754 struct bfd_link_order *link_order, 6755 bfd_byte *data, 6756 bfd_boolean relocatable, 6757 asymbol **symbols); 6758 6759 DESCRIPTION 6760 Provides default handling of relocation effort for back ends 6761 which can't be bothered to do it efficiently. 6762 6763 */ 6764 6765 bfd_byte * 6766 bfd_generic_get_relocated_section_contents (bfd *abfd, 6767 struct bfd_link_info *link_info, 6768 struct bfd_link_order *link_order, 6769 bfd_byte *data, 6770 bfd_boolean relocatable, 6771 asymbol **symbols) 6772 { 6773 bfd *input_bfd = link_order->u.indirect.section->owner; 6774 asection *input_section = link_order->u.indirect.section; 6775 long reloc_size; 6776 arelent **reloc_vector; 6777 long reloc_count; 6778 6779 reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section); 6780 if (reloc_size < 0) 6781 return NULL; 6782 6783 /* Read in the section. */ 6784 if (!bfd_get_full_section_contents (input_bfd, input_section, &data)) 6785 return NULL; 6786 6787 if (reloc_size == 0) 6788 return data; 6789 6790 reloc_vector = (arelent **) bfd_malloc (reloc_size); 6791 if (reloc_vector == NULL) 6792 return NULL; 6793 6794 reloc_count = bfd_canonicalize_reloc (input_bfd, 6795 input_section, 6796 reloc_vector, 6797 symbols); 6798 if (reloc_count < 0) 6799 goto error_return; 6800 6801 if (reloc_count > 0) 6802 { 6803 arelent **parent; 6804 for (parent = reloc_vector; *parent != NULL; parent++) 6805 { 6806 char *error_message = NULL; 6807 asymbol *symbol; 6808 bfd_reloc_status_type r; 6809 6810 symbol = *(*parent)->sym_ptr_ptr; 6811 if (symbol->section && discarded_section (symbol->section)) 6812 { 6813 bfd_byte *p; 6814 static reloc_howto_type none_howto 6815 = HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, 6816 "unused", FALSE, 0, 0, FALSE); 6817 6818 p = data + (*parent)->address * bfd_octets_per_byte (input_bfd); 6819 _bfd_clear_contents ((*parent)->howto, input_bfd, input_section, 6820 p); 6821 (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; 6822 (*parent)->addend = 0; 6823 (*parent)->howto = &none_howto; 6824 r = bfd_reloc_ok; 6825 } 6826 else 6827 r = bfd_perform_relocation (input_bfd, 6828 *parent, 6829 data, 6830 input_section, 6831 relocatable ? abfd : NULL, 6832 &error_message); 6833 6834 if (relocatable) 6835 { 6836 asection *os = input_section->output_section; 6837 6838 /* A partial link, so keep the relocs. */ 6839 os->orelocation[os->reloc_count] = *parent; 6840 os->reloc_count++; 6841 } 6842 6843 if (r != bfd_reloc_ok) 6844 { 6845 switch (r) 6846 { 6847 case bfd_reloc_undefined: 6848 if (!((*link_info->callbacks->undefined_symbol) 6849 (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr), 6850 input_bfd, input_section, (*parent)->address, 6851 TRUE))) 6852 goto error_return; 6853 break; 6854 case bfd_reloc_dangerous: 6855 BFD_ASSERT (error_message != NULL); 6856 if (!((*link_info->callbacks->reloc_dangerous) 6857 (link_info, error_message, input_bfd, input_section, 6858 (*parent)->address))) 6859 goto error_return; 6860 break; 6861 case bfd_reloc_overflow: 6862 if (!((*link_info->callbacks->reloc_overflow) 6863 (link_info, NULL, 6864 bfd_asymbol_name (*(*parent)->sym_ptr_ptr), 6865 (*parent)->howto->name, (*parent)->addend, 6866 input_bfd, input_section, (*parent)->address))) 6867 goto error_return; 6868 break; 6869 case bfd_reloc_outofrange: 6870 /* PR ld/13730: 6871 This error can result when processing some partially 6872 complete binaries. Do not abort, but issue an error 6873 message instead. */ 6874 link_info->callbacks->einfo 6875 (_("%X%P: %B(%A): relocation \"%R\" goes out of range\n"), 6876 abfd, input_section, * parent); 6877 goto error_return; 6878 6879 default: 6880 abort (); 6881 break; 6882 } 6883 6884 } 6885 } 6886 } 6887 6888 free (reloc_vector); 6889 return data; 6890 6891 error_return: 6892 free (reloc_vector); 6893 return NULL; 6894 } 6895