bfd.info revision 1.1
1This is bfd.info, produced by makeinfo version 4.8 from bfd.texinfo. 2 3START-INFO-DIR-ENTRY 4* Bfd: (bfd). The Binary File Descriptor library. 5END-INFO-DIR-ENTRY 6 7 This file documents the BFD library. 8 9 Copyright (C) 1991, 2000, 2001, 2003, 2006, 2007 Free Software 10Foundation, Inc. 11 12 Permission is granted to copy, distribute and/or modify this document 13under the terms of the GNU Free Documentation License, Version 1.1 or 14any later version published by the Free Software Foundation; with the 15Invariant Sections being "GNU General Public License" and "Funding Free 16Software", the Front-Cover texts being (a) (see below), and with the 17Back-Cover Texts being (b) (see below). A copy of the license is 18included in the section entitled "GNU Free Documentation License". 19 20 (a) The FSF's Front-Cover Text is: 21 22 A GNU Manual 23 24 (b) The FSF's Back-Cover Text is: 25 26 You have freedom to copy and modify this GNU Manual, like GNU 27software. Copies published by the Free Software Foundation raise 28funds for GNU development. 29 30 31File: bfd.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) 32 33 This file documents the binary file descriptor library libbfd. 34 35* Menu: 36 37* Overview:: Overview of BFD 38* BFD front end:: BFD front end 39* BFD back ends:: BFD back ends 40* GNU Free Documentation License:: GNU Free Documentation License 41* BFD Index:: BFD Index 42 43 44File: bfd.info, Node: Overview, Next: BFD front end, Prev: Top, Up: Top 45 461 Introduction 47************** 48 49BFD is a package which allows applications to use the same routines to 50operate on object files whatever the object file format. A new object 51file format can be supported simply by creating a new BFD back end and 52adding it to the library. 53 54 BFD is split into two parts: the front end, and the back ends (one 55for each object file format). 56 * The front end of BFD provides the interface to the user. It manages 57 memory and various canonical data structures. The front end also 58 decides which back end to use and when to call back end routines. 59 60 * The back ends provide BFD its view of the real world. Each back 61 end provides a set of calls which the BFD front end can use to 62 maintain its canonical form. The back ends also may keep around 63 information for their own use, for greater efficiency. 64 65* Menu: 66 67* History:: History 68* How It Works:: How It Works 69* What BFD Version 2 Can Do:: What BFD Version 2 Can Do 70 71 72File: bfd.info, Node: History, Next: How It Works, Prev: Overview, Up: Overview 73 741.1 History 75=========== 76 77One spur behind BFD was the desire, on the part of the GNU 960 team at 78Intel Oregon, for interoperability of applications on their COFF and 79b.out file formats. Cygnus was providing GNU support for the team, and 80was contracted to provide the required functionality. 81 82 The name came from a conversation David Wallace was having with 83Richard Stallman about the library: RMS said that it would be quite 84hard--David said "BFD". Stallman was right, but the name stuck. 85 86 At the same time, Ready Systems wanted much the same thing, but for 87different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k 88coff. 89 90 BFD was first implemented by members of Cygnus Support; Steve 91Chamberlain (`sac@cygnus.com'), John Gilmore (`gnu@cygnus.com'), K. 92Richard Pixley (`rich@cygnus.com') and David Henkel-Wallace 93(`gumby@cygnus.com'). 94 95 96File: bfd.info, Node: How It Works, Next: What BFD Version 2 Can Do, Prev: History, Up: Overview 97 981.2 How To Use BFD 99================== 100 101To use the library, include `bfd.h' and link with `libbfd.a'. 102 103 BFD provides a common interface to the parts of an object file for a 104calling application. 105 106 When an application successfully opens a target file (object, 107archive, or whatever), a pointer to an internal structure is returned. 108This pointer points to a structure called `bfd', described in `bfd.h'. 109Our convention is to call this pointer a BFD, and instances of it 110within code `abfd'. All operations on the target object file are 111applied as methods to the BFD. The mapping is defined within `bfd.h' 112in a set of macros, all beginning with `bfd_' to reduce namespace 113pollution. 114 115 For example, this sequence does what you would probably expect: 116return the number of sections in an object file attached to a BFD 117`abfd'. 118 119 #include "bfd.h" 120 121 unsigned int number_of_sections (abfd) 122 bfd *abfd; 123 { 124 return bfd_count_sections (abfd); 125 } 126 127 The abstraction used within BFD is that an object file has: 128 129 * a header, 130 131 * a number of sections containing raw data (*note Sections::), 132 133 * a set of relocations (*note Relocations::), and 134 135 * some symbol information (*note Symbols::). 136 Also, BFDs opened for archives have the additional attribute of an 137index and contain subordinate BFDs. This approach is fine for a.out and 138coff, but loses efficiency when applied to formats such as S-records and 139IEEE-695. 140 141 142File: bfd.info, Node: What BFD Version 2 Can Do, Prev: How It Works, Up: Overview 143 1441.3 What BFD Version 2 Can Do 145============================= 146 147When an object file is opened, BFD subroutines automatically determine 148the format of the input object file. They then build a descriptor in 149memory with pointers to routines that will be used to access elements of 150the object file's data structures. 151 152 As different information from the object files is required, BFD 153reads from different sections of the file and processes them. For 154example, a very common operation for the linker is processing symbol 155tables. Each BFD back end provides a routine for converting between 156the object file's representation of symbols and an internal canonical 157format. When the linker asks for the symbol table of an object file, it 158calls through a memory pointer to the routine from the relevant BFD 159back end which reads and converts the table into a canonical form. The 160linker then operates upon the canonical form. When the link is finished 161and the linker writes the output file's symbol table, another BFD back 162end routine is called to take the newly created symbol table and 163convert it into the chosen output format. 164 165* Menu: 166 167* BFD information loss:: Information Loss 168* Canonical format:: The BFD canonical object-file format 169 170 171File: bfd.info, Node: BFD information loss, Next: Canonical format, Up: What BFD Version 2 Can Do 172 1731.3.1 Information Loss 174---------------------- 175 176_Information can be lost during output._ The output formats supported 177by BFD do not provide identical facilities, and information which can 178be described in one form has nowhere to go in another format. One 179example of this is alignment information in `b.out'. There is nowhere 180in an `a.out' format file to store alignment information on the 181contained data, so when a file is linked from `b.out' and an `a.out' 182image is produced, alignment information will not propagate to the 183output file. (The linker will still use the alignment information 184internally, so the link is performed correctly). 185 186 Another example is COFF section names. COFF files may contain an 187unlimited number of sections, each one with a textual section name. If 188the target of the link is a format which does not have many sections 189(e.g., `a.out') or has sections without names (e.g., the Oasys format), 190the link cannot be done simply. You can circumvent this problem by 191describing the desired input-to-output section mapping with the linker 192command language. 193 194 _Information can be lost during canonicalization._ The BFD internal 195canonical form of the external formats is not exhaustive; there are 196structures in input formats for which there is no direct representation 197internally. This means that the BFD back ends cannot maintain all 198possible data richness through the transformation between external to 199internal and back to external formats. 200 201 This limitation is only a problem when an application reads one 202format and writes another. Each BFD back end is responsible for 203maintaining as much data as possible, and the internal BFD canonical 204form has structures which are opaque to the BFD core, and exported only 205to the back ends. When a file is read in one format, the canonical form 206is generated for BFD and the application. At the same time, the back 207end saves away any information which may otherwise be lost. If the data 208is then written back in the same format, the back end routine will be 209able to use the canonical form provided by the BFD core as well as the 210information it prepared earlier. Since there is a great deal of 211commonality between back ends, there is no information lost when 212linking or copying big endian COFF to little endian COFF, or `a.out' to 213`b.out'. When a mixture of formats is linked, the information is only 214lost from the files whose format differs from the destination. 215 216 217File: bfd.info, Node: Canonical format, Prev: BFD information loss, Up: What BFD Version 2 Can Do 218 2191.3.2 The BFD canonical object-file format 220------------------------------------------ 221 222The greatest potential for loss of information occurs when there is the 223least overlap between the information provided by the source format, 224that stored by the canonical format, and that needed by the destination 225format. A brief description of the canonical form may help you 226understand which kinds of data you can count on preserving across 227conversions. 228 229_files_ 230 Information stored on a per-file basis includes target machine 231 architecture, particular implementation format type, a demand 232 pageable bit, and a write protected bit. Information like Unix 233 magic numbers is not stored here--only the magic numbers' meaning, 234 so a `ZMAGIC' file would have both the demand pageable bit and the 235 write protected text bit set. The byte order of the target is 236 stored on a per-file basis, so that big- and little-endian object 237 files may be used with one another. 238 239_sections_ 240 Each section in the input file contains the name of the section, 241 the section's original address in the object file, size and 242 alignment information, various flags, and pointers into other BFD 243 data structures. 244 245_symbols_ 246 Each symbol contains a pointer to the information for the object 247 file which originally defined it, its name, its value, and various 248 flag bits. When a BFD back end reads in a symbol table, it 249 relocates all symbols to make them relative to the base of the 250 section where they were defined. Doing this ensures that each 251 symbol points to its containing section. Each symbol also has a 252 varying amount of hidden private data for the BFD back end. Since 253 the symbol points to the original file, the private data format 254 for that symbol is accessible. `ld' can operate on a collection 255 of symbols of wildly different formats without problems. 256 257 Normal global and simple local symbols are maintained on output, 258 so an output file (no matter its format) will retain symbols 259 pointing to functions and to global, static, and common variables. 260 Some symbol information is not worth retaining; in `a.out', type 261 information is stored in the symbol table as long symbol names. 262 This information would be useless to most COFF debuggers; the 263 linker has command line switches to allow users to throw it away. 264 265 There is one word of type information within the symbol, so if the 266 format supports symbol type information within symbols (for 267 example, COFF, IEEE, Oasys) and the type is simple enough to fit 268 within one word (nearly everything but aggregates), the 269 information will be preserved. 270 271_relocation level_ 272 Each canonical BFD relocation record contains a pointer to the 273 symbol to relocate to, the offset of the data to relocate, the 274 section the data is in, and a pointer to a relocation type 275 descriptor. Relocation is performed by passing messages through 276 the relocation type descriptor and the symbol pointer. Therefore, 277 relocations can be performed on output data using a relocation 278 method that is only available in one of the input formats. For 279 instance, Oasys provides a byte relocation format. A relocation 280 record requesting this relocation type would point indirectly to a 281 routine to perform this, so the relocation may be performed on a 282 byte being written to a 68k COFF file, even though 68k COFF has no 283 such relocation type. 284 285_line numbers_ 286 Object formats can contain, for debugging purposes, some form of 287 mapping between symbols, source line numbers, and addresses in the 288 output file. These addresses have to be relocated along with the 289 symbol information. Each symbol with an associated list of line 290 number records points to the first record of the list. The head 291 of a line number list consists of a pointer to the symbol, which 292 allows finding out the address of the function whose line number 293 is being described. The rest of the list is made up of pairs: 294 offsets into the section and line numbers. Any format which can 295 simply derive this information can pass it successfully between 296 formats (COFF, IEEE and Oasys). 297 298 299File: bfd.info, Node: BFD front end, Next: BFD back ends, Prev: Overview, Up: Top 300 3012 BFD Front End 302*************** 303 3042.1 `typedef bfd' 305================= 306 307A BFD has type `bfd'; objects of this type are the cornerstone of any 308application using BFD. Using BFD consists of making references though 309the BFD and to data in the BFD. 310 311 Here is the structure that defines the type `bfd'. It contains the 312major data about the file and pointers to the rest of the data. 313 314 315 struct bfd 316 { 317 /* A unique identifier of the BFD */ 318 unsigned int id; 319 320 /* The filename the application opened the BFD with. */ 321 const char *filename; 322 323 /* A pointer to the target jump table. */ 324 const struct bfd_target *xvec; 325 326 /* The IOSTREAM, and corresponding IO vector that provide access 327 to the file backing the BFD. */ 328 void *iostream; 329 const struct bfd_iovec *iovec; 330 331 /* The caching routines use these to maintain a 332 least-recently-used list of BFDs. */ 333 struct bfd *lru_prev, *lru_next; 334 335 /* When a file is closed by the caching routines, BFD retains 336 state information on the file here... */ 337 ufile_ptr where; 338 339 /* File modified time, if mtime_set is TRUE. */ 340 long mtime; 341 342 /* Reserved for an unimplemented file locking extension. */ 343 int ifd; 344 345 /* The format which belongs to the BFD. (object, core, etc.) */ 346 bfd_format format; 347 348 /* The direction with which the BFD was opened. */ 349 enum bfd_direction 350 { 351 no_direction = 0, 352 read_direction = 1, 353 write_direction = 2, 354 both_direction = 3 355 } 356 direction; 357 358 /* Format_specific flags. */ 359 flagword flags; 360 361 /* Values that may appear in the flags field of a BFD. These also 362 appear in the object_flags field of the bfd_target structure, where 363 they indicate the set of flags used by that backend (not all flags 364 are meaningful for all object file formats) (FIXME: at the moment, 365 the object_flags values have mostly just been copied from backend 366 to another, and are not necessarily correct). */ 367 368 #define BFD_NO_FLAGS 0x00 369 370 /* BFD contains relocation entries. */ 371 #define HAS_RELOC 0x01 372 373 /* BFD is directly executable. */ 374 #define EXEC_P 0x02 375 376 /* BFD has line number information (basically used for F_LNNO in a 377 COFF header). */ 378 #define HAS_LINENO 0x04 379 380 /* BFD has debugging information. */ 381 #define HAS_DEBUG 0x08 382 383 /* BFD has symbols. */ 384 #define HAS_SYMS 0x10 385 386 /* BFD has local symbols (basically used for F_LSYMS in a COFF 387 header). */ 388 #define HAS_LOCALS 0x20 389 390 /* BFD is a dynamic object. */ 391 #define DYNAMIC 0x40 392 393 /* Text section is write protected (if D_PAGED is not set, this is 394 like an a.out NMAGIC file) (the linker sets this by default, but 395 clears it for -r or -N). */ 396 #define WP_TEXT 0x80 397 398 /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the 399 linker sets this by default, but clears it for -r or -n or -N). */ 400 #define D_PAGED 0x100 401 402 /* BFD is relaxable (this means that bfd_relax_section may be able to 403 do something) (sometimes bfd_relax_section can do something even if 404 this is not set). */ 405 #define BFD_IS_RELAXABLE 0x200 406 407 /* This may be set before writing out a BFD to request using a 408 traditional format. For example, this is used to request that when 409 writing out an a.out object the symbols not be hashed to eliminate 410 duplicates. */ 411 #define BFD_TRADITIONAL_FORMAT 0x400 412 413 /* This flag indicates that the BFD contents are actually cached 414 in memory. If this is set, iostream points to a bfd_in_memory 415 struct. */ 416 #define BFD_IN_MEMORY 0x800 417 418 /* The sections in this BFD specify a memory page. */ 419 #define HAS_LOAD_PAGE 0x1000 420 421 /* This BFD has been created by the linker and doesn't correspond 422 to any input file. */ 423 #define BFD_LINKER_CREATED 0x2000 424 425 /* Currently my_archive is tested before adding origin to 426 anything. I believe that this can become always an add of 427 origin, with origin set to 0 for non archive files. */ 428 ufile_ptr origin; 429 430 /* The origin in the archive of the proxy entry. This will 431 normally be the same as origin, except for thin archives, 432 when it will contain the current offset of the proxy in the 433 thin archive rather than the offset of the bfd in its actual 434 container. */ 435 ufile_ptr proxy_origin; 436 437 /* A hash table for section names. */ 438 struct bfd_hash_table section_htab; 439 440 /* Pointer to linked list of sections. */ 441 struct bfd_section *sections; 442 443 /* The last section on the section list. */ 444 struct bfd_section *section_last; 445 446 /* The number of sections. */ 447 unsigned int section_count; 448 449 /* Stuff only useful for object files: 450 The start address. */ 451 bfd_vma start_address; 452 453 /* Used for input and output. */ 454 unsigned int symcount; 455 456 /* Symbol table for output BFD (with symcount entries). 457 Also used by the linker to cache input BFD symbols. */ 458 struct bfd_symbol **outsymbols; 459 460 /* Used for slurped dynamic symbol tables. */ 461 unsigned int dynsymcount; 462 463 /* Pointer to structure which contains architecture information. */ 464 const struct bfd_arch_info *arch_info; 465 466 /* Stuff only useful for archives. */ 467 void *arelt_data; 468 struct bfd *my_archive; /* The containing archive BFD. */ 469 struct bfd *archive_next; /* The next BFD in the archive. */ 470 struct bfd *archive_head; /* The first BFD in the archive. */ 471 struct bfd *nested_archives; /* List of nested archive in a flattened 472 thin archive. */ 473 474 /* A chain of BFD structures involved in a link. */ 475 struct bfd *link_next; 476 477 /* A field used by _bfd_generic_link_add_archive_symbols. This will 478 be used only for archive elements. */ 479 int archive_pass; 480 481 /* Used by the back end to hold private data. */ 482 union 483 { 484 struct aout_data_struct *aout_data; 485 struct artdata *aout_ar_data; 486 struct _oasys_data *oasys_obj_data; 487 struct _oasys_ar_data *oasys_ar_data; 488 struct coff_tdata *coff_obj_data; 489 struct pe_tdata *pe_obj_data; 490 struct xcoff_tdata *xcoff_obj_data; 491 struct ecoff_tdata *ecoff_obj_data; 492 struct ieee_data_struct *ieee_data; 493 struct ieee_ar_data_struct *ieee_ar_data; 494 struct srec_data_struct *srec_data; 495 struct ihex_data_struct *ihex_data; 496 struct tekhex_data_struct *tekhex_data; 497 struct elf_obj_tdata *elf_obj_data; 498 struct nlm_obj_tdata *nlm_obj_data; 499 struct bout_data_struct *bout_data; 500 struct mmo_data_struct *mmo_data; 501 struct sun_core_struct *sun_core_data; 502 struct sco5_core_struct *sco5_core_data; 503 struct trad_core_struct *trad_core_data; 504 struct som_data_struct *som_data; 505 struct hpux_core_struct *hpux_core_data; 506 struct hppabsd_core_struct *hppabsd_core_data; 507 struct sgi_core_struct *sgi_core_data; 508 struct lynx_core_struct *lynx_core_data; 509 struct osf_core_struct *osf_core_data; 510 struct cisco_core_struct *cisco_core_data; 511 struct versados_data_struct *versados_data; 512 struct netbsd_core_struct *netbsd_core_data; 513 struct mach_o_data_struct *mach_o_data; 514 struct mach_o_fat_data_struct *mach_o_fat_data; 515 struct bfd_pef_data_struct *pef_data; 516 struct bfd_pef_xlib_data_struct *pef_xlib_data; 517 struct bfd_sym_data_struct *sym_data; 518 void *any; 519 } 520 tdata; 521 522 /* Used by the application to hold private data. */ 523 void *usrdata; 524 525 /* Where all the allocated stuff under this BFD goes. This is a 526 struct objalloc *, but we use void * to avoid requiring the inclusion 527 of objalloc.h. */ 528 void *memory; 529 530 /* Is the file descriptor being cached? That is, can it be closed as 531 needed, and re-opened when accessed later? */ 532 unsigned int cacheable : 1; 533 534 /* Marks whether there was a default target specified when the 535 BFD was opened. This is used to select which matching algorithm 536 to use to choose the back end. */ 537 unsigned int target_defaulted : 1; 538 539 /* ... and here: (``once'' means at least once). */ 540 unsigned int opened_once : 1; 541 542 /* Set if we have a locally maintained mtime value, rather than 543 getting it from the file each time. */ 544 unsigned int mtime_set : 1; 545 546 /* Flag set if symbols from this BFD should not be exported. */ 547 unsigned int no_export : 1; 548 549 /* Remember when output has begun, to stop strange things 550 from happening. */ 551 unsigned int output_has_begun : 1; 552 553 /* Have archive map. */ 554 unsigned int has_armap : 1; 555 556 /* Set if this is a thin archive. */ 557 unsigned int is_thin_archive : 1; 558 }; 559 5602.2 Error reporting 561=================== 562 563Most BFD functions return nonzero on success (check their individual 564documentation for precise semantics). On an error, they call 565`bfd_set_error' to set an error condition that callers can check by 566calling `bfd_get_error'. If that returns `bfd_error_system_call', then 567check `errno'. 568 569 The easiest way to report a BFD error to the user is to use 570`bfd_perror'. 571 5722.2.1 Type `bfd_error_type' 573--------------------------- 574 575The values returned by `bfd_get_error' are defined by the enumerated 576type `bfd_error_type'. 577 578 579 typedef enum bfd_error 580 { 581 bfd_error_no_error = 0, 582 bfd_error_system_call, 583 bfd_error_invalid_target, 584 bfd_error_wrong_format, 585 bfd_error_wrong_object_format, 586 bfd_error_invalid_operation, 587 bfd_error_no_memory, 588 bfd_error_no_symbols, 589 bfd_error_no_armap, 590 bfd_error_no_more_archived_files, 591 bfd_error_malformed_archive, 592 bfd_error_file_not_recognized, 593 bfd_error_file_ambiguously_recognized, 594 bfd_error_no_contents, 595 bfd_error_nonrepresentable_section, 596 bfd_error_no_debug_section, 597 bfd_error_bad_value, 598 bfd_error_file_truncated, 599 bfd_error_file_too_big, 600 bfd_error_on_input, 601 bfd_error_invalid_error_code 602 } 603 bfd_error_type; 604 6052.2.1.1 `bfd_get_error' 606....................... 607 608*Synopsis* 609 bfd_error_type bfd_get_error (void); 610 *Description* 611Return the current BFD error condition. 612 6132.2.1.2 `bfd_set_error' 614....................... 615 616*Synopsis* 617 void bfd_set_error (bfd_error_type error_tag, ...); 618 *Description* 619Set the BFD error condition to be ERROR_TAG. If ERROR_TAG is 620bfd_error_on_input, then this function takes two more parameters, the 621input bfd where the error occurred, and the bfd_error_type error. 622 6232.2.1.3 `bfd_errmsg' 624.................... 625 626*Synopsis* 627 const char *bfd_errmsg (bfd_error_type error_tag); 628 *Description* 629Return a string describing the error ERROR_TAG, or the system error if 630ERROR_TAG is `bfd_error_system_call'. 631 6322.2.1.4 `bfd_perror' 633.................... 634 635*Synopsis* 636 void bfd_perror (const char *message); 637 *Description* 638Print to the standard error stream a string describing the last BFD 639error that occurred, or the last system error if the last BFD error was 640a system call failure. If MESSAGE is non-NULL and non-empty, the error 641string printed is preceded by MESSAGE, a colon, and a space. It is 642followed by a newline. 643 6442.2.2 BFD error handler 645----------------------- 646 647Some BFD functions want to print messages describing the problem. They 648call a BFD error handler function. This function may be overridden by 649the program. 650 651 The BFD error handler acts like printf. 652 653 654 typedef void (*bfd_error_handler_type) (const char *, ...); 655 6562.2.2.1 `bfd_set_error_handler' 657............................... 658 659*Synopsis* 660 bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type); 661 *Description* 662Set the BFD error handler function. Returns the previous function. 663 6642.2.2.2 `bfd_set_error_program_name' 665.................................... 666 667*Synopsis* 668 void bfd_set_error_program_name (const char *); 669 *Description* 670Set the program name to use when printing a BFD error. This is printed 671before the error message followed by a colon and space. The string 672must not be changed after it is passed to this function. 673 6742.2.2.3 `bfd_get_error_handler' 675............................... 676 677*Synopsis* 678 bfd_error_handler_type bfd_get_error_handler (void); 679 *Description* 680Return the BFD error handler function. 681 6822.3 Miscellaneous 683================= 684 6852.3.1 Miscellaneous functions 686----------------------------- 687 6882.3.1.1 `bfd_get_reloc_upper_bound' 689................................... 690 691*Synopsis* 692 long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect); 693 *Description* 694Return the number of bytes required to store the relocation information 695associated with section SECT attached to bfd ABFD. If an error occurs, 696return -1. 697 6982.3.1.2 `bfd_canonicalize_reloc' 699................................ 700 701*Synopsis* 702 long bfd_canonicalize_reloc 703 (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); 704 *Description* 705Call the back end associated with the open BFD ABFD and translate the 706external form of the relocation information attached to SEC into the 707internal canonical form. Place the table into memory at LOC, which has 708been preallocated, usually by a call to `bfd_get_reloc_upper_bound'. 709Returns the number of relocs, or -1 on error. 710 711 The SYMS table is also needed for horrible internal magic reasons. 712 7132.3.1.3 `bfd_set_reloc' 714....................... 715 716*Synopsis* 717 void bfd_set_reloc 718 (bfd *abfd, asection *sec, arelent **rel, unsigned int count); 719 *Description* 720Set the relocation pointer and count within section SEC to the values 721REL and COUNT. The argument ABFD is ignored. 722 7232.3.1.4 `bfd_set_file_flags' 724............................ 725 726*Synopsis* 727 bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags); 728 *Description* 729Set the flag word in the BFD ABFD to the value FLAGS. 730 731 Possible errors are: 732 * `bfd_error_wrong_format' - The target bfd was not of object format. 733 734 * `bfd_error_invalid_operation' - The target bfd was open for 735 reading. 736 737 * `bfd_error_invalid_operation' - The flag word contained a bit 738 which was not applicable to the type of file. E.g., an attempt 739 was made to set the `D_PAGED' bit on a BFD format which does not 740 support demand paging. 741 7422.3.1.5 `bfd_get_arch_size' 743........................... 744 745*Synopsis* 746 int bfd_get_arch_size (bfd *abfd); 747 *Description* 748Returns the architecture address size, in bits, as determined by the 749object file's format. For ELF, this information is included in the 750header. 751 752 *Returns* 753Returns the arch size in bits if known, `-1' otherwise. 754 7552.3.1.6 `bfd_get_sign_extend_vma' 756................................. 757 758*Synopsis* 759 int bfd_get_sign_extend_vma (bfd *abfd); 760 *Description* 761Indicates if the target architecture "naturally" sign extends an 762address. Some architectures implicitly sign extend address values when 763they are converted to types larger than the size of an address. For 764instance, bfd_get_start_address() will return an address sign extended 765to fill a bfd_vma when this is the case. 766 767 *Returns* 768Returns `1' if the target architecture is known to sign extend 769addresses, `0' if the target architecture is known to not sign extend 770addresses, and `-1' otherwise. 771 7722.3.1.7 `bfd_set_start_address' 773............................... 774 775*Synopsis* 776 bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma); 777 *Description* 778Make VMA the entry point of output BFD ABFD. 779 780 *Returns* 781Returns `TRUE' on success, `FALSE' otherwise. 782 7832.3.1.8 `bfd_get_gp_size' 784......................... 785 786*Synopsis* 787 unsigned int bfd_get_gp_size (bfd *abfd); 788 *Description* 789Return the maximum size of objects to be optimized using the GP 790register under MIPS ECOFF. This is typically set by the `-G' argument 791to the compiler, assembler or linker. 792 7932.3.1.9 `bfd_set_gp_size' 794......................... 795 796*Synopsis* 797 void bfd_set_gp_size (bfd *abfd, unsigned int i); 798 *Description* 799Set the maximum size of objects to be optimized using the GP register 800under ECOFF or MIPS ELF. This is typically set by the `-G' argument to 801the compiler, assembler or linker. 802 8032.3.1.10 `bfd_scan_vma' 804....................... 805 806*Synopsis* 807 bfd_vma bfd_scan_vma (const char *string, const char **end, int base); 808 *Description* 809Convert, like `strtoul', a numerical expression STRING into a `bfd_vma' 810integer, and return that integer. (Though without as many bells and 811whistles as `strtoul'.) The expression is assumed to be unsigned 812(i.e., positive). If given a BASE, it is used as the base for 813conversion. A base of 0 causes the function to interpret the string in 814hex if a leading "0x" or "0X" is found, otherwise in octal if a leading 815zero is found, otherwise in decimal. 816 817 If the value would overflow, the maximum `bfd_vma' value is returned. 818 8192.3.1.11 `bfd_copy_private_header_data' 820....................................... 821 822*Synopsis* 823 bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd); 824 *Description* 825Copy private BFD header information from the BFD IBFD to the the BFD 826OBFD. This copies information that may require sections to exist, but 827does not require symbol tables. Return `true' on success, `false' on 828error. Possible error returns are: 829 830 * `bfd_error_no_memory' - Not enough memory exists to create private 831 data for OBFD. 832 833 #define bfd_copy_private_header_data(ibfd, obfd) \ 834 BFD_SEND (obfd, _bfd_copy_private_header_data, \ 835 (ibfd, obfd)) 836 8372.3.1.12 `bfd_copy_private_bfd_data' 838.................................... 839 840*Synopsis* 841 bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd); 842 *Description* 843Copy private BFD information from the BFD IBFD to the the BFD OBFD. 844Return `TRUE' on success, `FALSE' on error. Possible error returns are: 845 846 * `bfd_error_no_memory' - Not enough memory exists to create private 847 data for OBFD. 848 849 #define bfd_copy_private_bfd_data(ibfd, obfd) \ 850 BFD_SEND (obfd, _bfd_copy_private_bfd_data, \ 851 (ibfd, obfd)) 852 8532.3.1.13 `bfd_merge_private_bfd_data' 854..................................... 855 856*Synopsis* 857 bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd); 858 *Description* 859Merge private BFD information from the BFD IBFD to the the output file 860BFD OBFD when linking. Return `TRUE' on success, `FALSE' on error. 861Possible error returns are: 862 863 * `bfd_error_no_memory' - Not enough memory exists to create private 864 data for OBFD. 865 866 #define bfd_merge_private_bfd_data(ibfd, obfd) \ 867 BFD_SEND (obfd, _bfd_merge_private_bfd_data, \ 868 (ibfd, obfd)) 869 8702.3.1.14 `bfd_set_private_flags' 871................................ 872 873*Synopsis* 874 bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags); 875 *Description* 876Set private BFD flag information in the BFD ABFD. Return `TRUE' on 877success, `FALSE' on error. Possible error returns are: 878 879 * `bfd_error_no_memory' - Not enough memory exists to create private 880 data for OBFD. 881 882 #define bfd_set_private_flags(abfd, flags) \ 883 BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags)) 884 8852.3.1.15 `Other functions' 886.......................... 887 888*Description* 889The following functions exist but have not yet been documented. 890 #define bfd_sizeof_headers(abfd, info) \ 891 BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info)) 892 893 #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \ 894 BFD_SEND (abfd, _bfd_find_nearest_line, \ 895 (abfd, sec, syms, off, file, func, line)) 896 897 #define bfd_find_line(abfd, syms, sym, file, line) \ 898 BFD_SEND (abfd, _bfd_find_line, \ 899 (abfd, syms, sym, file, line)) 900 901 #define bfd_find_inliner_info(abfd, file, func, line) \ 902 BFD_SEND (abfd, _bfd_find_inliner_info, \ 903 (abfd, file, func, line)) 904 905 #define bfd_debug_info_start(abfd) \ 906 BFD_SEND (abfd, _bfd_debug_info_start, (abfd)) 907 908 #define bfd_debug_info_end(abfd) \ 909 BFD_SEND (abfd, _bfd_debug_info_end, (abfd)) 910 911 #define bfd_debug_info_accumulate(abfd, section) \ 912 BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section)) 913 914 #define bfd_stat_arch_elt(abfd, stat) \ 915 BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat)) 916 917 #define bfd_update_armap_timestamp(abfd) \ 918 BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd)) 919 920 #define bfd_set_arch_mach(abfd, arch, mach)\ 921 BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach)) 922 923 #define bfd_relax_section(abfd, section, link_info, again) \ 924 BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again)) 925 926 #define bfd_gc_sections(abfd, link_info) \ 927 BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info)) 928 929 #define bfd_merge_sections(abfd, link_info) \ 930 BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info)) 931 932 #define bfd_is_group_section(abfd, sec) \ 933 BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec)) 934 935 #define bfd_discard_group(abfd, sec) \ 936 BFD_SEND (abfd, _bfd_discard_group, (abfd, sec)) 937 938 #define bfd_link_hash_table_create(abfd) \ 939 BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd)) 940 941 #define bfd_link_hash_table_free(abfd, hash) \ 942 BFD_SEND (abfd, _bfd_link_hash_table_free, (hash)) 943 944 #define bfd_link_add_symbols(abfd, info) \ 945 BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info)) 946 947 #define bfd_link_just_syms(abfd, sec, info) \ 948 BFD_SEND (abfd, _bfd_link_just_syms, (sec, info)) 949 950 #define bfd_final_link(abfd, info) \ 951 BFD_SEND (abfd, _bfd_final_link, (abfd, info)) 952 953 #define bfd_free_cached_info(abfd) \ 954 BFD_SEND (abfd, _bfd_free_cached_info, (abfd)) 955 956 #define bfd_get_dynamic_symtab_upper_bound(abfd) \ 957 BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd)) 958 959 #define bfd_print_private_bfd_data(abfd, file)\ 960 BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file)) 961 962 #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \ 963 BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols)) 964 965 #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \ 966 BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \ 967 dyncount, dynsyms, ret)) 968 969 #define bfd_get_dynamic_reloc_upper_bound(abfd) \ 970 BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd)) 971 972 #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \ 973 BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms)) 974 975 extern bfd_byte *bfd_get_relocated_section_contents 976 (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, 977 bfd_boolean, asymbol **); 978 9792.3.1.16 `bfd_alt_mach_code' 980............................ 981 982*Synopsis* 983 bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative); 984 *Description* 985When more than one machine code number is available for the same 986machine type, this function can be used to switch between the preferred 987one (alternative == 0) and any others. Currently, only ELF supports 988this feature, with up to two alternate machine codes. 989 990 struct bfd_preserve 991 { 992 void *marker; 993 void *tdata; 994 flagword flags; 995 const struct bfd_arch_info *arch_info; 996 struct bfd_section *sections; 997 struct bfd_section *section_last; 998 unsigned int section_count; 999 struct bfd_hash_table section_htab; 1000 }; 1001 10022.3.1.17 `bfd_preserve_save' 1003............................ 1004 1005*Synopsis* 1006 bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *); 1007 *Description* 1008When testing an object for compatibility with a particular target 1009back-end, the back-end object_p function needs to set up certain fields 1010in the bfd on successfully recognizing the object. This typically 1011happens in a piecemeal fashion, with failures possible at many points. 1012On failure, the bfd is supposed to be restored to its initial state, 1013which is virtually impossible. However, restoring a subset of the bfd 1014state works in practice. This function stores the subset and 1015reinitializes the bfd. 1016 10172.3.1.18 `bfd_preserve_restore' 1018............................... 1019 1020*Synopsis* 1021 void bfd_preserve_restore (bfd *, struct bfd_preserve *); 1022 *Description* 1023This function restores bfd state saved by bfd_preserve_save. If MARKER 1024is non-NULL in struct bfd_preserve then that block and all subsequently 1025bfd_alloc'd memory is freed. 1026 10272.3.1.19 `bfd_preserve_finish' 1028.............................. 1029 1030*Synopsis* 1031 void bfd_preserve_finish (bfd *, struct bfd_preserve *); 1032 *Description* 1033This function should be called when the bfd state saved by 1034bfd_preserve_save is no longer needed. ie. when the back-end object_p 1035function returns with success. 1036 10372.3.1.20 `bfd_emul_get_maxpagesize' 1038................................... 1039 1040*Synopsis* 1041 bfd_vma bfd_emul_get_maxpagesize (const char *); 1042 *Description* 1043Returns the maximum page size, in bytes, as determined by emulation. 1044 1045 *Returns* 1046Returns the maximum page size in bytes for ELF, abort otherwise. 1047 10482.3.1.21 `bfd_emul_set_maxpagesize' 1049................................... 1050 1051*Synopsis* 1052 void bfd_emul_set_maxpagesize (const char *, bfd_vma); 1053 *Description* 1054For ELF, set the maximum page size for the emulation. It is a no-op 1055for other formats. 1056 10572.3.1.22 `bfd_emul_get_commonpagesize' 1058...................................... 1059 1060*Synopsis* 1061 bfd_vma bfd_emul_get_commonpagesize (const char *); 1062 *Description* 1063Returns the common page size, in bytes, as determined by emulation. 1064 1065 *Returns* 1066Returns the common page size in bytes for ELF, abort otherwise. 1067 10682.3.1.23 `bfd_emul_set_commonpagesize' 1069...................................... 1070 1071*Synopsis* 1072 void bfd_emul_set_commonpagesize (const char *, bfd_vma); 1073 *Description* 1074For ELF, set the common page size for the emulation. It is a no-op for 1075other formats. 1076 10772.3.1.24 `bfd_demangle' 1078....................... 1079 1080*Synopsis* 1081 char *bfd_demangle (bfd *, const char *, int); 1082 *Description* 1083Wrapper around cplus_demangle. Strips leading underscores and other 1084such chars that would otherwise confuse the demangler. If passed a g++ 1085v3 ABI mangled name, returns a buffer allocated with malloc holding the 1086demangled name. Returns NULL otherwise and on memory alloc failure. 1087 10882.3.1.25 `struct bfd_iovec' 1089........................... 1090 1091*Description* 1092The `struct bfd_iovec' contains the internal file I/O class. Each 1093`BFD' has an instance of this class and all file I/O is routed through 1094it (it is assumed that the instance implements all methods listed 1095below). 1096 struct bfd_iovec 1097 { 1098 /* To avoid problems with macros, a "b" rather than "f" 1099 prefix is prepended to each method name. */ 1100 /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching 1101 bytes starting at PTR. Return the number of bytes actually 1102 transfered (a read past end-of-file returns less than NBYTES), 1103 or -1 (setting `bfd_error') if an error occurs. */ 1104 file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes); 1105 file_ptr (*bwrite) (struct bfd *abfd, const void *ptr, 1106 file_ptr nbytes); 1107 /* Return the current IOSTREAM file offset, or -1 (setting `bfd_error' 1108 if an error occurs. */ 1109 file_ptr (*btell) (struct bfd *abfd); 1110 /* For the following, on successful completion a value of 0 is returned. 1111 Otherwise, a value of -1 is returned (and `bfd_error' is set). */ 1112 int (*bseek) (struct bfd *abfd, file_ptr offset, int whence); 1113 int (*bclose) (struct bfd *abfd); 1114 int (*bflush) (struct bfd *abfd); 1115 int (*bstat) (struct bfd *abfd, struct stat *sb); 1116 }; 1117 11182.3.1.26 `bfd_get_mtime' 1119........................ 1120 1121*Synopsis* 1122 long bfd_get_mtime (bfd *abfd); 1123 *Description* 1124Return the file modification time (as read from the file system, or 1125from the archive header for archive members). 1126 11272.3.1.27 `bfd_get_size' 1128....................... 1129 1130*Synopsis* 1131 file_ptr bfd_get_size (bfd *abfd); 1132 *Description* 1133Return the file size (as read from file system) for the file associated 1134with BFD ABFD. 1135 1136 The initial motivation for, and use of, this routine is not so we 1137can get the exact size of the object the BFD applies to, since that 1138might not be generally possible (archive members for example). It 1139would be ideal if someone could eventually modify it so that such 1140results were guaranteed. 1141 1142 Instead, we want to ask questions like "is this NNN byte sized 1143object I'm about to try read from file offset YYY reasonable?" As as 1144example of where we might do this, some object formats use string 1145tables for which the first `sizeof (long)' bytes of the table contain 1146the size of the table itself, including the size bytes. If an 1147application tries to read what it thinks is one of these string tables, 1148without some way to validate the size, and for some reason the size is 1149wrong (byte swapping error, wrong location for the string table, etc.), 1150the only clue is likely to be a read error when it tries to read the 1151table, or a "virtual memory exhausted" error when it tries to allocate 115215 bazillon bytes of space for the 15 bazillon byte table it is about 1153to read. This function at least allows us to answer the question, "is 1154the size reasonable?". 1155 1156* Menu: 1157 1158* Memory Usage:: 1159* Initialization:: 1160* Sections:: 1161* Symbols:: 1162* Archives:: 1163* Formats:: 1164* Relocations:: 1165* Core Files:: 1166* Targets:: 1167* Architectures:: 1168* Opening and Closing:: 1169* Internal:: 1170* File Caching:: 1171* Linker Functions:: 1172* Hash Tables:: 1173 1174 1175File: bfd.info, Node: Memory Usage, Next: Initialization, Prev: BFD front end, Up: BFD front end 1176 11772.4 Memory Usage 1178================ 1179 1180BFD keeps all of its internal structures in obstacks. There is one 1181obstack per open BFD file, into which the current state is stored. When 1182a BFD is closed, the obstack is deleted, and so everything which has 1183been allocated by BFD for the closing file is thrown away. 1184 1185 BFD does not free anything created by an application, but pointers 1186into `bfd' structures become invalid on a `bfd_close'; for example, 1187after a `bfd_close' the vector passed to `bfd_canonicalize_symtab' is 1188still around, since it has been allocated by the application, but the 1189data that it pointed to are lost. 1190 1191 The general rule is to not close a BFD until all operations dependent 1192upon data from the BFD have been completed, or all the data from within 1193the file has been copied. To help with the management of memory, there 1194is a function (`bfd_alloc_size') which returns the number of bytes in 1195obstacks associated with the supplied BFD. This could be used to select 1196the greediest open BFD, close it to reclaim the memory, perform some 1197operation and reopen the BFD again, to get a fresh copy of the data 1198structures. 1199 1200 1201File: bfd.info, Node: Initialization, Next: Sections, Prev: Memory Usage, Up: BFD front end 1202 12032.5 Initialization 1204================== 1205 12062.5.1 Initialization functions 1207------------------------------ 1208 1209These are the functions that handle initializing a BFD. 1210 12112.5.1.1 `bfd_init' 1212.................. 1213 1214*Synopsis* 1215 void bfd_init (void); 1216 *Description* 1217This routine must be called before any other BFD function to initialize 1218magical internal data structures. 1219 1220 1221File: bfd.info, Node: Sections, Next: Symbols, Prev: Initialization, Up: BFD front end 1222 12232.6 Sections 1224============ 1225 1226The raw data contained within a BFD is maintained through the section 1227abstraction. A single BFD may have any number of sections. It keeps 1228hold of them by pointing to the first; each one points to the next in 1229the list. 1230 1231 Sections are supported in BFD in `section.c'. 1232 1233* Menu: 1234 1235* Section Input:: 1236* Section Output:: 1237* typedef asection:: 1238* section prototypes:: 1239 1240 1241File: bfd.info, Node: Section Input, Next: Section Output, Prev: Sections, Up: Sections 1242 12432.6.1 Section input 1244------------------- 1245 1246When a BFD is opened for reading, the section structures are created 1247and attached to the BFD. 1248 1249 Each section has a name which describes the section in the outside 1250world--for example, `a.out' would contain at least three sections, 1251called `.text', `.data' and `.bss'. 1252 1253 Names need not be unique; for example a COFF file may have several 1254sections named `.data'. 1255 1256 Sometimes a BFD will contain more than the "natural" number of 1257sections. A back end may attach other sections containing constructor 1258data, or an application may add a section (using `bfd_make_section') to 1259the sections attached to an already open BFD. For example, the linker 1260creates an extra section `COMMON' for each input file's BFD to hold 1261information about common storage. 1262 1263 The raw data is not necessarily read in when the section descriptor 1264is created. Some targets may leave the data in place until a 1265`bfd_get_section_contents' call is made. Other back ends may read in 1266all the data at once. For example, an S-record file has to be read 1267once to determine the size of the data. An IEEE-695 file doesn't 1268contain raw data in sections, but data and relocation expressions 1269intermixed, so the data area has to be parsed to get out the data and 1270relocations. 1271 1272 1273File: bfd.info, Node: Section Output, Next: typedef asection, Prev: Section Input, Up: Sections 1274 12752.6.2 Section output 1276-------------------- 1277 1278To write a new object style BFD, the various sections to be written 1279have to be created. They are attached to the BFD in the same way as 1280input sections; data is written to the sections using 1281`bfd_set_section_contents'. 1282 1283 Any program that creates or combines sections (e.g., the assembler 1284and linker) must use the `asection' fields `output_section' and 1285`output_offset' to indicate the file sections to which each section 1286must be written. (If the section is being created from scratch, 1287`output_section' should probably point to the section itself and 1288`output_offset' should probably be zero.) 1289 1290 The data to be written comes from input sections attached (via 1291`output_section' pointers) to the output sections. The output section 1292structure can be considered a filter for the input section: the output 1293section determines the vma of the output data and the name, but the 1294input section determines the offset into the output section of the data 1295to be written. 1296 1297 E.g., to create a section "O", starting at 0x100, 0x123 long, 1298containing two subsections, "A" at offset 0x0 (i.e., at vma 0x100) and 1299"B" at offset 0x20 (i.e., at vma 0x120) the `asection' structures would 1300look like: 1301 1302 section name "A" 1303 output_offset 0x00 1304 size 0x20 1305 output_section -----------> section name "O" 1306 | vma 0x100 1307 section name "B" | size 0x123 1308 output_offset 0x20 | 1309 size 0x103 | 1310 output_section --------| 1311 13122.6.3 Link orders 1313----------------- 1314 1315The data within a section is stored in a "link_order". These are much 1316like the fixups in `gas'. The link_order abstraction allows a section 1317to grow and shrink within itself. 1318 1319 A link_order knows how big it is, and which is the next link_order 1320and where the raw data for it is; it also points to a list of 1321relocations which apply to it. 1322 1323 The link_order is used by the linker to perform relaxing on final 1324code. The compiler creates code which is as big as necessary to make 1325it work without relaxing, and the user can select whether to relax. 1326Sometimes relaxing takes a lot of time. The linker runs around the 1327relocations to see if any are attached to data which can be shrunk, if 1328so it does it on a link_order by link_order basis. 1329 1330 1331File: bfd.info, Node: typedef asection, Next: section prototypes, Prev: Section Output, Up: Sections 1332 13332.6.4 typedef asection 1334---------------------- 1335 1336Here is the section structure: 1337 1338 1339 typedef struct bfd_section 1340 { 1341 /* The name of the section; the name isn't a copy, the pointer is 1342 the same as that passed to bfd_make_section. */ 1343 const char *name; 1344 1345 /* A unique sequence number. */ 1346 int id; 1347 1348 /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */ 1349 int index; 1350 1351 /* The next section in the list belonging to the BFD, or NULL. */ 1352 struct bfd_section *next; 1353 1354 /* The previous section in the list belonging to the BFD, or NULL. */ 1355 struct bfd_section *prev; 1356 1357 /* The field flags contains attributes of the section. Some 1358 flags are read in from the object file, and some are 1359 synthesized from other information. */ 1360 flagword flags; 1361 1362 #define SEC_NO_FLAGS 0x000 1363 1364 /* Tells the OS to allocate space for this section when loading. 1365 This is clear for a section containing debug information only. */ 1366 #define SEC_ALLOC 0x001 1367 1368 /* Tells the OS to load the section from the file when loading. 1369 This is clear for a .bss section. */ 1370 #define SEC_LOAD 0x002 1371 1372 /* The section contains data still to be relocated, so there is 1373 some relocation information too. */ 1374 #define SEC_RELOC 0x004 1375 1376 /* A signal to the OS that the section contains read only data. */ 1377 #define SEC_READONLY 0x008 1378 1379 /* The section contains code only. */ 1380 #define SEC_CODE 0x010 1381 1382 /* The section contains data only. */ 1383 #define SEC_DATA 0x020 1384 1385 /* The section will reside in ROM. */ 1386 #define SEC_ROM 0x040 1387 1388 /* The section contains constructor information. This section 1389 type is used by the linker to create lists of constructors and 1390 destructors used by `g++'. When a back end sees a symbol 1391 which should be used in a constructor list, it creates a new 1392 section for the type of name (e.g., `__CTOR_LIST__'), attaches 1393 the symbol to it, and builds a relocation. To build the lists 1394 of constructors, all the linker has to do is catenate all the 1395 sections called `__CTOR_LIST__' and relocate the data 1396 contained within - exactly the operations it would peform on 1397 standard data. */ 1398 #define SEC_CONSTRUCTOR 0x080 1399 1400 /* The section has contents - a data section could be 1401 `SEC_ALLOC' | `SEC_HAS_CONTENTS'; a debug section could be 1402 `SEC_HAS_CONTENTS' */ 1403 #define SEC_HAS_CONTENTS 0x100 1404 1405 /* An instruction to the linker to not output the section 1406 even if it has information which would normally be written. */ 1407 #define SEC_NEVER_LOAD 0x200 1408 1409 /* The section contains thread local data. */ 1410 #define SEC_THREAD_LOCAL 0x400 1411 1412 /* The section has GOT references. This flag is only for the 1413 linker, and is currently only used by the elf32-hppa back end. 1414 It will be set if global offset table references were detected 1415 in this section, which indicate to the linker that the section 1416 contains PIC code, and must be handled specially when doing a 1417 static link. */ 1418 #define SEC_HAS_GOT_REF 0x800 1419 1420 /* The section contains common symbols (symbols may be defined 1421 multiple times, the value of a symbol is the amount of 1422 space it requires, and the largest symbol value is the one 1423 used). Most targets have exactly one of these (which we 1424 translate to bfd_com_section_ptr), but ECOFF has two. */ 1425 #define SEC_IS_COMMON 0x1000 1426 1427 /* The section contains only debugging information. For 1428 example, this is set for ELF .debug and .stab sections. 1429 strip tests this flag to see if a section can be 1430 discarded. */ 1431 #define SEC_DEBUGGING 0x2000 1432 1433 /* The contents of this section are held in memory pointed to 1434 by the contents field. This is checked by bfd_get_section_contents, 1435 and the data is retrieved from memory if appropriate. */ 1436 #define SEC_IN_MEMORY 0x4000 1437 1438 /* The contents of this section are to be excluded by the 1439 linker for executable and shared objects unless those 1440 objects are to be further relocated. */ 1441 #define SEC_EXCLUDE 0x8000 1442 1443 /* The contents of this section are to be sorted based on the sum of 1444 the symbol and addend values specified by the associated relocation 1445 entries. Entries without associated relocation entries will be 1446 appended to the end of the section in an unspecified order. */ 1447 #define SEC_SORT_ENTRIES 0x10000 1448 1449 /* When linking, duplicate sections of the same name should be 1450 discarded, rather than being combined into a single section as 1451 is usually done. This is similar to how common symbols are 1452 handled. See SEC_LINK_DUPLICATES below. */ 1453 #define SEC_LINK_ONCE 0x20000 1454 1455 /* If SEC_LINK_ONCE is set, this bitfield describes how the linker 1456 should handle duplicate sections. */ 1457 #define SEC_LINK_DUPLICATES 0xc0000 1458 1459 /* This value for SEC_LINK_DUPLICATES means that duplicate 1460 sections with the same name should simply be discarded. */ 1461 #define SEC_LINK_DUPLICATES_DISCARD 0x0 1462 1463 /* This value for SEC_LINK_DUPLICATES means that the linker 1464 should warn if there are any duplicate sections, although 1465 it should still only link one copy. */ 1466 #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000 1467 1468 /* This value for SEC_LINK_DUPLICATES means that the linker 1469 should warn if any duplicate sections are a different size. */ 1470 #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000 1471 1472 /* This value for SEC_LINK_DUPLICATES means that the linker 1473 should warn if any duplicate sections contain different 1474 contents. */ 1475 #define SEC_LINK_DUPLICATES_SAME_CONTENTS \ 1476 (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE) 1477 1478 /* This section was created by the linker as part of dynamic 1479 relocation or other arcane processing. It is skipped when 1480 going through the first-pass output, trusting that someone 1481 else up the line will take care of it later. */ 1482 #define SEC_LINKER_CREATED 0x100000 1483 1484 /* This section should not be subject to garbage collection. 1485 Also set to inform the linker that this section should not be 1486 listed in the link map as discarded. */ 1487 #define SEC_KEEP 0x200000 1488 1489 /* This section contains "short" data, and should be placed 1490 "near" the GP. */ 1491 #define SEC_SMALL_DATA 0x400000 1492 1493 /* Attempt to merge identical entities in the section. 1494 Entity size is given in the entsize field. */ 1495 #define SEC_MERGE 0x800000 1496 1497 /* If given with SEC_MERGE, entities to merge are zero terminated 1498 strings where entsize specifies character size instead of fixed 1499 size entries. */ 1500 #define SEC_STRINGS 0x1000000 1501 1502 /* This section contains data about section groups. */ 1503 #define SEC_GROUP 0x2000000 1504 1505 /* The section is a COFF shared library section. This flag is 1506 only for the linker. If this type of section appears in 1507 the input file, the linker must copy it to the output file 1508 without changing the vma or size. FIXME: Although this 1509 was originally intended to be general, it really is COFF 1510 specific (and the flag was renamed to indicate this). It 1511 might be cleaner to have some more general mechanism to 1512 allow the back end to control what the linker does with 1513 sections. */ 1514 #define SEC_COFF_SHARED_LIBRARY 0x4000000 1515 1516 /* This section contains data which may be shared with other 1517 executables or shared objects. This is for COFF only. */ 1518 #define SEC_COFF_SHARED 0x8000000 1519 1520 /* When a section with this flag is being linked, then if the size of 1521 the input section is less than a page, it should not cross a page 1522 boundary. If the size of the input section is one page or more, 1523 it should be aligned on a page boundary. This is for TI 1524 TMS320C54X only. */ 1525 #define SEC_TIC54X_BLOCK 0x10000000 1526 1527 /* Conditionally link this section; do not link if there are no 1528 references found to any symbol in the section. This is for TI 1529 TMS320C54X only. */ 1530 #define SEC_TIC54X_CLINK 0x20000000 1531 1532 /* End of section flags. */ 1533 1534 /* Some internal packed boolean fields. */ 1535 1536 /* See the vma field. */ 1537 unsigned int user_set_vma : 1; 1538 1539 /* A mark flag used by some of the linker backends. */ 1540 unsigned int linker_mark : 1; 1541 1542 /* Another mark flag used by some of the linker backends. Set for 1543 output sections that have an input section. */ 1544 unsigned int linker_has_input : 1; 1545 1546 /* Mark flag used by some linker backends for garbage collection. */ 1547 unsigned int gc_mark : 1; 1548 1549 /* The following flags are used by the ELF linker. */ 1550 1551 /* Mark sections which have been allocated to segments. */ 1552 unsigned int segment_mark : 1; 1553 1554 /* Type of sec_info information. */ 1555 unsigned int sec_info_type:3; 1556 #define ELF_INFO_TYPE_NONE 0 1557 #define ELF_INFO_TYPE_STABS 1 1558 #define ELF_INFO_TYPE_MERGE 2 1559 #define ELF_INFO_TYPE_EH_FRAME 3 1560 #define ELF_INFO_TYPE_JUST_SYMS 4 1561 1562 /* Nonzero if this section uses RELA relocations, rather than REL. */ 1563 unsigned int use_rela_p:1; 1564 1565 /* Bits used by various backends. The generic code doesn't touch 1566 these fields. */ 1567 1568 /* Nonzero if this section has TLS related relocations. */ 1569 unsigned int has_tls_reloc:1; 1570 1571 /* Nonzero if this section has a gp reloc. */ 1572 unsigned int has_gp_reloc:1; 1573 1574 /* Nonzero if this section needs the relax finalize pass. */ 1575 unsigned int need_finalize_relax:1; 1576 1577 /* Whether relocations have been processed. */ 1578 unsigned int reloc_done : 1; 1579 1580 /* End of internal packed boolean fields. */ 1581 1582 /* The virtual memory address of the section - where it will be 1583 at run time. The symbols are relocated against this. The 1584 user_set_vma flag is maintained by bfd; if it's not set, the 1585 backend can assign addresses (for example, in `a.out', where 1586 the default address for `.data' is dependent on the specific 1587 target and various flags). */ 1588 bfd_vma vma; 1589 1590 /* The load address of the section - where it would be in a 1591 rom image; really only used for writing section header 1592 information. */ 1593 bfd_vma lma; 1594 1595 /* The size of the section in octets, as it will be output. 1596 Contains a value even if the section has no contents (e.g., the 1597 size of `.bss'). */ 1598 bfd_size_type size; 1599 1600 /* For input sections, the original size on disk of the section, in 1601 octets. This field should be set for any section whose size is 1602 changed by linker relaxation. It is required for sections where 1603 the linker relaxation scheme doesn't cache altered section and 1604 reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing 1605 targets), and thus the original size needs to be kept to read the 1606 section multiple times. For output sections, rawsize holds the 1607 section size calculated on a previous linker relaxation pass. */ 1608 bfd_size_type rawsize; 1609 1610 /* If this section is going to be output, then this value is the 1611 offset in *bytes* into the output section of the first byte in the 1612 input section (byte ==> smallest addressable unit on the 1613 target). In most cases, if this was going to start at the 1614 100th octet (8-bit quantity) in the output section, this value 1615 would be 100. However, if the target byte size is 16 bits 1616 (bfd_octets_per_byte is "2"), this value would be 50. */ 1617 bfd_vma output_offset; 1618 1619 /* The output section through which to map on output. */ 1620 struct bfd_section *output_section; 1621 1622 /* The alignment requirement of the section, as an exponent of 2 - 1623 e.g., 3 aligns to 2^3 (or 8). */ 1624 unsigned int alignment_power; 1625 1626 /* If an input section, a pointer to a vector of relocation 1627 records for the data in this section. */ 1628 struct reloc_cache_entry *relocation; 1629 1630 /* If an output section, a pointer to a vector of pointers to 1631 relocation records for the data in this section. */ 1632 struct reloc_cache_entry **orelocation; 1633 1634 /* The number of relocation records in one of the above. */ 1635 unsigned reloc_count; 1636 1637 /* Information below is back end specific - and not always used 1638 or updated. */ 1639 1640 /* File position of section data. */ 1641 file_ptr filepos; 1642 1643 /* File position of relocation info. */ 1644 file_ptr rel_filepos; 1645 1646 /* File position of line data. */ 1647 file_ptr line_filepos; 1648 1649 /* Pointer to data for applications. */ 1650 void *userdata; 1651 1652 /* If the SEC_IN_MEMORY flag is set, this points to the actual 1653 contents. */ 1654 unsigned char *contents; 1655 1656 /* Attached line number information. */ 1657 alent *lineno; 1658 1659 /* Number of line number records. */ 1660 unsigned int lineno_count; 1661 1662 /* Entity size for merging purposes. */ 1663 unsigned int entsize; 1664 1665 /* Points to the kept section if this section is a link-once section, 1666 and is discarded. */ 1667 struct bfd_section *kept_section; 1668 1669 /* When a section is being output, this value changes as more 1670 linenumbers are written out. */ 1671 file_ptr moving_line_filepos; 1672 1673 /* What the section number is in the target world. */ 1674 int target_index; 1675 1676 void *used_by_bfd; 1677 1678 /* If this is a constructor section then here is a list of the 1679 relocations created to relocate items within it. */ 1680 struct relent_chain *constructor_chain; 1681 1682 /* The BFD which owns the section. */ 1683 bfd *owner; 1684 1685 /* A symbol which points at this section only. */ 1686 struct bfd_symbol *symbol; 1687 struct bfd_symbol **symbol_ptr_ptr; 1688 1689 /* Early in the link process, map_head and map_tail are used to build 1690 a list of input sections attached to an output section. Later, 1691 output sections use these fields for a list of bfd_link_order 1692 structs. */ 1693 union { 1694 struct bfd_link_order *link_order; 1695 struct bfd_section *s; 1696 } map_head, map_tail; 1697 } asection; 1698 1699 /* These sections are global, and are managed by BFD. The application 1700 and target back end are not permitted to change the values in 1701 these sections. New code should use the section_ptr macros rather 1702 than referring directly to the const sections. The const sections 1703 may eventually vanish. */ 1704 #define BFD_ABS_SECTION_NAME "*ABS*" 1705 #define BFD_UND_SECTION_NAME "*UND*" 1706 #define BFD_COM_SECTION_NAME "*COM*" 1707 #define BFD_IND_SECTION_NAME "*IND*" 1708 1709 /* The absolute section. */ 1710 extern asection bfd_abs_section; 1711 #define bfd_abs_section_ptr ((asection *) &bfd_abs_section) 1712 #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr) 1713 /* Pointer to the undefined section. */ 1714 extern asection bfd_und_section; 1715 #define bfd_und_section_ptr ((asection *) &bfd_und_section) 1716 #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr) 1717 /* Pointer to the common section. */ 1718 extern asection bfd_com_section; 1719 #define bfd_com_section_ptr ((asection *) &bfd_com_section) 1720 /* Pointer to the indirect section. */ 1721 extern asection bfd_ind_section; 1722 #define bfd_ind_section_ptr ((asection *) &bfd_ind_section) 1723 #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr) 1724 1725 #define bfd_is_const_section(SEC) \ 1726 ( ((SEC) == bfd_abs_section_ptr) \ 1727 || ((SEC) == bfd_und_section_ptr) \ 1728 || ((SEC) == bfd_com_section_ptr) \ 1729 || ((SEC) == bfd_ind_section_ptr)) 1730 1731 /* Macros to handle insertion and deletion of a bfd's sections. These 1732 only handle the list pointers, ie. do not adjust section_count, 1733 target_index etc. */ 1734 #define bfd_section_list_remove(ABFD, S) \ 1735 do \ 1736 { \ 1737 asection *_s = S; \ 1738 asection *_next = _s->next; \ 1739 asection *_prev = _s->prev; \ 1740 if (_prev) \ 1741 _prev->next = _next; \ 1742 else \ 1743 (ABFD)->sections = _next; \ 1744 if (_next) \ 1745 _next->prev = _prev; \ 1746 else \ 1747 (ABFD)->section_last = _prev; \ 1748 } \ 1749 while (0) 1750 #define bfd_section_list_append(ABFD, S) \ 1751 do \ 1752 { \ 1753 asection *_s = S; \ 1754 bfd *_abfd = ABFD; \ 1755 _s->next = NULL; \ 1756 if (_abfd->section_last) \ 1757 { \ 1758 _s->prev = _abfd->section_last; \ 1759 _abfd->section_last->next = _s; \ 1760 } \ 1761 else \ 1762 { \ 1763 _s->prev = NULL; \ 1764 _abfd->sections = _s; \ 1765 } \ 1766 _abfd->section_last = _s; \ 1767 } \ 1768 while (0) 1769 #define bfd_section_list_prepend(ABFD, S) \ 1770 do \ 1771 { \ 1772 asection *_s = S; \ 1773 bfd *_abfd = ABFD; \ 1774 _s->prev = NULL; \ 1775 if (_abfd->sections) \ 1776 { \ 1777 _s->next = _abfd->sections; \ 1778 _abfd->sections->prev = _s; \ 1779 } \ 1780 else \ 1781 { \ 1782 _s->next = NULL; \ 1783 _abfd->section_last = _s; \ 1784 } \ 1785 _abfd->sections = _s; \ 1786 } \ 1787 while (0) 1788 #define bfd_section_list_insert_after(ABFD, A, S) \ 1789 do \ 1790 { \ 1791 asection *_a = A; \ 1792 asection *_s = S; \ 1793 asection *_next = _a->next; \ 1794 _s->next = _next; \ 1795 _s->prev = _a; \ 1796 _a->next = _s; \ 1797 if (_next) \ 1798 _next->prev = _s; \ 1799 else \ 1800 (ABFD)->section_last = _s; \ 1801 } \ 1802 while (0) 1803 #define bfd_section_list_insert_before(ABFD, B, S) \ 1804 do \ 1805 { \ 1806 asection *_b = B; \ 1807 asection *_s = S; \ 1808 asection *_prev = _b->prev; \ 1809 _s->prev = _prev; \ 1810 _s->next = _b; \ 1811 _b->prev = _s; \ 1812 if (_prev) \ 1813 _prev->next = _s; \ 1814 else \ 1815 (ABFD)->sections = _s; \ 1816 } \ 1817 while (0) 1818 #define bfd_section_removed_from_list(ABFD, S) \ 1819 ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S)) 1820 1821 #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \ 1822 /* name, id, index, next, prev, flags, user_set_vma, */ \ 1823 { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ 1824 \ 1825 /* linker_mark, linker_has_input, gc_mark, */ \ 1826 0, 0, 1, \ 1827 \ 1828 /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \ 1829 0, 0, 0, 0, \ 1830 \ 1831 /* has_gp_reloc, need_finalize_relax, reloc_done, */ \ 1832 0, 0, 0, \ 1833 \ 1834 /* vma, lma, size, rawsize */ \ 1835 0, 0, 0, 0, \ 1836 \ 1837 /* output_offset, output_section, alignment_power, */ \ 1838 0, (struct bfd_section *) &SEC, 0, \ 1839 \ 1840 /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \ 1841 NULL, NULL, 0, 0, 0, \ 1842 \ 1843 /* line_filepos, userdata, contents, lineno, lineno_count, */ \ 1844 0, NULL, NULL, NULL, 0, \ 1845 \ 1846 /* entsize, kept_section, moving_line_filepos, */ \ 1847 0, NULL, 0, \ 1848 \ 1849 /* target_index, used_by_bfd, constructor_chain, owner, */ \ 1850 0, NULL, NULL, NULL, \ 1851 \ 1852 /* symbol, symbol_ptr_ptr, */ \ 1853 (struct bfd_symbol *) SYM, &SEC.symbol, \ 1854 \ 1855 /* map_head, map_tail */ \ 1856 { NULL }, { NULL } \ 1857 } 1858 1859 1860File: bfd.info, Node: section prototypes, Prev: typedef asection, Up: Sections 1861 18622.6.5 Section prototypes 1863------------------------ 1864 1865These are the functions exported by the section handling part of BFD. 1866 18672.6.5.1 `bfd_section_list_clear' 1868................................ 1869 1870*Synopsis* 1871 void bfd_section_list_clear (bfd *); 1872 *Description* 1873Clears the section list, and also resets the section count and hash 1874table entries. 1875 18762.6.5.2 `bfd_get_section_by_name' 1877................................. 1878 1879*Synopsis* 1880 asection *bfd_get_section_by_name (bfd *abfd, const char *name); 1881 *Description* 1882Run through ABFD and return the one of the `asection's whose name 1883matches NAME, otherwise `NULL'. *Note Sections::, for more information. 1884 1885 This should only be used in special cases; the normal way to process 1886all sections of a given name is to use `bfd_map_over_sections' and 1887`strcmp' on the name (or better yet, base it on the section flags or 1888something else) for each section. 1889 18902.6.5.3 `bfd_get_section_by_name_if' 1891.................................... 1892 1893*Synopsis* 1894 asection *bfd_get_section_by_name_if 1895 (bfd *abfd, 1896 const char *name, 1897 bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj), 1898 void *obj); 1899 *Description* 1900Call the provided function FUNC for each section attached to the BFD 1901ABFD whose name matches NAME, passing OBJ as an argument. The function 1902will be called as if by 1903 1904 func (abfd, the_section, obj); 1905 1906 It returns the first section for which FUNC returns true, otherwise 1907`NULL'. 1908 19092.6.5.4 `bfd_get_unique_section_name' 1910..................................... 1911 1912*Synopsis* 1913 char *bfd_get_unique_section_name 1914 (bfd *abfd, const char *templat, int *count); 1915 *Description* 1916Invent a section name that is unique in ABFD by tacking a dot and a 1917digit suffix onto the original TEMPLAT. If COUNT is non-NULL, then it 1918specifies the first number tried as a suffix to generate a unique name. 1919The value pointed to by COUNT will be incremented in this case. 1920 19212.6.5.5 `bfd_make_section_old_way' 1922.................................. 1923 1924*Synopsis* 1925 asection *bfd_make_section_old_way (bfd *abfd, const char *name); 1926 *Description* 1927Create a new empty section called NAME and attach it to the end of the 1928chain of sections for the BFD ABFD. An attempt to create a section with 1929a name which is already in use returns its pointer without changing the 1930section chain. 1931 1932 It has the funny name since this is the way it used to be before it 1933was rewritten.... 1934 1935 Possible errors are: 1936 * `bfd_error_invalid_operation' - If output has already started for 1937 this BFD. 1938 1939 * `bfd_error_no_memory' - If memory allocation fails. 1940 19412.6.5.6 `bfd_make_section_anyway_with_flags' 1942............................................ 1943 1944*Synopsis* 1945 asection *bfd_make_section_anyway_with_flags 1946 (bfd *abfd, const char *name, flagword flags); 1947 *Description* 1948Create a new empty section called NAME and attach it to the end of the 1949chain of sections for ABFD. Create a new section even if there is 1950already a section with that name. Also set the attributes of the new 1951section to the value FLAGS. 1952 1953 Return `NULL' and set `bfd_error' on error; possible errors are: 1954 * `bfd_error_invalid_operation' - If output has already started for 1955 ABFD. 1956 1957 * `bfd_error_no_memory' - If memory allocation fails. 1958 19592.6.5.7 `bfd_make_section_anyway' 1960................................. 1961 1962*Synopsis* 1963 asection *bfd_make_section_anyway (bfd *abfd, const char *name); 1964 *Description* 1965Create a new empty section called NAME and attach it to the end of the 1966chain of sections for ABFD. Create a new section even if there is 1967already a section with that name. 1968 1969 Return `NULL' and set `bfd_error' on error; possible errors are: 1970 * `bfd_error_invalid_operation' - If output has already started for 1971 ABFD. 1972 1973 * `bfd_error_no_memory' - If memory allocation fails. 1974 19752.6.5.8 `bfd_make_section_with_flags' 1976..................................... 1977 1978*Synopsis* 1979 asection *bfd_make_section_with_flags 1980 (bfd *, const char *name, flagword flags); 1981 *Description* 1982Like `bfd_make_section_anyway', but return `NULL' (without calling 1983bfd_set_error ()) without changing the section chain if there is 1984already a section named NAME. Also set the attributes of the new 1985section to the value FLAGS. If there is an error, return `NULL' and set 1986`bfd_error'. 1987 19882.6.5.9 `bfd_make_section' 1989.......................... 1990 1991*Synopsis* 1992 asection *bfd_make_section (bfd *, const char *name); 1993 *Description* 1994Like `bfd_make_section_anyway', but return `NULL' (without calling 1995bfd_set_error ()) without changing the section chain if there is 1996already a section named NAME. If there is an error, return `NULL' and 1997set `bfd_error'. 1998 19992.6.5.10 `bfd_set_section_flags' 2000................................ 2001 2002*Synopsis* 2003 bfd_boolean bfd_set_section_flags 2004 (bfd *abfd, asection *sec, flagword flags); 2005 *Description* 2006Set the attributes of the section SEC in the BFD ABFD to the value 2007FLAGS. Return `TRUE' on success, `FALSE' on error. Possible error 2008returns are: 2009 2010 * `bfd_error_invalid_operation' - The section cannot have one or 2011 more of the attributes requested. For example, a .bss section in 2012 `a.out' may not have the `SEC_HAS_CONTENTS' field set. 2013 20142.6.5.11 `bfd_map_over_sections' 2015................................ 2016 2017*Synopsis* 2018 void bfd_map_over_sections 2019 (bfd *abfd, 2020 void (*func) (bfd *abfd, asection *sect, void *obj), 2021 void *obj); 2022 *Description* 2023Call the provided function FUNC for each section attached to the BFD 2024ABFD, passing OBJ as an argument. The function will be called as if by 2025 2026 func (abfd, the_section, obj); 2027 2028 This is the preferred method for iterating over sections; an 2029alternative would be to use a loop: 2030 2031 section *p; 2032 for (p = abfd->sections; p != NULL; p = p->next) 2033 func (abfd, p, ...) 2034 20352.6.5.12 `bfd_sections_find_if' 2036............................... 2037 2038*Synopsis* 2039 asection *bfd_sections_find_if 2040 (bfd *abfd, 2041 bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj), 2042 void *obj); 2043 *Description* 2044Call the provided function OPERATION for each section attached to the 2045BFD ABFD, passing OBJ as an argument. The function will be called as if 2046by 2047 2048 operation (abfd, the_section, obj); 2049 2050 It returns the first section for which OPERATION returns true. 2051 20522.6.5.13 `bfd_set_section_size' 2053............................... 2054 2055*Synopsis* 2056 bfd_boolean bfd_set_section_size 2057 (bfd *abfd, asection *sec, bfd_size_type val); 2058 *Description* 2059Set SEC to the size VAL. If the operation is ok, then `TRUE' is 2060returned, else `FALSE'. 2061 2062 Possible error returns: 2063 * `bfd_error_invalid_operation' - Writing has started to the BFD, so 2064 setting the size is invalid. 2065 20662.6.5.14 `bfd_set_section_contents' 2067................................... 2068 2069*Synopsis* 2070 bfd_boolean bfd_set_section_contents 2071 (bfd *abfd, asection *section, const void *data, 2072 file_ptr offset, bfd_size_type count); 2073 *Description* 2074Sets the contents of the section SECTION in BFD ABFD to the data 2075starting in memory at DATA. The data is written to the output section 2076starting at offset OFFSET for COUNT octets. 2077 2078 Normally `TRUE' is returned, else `FALSE'. Possible error returns 2079are: 2080 * `bfd_error_no_contents' - The output section does not have the 2081 `SEC_HAS_CONTENTS' attribute, so nothing can be written to it. 2082 2083 * and some more too 2084 This routine is front end to the back end function 2085`_bfd_set_section_contents'. 2086 20872.6.5.15 `bfd_get_section_contents' 2088................................... 2089 2090*Synopsis* 2091 bfd_boolean bfd_get_section_contents 2092 (bfd *abfd, asection *section, void *location, file_ptr offset, 2093 bfd_size_type count); 2094 *Description* 2095Read data from SECTION in BFD ABFD into memory starting at LOCATION. 2096The data is read at an offset of OFFSET from the start of the input 2097section, and is read for COUNT bytes. 2098 2099 If the contents of a constructor with the `SEC_CONSTRUCTOR' flag set 2100are requested or if the section does not have the `SEC_HAS_CONTENTS' 2101flag set, then the LOCATION is filled with zeroes. If no errors occur, 2102`TRUE' is returned, else `FALSE'. 2103 21042.6.5.16 `bfd_malloc_and_get_section' 2105..................................... 2106 2107*Synopsis* 2108 bfd_boolean bfd_malloc_and_get_section 2109 (bfd *abfd, asection *section, bfd_byte **buf); 2110 *Description* 2111Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by 2112this function. 2113 21142.6.5.17 `bfd_copy_private_section_data' 2115........................................ 2116 2117*Synopsis* 2118 bfd_boolean bfd_copy_private_section_data 2119 (bfd *ibfd, asection *isec, bfd *obfd, asection *osec); 2120 *Description* 2121Copy private section information from ISEC in the BFD IBFD to the 2122section OSEC in the BFD OBFD. Return `TRUE' on success, `FALSE' on 2123error. Possible error returns are: 2124 2125 * `bfd_error_no_memory' - Not enough memory exists to create private 2126 data for OSEC. 2127 2128 #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \ 2129 BFD_SEND (obfd, _bfd_copy_private_section_data, \ 2130 (ibfd, isection, obfd, osection)) 2131 21322.6.5.18 `bfd_generic_is_group_section' 2133....................................... 2134 2135*Synopsis* 2136 bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec); 2137 *Description* 2138Returns TRUE if SEC is a member of a group. 2139 21402.6.5.19 `bfd_generic_discard_group' 2141.................................... 2142 2143*Synopsis* 2144 bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group); 2145 *Description* 2146Remove all members of GROUP from the output. 2147 2148 2149File: bfd.info, Node: Symbols, Next: Archives, Prev: Sections, Up: BFD front end 2150 21512.7 Symbols 2152=========== 2153 2154BFD tries to maintain as much symbol information as it can when it 2155moves information from file to file. BFD passes information to 2156applications though the `asymbol' structure. When the application 2157requests the symbol table, BFD reads the table in the native form and 2158translates parts of it into the internal format. To maintain more than 2159the information passed to applications, some targets keep some 2160information "behind the scenes" in a structure only the particular back 2161end knows about. For example, the coff back end keeps the original 2162symbol table structure as well as the canonical structure when a BFD is 2163read in. On output, the coff back end can reconstruct the output symbol 2164table so that no information is lost, even information unique to coff 2165which BFD doesn't know or understand. If a coff symbol table were read, 2166but were written through an a.out back end, all the coff specific 2167information would be lost. The symbol table of a BFD is not necessarily 2168read in until a canonicalize request is made. Then the BFD back end 2169fills in a table provided by the application with pointers to the 2170canonical information. To output symbols, the application provides BFD 2171with a table of pointers to pointers to `asymbol's. This allows 2172applications like the linker to output a symbol as it was read, since 2173the "behind the scenes" information will be still available. 2174 2175* Menu: 2176 2177* Reading Symbols:: 2178* Writing Symbols:: 2179* Mini Symbols:: 2180* typedef asymbol:: 2181* symbol handling functions:: 2182 2183 2184File: bfd.info, Node: Reading Symbols, Next: Writing Symbols, Prev: Symbols, Up: Symbols 2185 21862.7.1 Reading symbols 2187--------------------- 2188 2189There are two stages to reading a symbol table from a BFD: allocating 2190storage, and the actual reading process. This is an excerpt from an 2191application which reads the symbol table: 2192 2193 long storage_needed; 2194 asymbol **symbol_table; 2195 long number_of_symbols; 2196 long i; 2197 2198 storage_needed = bfd_get_symtab_upper_bound (abfd); 2199 2200 if (storage_needed < 0) 2201 FAIL 2202 2203 if (storage_needed == 0) 2204 return; 2205 2206 symbol_table = xmalloc (storage_needed); 2207 ... 2208 number_of_symbols = 2209 bfd_canonicalize_symtab (abfd, symbol_table); 2210 2211 if (number_of_symbols < 0) 2212 FAIL 2213 2214 for (i = 0; i < number_of_symbols; i++) 2215 process_symbol (symbol_table[i]); 2216 2217 All storage for the symbols themselves is in an objalloc connected 2218to the BFD; it is freed when the BFD is closed. 2219 2220 2221File: bfd.info, Node: Writing Symbols, Next: Mini Symbols, Prev: Reading Symbols, Up: Symbols 2222 22232.7.2 Writing symbols 2224--------------------- 2225 2226Writing of a symbol table is automatic when a BFD open for writing is 2227closed. The application attaches a vector of pointers to pointers to 2228symbols to the BFD being written, and fills in the symbol count. The 2229close and cleanup code reads through the table provided and performs 2230all the necessary operations. The BFD output code must always be 2231provided with an "owned" symbol: one which has come from another BFD, 2232or one which has been created using `bfd_make_empty_symbol'. Here is an 2233example showing the creation of a symbol table with only one element: 2234 2235 #include "bfd.h" 2236 int main (void) 2237 { 2238 bfd *abfd; 2239 asymbol *ptrs[2]; 2240 asymbol *new; 2241 2242 abfd = bfd_openw ("foo","a.out-sunos-big"); 2243 bfd_set_format (abfd, bfd_object); 2244 new = bfd_make_empty_symbol (abfd); 2245 new->name = "dummy_symbol"; 2246 new->section = bfd_make_section_old_way (abfd, ".text"); 2247 new->flags = BSF_GLOBAL; 2248 new->value = 0x12345; 2249 2250 ptrs[0] = new; 2251 ptrs[1] = 0; 2252 2253 bfd_set_symtab (abfd, ptrs, 1); 2254 bfd_close (abfd); 2255 return 0; 2256 } 2257 2258 ./makesym 2259 nm foo 2260 00012345 A dummy_symbol 2261 2262 Many formats cannot represent arbitrary symbol information; for 2263instance, the `a.out' object format does not allow an arbitrary number 2264of sections. A symbol pointing to a section which is not one of 2265`.text', `.data' or `.bss' cannot be described. 2266 2267 2268File: bfd.info, Node: Mini Symbols, Next: typedef asymbol, Prev: Writing Symbols, Up: Symbols 2269 22702.7.3 Mini Symbols 2271------------------ 2272 2273Mini symbols provide read-only access to the symbol table. They use 2274less memory space, but require more time to access. They can be useful 2275for tools like nm or objdump, which may have to handle symbol tables of 2276extremely large executables. 2277 2278 The `bfd_read_minisymbols' function will read the symbols into 2279memory in an internal form. It will return a `void *' pointer to a 2280block of memory, a symbol count, and the size of each symbol. The 2281pointer is allocated using `malloc', and should be freed by the caller 2282when it is no longer needed. 2283 2284 The function `bfd_minisymbol_to_symbol' will take a pointer to a 2285minisymbol, and a pointer to a structure returned by 2286`bfd_make_empty_symbol', and return a `asymbol' structure. The return 2287value may or may not be the same as the value from 2288`bfd_make_empty_symbol' which was passed in. 2289 2290 2291File: bfd.info, Node: typedef asymbol, Next: symbol handling functions, Prev: Mini Symbols, Up: Symbols 2292 22932.7.4 typedef asymbol 2294--------------------- 2295 2296An `asymbol' has the form: 2297 2298 2299 typedef struct bfd_symbol 2300 { 2301 /* A pointer to the BFD which owns the symbol. This information 2302 is necessary so that a back end can work out what additional 2303 information (invisible to the application writer) is carried 2304 with the symbol. 2305 2306 This field is *almost* redundant, since you can use section->owner 2307 instead, except that some symbols point to the global sections 2308 bfd_{abs,com,und}_section. This could be fixed by making 2309 these globals be per-bfd (or per-target-flavor). FIXME. */ 2310 struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */ 2311 2312 /* The text of the symbol. The name is left alone, and not copied; the 2313 application may not alter it. */ 2314 const char *name; 2315 2316 /* The value of the symbol. This really should be a union of a 2317 numeric value with a pointer, since some flags indicate that 2318 a pointer to another symbol is stored here. */ 2319 symvalue value; 2320 2321 /* Attributes of a symbol. */ 2322 #define BSF_NO_FLAGS 0x00 2323 2324 /* The symbol has local scope; `static' in `C'. The value 2325 is the offset into the section of the data. */ 2326 #define BSF_LOCAL 0x01 2327 2328 /* The symbol has global scope; initialized data in `C'. The 2329 value is the offset into the section of the data. */ 2330 #define BSF_GLOBAL 0x02 2331 2332 /* The symbol has global scope and is exported. The value is 2333 the offset into the section of the data. */ 2334 #define BSF_EXPORT BSF_GLOBAL /* No real difference. */ 2335 2336 /* A normal C symbol would be one of: 2337 `BSF_LOCAL', `BSF_FORT_COMM', `BSF_UNDEFINED' or 2338 `BSF_GLOBAL'. */ 2339 2340 /* The symbol is a debugging record. The value has an arbitrary 2341 meaning, unless BSF_DEBUGGING_RELOC is also set. */ 2342 #define BSF_DEBUGGING 0x08 2343 2344 /* The symbol denotes a function entry point. Used in ELF, 2345 perhaps others someday. */ 2346 #define BSF_FUNCTION 0x10 2347 2348 /* Used by the linker. */ 2349 #define BSF_KEEP 0x20 2350 #define BSF_KEEP_G 0x40 2351 2352 /* A weak global symbol, overridable without warnings by 2353 a regular global symbol of the same name. */ 2354 #define BSF_WEAK 0x80 2355 2356 /* This symbol was created to point to a section, e.g. ELF's 2357 STT_SECTION symbols. */ 2358 #define BSF_SECTION_SYM 0x100 2359 2360 /* The symbol used to be a common symbol, but now it is 2361 allocated. */ 2362 #define BSF_OLD_COMMON 0x200 2363 2364 /* The default value for common data. */ 2365 #define BFD_FORT_COMM_DEFAULT_VALUE 0 2366 2367 /* In some files the type of a symbol sometimes alters its 2368 location in an output file - ie in coff a `ISFCN' symbol 2369 which is also `C_EXT' symbol appears where it was 2370 declared and not at the end of a section. This bit is set 2371 by the target BFD part to convey this information. */ 2372 #define BSF_NOT_AT_END 0x400 2373 2374 /* Signal that the symbol is the label of constructor section. */ 2375 #define BSF_CONSTRUCTOR 0x800 2376 2377 /* Signal that the symbol is a warning symbol. The name is a 2378 warning. The name of the next symbol is the one to warn about; 2379 if a reference is made to a symbol with the same name as the next 2380 symbol, a warning is issued by the linker. */ 2381 #define BSF_WARNING 0x1000 2382 2383 /* Signal that the symbol is indirect. This symbol is an indirect 2384 pointer to the symbol with the same name as the next symbol. */ 2385 #define BSF_INDIRECT 0x2000 2386 2387 /* BSF_FILE marks symbols that contain a file name. This is used 2388 for ELF STT_FILE symbols. */ 2389 #define BSF_FILE 0x4000 2390 2391 /* Symbol is from dynamic linking information. */ 2392 #define BSF_DYNAMIC 0x8000 2393 2394 /* The symbol denotes a data object. Used in ELF, and perhaps 2395 others someday. */ 2396 #define BSF_OBJECT 0x10000 2397 2398 /* This symbol is a debugging symbol. The value is the offset 2399 into the section of the data. BSF_DEBUGGING should be set 2400 as well. */ 2401 #define BSF_DEBUGGING_RELOC 0x20000 2402 2403 /* This symbol is thread local. Used in ELF. */ 2404 #define BSF_THREAD_LOCAL 0x40000 2405 2406 /* This symbol represents a complex relocation expression, 2407 with the expression tree serialized in the symbol name. */ 2408 #define BSF_RELC 0x80000 2409 2410 /* This symbol represents a signed complex relocation expression, 2411 with the expression tree serialized in the symbol name. */ 2412 #define BSF_SRELC 0x100000 2413 2414 /* This symbol was created by bfd_get_synthetic_symtab. */ 2415 #define BSF_SYNTHETIC 0x200000 2416 2417 flagword flags; 2418 2419 /* A pointer to the section to which this symbol is 2420 relative. This will always be non NULL, there are special 2421 sections for undefined and absolute symbols. */ 2422 struct bfd_section *section; 2423 2424 /* Back end special data. */ 2425 union 2426 { 2427 void *p; 2428 bfd_vma i; 2429 } 2430 udata; 2431 } 2432 asymbol; 2433 2434 2435File: bfd.info, Node: symbol handling functions, Prev: typedef asymbol, Up: Symbols 2436 24372.7.5 Symbol handling functions 2438------------------------------- 2439 24402.7.5.1 `bfd_get_symtab_upper_bound' 2441.................................... 2442 2443*Description* 2444Return the number of bytes required to store a vector of pointers to 2445`asymbols' for all the symbols in the BFD ABFD, including a terminal 2446NULL pointer. If there are no symbols in the BFD, then return 0. If an 2447error occurs, return -1. 2448 #define bfd_get_symtab_upper_bound(abfd) \ 2449 BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd)) 2450 24512.7.5.2 `bfd_is_local_label' 2452............................ 2453 2454*Synopsis* 2455 bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym); 2456 *Description* 2457Return TRUE if the given symbol SYM in the BFD ABFD is a compiler 2458generated local label, else return FALSE. 2459 24602.7.5.3 `bfd_is_local_label_name' 2461................................. 2462 2463*Synopsis* 2464 bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name); 2465 *Description* 2466Return TRUE if a symbol with the name NAME in the BFD ABFD is a 2467compiler generated local label, else return FALSE. This just checks 2468whether the name has the form of a local label. 2469 #define bfd_is_local_label_name(abfd, name) \ 2470 BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name)) 2471 24722.7.5.4 `bfd_is_target_special_symbol' 2473...................................... 2474 2475*Synopsis* 2476 bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym); 2477 *Description* 2478Return TRUE iff a symbol SYM in the BFD ABFD is something special to 2479the particular target represented by the BFD. Such symbols should 2480normally not be mentioned to the user. 2481 #define bfd_is_target_special_symbol(abfd, sym) \ 2482 BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym)) 2483 24842.7.5.5 `bfd_canonicalize_symtab' 2485................................. 2486 2487*Description* 2488Read the symbols from the BFD ABFD, and fills in the vector LOCATION 2489with pointers to the symbols and a trailing NULL. Return the actual 2490number of symbol pointers, not including the NULL. 2491 #define bfd_canonicalize_symtab(abfd, location) \ 2492 BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location)) 2493 24942.7.5.6 `bfd_set_symtab' 2495........................ 2496 2497*Synopsis* 2498 bfd_boolean bfd_set_symtab 2499 (bfd *abfd, asymbol **location, unsigned int count); 2500 *Description* 2501Arrange that when the output BFD ABFD is closed, the table LOCATION of 2502COUNT pointers to symbols will be written. 2503 25042.7.5.7 `bfd_print_symbol_vandf' 2505................................ 2506 2507*Synopsis* 2508 void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol); 2509 *Description* 2510Print the value and flags of the SYMBOL supplied to the stream FILE. 2511 25122.7.5.8 `bfd_make_empty_symbol' 2513............................... 2514 2515*Description* 2516Create a new `asymbol' structure for the BFD ABFD and return a pointer 2517to it. 2518 2519 This routine is necessary because each back end has private 2520information surrounding the `asymbol'. Building your own `asymbol' and 2521pointing to it will not create the private information, and will cause 2522problems later on. 2523 #define bfd_make_empty_symbol(abfd) \ 2524 BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd)) 2525 25262.7.5.9 `_bfd_generic_make_empty_symbol' 2527........................................ 2528 2529*Synopsis* 2530 asymbol *_bfd_generic_make_empty_symbol (bfd *); 2531 *Description* 2532Create a new `asymbol' structure for the BFD ABFD and return a pointer 2533to it. Used by core file routines, binary back-end and anywhere else 2534where no private info is needed. 2535 25362.7.5.10 `bfd_make_debug_symbol' 2537................................ 2538 2539*Description* 2540Create a new `asymbol' structure for the BFD ABFD, to be used as a 2541debugging symbol. Further details of its use have yet to be worked out. 2542 #define bfd_make_debug_symbol(abfd,ptr,size) \ 2543 BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size)) 2544 25452.7.5.11 `bfd_decode_symclass' 2546.............................. 2547 2548*Description* 2549Return a character corresponding to the symbol class of SYMBOL, or '?' 2550for an unknown class. 2551 2552 *Synopsis* 2553 int bfd_decode_symclass (asymbol *symbol); 2554 25552.7.5.12 `bfd_is_undefined_symclass' 2556.................................... 2557 2558*Description* 2559Returns non-zero if the class symbol returned by bfd_decode_symclass 2560represents an undefined symbol. Returns zero otherwise. 2561 2562 *Synopsis* 2563 bfd_boolean bfd_is_undefined_symclass (int symclass); 2564 25652.7.5.13 `bfd_symbol_info' 2566.......................... 2567 2568*Description* 2569Fill in the basic info about symbol that nm needs. Additional info may 2570be added by the back-ends after calling this function. 2571 2572 *Synopsis* 2573 void bfd_symbol_info (asymbol *symbol, symbol_info *ret); 2574 25752.7.5.14 `bfd_copy_private_symbol_data' 2576....................................... 2577 2578*Synopsis* 2579 bfd_boolean bfd_copy_private_symbol_data 2580 (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym); 2581 *Description* 2582Copy private symbol information from ISYM in the BFD IBFD to the symbol 2583OSYM in the BFD OBFD. Return `TRUE' on success, `FALSE' on error. 2584Possible error returns are: 2585 2586 * `bfd_error_no_memory' - Not enough memory exists to create private 2587 data for OSEC. 2588 2589 #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \ 2590 BFD_SEND (obfd, _bfd_copy_private_symbol_data, \ 2591 (ibfd, isymbol, obfd, osymbol)) 2592 2593 2594File: bfd.info, Node: Archives, Next: Formats, Prev: Symbols, Up: BFD front end 2595 25962.8 Archives 2597============ 2598 2599*Description* 2600An archive (or library) is just another BFD. It has a symbol table, 2601although there's not much a user program will do with it. 2602 2603 The big difference between an archive BFD and an ordinary BFD is 2604that the archive doesn't have sections. Instead it has a chain of BFDs 2605that are considered its contents. These BFDs can be manipulated like 2606any other. The BFDs contained in an archive opened for reading will 2607all be opened for reading. You may put either input or output BFDs 2608into an archive opened for output; they will be handled correctly when 2609the archive is closed. 2610 2611 Use `bfd_openr_next_archived_file' to step through the contents of 2612an archive opened for input. You don't have to read the entire archive 2613if you don't want to! Read it until you find what you want. 2614 2615 Archive contents of output BFDs are chained through the `next' 2616pointer in a BFD. The first one is findable through the `archive_head' 2617slot of the archive. Set it with `bfd_set_archive_head' (q.v.). A 2618given BFD may be in only one open output archive at a time. 2619 2620 As expected, the BFD archive code is more general than the archive 2621code of any given environment. BFD archives may contain files of 2622different formats (e.g., a.out and coff) and even different 2623architectures. You may even place archives recursively into archives! 2624 2625 This can cause unexpected confusion, since some archive formats are 2626more expressive than others. For instance, Intel COFF archives can 2627preserve long filenames; SunOS a.out archives cannot. If you move a 2628file from the first to the second format and back again, the filename 2629may be truncated. Likewise, different a.out environments have different 2630conventions as to how they truncate filenames, whether they preserve 2631directory names in filenames, etc. When interoperating with native 2632tools, be sure your files are homogeneous. 2633 2634 Beware: most of these formats do not react well to the presence of 2635spaces in filenames. We do the best we can, but can't always handle 2636this case due to restrictions in the format of archives. Many Unix 2637utilities are braindead in regards to spaces and such in filenames 2638anyway, so this shouldn't be much of a restriction. 2639 2640 Archives are supported in BFD in `archive.c'. 2641 26422.8.1 Archive functions 2643----------------------- 2644 26452.8.1.1 `bfd_get_next_mapent' 2646............................. 2647 2648*Synopsis* 2649 symindex bfd_get_next_mapent 2650 (bfd *abfd, symindex previous, carsym **sym); 2651 *Description* 2652Step through archive ABFD's symbol table (if it has one). Successively 2653update SYM with the next symbol's information, returning that symbol's 2654(internal) index into the symbol table. 2655 2656 Supply `BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first 2657one; returns `BFD_NO_MORE_SYMBOLS' when you've already got the last one. 2658 2659 A `carsym' is a canonical archive symbol. The only user-visible 2660element is its name, a null-terminated string. 2661 26622.8.1.2 `bfd_set_archive_head' 2663.............................. 2664 2665*Synopsis* 2666 bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head); 2667 *Description* 2668Set the head of the chain of BFDs contained in the archive OUTPUT to 2669NEW_HEAD. 2670 26712.8.1.3 `bfd_openr_next_archived_file' 2672...................................... 2673 2674*Synopsis* 2675 bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous); 2676 *Description* 2677Provided a BFD, ARCHIVE, containing an archive and NULL, open an input 2678BFD on the first contained element and returns that. Subsequent calls 2679should pass the archive and the previous return value to return a 2680created BFD to the next contained element. NULL is returned when there 2681are no more. 2682 2683 2684File: bfd.info, Node: Formats, Next: Relocations, Prev: Archives, Up: BFD front end 2685 26862.9 File formats 2687================ 2688 2689A format is a BFD concept of high level file contents type. The formats 2690supported by BFD are: 2691 2692 * `bfd_object' 2693 The BFD may contain data, symbols, relocations and debug info. 2694 2695 * `bfd_archive' 2696 The BFD contains other BFDs and an optional index. 2697 2698 * `bfd_core' 2699 The BFD contains the result of an executable core dump. 2700 27012.9.1 File format functions 2702--------------------------- 2703 27042.9.1.1 `bfd_check_format' 2705.......................... 2706 2707*Synopsis* 2708 bfd_boolean bfd_check_format (bfd *abfd, bfd_format format); 2709 *Description* 2710Verify if the file attached to the BFD ABFD is compatible with the 2711format FORMAT (i.e., one of `bfd_object', `bfd_archive' or `bfd_core'). 2712 2713 If the BFD has been set to a specific target before the call, only 2714the named target and format combination is checked. If the target has 2715not been set, or has been set to `default', then all the known target 2716backends is interrogated to determine a match. If the default target 2717matches, it is used. If not, exactly one target must recognize the 2718file, or an error results. 2719 2720 The function returns `TRUE' on success, otherwise `FALSE' with one 2721of the following error codes: 2722 2723 * `bfd_error_invalid_operation' - if `format' is not one of 2724 `bfd_object', `bfd_archive' or `bfd_core'. 2725 2726 * `bfd_error_system_call' - if an error occured during a read - even 2727 some file mismatches can cause bfd_error_system_calls. 2728 2729 * `file_not_recognised' - none of the backends recognised the file 2730 format. 2731 2732 * `bfd_error_file_ambiguously_recognized' - more than one backend 2733 recognised the file format. 2734 27352.9.1.2 `bfd_check_format_matches' 2736.................................. 2737 2738*Synopsis* 2739 bfd_boolean bfd_check_format_matches 2740 (bfd *abfd, bfd_format format, char ***matching); 2741 *Description* 2742Like `bfd_check_format', except when it returns FALSE with `bfd_errno' 2743set to `bfd_error_file_ambiguously_recognized'. In that case, if 2744MATCHING is not NULL, it will be filled in with a NULL-terminated list 2745of the names of the formats that matched, allocated with `malloc'. 2746Then the user may choose a format and try again. 2747 2748 When done with the list that MATCHING points to, the caller should 2749free it. 2750 27512.9.1.3 `bfd_set_format' 2752........................ 2753 2754*Synopsis* 2755 bfd_boolean bfd_set_format (bfd *abfd, bfd_format format); 2756 *Description* 2757This function sets the file format of the BFD ABFD to the format 2758FORMAT. If the target set in the BFD does not support the format 2759requested, the format is invalid, or the BFD is not open for writing, 2760then an error occurs. 2761 27622.9.1.4 `bfd_format_string' 2763........................... 2764 2765*Synopsis* 2766 const char *bfd_format_string (bfd_format format); 2767 *Description* 2768Return a pointer to a const string `invalid', `object', `archive', 2769`core', or `unknown', depending upon the value of FORMAT. 2770 2771 2772File: bfd.info, Node: Relocations, Next: Core Files, Prev: Formats, Up: BFD front end 2773 27742.10 Relocations 2775================ 2776 2777BFD maintains relocations in much the same way it maintains symbols: 2778they are left alone until required, then read in en-masse and 2779translated into an internal form. A common routine 2780`bfd_perform_relocation' acts upon the canonical form to do the fixup. 2781 2782 Relocations are maintained on a per section basis, while symbols are 2783maintained on a per BFD basis. 2784 2785 All that a back end has to do to fit the BFD interface is to create 2786a `struct reloc_cache_entry' for each relocation in a particular 2787section, and fill in the right bits of the structures. 2788 2789* Menu: 2790 2791* typedef arelent:: 2792* howto manager:: 2793 2794 2795File: bfd.info, Node: typedef arelent, Next: howto manager, Prev: Relocations, Up: Relocations 2796 27972.10.1 typedef arelent 2798---------------------- 2799 2800This is the structure of a relocation entry: 2801 2802 2803 typedef enum bfd_reloc_status 2804 { 2805 /* No errors detected. */ 2806 bfd_reloc_ok, 2807 2808 /* The relocation was performed, but there was an overflow. */ 2809 bfd_reloc_overflow, 2810 2811 /* The address to relocate was not within the section supplied. */ 2812 bfd_reloc_outofrange, 2813 2814 /* Used by special functions. */ 2815 bfd_reloc_continue, 2816 2817 /* Unsupported relocation size requested. */ 2818 bfd_reloc_notsupported, 2819 2820 /* Unused. */ 2821 bfd_reloc_other, 2822 2823 /* The symbol to relocate against was undefined. */ 2824 bfd_reloc_undefined, 2825 2826 /* The relocation was performed, but may not be ok - presently 2827 generated only when linking i960 coff files with i960 b.out 2828 symbols. If this type is returned, the error_message argument 2829 to bfd_perform_relocation will be set. */ 2830 bfd_reloc_dangerous 2831 } 2832 bfd_reloc_status_type; 2833 2834 2835 typedef struct reloc_cache_entry 2836 { 2837 /* A pointer into the canonical table of pointers. */ 2838 struct bfd_symbol **sym_ptr_ptr; 2839 2840 /* offset in section. */ 2841 bfd_size_type address; 2842 2843 /* addend for relocation value. */ 2844 bfd_vma addend; 2845 2846 /* Pointer to how to perform the required relocation. */ 2847 reloc_howto_type *howto; 2848 2849 } 2850 arelent; 2851 *Description* 2852Here is a description of each of the fields within an `arelent': 2853 2854 * `sym_ptr_ptr' 2855 The symbol table pointer points to a pointer to the symbol 2856associated with the relocation request. It is the pointer into the 2857table returned by the back end's `canonicalize_symtab' action. *Note 2858Symbols::. The symbol is referenced through a pointer to a pointer so 2859that tools like the linker can fix up all the symbols of the same name 2860by modifying only one pointer. The relocation routine looks in the 2861symbol and uses the base of the section the symbol is attached to and 2862the value of the symbol as the initial relocation offset. If the symbol 2863pointer is zero, then the section provided is looked up. 2864 2865 * `address' 2866 The `address' field gives the offset in bytes from the base of the 2867section data which owns the relocation record to the first byte of 2868relocatable information. The actual data relocated will be relative to 2869this point; for example, a relocation type which modifies the bottom 2870two bytes of a four byte word would not touch the first byte pointed to 2871in a big endian world. 2872 2873 * `addend' 2874 The `addend' is a value provided by the back end to be added (!) to 2875the relocation offset. Its interpretation is dependent upon the howto. 2876For example, on the 68k the code: 2877 2878 char foo[]; 2879 main() 2880 { 2881 return foo[0x12345678]; 2882 } 2883 2884 Could be compiled into: 2885 2886 linkw fp,#-4 2887 moveb @#12345678,d0 2888 extbl d0 2889 unlk fp 2890 rts 2891 2892 This could create a reloc pointing to `foo', but leave the offset in 2893the data, something like: 2894 2895 RELOCATION RECORDS FOR [.text]: 2896 offset type value 2897 00000006 32 _foo 2898 2899 00000000 4e56 fffc ; linkw fp,#-4 2900 00000004 1039 1234 5678 ; moveb @#12345678,d0 2901 0000000a 49c0 ; extbl d0 2902 0000000c 4e5e ; unlk fp 2903 0000000e 4e75 ; rts 2904 2905 Using coff and an 88k, some instructions don't have enough space in 2906them to represent the full address range, and pointers have to be 2907loaded in two parts. So you'd get something like: 2908 2909 or.u r13,r0,hi16(_foo+0x12345678) 2910 ld.b r2,r13,lo16(_foo+0x12345678) 2911 jmp r1 2912 2913 This should create two relocs, both pointing to `_foo', and with 29140x12340000 in their addend field. The data would consist of: 2915 2916 RELOCATION RECORDS FOR [.text]: 2917 offset type value 2918 00000002 HVRT16 _foo+0x12340000 2919 00000006 LVRT16 _foo+0x12340000 2920 2921 00000000 5da05678 ; or.u r13,r0,0x5678 2922 00000004 1c4d5678 ; ld.b r2,r13,0x5678 2923 00000008 f400c001 ; jmp r1 2924 2925 The relocation routine digs out the value from the data, adds it to 2926the addend to get the original offset, and then adds the value of 2927`_foo'. Note that all 32 bits have to be kept around somewhere, to cope 2928with carry from bit 15 to bit 16. 2929 2930 One further example is the sparc and the a.out format. The sparc has 2931a similar problem to the 88k, in that some instructions don't have room 2932for an entire offset, but on the sparc the parts are created in odd 2933sized lumps. The designers of the a.out format chose to not use the 2934data within the section for storing part of the offset; all the offset 2935is kept within the reloc. Anything in the data should be ignored. 2936 2937 save %sp,-112,%sp 2938 sethi %hi(_foo+0x12345678),%g2 2939 ldsb [%g2+%lo(_foo+0x12345678)],%i0 2940 ret 2941 restore 2942 2943 Both relocs contain a pointer to `foo', and the offsets contain junk. 2944 2945 RELOCATION RECORDS FOR [.text]: 2946 offset type value 2947 00000004 HI22 _foo+0x12345678 2948 00000008 LO10 _foo+0x12345678 2949 2950 00000000 9de3bf90 ; save %sp,-112,%sp 2951 00000004 05000000 ; sethi %hi(_foo+0),%g2 2952 00000008 f048a000 ; ldsb [%g2+%lo(_foo+0)],%i0 2953 0000000c 81c7e008 ; ret 2954 00000010 81e80000 ; restore 2955 2956 * `howto' 2957 The `howto' field can be imagined as a relocation instruction. It is 2958a pointer to a structure which contains information on what to do with 2959all of the other information in the reloc record and data section. A 2960back end would normally have a relocation instruction set and turn 2961relocations into pointers to the correct structure on input - but it 2962would be possible to create each howto field on demand. 2963 29642.10.1.1 `enum complain_overflow' 2965................................. 2966 2967Indicates what sort of overflow checking should be done when performing 2968a relocation. 2969 2970 2971 enum complain_overflow 2972 { 2973 /* Do not complain on overflow. */ 2974 complain_overflow_dont, 2975 2976 /* Complain if the value overflows when considered as a signed 2977 number one bit larger than the field. ie. A bitfield of N bits 2978 is allowed to represent -2**n to 2**n-1. */ 2979 complain_overflow_bitfield, 2980 2981 /* Complain if the value overflows when considered as a signed 2982 number. */ 2983 complain_overflow_signed, 2984 2985 /* Complain if the value overflows when considered as an 2986 unsigned number. */ 2987 complain_overflow_unsigned 2988 }; 2989 29902.10.1.2 `reloc_howto_type' 2991........................... 2992 2993The `reloc_howto_type' is a structure which contains all the 2994information that libbfd needs to know to tie up a back end's data. 2995 2996 struct bfd_symbol; /* Forward declaration. */ 2997 2998 struct reloc_howto_struct 2999 { 3000 /* The type field has mainly a documentary use - the back end can 3001 do what it wants with it, though normally the back end's 3002 external idea of what a reloc number is stored 3003 in this field. For example, a PC relative word relocation 3004 in a coff environment has the type 023 - because that's 3005 what the outside world calls a R_PCRWORD reloc. */ 3006 unsigned int type; 3007 3008 /* The value the final relocation is shifted right by. This drops 3009 unwanted data from the relocation. */ 3010 unsigned int rightshift; 3011 3012 /* The size of the item to be relocated. This is *not* a 3013 power-of-two measure. To get the number of bytes operated 3014 on by a type of relocation, use bfd_get_reloc_size. */ 3015 int size; 3016 3017 /* The number of bits in the item to be relocated. This is used 3018 when doing overflow checking. */ 3019 unsigned int bitsize; 3020 3021 /* Notes that the relocation is relative to the location in the 3022 data section of the addend. The relocation function will 3023 subtract from the relocation value the address of the location 3024 being relocated. */ 3025 bfd_boolean pc_relative; 3026 3027 /* The bit position of the reloc value in the destination. 3028 The relocated value is left shifted by this amount. */ 3029 unsigned int bitpos; 3030 3031 /* What type of overflow error should be checked for when 3032 relocating. */ 3033 enum complain_overflow complain_on_overflow; 3034 3035 /* If this field is non null, then the supplied function is 3036 called rather than the normal function. This allows really 3037 strange relocation methods to be accommodated (e.g., i960 callj 3038 instructions). */ 3039 bfd_reloc_status_type (*special_function) 3040 (bfd *, arelent *, struct bfd_symbol *, void *, asection *, 3041 bfd *, char **); 3042 3043 /* The textual name of the relocation type. */ 3044 char *name; 3045 3046 /* Some formats record a relocation addend in the section contents 3047 rather than with the relocation. For ELF formats this is the 3048 distinction between USE_REL and USE_RELA (though the code checks 3049 for USE_REL == 1/0). The value of this field is TRUE if the 3050 addend is recorded with the section contents; when performing a 3051 partial link (ld -r) the section contents (the data) will be 3052 modified. The value of this field is FALSE if addends are 3053 recorded with the relocation (in arelent.addend); when performing 3054 a partial link the relocation will be modified. 3055 All relocations for all ELF USE_RELA targets should set this field 3056 to FALSE (values of TRUE should be looked on with suspicion). 3057 However, the converse is not true: not all relocations of all ELF 3058 USE_REL targets set this field to TRUE. Why this is so is peculiar 3059 to each particular target. For relocs that aren't used in partial 3060 links (e.g. GOT stuff) it doesn't matter what this is set to. */ 3061 bfd_boolean partial_inplace; 3062 3063 /* src_mask selects the part of the instruction (or data) to be used 3064 in the relocation sum. If the target relocations don't have an 3065 addend in the reloc, eg. ELF USE_REL, src_mask will normally equal 3066 dst_mask to extract the addend from the section contents. If 3067 relocations do have an addend in the reloc, eg. ELF USE_RELA, this 3068 field should be zero. Non-zero values for ELF USE_RELA targets are 3069 bogus as in those cases the value in the dst_mask part of the 3070 section contents should be treated as garbage. */ 3071 bfd_vma src_mask; 3072 3073 /* dst_mask selects which parts of the instruction (or data) are 3074 replaced with a relocated value. */ 3075 bfd_vma dst_mask; 3076 3077 /* When some formats create PC relative instructions, they leave 3078 the value of the pc of the place being relocated in the offset 3079 slot of the instruction, so that a PC relative relocation can 3080 be made just by adding in an ordinary offset (e.g., sun3 a.out). 3081 Some formats leave the displacement part of an instruction 3082 empty (e.g., m88k bcs); this flag signals the fact. */ 3083 bfd_boolean pcrel_offset; 3084 }; 3085 30862.10.1.3 `The HOWTO Macro' 3087.......................... 3088 3089*Description* 3090The HOWTO define is horrible and will go away. 3091 #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \ 3092 { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC } 3093 3094 *Description* 3095And will be replaced with the totally magic way. But for the moment, we 3096are compatible, so do it this way. 3097 #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \ 3098 HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \ 3099 NAME, FALSE, 0, 0, IN) 3100 3101 *Description* 3102This is used to fill in an empty howto entry in an array. 3103 #define EMPTY_HOWTO(C) \ 3104 HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \ 3105 NULL, FALSE, 0, 0, FALSE) 3106 3107 *Description* 3108Helper routine to turn a symbol into a relocation value. 3109 #define HOWTO_PREPARE(relocation, symbol) \ 3110 { \ 3111 if (symbol != NULL) \ 3112 { \ 3113 if (bfd_is_com_section (symbol->section)) \ 3114 { \ 3115 relocation = 0; \ 3116 } \ 3117 else \ 3118 { \ 3119 relocation = symbol->value; \ 3120 } \ 3121 } \ 3122 } 3123 31242.10.1.4 `bfd_get_reloc_size' 3125............................. 3126 3127*Synopsis* 3128 unsigned int bfd_get_reloc_size (reloc_howto_type *); 3129 *Description* 3130For a reloc_howto_type that operates on a fixed number of bytes, this 3131returns the number of bytes operated on. 3132 31332.10.1.5 `arelent_chain' 3134........................ 3135 3136*Description* 3137How relocs are tied together in an `asection': 3138 typedef struct relent_chain 3139 { 3140 arelent relent; 3141 struct relent_chain *next; 3142 } 3143 arelent_chain; 3144 31452.10.1.6 `bfd_check_overflow' 3146............................. 3147 3148*Synopsis* 3149 bfd_reloc_status_type bfd_check_overflow 3150 (enum complain_overflow how, 3151 unsigned int bitsize, 3152 unsigned int rightshift, 3153 unsigned int addrsize, 3154 bfd_vma relocation); 3155 *Description* 3156Perform overflow checking on RELOCATION which has BITSIZE significant 3157bits and will be shifted right by RIGHTSHIFT bits, on a machine with 3158addresses containing ADDRSIZE significant bits. The result is either of 3159`bfd_reloc_ok' or `bfd_reloc_overflow'. 3160 31612.10.1.7 `bfd_perform_relocation' 3162................................. 3163 3164*Synopsis* 3165 bfd_reloc_status_type bfd_perform_relocation 3166 (bfd *abfd, 3167 arelent *reloc_entry, 3168 void *data, 3169 asection *input_section, 3170 bfd *output_bfd, 3171 char **error_message); 3172 *Description* 3173If OUTPUT_BFD is supplied to this function, the generated image will be 3174relocatable; the relocations are copied to the output file after they 3175have been changed to reflect the new state of the world. There are two 3176ways of reflecting the results of partial linkage in an output file: by 3177modifying the output data in place, and by modifying the relocation 3178record. Some native formats (e.g., basic a.out and basic coff) have no 3179way of specifying an addend in the relocation type, so the addend has 3180to go in the output data. This is no big deal since in these formats 3181the output data slot will always be big enough for the addend. Complex 3182reloc types with addends were invented to solve just this problem. The 3183ERROR_MESSAGE argument is set to an error message if this return 3184`bfd_reloc_dangerous'. 3185 31862.10.1.8 `bfd_install_relocation' 3187................................. 3188 3189*Synopsis* 3190 bfd_reloc_status_type bfd_install_relocation 3191 (bfd *abfd, 3192 arelent *reloc_entry, 3193 void *data, bfd_vma data_start, 3194 asection *input_section, 3195 char **error_message); 3196 *Description* 3197This looks remarkably like `bfd_perform_relocation', except it does not 3198expect that the section contents have been filled in. I.e., it's 3199suitable for use when creating, rather than applying a relocation. 3200 3201 For now, this function should be considered reserved for the 3202assembler. 3203 3204 3205File: bfd.info, Node: howto manager, Prev: typedef arelent, Up: Relocations 3206 32072.10.2 The howto manager 3208------------------------ 3209 3210When an application wants to create a relocation, but doesn't know what 3211the target machine might call it, it can find out by using this bit of 3212code. 3213 32142.10.2.1 `bfd_reloc_code_type' 3215.............................. 3216 3217*Description* 3218The insides of a reloc code. The idea is that, eventually, there will 3219be one enumerator for every type of relocation we ever do. Pass one of 3220these values to `bfd_reloc_type_lookup', and it'll return a howto 3221pointer. 3222 3223 This does mean that the application must determine the correct 3224enumerator value; you can't get a howto pointer from a random set of 3225attributes. 3226 3227 Here are the possible values for `enum bfd_reloc_code_real': 3228 3229 -- : BFD_RELOC_64 3230 -- : BFD_RELOC_32 3231 -- : BFD_RELOC_26 3232 -- : BFD_RELOC_24 3233 -- : BFD_RELOC_16 3234 -- : BFD_RELOC_14 3235 -- : BFD_RELOC_8 3236 Basic absolute relocations of N bits. 3237 3238 -- : BFD_RELOC_64_PCREL 3239 -- : BFD_RELOC_32_PCREL 3240 -- : BFD_RELOC_24_PCREL 3241 -- : BFD_RELOC_16_PCREL 3242 -- : BFD_RELOC_12_PCREL 3243 -- : BFD_RELOC_8_PCREL 3244 PC-relative relocations. Sometimes these are relative to the 3245 address of the relocation itself; sometimes they are relative to 3246 the start of the section containing the relocation. It depends on 3247 the specific target. 3248 3249 The 24-bit relocation is used in some Intel 960 configurations. 3250 3251 -- : BFD_RELOC_32_SECREL 3252 Section relative relocations. Some targets need this for DWARF2. 3253 3254 -- : BFD_RELOC_32_GOT_PCREL 3255 -- : BFD_RELOC_16_GOT_PCREL 3256 -- : BFD_RELOC_8_GOT_PCREL 3257 -- : BFD_RELOC_32_GOTOFF 3258 -- : BFD_RELOC_16_GOTOFF 3259 -- : BFD_RELOC_LO16_GOTOFF 3260 -- : BFD_RELOC_HI16_GOTOFF 3261 -- : BFD_RELOC_HI16_S_GOTOFF 3262 -- : BFD_RELOC_8_GOTOFF 3263 -- : BFD_RELOC_64_PLT_PCREL 3264 -- : BFD_RELOC_32_PLT_PCREL 3265 -- : BFD_RELOC_24_PLT_PCREL 3266 -- : BFD_RELOC_16_PLT_PCREL 3267 -- : BFD_RELOC_8_PLT_PCREL 3268 -- : BFD_RELOC_64_PLTOFF 3269 -- : BFD_RELOC_32_PLTOFF 3270 -- : BFD_RELOC_16_PLTOFF 3271 -- : BFD_RELOC_LO16_PLTOFF 3272 -- : BFD_RELOC_HI16_PLTOFF 3273 -- : BFD_RELOC_HI16_S_PLTOFF 3274 -- : BFD_RELOC_8_PLTOFF 3275 For ELF. 3276 3277 -- : BFD_RELOC_68K_GLOB_DAT 3278 -- : BFD_RELOC_68K_JMP_SLOT 3279 -- : BFD_RELOC_68K_RELATIVE 3280 Relocations used by 68K ELF. 3281 3282 -- : BFD_RELOC_32_BASEREL 3283 -- : BFD_RELOC_16_BASEREL 3284 -- : BFD_RELOC_LO16_BASEREL 3285 -- : BFD_RELOC_HI16_BASEREL 3286 -- : BFD_RELOC_HI16_S_BASEREL 3287 -- : BFD_RELOC_8_BASEREL 3288 -- : BFD_RELOC_RVA 3289 Linkage-table relative. 3290 3291 -- : BFD_RELOC_8_FFnn 3292 Absolute 8-bit relocation, but used to form an address like 0xFFnn. 3293 3294 -- : BFD_RELOC_32_PCREL_S2 3295 -- : BFD_RELOC_16_PCREL_S2 3296 -- : BFD_RELOC_23_PCREL_S2 3297 These PC-relative relocations are stored as word displacements - 3298 i.e., byte displacements shifted right two bits. The 30-bit word 3299 displacement (<<32_PCREL_S2>> - 32 bits, shifted 2) is used on the 3300 SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The 3301 signed 16-bit displacement is used on the MIPS, and the 23-bit 3302 displacement is used on the Alpha. 3303 3304 -- : BFD_RELOC_HI22 3305 -- : BFD_RELOC_LO10 3306 High 22 bits and low 10 bits of 32-bit value, placed into lower 3307 bits of the target word. These are used on the SPARC. 3308 3309 -- : BFD_RELOC_GPREL16 3310 -- : BFD_RELOC_GPREL32 3311 For systems that allocate a Global Pointer register, these are 3312 displacements off that register. These relocation types are 3313 handled specially, because the value the register will have is 3314 decided relatively late. 3315 3316 -- : BFD_RELOC_I960_CALLJ 3317 Reloc types used for i960/b.out. 3318 3319 -- : BFD_RELOC_NONE 3320 -- : BFD_RELOC_SPARC_WDISP22 3321 -- : BFD_RELOC_SPARC22 3322 -- : BFD_RELOC_SPARC13 3323 -- : BFD_RELOC_SPARC_GOT10 3324 -- : BFD_RELOC_SPARC_GOT13 3325 -- : BFD_RELOC_SPARC_GOT22 3326 -- : BFD_RELOC_SPARC_PC10 3327 -- : BFD_RELOC_SPARC_PC22 3328 -- : BFD_RELOC_SPARC_WPLT30 3329 -- : BFD_RELOC_SPARC_COPY 3330 -- : BFD_RELOC_SPARC_GLOB_DAT 3331 -- : BFD_RELOC_SPARC_JMP_SLOT 3332 -- : BFD_RELOC_SPARC_RELATIVE 3333 -- : BFD_RELOC_SPARC_UA16 3334 -- : BFD_RELOC_SPARC_UA32 3335 -- : BFD_RELOC_SPARC_UA64 3336 -- : BFD_RELOC_SPARC_GOTDATA_HIX22 3337 -- : BFD_RELOC_SPARC_GOTDATA_LOX10 3338 -- : BFD_RELOC_SPARC_GOTDATA_OP_HIX22 3339 -- : BFD_RELOC_SPARC_GOTDATA_OP_LOX10 3340 -- : BFD_RELOC_SPARC_GOTDATA_OP 3341 SPARC ELF relocations. There is probably some overlap with other 3342 relocation types already defined. 3343 3344 -- : BFD_RELOC_SPARC_BASE13 3345 -- : BFD_RELOC_SPARC_BASE22 3346 I think these are specific to SPARC a.out (e.g., Sun 4). 3347 3348 -- : BFD_RELOC_SPARC_64 3349 -- : BFD_RELOC_SPARC_10 3350 -- : BFD_RELOC_SPARC_11 3351 -- : BFD_RELOC_SPARC_OLO10 3352 -- : BFD_RELOC_SPARC_HH22 3353 -- : BFD_RELOC_SPARC_HM10 3354 -- : BFD_RELOC_SPARC_LM22 3355 -- : BFD_RELOC_SPARC_PC_HH22 3356 -- : BFD_RELOC_SPARC_PC_HM10 3357 -- : BFD_RELOC_SPARC_PC_LM22 3358 -- : BFD_RELOC_SPARC_WDISP16 3359 -- : BFD_RELOC_SPARC_WDISP19 3360 -- : BFD_RELOC_SPARC_7 3361 -- : BFD_RELOC_SPARC_6 3362 -- : BFD_RELOC_SPARC_5 3363 -- : BFD_RELOC_SPARC_DISP64 3364 -- : BFD_RELOC_SPARC_PLT32 3365 -- : BFD_RELOC_SPARC_PLT64 3366 -- : BFD_RELOC_SPARC_HIX22 3367 -- : BFD_RELOC_SPARC_LOX10 3368 -- : BFD_RELOC_SPARC_H44 3369 -- : BFD_RELOC_SPARC_M44 3370 -- : BFD_RELOC_SPARC_L44 3371 -- : BFD_RELOC_SPARC_REGISTER 3372 SPARC64 relocations 3373 3374 -- : BFD_RELOC_SPARC_REV32 3375 SPARC little endian relocation 3376 3377 -- : BFD_RELOC_SPARC_TLS_GD_HI22 3378 -- : BFD_RELOC_SPARC_TLS_GD_LO10 3379 -- : BFD_RELOC_SPARC_TLS_GD_ADD 3380 -- : BFD_RELOC_SPARC_TLS_GD_CALL 3381 -- : BFD_RELOC_SPARC_TLS_LDM_HI22 3382 -- : BFD_RELOC_SPARC_TLS_LDM_LO10 3383 -- : BFD_RELOC_SPARC_TLS_LDM_ADD 3384 -- : BFD_RELOC_SPARC_TLS_LDM_CALL 3385 -- : BFD_RELOC_SPARC_TLS_LDO_HIX22 3386 -- : BFD_RELOC_SPARC_TLS_LDO_LOX10 3387 -- : BFD_RELOC_SPARC_TLS_LDO_ADD 3388 -- : BFD_RELOC_SPARC_TLS_IE_HI22 3389 -- : BFD_RELOC_SPARC_TLS_IE_LO10 3390 -- : BFD_RELOC_SPARC_TLS_IE_LD 3391 -- : BFD_RELOC_SPARC_TLS_IE_LDX 3392 -- : BFD_RELOC_SPARC_TLS_IE_ADD 3393 -- : BFD_RELOC_SPARC_TLS_LE_HIX22 3394 -- : BFD_RELOC_SPARC_TLS_LE_LOX10 3395 -- : BFD_RELOC_SPARC_TLS_DTPMOD32 3396 -- : BFD_RELOC_SPARC_TLS_DTPMOD64 3397 -- : BFD_RELOC_SPARC_TLS_DTPOFF32 3398 -- : BFD_RELOC_SPARC_TLS_DTPOFF64 3399 -- : BFD_RELOC_SPARC_TLS_TPOFF32 3400 -- : BFD_RELOC_SPARC_TLS_TPOFF64 3401 SPARC TLS relocations 3402 3403 -- : BFD_RELOC_SPU_IMM7 3404 -- : BFD_RELOC_SPU_IMM8 3405 -- : BFD_RELOC_SPU_IMM10 3406 -- : BFD_RELOC_SPU_IMM10W 3407 -- : BFD_RELOC_SPU_IMM16 3408 -- : BFD_RELOC_SPU_IMM16W 3409 -- : BFD_RELOC_SPU_IMM18 3410 -- : BFD_RELOC_SPU_PCREL9a 3411 -- : BFD_RELOC_SPU_PCREL9b 3412 -- : BFD_RELOC_SPU_PCREL16 3413 -- : BFD_RELOC_SPU_LO16 3414 -- : BFD_RELOC_SPU_HI16 3415 -- : BFD_RELOC_SPU_PPU32 3416 -- : BFD_RELOC_SPU_PPU64 3417 SPU Relocations. 3418 3419 -- : BFD_RELOC_ALPHA_GPDISP_HI16 3420 Alpha ECOFF and ELF relocations. Some of these treat the symbol or 3421 "addend" in some special way. For GPDISP_HI16 ("gpdisp") 3422 relocations, the symbol is ignored when writing; when reading, it 3423 will be the absolute section symbol. The addend is the 3424 displacement in bytes of the "lda" instruction from the "ldah" 3425 instruction (which is at the address of this reloc). 3426 3427 -- : BFD_RELOC_ALPHA_GPDISP_LO16 3428 For GPDISP_LO16 ("ignore") relocations, the symbol is handled as 3429 with GPDISP_HI16 relocs. The addend is ignored when writing the 3430 relocations out, and is filled in with the file's GP value on 3431 reading, for convenience. 3432 3433 -- : BFD_RELOC_ALPHA_GPDISP 3434 The ELF GPDISP relocation is exactly the same as the GPDISP_HI16 3435 relocation except that there is no accompanying GPDISP_LO16 3436 relocation. 3437 3438 -- : BFD_RELOC_ALPHA_LITERAL 3439 -- : BFD_RELOC_ALPHA_ELF_LITERAL 3440 -- : BFD_RELOC_ALPHA_LITUSE 3441 The Alpha LITERAL/LITUSE relocs are produced by a symbol reference; 3442 the assembler turns it into a LDQ instruction to load the address 3443 of the symbol, and then fills in a register in the real 3444 instruction. 3445 3446 The LITERAL reloc, at the LDQ instruction, refers to the .lita 3447 section symbol. The addend is ignored when writing, but is filled 3448 in with the file's GP value on reading, for convenience, as with 3449 the GPDISP_LO16 reloc. 3450 3451 The ELF_LITERAL reloc is somewhere between 16_GOTOFF and 3452 GPDISP_LO16. It should refer to the symbol to be referenced, as 3453 with 16_GOTOFF, but it generates output not based on the position 3454 within the .got section, but relative to the GP value chosen for 3455 the file during the final link stage. 3456 3457 The LITUSE reloc, on the instruction using the loaded address, 3458 gives information to the linker that it might be able to use to 3459 optimize away some literal section references. The symbol is 3460 ignored (read as the absolute section symbol), and the "addend" 3461 indicates the type of instruction using the register: 1 - "memory" 3462 fmt insn 2 - byte-manipulation (byte offset reg) 3 - jsr (target 3463 of branch) 3464 3465 -- : BFD_RELOC_ALPHA_HINT 3466 The HINT relocation indicates a value that should be filled into 3467 the "hint" field of a jmp/jsr/ret instruction, for possible branch- 3468 prediction logic which may be provided on some processors. 3469 3470 -- : BFD_RELOC_ALPHA_LINKAGE 3471 The LINKAGE relocation outputs a linkage pair in the object file, 3472 which is filled by the linker. 3473 3474 -- : BFD_RELOC_ALPHA_CODEADDR 3475 The CODEADDR relocation outputs a STO_CA in the object file, which 3476 is filled by the linker. 3477 3478 -- : BFD_RELOC_ALPHA_GPREL_HI16 3479 -- : BFD_RELOC_ALPHA_GPREL_LO16 3480 The GPREL_HI/LO relocations together form a 32-bit offset from the 3481 GP register. 3482 3483 -- : BFD_RELOC_ALPHA_BRSGP 3484 Like BFD_RELOC_23_PCREL_S2, except that the source and target must 3485 share a common GP, and the target address is adjusted for 3486 STO_ALPHA_STD_GPLOAD. 3487 3488 -- : BFD_RELOC_ALPHA_TLSGD 3489 -- : BFD_RELOC_ALPHA_TLSLDM 3490 -- : BFD_RELOC_ALPHA_DTPMOD64 3491 -- : BFD_RELOC_ALPHA_GOTDTPREL16 3492 -- : BFD_RELOC_ALPHA_DTPREL64 3493 -- : BFD_RELOC_ALPHA_DTPREL_HI16 3494 -- : BFD_RELOC_ALPHA_DTPREL_LO16 3495 -- : BFD_RELOC_ALPHA_DTPREL16 3496 -- : BFD_RELOC_ALPHA_GOTTPREL16 3497 -- : BFD_RELOC_ALPHA_TPREL64 3498 -- : BFD_RELOC_ALPHA_TPREL_HI16 3499 -- : BFD_RELOC_ALPHA_TPREL_LO16 3500 -- : BFD_RELOC_ALPHA_TPREL16 3501 Alpha thread-local storage relocations. 3502 3503 -- : BFD_RELOC_MIPS_JMP 3504 Bits 27..2 of the relocation address shifted right 2 bits; simple 3505 reloc otherwise. 3506 3507 -- : BFD_RELOC_MIPS16_JMP 3508 The MIPS16 jump instruction. 3509 3510 -- : BFD_RELOC_MIPS16_GPREL 3511 MIPS16 GP relative reloc. 3512 3513 -- : BFD_RELOC_HI16 3514 High 16 bits of 32-bit value; simple reloc. 3515 3516 -- : BFD_RELOC_HI16_S 3517 High 16 bits of 32-bit value but the low 16 bits will be sign 3518 extended and added to form the final result. If the low 16 bits 3519 form a negative number, we need to add one to the high value to 3520 compensate for the borrow when the low bits are added. 3521 3522 -- : BFD_RELOC_LO16 3523 Low 16 bits. 3524 3525 -- : BFD_RELOC_HI16_PCREL 3526 High 16 bits of 32-bit pc-relative value 3527 3528 -- : BFD_RELOC_HI16_S_PCREL 3529 High 16 bits of 32-bit pc-relative value, adjusted 3530 3531 -- : BFD_RELOC_LO16_PCREL 3532 Low 16 bits of pc-relative value 3533 3534 -- : BFD_RELOC_MIPS16_GOT16 3535 -- : BFD_RELOC_MIPS16_CALL16 3536 Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of 3537 16-bit immediate fields 3538 3539 -- : BFD_RELOC_MIPS16_HI16 3540 MIPS16 high 16 bits of 32-bit value. 3541 3542 -- : BFD_RELOC_MIPS16_HI16_S 3543 MIPS16 high 16 bits of 32-bit value but the low 16 bits will be 3544 sign extended and added to form the final result. If the low 16 3545 bits form a negative number, we need to add one to the high value 3546 to compensate for the borrow when the low bits are added. 3547 3548 -- : BFD_RELOC_MIPS16_LO16 3549 MIPS16 low 16 bits. 3550 3551 -- : BFD_RELOC_MIPS_LITERAL 3552 Relocation against a MIPS literal section. 3553 3554 -- : BFD_RELOC_MIPS_GOT16 3555 -- : BFD_RELOC_MIPS_CALL16 3556 -- : BFD_RELOC_MIPS_GOT_HI16 3557 -- : BFD_RELOC_MIPS_GOT_LO16 3558 -- : BFD_RELOC_MIPS_CALL_HI16 3559 -- : BFD_RELOC_MIPS_CALL_LO16 3560 -- : BFD_RELOC_MIPS_SUB 3561 -- : BFD_RELOC_MIPS_GOT_PAGE 3562 -- : BFD_RELOC_MIPS_GOT_OFST 3563 -- : BFD_RELOC_MIPS_GOT_DISP 3564 -- : BFD_RELOC_MIPS_SHIFT5 3565 -- : BFD_RELOC_MIPS_SHIFT6 3566 -- : BFD_RELOC_MIPS_INSERT_A 3567 -- : BFD_RELOC_MIPS_INSERT_B 3568 -- : BFD_RELOC_MIPS_DELETE 3569 -- : BFD_RELOC_MIPS_HIGHEST 3570 -- : BFD_RELOC_MIPS_HIGHER 3571 -- : BFD_RELOC_MIPS_SCN_DISP 3572 -- : BFD_RELOC_MIPS_REL16 3573 -- : BFD_RELOC_MIPS_RELGOT 3574 -- : BFD_RELOC_MIPS_JALR 3575 -- : BFD_RELOC_MIPS_TLS_DTPMOD32 3576 -- : BFD_RELOC_MIPS_TLS_DTPREL32 3577 -- : BFD_RELOC_MIPS_TLS_DTPMOD64 3578 -- : BFD_RELOC_MIPS_TLS_DTPREL64 3579 -- : BFD_RELOC_MIPS_TLS_GD 3580 -- : BFD_RELOC_MIPS_TLS_LDM 3581 -- : BFD_RELOC_MIPS_TLS_DTPREL_HI16 3582 -- : BFD_RELOC_MIPS_TLS_DTPREL_LO16 3583 -- : BFD_RELOC_MIPS_TLS_GOTTPREL 3584 -- : BFD_RELOC_MIPS_TLS_TPREL32 3585 -- : BFD_RELOC_MIPS_TLS_TPREL64 3586 -- : BFD_RELOC_MIPS_TLS_TPREL_HI16 3587 -- : BFD_RELOC_MIPS_TLS_TPREL_LO16 3588 MIPS ELF relocations. 3589 3590 -- : BFD_RELOC_MIPS_COPY 3591 -- : BFD_RELOC_MIPS_JUMP_SLOT 3592 MIPS ELF relocations (VxWorks and PLT extensions). 3593 3594 -- : BFD_RELOC_FRV_LABEL16 3595 -- : BFD_RELOC_FRV_LABEL24 3596 -- : BFD_RELOC_FRV_LO16 3597 -- : BFD_RELOC_FRV_HI16 3598 -- : BFD_RELOC_FRV_GPREL12 3599 -- : BFD_RELOC_FRV_GPRELU12 3600 -- : BFD_RELOC_FRV_GPREL32 3601 -- : BFD_RELOC_FRV_GPRELHI 3602 -- : BFD_RELOC_FRV_GPRELLO 3603 -- : BFD_RELOC_FRV_GOT12 3604 -- : BFD_RELOC_FRV_GOTHI 3605 -- : BFD_RELOC_FRV_GOTLO 3606 -- : BFD_RELOC_FRV_FUNCDESC 3607 -- : BFD_RELOC_FRV_FUNCDESC_GOT12 3608 -- : BFD_RELOC_FRV_FUNCDESC_GOTHI 3609 -- : BFD_RELOC_FRV_FUNCDESC_GOTLO 3610 -- : BFD_RELOC_FRV_FUNCDESC_VALUE 3611 -- : BFD_RELOC_FRV_FUNCDESC_GOTOFF12 3612 -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFHI 3613 -- : BFD_RELOC_FRV_FUNCDESC_GOTOFFLO 3614 -- : BFD_RELOC_FRV_GOTOFF12 3615 -- : BFD_RELOC_FRV_GOTOFFHI 3616 -- : BFD_RELOC_FRV_GOTOFFLO 3617 -- : BFD_RELOC_FRV_GETTLSOFF 3618 -- : BFD_RELOC_FRV_TLSDESC_VALUE 3619 -- : BFD_RELOC_FRV_GOTTLSDESC12 3620 -- : BFD_RELOC_FRV_GOTTLSDESCHI 3621 -- : BFD_RELOC_FRV_GOTTLSDESCLO 3622 -- : BFD_RELOC_FRV_TLSMOFF12 3623 -- : BFD_RELOC_FRV_TLSMOFFHI 3624 -- : BFD_RELOC_FRV_TLSMOFFLO 3625 -- : BFD_RELOC_FRV_GOTTLSOFF12 3626 -- : BFD_RELOC_FRV_GOTTLSOFFHI 3627 -- : BFD_RELOC_FRV_GOTTLSOFFLO 3628 -- : BFD_RELOC_FRV_TLSOFF 3629 -- : BFD_RELOC_FRV_TLSDESC_RELAX 3630 -- : BFD_RELOC_FRV_GETTLSOFF_RELAX 3631 -- : BFD_RELOC_FRV_TLSOFF_RELAX 3632 -- : BFD_RELOC_FRV_TLSMOFF 3633 Fujitsu Frv Relocations. 3634 3635 -- : BFD_RELOC_MN10300_GOTOFF24 3636 This is a 24bit GOT-relative reloc for the mn10300. 3637 3638 -- : BFD_RELOC_MN10300_GOT32 3639 This is a 32bit GOT-relative reloc for the mn10300, offset by two 3640 bytes in the instruction. 3641 3642 -- : BFD_RELOC_MN10300_GOT24 3643 This is a 24bit GOT-relative reloc for the mn10300, offset by two 3644 bytes in the instruction. 3645 3646 -- : BFD_RELOC_MN10300_GOT16 3647 This is a 16bit GOT-relative reloc for the mn10300, offset by two 3648 bytes in the instruction. 3649 3650 -- : BFD_RELOC_MN10300_COPY 3651 Copy symbol at runtime. 3652 3653 -- : BFD_RELOC_MN10300_GLOB_DAT 3654 Create GOT entry. 3655 3656 -- : BFD_RELOC_MN10300_JMP_SLOT 3657 Create PLT entry. 3658 3659 -- : BFD_RELOC_MN10300_RELATIVE 3660 Adjust by program base. 3661 3662 -- : BFD_RELOC_MN10300_SYM_DIFF 3663 Together with another reloc targeted at the same location, allows 3664 for a value that is the difference of two symbols in the same 3665 section. 3666 3667 -- : BFD_RELOC_MN10300_ALIGN 3668 The addend of this reloc is an alignment power that must be 3669 honoured at the offset's location, regardless of linker relaxation. 3670 3671 -- : BFD_RELOC_386_GOT32 3672 -- : BFD_RELOC_386_PLT32 3673 -- : BFD_RELOC_386_COPY 3674 -- : BFD_RELOC_386_GLOB_DAT 3675 -- : BFD_RELOC_386_JUMP_SLOT 3676 -- : BFD_RELOC_386_RELATIVE 3677 -- : BFD_RELOC_386_GOTOFF 3678 -- : BFD_RELOC_386_GOTPC 3679 -- : BFD_RELOC_386_TLS_TPOFF 3680 -- : BFD_RELOC_386_TLS_IE 3681 -- : BFD_RELOC_386_TLS_GOTIE 3682 -- : BFD_RELOC_386_TLS_LE 3683 -- : BFD_RELOC_386_TLS_GD 3684 -- : BFD_RELOC_386_TLS_LDM 3685 -- : BFD_RELOC_386_TLS_LDO_32 3686 -- : BFD_RELOC_386_TLS_IE_32 3687 -- : BFD_RELOC_386_TLS_LE_32 3688 -- : BFD_RELOC_386_TLS_DTPMOD32 3689 -- : BFD_RELOC_386_TLS_DTPOFF32 3690 -- : BFD_RELOC_386_TLS_TPOFF32 3691 -- : BFD_RELOC_386_TLS_GOTDESC 3692 -- : BFD_RELOC_386_TLS_DESC_CALL 3693 -- : BFD_RELOC_386_TLS_DESC 3694 i386/elf relocations 3695 3696 -- : BFD_RELOC_X86_64_GOT32 3697 -- : BFD_RELOC_X86_64_PLT32 3698 -- : BFD_RELOC_X86_64_COPY 3699 -- : BFD_RELOC_X86_64_GLOB_DAT 3700 -- : BFD_RELOC_X86_64_JUMP_SLOT 3701 -- : BFD_RELOC_X86_64_RELATIVE 3702 -- : BFD_RELOC_X86_64_GOTPCREL 3703 -- : BFD_RELOC_X86_64_32S 3704 -- : BFD_RELOC_X86_64_DTPMOD64 3705 -- : BFD_RELOC_X86_64_DTPOFF64 3706 -- : BFD_RELOC_X86_64_TPOFF64 3707 -- : BFD_RELOC_X86_64_TLSGD 3708 -- : BFD_RELOC_X86_64_TLSLD 3709 -- : BFD_RELOC_X86_64_DTPOFF32 3710 -- : BFD_RELOC_X86_64_GOTTPOFF 3711 -- : BFD_RELOC_X86_64_TPOFF32 3712 -- : BFD_RELOC_X86_64_GOTOFF64 3713 -- : BFD_RELOC_X86_64_GOTPC32 3714 -- : BFD_RELOC_X86_64_GOT64 3715 -- : BFD_RELOC_X86_64_GOTPCREL64 3716 -- : BFD_RELOC_X86_64_GOTPC64 3717 -- : BFD_RELOC_X86_64_GOTPLT64 3718 -- : BFD_RELOC_X86_64_PLTOFF64 3719 -- : BFD_RELOC_X86_64_GOTPC32_TLSDESC 3720 -- : BFD_RELOC_X86_64_TLSDESC_CALL 3721 -- : BFD_RELOC_X86_64_TLSDESC 3722 x86-64/elf relocations 3723 3724 -- : BFD_RELOC_NS32K_IMM_8 3725 -- : BFD_RELOC_NS32K_IMM_16 3726 -- : BFD_RELOC_NS32K_IMM_32 3727 -- : BFD_RELOC_NS32K_IMM_8_PCREL 3728 -- : BFD_RELOC_NS32K_IMM_16_PCREL 3729 -- : BFD_RELOC_NS32K_IMM_32_PCREL 3730 -- : BFD_RELOC_NS32K_DISP_8 3731 -- : BFD_RELOC_NS32K_DISP_16 3732 -- : BFD_RELOC_NS32K_DISP_32 3733 -- : BFD_RELOC_NS32K_DISP_8_PCREL 3734 -- : BFD_RELOC_NS32K_DISP_16_PCREL 3735 -- : BFD_RELOC_NS32K_DISP_32_PCREL 3736 ns32k relocations 3737 3738 -- : BFD_RELOC_PDP11_DISP_8_PCREL 3739 -- : BFD_RELOC_PDP11_DISP_6_PCREL 3740 PDP11 relocations 3741 3742 -- : BFD_RELOC_PJ_CODE_HI16 3743 -- : BFD_RELOC_PJ_CODE_LO16 3744 -- : BFD_RELOC_PJ_CODE_DIR16 3745 -- : BFD_RELOC_PJ_CODE_DIR32 3746 -- : BFD_RELOC_PJ_CODE_REL16 3747 -- : BFD_RELOC_PJ_CODE_REL32 3748 Picojava relocs. Not all of these appear in object files. 3749 3750 -- : BFD_RELOC_PPC_B26 3751 -- : BFD_RELOC_PPC_BA26 3752 -- : BFD_RELOC_PPC_TOC16 3753 -- : BFD_RELOC_PPC_B16 3754 -- : BFD_RELOC_PPC_B16_BRTAKEN 3755 -- : BFD_RELOC_PPC_B16_BRNTAKEN 3756 -- : BFD_RELOC_PPC_BA16 3757 -- : BFD_RELOC_PPC_BA16_BRTAKEN 3758 -- : BFD_RELOC_PPC_BA16_BRNTAKEN 3759 -- : BFD_RELOC_PPC_COPY 3760 -- : BFD_RELOC_PPC_GLOB_DAT 3761 -- : BFD_RELOC_PPC_JMP_SLOT 3762 -- : BFD_RELOC_PPC_RELATIVE 3763 -- : BFD_RELOC_PPC_LOCAL24PC 3764 -- : BFD_RELOC_PPC_EMB_NADDR32 3765 -- : BFD_RELOC_PPC_EMB_NADDR16 3766 -- : BFD_RELOC_PPC_EMB_NADDR16_LO 3767 -- : BFD_RELOC_PPC_EMB_NADDR16_HI 3768 -- : BFD_RELOC_PPC_EMB_NADDR16_HA 3769 -- : BFD_RELOC_PPC_EMB_SDAI16 3770 -- : BFD_RELOC_PPC_EMB_SDA2I16 3771 -- : BFD_RELOC_PPC_EMB_SDA2REL 3772 -- : BFD_RELOC_PPC_EMB_SDA21 3773 -- : BFD_RELOC_PPC_EMB_MRKREF 3774 -- : BFD_RELOC_PPC_EMB_RELSEC16 3775 -- : BFD_RELOC_PPC_EMB_RELST_LO 3776 -- : BFD_RELOC_PPC_EMB_RELST_HI 3777 -- : BFD_RELOC_PPC_EMB_RELST_HA 3778 -- : BFD_RELOC_PPC_EMB_BIT_FLD 3779 -- : BFD_RELOC_PPC_EMB_RELSDA 3780 -- : BFD_RELOC_PPC64_HIGHER 3781 -- : BFD_RELOC_PPC64_HIGHER_S 3782 -- : BFD_RELOC_PPC64_HIGHEST 3783 -- : BFD_RELOC_PPC64_HIGHEST_S 3784 -- : BFD_RELOC_PPC64_TOC16_LO 3785 -- : BFD_RELOC_PPC64_TOC16_HI 3786 -- : BFD_RELOC_PPC64_TOC16_HA 3787 -- : BFD_RELOC_PPC64_TOC 3788 -- : BFD_RELOC_PPC64_PLTGOT16 3789 -- : BFD_RELOC_PPC64_PLTGOT16_LO 3790 -- : BFD_RELOC_PPC64_PLTGOT16_HI 3791 -- : BFD_RELOC_PPC64_PLTGOT16_HA 3792 -- : BFD_RELOC_PPC64_ADDR16_DS 3793 -- : BFD_RELOC_PPC64_ADDR16_LO_DS 3794 -- : BFD_RELOC_PPC64_GOT16_DS 3795 -- : BFD_RELOC_PPC64_GOT16_LO_DS 3796 -- : BFD_RELOC_PPC64_PLT16_LO_DS 3797 -- : BFD_RELOC_PPC64_SECTOFF_DS 3798 -- : BFD_RELOC_PPC64_SECTOFF_LO_DS 3799 -- : BFD_RELOC_PPC64_TOC16_DS 3800 -- : BFD_RELOC_PPC64_TOC16_LO_DS 3801 -- : BFD_RELOC_PPC64_PLTGOT16_DS 3802 -- : BFD_RELOC_PPC64_PLTGOT16_LO_DS 3803 Power(rs6000) and PowerPC relocations. 3804 3805 -- : BFD_RELOC_PPC_TLS 3806 -- : BFD_RELOC_PPC_DTPMOD 3807 -- : BFD_RELOC_PPC_TPREL16 3808 -- : BFD_RELOC_PPC_TPREL16_LO 3809 -- : BFD_RELOC_PPC_TPREL16_HI 3810 -- : BFD_RELOC_PPC_TPREL16_HA 3811 -- : BFD_RELOC_PPC_TPREL 3812 -- : BFD_RELOC_PPC_DTPREL16 3813 -- : BFD_RELOC_PPC_DTPREL16_LO 3814 -- : BFD_RELOC_PPC_DTPREL16_HI 3815 -- : BFD_RELOC_PPC_DTPREL16_HA 3816 -- : BFD_RELOC_PPC_DTPREL 3817 -- : BFD_RELOC_PPC_GOT_TLSGD16 3818 -- : BFD_RELOC_PPC_GOT_TLSGD16_LO 3819 -- : BFD_RELOC_PPC_GOT_TLSGD16_HI 3820 -- : BFD_RELOC_PPC_GOT_TLSGD16_HA 3821 -- : BFD_RELOC_PPC_GOT_TLSLD16 3822 -- : BFD_RELOC_PPC_GOT_TLSLD16_LO 3823 -- : BFD_RELOC_PPC_GOT_TLSLD16_HI 3824 -- : BFD_RELOC_PPC_GOT_TLSLD16_HA 3825 -- : BFD_RELOC_PPC_GOT_TPREL16 3826 -- : BFD_RELOC_PPC_GOT_TPREL16_LO 3827 -- : BFD_RELOC_PPC_GOT_TPREL16_HI 3828 -- : BFD_RELOC_PPC_GOT_TPREL16_HA 3829 -- : BFD_RELOC_PPC_GOT_DTPREL16 3830 -- : BFD_RELOC_PPC_GOT_DTPREL16_LO 3831 -- : BFD_RELOC_PPC_GOT_DTPREL16_HI 3832 -- : BFD_RELOC_PPC_GOT_DTPREL16_HA 3833 -- : BFD_RELOC_PPC64_TPREL16_DS 3834 -- : BFD_RELOC_PPC64_TPREL16_LO_DS 3835 -- : BFD_RELOC_PPC64_TPREL16_HIGHER 3836 -- : BFD_RELOC_PPC64_TPREL16_HIGHERA 3837 -- : BFD_RELOC_PPC64_TPREL16_HIGHEST 3838 -- : BFD_RELOC_PPC64_TPREL16_HIGHESTA 3839 -- : BFD_RELOC_PPC64_DTPREL16_DS 3840 -- : BFD_RELOC_PPC64_DTPREL16_LO_DS 3841 -- : BFD_RELOC_PPC64_DTPREL16_HIGHER 3842 -- : BFD_RELOC_PPC64_DTPREL16_HIGHERA 3843 -- : BFD_RELOC_PPC64_DTPREL16_HIGHEST 3844 -- : BFD_RELOC_PPC64_DTPREL16_HIGHESTA 3845 PowerPC and PowerPC64 thread-local storage relocations. 3846 3847 -- : BFD_RELOC_I370_D12 3848 IBM 370/390 relocations 3849 3850 -- : BFD_RELOC_CTOR 3851 The type of reloc used to build a constructor table - at the moment 3852 probably a 32 bit wide absolute relocation, but the target can 3853 choose. It generally does map to one of the other relocation 3854 types. 3855 3856 -- : BFD_RELOC_ARM_PCREL_BRANCH 3857 ARM 26 bit pc-relative branch. The lowest two bits must be zero 3858 and are not stored in the instruction. 3859 3860 -- : BFD_RELOC_ARM_PCREL_BLX 3861 ARM 26 bit pc-relative branch. The lowest bit must be zero and is 3862 not stored in the instruction. The 2nd lowest bit comes from a 1 3863 bit field in the instruction. 3864 3865 -- : BFD_RELOC_THUMB_PCREL_BLX 3866 Thumb 22 bit pc-relative branch. The lowest bit must be zero and 3867 is not stored in the instruction. The 2nd lowest bit comes from a 3868 1 bit field in the instruction. 3869 3870 -- : BFD_RELOC_ARM_PCREL_CALL 3871 ARM 26-bit pc-relative branch for an unconditional BL or BLX 3872 instruction. 3873 3874 -- : BFD_RELOC_ARM_PCREL_JUMP 3875 ARM 26-bit pc-relative branch for B or conditional BL instruction. 3876 3877 -- : BFD_RELOC_THUMB_PCREL_BRANCH7 3878 -- : BFD_RELOC_THUMB_PCREL_BRANCH9 3879 -- : BFD_RELOC_THUMB_PCREL_BRANCH12 3880 -- : BFD_RELOC_THUMB_PCREL_BRANCH20 3881 -- : BFD_RELOC_THUMB_PCREL_BRANCH23 3882 -- : BFD_RELOC_THUMB_PCREL_BRANCH25 3883 Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches. The 3884 lowest bit must be zero and is not stored in the instruction. 3885 Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an 3886 "nn" one smaller in all cases. Note further that BRANCH23 3887 corresponds to R_ARM_THM_CALL. 3888 3889 -- : BFD_RELOC_ARM_OFFSET_IMM 3890 12-bit immediate offset, used in ARM-format ldr and str 3891 instructions. 3892 3893 -- : BFD_RELOC_ARM_THUMB_OFFSET 3894 5-bit immediate offset, used in Thumb-format ldr and str 3895 instructions. 3896 3897 -- : BFD_RELOC_ARM_TARGET1 3898 Pc-relative or absolute relocation depending on target. Used for 3899 entries in .init_array sections. 3900 3901 -- : BFD_RELOC_ARM_ROSEGREL32 3902 Read-only segment base relative address. 3903 3904 -- : BFD_RELOC_ARM_SBREL32 3905 Data segment base relative address. 3906 3907 -- : BFD_RELOC_ARM_TARGET2 3908 This reloc is used for references to RTTI data from exception 3909 handling tables. The actual definition depends on the target. It 3910 may be a pc-relative or some form of GOT-indirect relocation. 3911 3912 -- : BFD_RELOC_ARM_PREL31 3913 31-bit PC relative address. 3914 3915 -- : BFD_RELOC_ARM_MOVW 3916 -- : BFD_RELOC_ARM_MOVT 3917 -- : BFD_RELOC_ARM_MOVW_PCREL 3918 -- : BFD_RELOC_ARM_MOVT_PCREL 3919 -- : BFD_RELOC_ARM_THUMB_MOVW 3920 -- : BFD_RELOC_ARM_THUMB_MOVT 3921 -- : BFD_RELOC_ARM_THUMB_MOVW_PCREL 3922 -- : BFD_RELOC_ARM_THUMB_MOVT_PCREL 3923 Low and High halfword relocations for MOVW and MOVT instructions. 3924 3925 -- : BFD_RELOC_ARM_JUMP_SLOT 3926 -- : BFD_RELOC_ARM_GLOB_DAT 3927 -- : BFD_RELOC_ARM_GOT32 3928 -- : BFD_RELOC_ARM_PLT32 3929 -- : BFD_RELOC_ARM_RELATIVE 3930 -- : BFD_RELOC_ARM_GOTOFF 3931 -- : BFD_RELOC_ARM_GOTPC 3932 Relocations for setting up GOTs and PLTs for shared libraries. 3933 3934 -- : BFD_RELOC_ARM_TLS_GD32 3935 -- : BFD_RELOC_ARM_TLS_LDO32 3936 -- : BFD_RELOC_ARM_TLS_LDM32 3937 -- : BFD_RELOC_ARM_TLS_DTPOFF32 3938 -- : BFD_RELOC_ARM_TLS_DTPMOD32 3939 -- : BFD_RELOC_ARM_TLS_TPOFF32 3940 -- : BFD_RELOC_ARM_TLS_IE32 3941 -- : BFD_RELOC_ARM_TLS_LE32 3942 ARM thread-local storage relocations. 3943 3944 -- : BFD_RELOC_ARM_ALU_PC_G0_NC 3945 -- : BFD_RELOC_ARM_ALU_PC_G0 3946 -- : BFD_RELOC_ARM_ALU_PC_G1_NC 3947 -- : BFD_RELOC_ARM_ALU_PC_G1 3948 -- : BFD_RELOC_ARM_ALU_PC_G2 3949 -- : BFD_RELOC_ARM_LDR_PC_G0 3950 -- : BFD_RELOC_ARM_LDR_PC_G1 3951 -- : BFD_RELOC_ARM_LDR_PC_G2 3952 -- : BFD_RELOC_ARM_LDRS_PC_G0 3953 -- : BFD_RELOC_ARM_LDRS_PC_G1 3954 -- : BFD_RELOC_ARM_LDRS_PC_G2 3955 -- : BFD_RELOC_ARM_LDC_PC_G0 3956 -- : BFD_RELOC_ARM_LDC_PC_G1 3957 -- : BFD_RELOC_ARM_LDC_PC_G2 3958 -- : BFD_RELOC_ARM_ALU_SB_G0_NC 3959 -- : BFD_RELOC_ARM_ALU_SB_G0 3960 -- : BFD_RELOC_ARM_ALU_SB_G1_NC 3961 -- : BFD_RELOC_ARM_ALU_SB_G1 3962 -- : BFD_RELOC_ARM_ALU_SB_G2 3963 -- : BFD_RELOC_ARM_LDR_SB_G0 3964 -- : BFD_RELOC_ARM_LDR_SB_G1 3965 -- : BFD_RELOC_ARM_LDR_SB_G2 3966 -- : BFD_RELOC_ARM_LDRS_SB_G0 3967 -- : BFD_RELOC_ARM_LDRS_SB_G1 3968 -- : BFD_RELOC_ARM_LDRS_SB_G2 3969 -- : BFD_RELOC_ARM_LDC_SB_G0 3970 -- : BFD_RELOC_ARM_LDC_SB_G1 3971 -- : BFD_RELOC_ARM_LDC_SB_G2 3972 ARM group relocations. 3973 3974 -- : BFD_RELOC_ARM_V4BX 3975 Annotation of BX instructions. 3976 3977 -- : BFD_RELOC_ARM_IMMEDIATE 3978 -- : BFD_RELOC_ARM_ADRL_IMMEDIATE 3979 -- : BFD_RELOC_ARM_T32_IMMEDIATE 3980 -- : BFD_RELOC_ARM_T32_ADD_IMM 3981 -- : BFD_RELOC_ARM_T32_IMM12 3982 -- : BFD_RELOC_ARM_T32_ADD_PC12 3983 -- : BFD_RELOC_ARM_SHIFT_IMM 3984 -- : BFD_RELOC_ARM_SMC 3985 -- : BFD_RELOC_ARM_SWI 3986 -- : BFD_RELOC_ARM_MULTI 3987 -- : BFD_RELOC_ARM_CP_OFF_IMM 3988 -- : BFD_RELOC_ARM_CP_OFF_IMM_S2 3989 -- : BFD_RELOC_ARM_T32_CP_OFF_IMM 3990 -- : BFD_RELOC_ARM_T32_CP_OFF_IMM_S2 3991 -- : BFD_RELOC_ARM_ADR_IMM 3992 -- : BFD_RELOC_ARM_LDR_IMM 3993 -- : BFD_RELOC_ARM_LITERAL 3994 -- : BFD_RELOC_ARM_IN_POOL 3995 -- : BFD_RELOC_ARM_OFFSET_IMM8 3996 -- : BFD_RELOC_ARM_T32_OFFSET_U8 3997 -- : BFD_RELOC_ARM_T32_OFFSET_IMM 3998 -- : BFD_RELOC_ARM_HWLITERAL 3999 -- : BFD_RELOC_ARM_THUMB_ADD 4000 -- : BFD_RELOC_ARM_THUMB_IMM 4001 -- : BFD_RELOC_ARM_THUMB_SHIFT 4002 These relocs are only used within the ARM assembler. They are not 4003 (at present) written to any object files. 4004 4005 -- : BFD_RELOC_SH_PCDISP8BY2 4006 -- : BFD_RELOC_SH_PCDISP12BY2 4007 -- : BFD_RELOC_SH_IMM3 4008 -- : BFD_RELOC_SH_IMM3U 4009 -- : BFD_RELOC_SH_DISP12 4010 -- : BFD_RELOC_SH_DISP12BY2 4011 -- : BFD_RELOC_SH_DISP12BY4 4012 -- : BFD_RELOC_SH_DISP12BY8 4013 -- : BFD_RELOC_SH_DISP20 4014 -- : BFD_RELOC_SH_DISP20BY8 4015 -- : BFD_RELOC_SH_IMM4 4016 -- : BFD_RELOC_SH_IMM4BY2 4017 -- : BFD_RELOC_SH_IMM4BY4 4018 -- : BFD_RELOC_SH_IMM8 4019 -- : BFD_RELOC_SH_IMM8BY2 4020 -- : BFD_RELOC_SH_IMM8BY4 4021 -- : BFD_RELOC_SH_PCRELIMM8BY2 4022 -- : BFD_RELOC_SH_PCRELIMM8BY4 4023 -- : BFD_RELOC_SH_SWITCH16 4024 -- : BFD_RELOC_SH_SWITCH32 4025 -- : BFD_RELOC_SH_USES 4026 -- : BFD_RELOC_SH_COUNT 4027 -- : BFD_RELOC_SH_ALIGN 4028 -- : BFD_RELOC_SH_CODE 4029 -- : BFD_RELOC_SH_DATA 4030 -- : BFD_RELOC_SH_LABEL 4031 -- : BFD_RELOC_SH_LOOP_START 4032 -- : BFD_RELOC_SH_LOOP_END 4033 -- : BFD_RELOC_SH_COPY 4034 -- : BFD_RELOC_SH_GLOB_DAT 4035 -- : BFD_RELOC_SH_JMP_SLOT 4036 -- : BFD_RELOC_SH_RELATIVE 4037 -- : BFD_RELOC_SH_GOTPC 4038 -- : BFD_RELOC_SH_GOT_LOW16 4039 -- : BFD_RELOC_SH_GOT_MEDLOW16 4040 -- : BFD_RELOC_SH_GOT_MEDHI16 4041 -- : BFD_RELOC_SH_GOT_HI16 4042 -- : BFD_RELOC_SH_GOTPLT_LOW16 4043 -- : BFD_RELOC_SH_GOTPLT_MEDLOW16 4044 -- : BFD_RELOC_SH_GOTPLT_MEDHI16 4045 -- : BFD_RELOC_SH_GOTPLT_HI16 4046 -- : BFD_RELOC_SH_PLT_LOW16 4047 -- : BFD_RELOC_SH_PLT_MEDLOW16 4048 -- : BFD_RELOC_SH_PLT_MEDHI16 4049 -- : BFD_RELOC_SH_PLT_HI16 4050 -- : BFD_RELOC_SH_GOTOFF_LOW16 4051 -- : BFD_RELOC_SH_GOTOFF_MEDLOW16 4052 -- : BFD_RELOC_SH_GOTOFF_MEDHI16 4053 -- : BFD_RELOC_SH_GOTOFF_HI16 4054 -- : BFD_RELOC_SH_GOTPC_LOW16 4055 -- : BFD_RELOC_SH_GOTPC_MEDLOW16 4056 -- : BFD_RELOC_SH_GOTPC_MEDHI16 4057 -- : BFD_RELOC_SH_GOTPC_HI16 4058 -- : BFD_RELOC_SH_COPY64 4059 -- : BFD_RELOC_SH_GLOB_DAT64 4060 -- : BFD_RELOC_SH_JMP_SLOT64 4061 -- : BFD_RELOC_SH_RELATIVE64 4062 -- : BFD_RELOC_SH_GOT10BY4 4063 -- : BFD_RELOC_SH_GOT10BY8 4064 -- : BFD_RELOC_SH_GOTPLT10BY4 4065 -- : BFD_RELOC_SH_GOTPLT10BY8 4066 -- : BFD_RELOC_SH_GOTPLT32 4067 -- : BFD_RELOC_SH_SHMEDIA_CODE 4068 -- : BFD_RELOC_SH_IMMU5 4069 -- : BFD_RELOC_SH_IMMS6 4070 -- : BFD_RELOC_SH_IMMS6BY32 4071 -- : BFD_RELOC_SH_IMMU6 4072 -- : BFD_RELOC_SH_IMMS10 4073 -- : BFD_RELOC_SH_IMMS10BY2 4074 -- : BFD_RELOC_SH_IMMS10BY4 4075 -- : BFD_RELOC_SH_IMMS10BY8 4076 -- : BFD_RELOC_SH_IMMS16 4077 -- : BFD_RELOC_SH_IMMU16 4078 -- : BFD_RELOC_SH_IMM_LOW16 4079 -- : BFD_RELOC_SH_IMM_LOW16_PCREL 4080 -- : BFD_RELOC_SH_IMM_MEDLOW16 4081 -- : BFD_RELOC_SH_IMM_MEDLOW16_PCREL 4082 -- : BFD_RELOC_SH_IMM_MEDHI16 4083 -- : BFD_RELOC_SH_IMM_MEDHI16_PCREL 4084 -- : BFD_RELOC_SH_IMM_HI16 4085 -- : BFD_RELOC_SH_IMM_HI16_PCREL 4086 -- : BFD_RELOC_SH_PT_16 4087 -- : BFD_RELOC_SH_TLS_GD_32 4088 -- : BFD_RELOC_SH_TLS_LD_32 4089 -- : BFD_RELOC_SH_TLS_LDO_32 4090 -- : BFD_RELOC_SH_TLS_IE_32 4091 -- : BFD_RELOC_SH_TLS_LE_32 4092 -- : BFD_RELOC_SH_TLS_DTPMOD32 4093 -- : BFD_RELOC_SH_TLS_DTPOFF32 4094 -- : BFD_RELOC_SH_TLS_TPOFF32 4095 Renesas / SuperH SH relocs. Not all of these appear in object 4096 files. 4097 4098 -- : BFD_RELOC_ARC_B22_PCREL 4099 ARC Cores relocs. ARC 22 bit pc-relative branch. The lowest two 4100 bits must be zero and are not stored in the instruction. The high 4101 20 bits are installed in bits 26 through 7 of the instruction. 4102 4103 -- : BFD_RELOC_ARC_B26 4104 ARC 26 bit absolute branch. The lowest two bits must be zero and 4105 are not stored in the instruction. The high 24 bits are installed 4106 in bits 23 through 0. 4107 4108 -- : BFD_RELOC_BFIN_16_IMM 4109 ADI Blackfin 16 bit immediate absolute reloc. 4110 4111 -- : BFD_RELOC_BFIN_16_HIGH 4112 ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. 4113 4114 -- : BFD_RELOC_BFIN_4_PCREL 4115 ADI Blackfin 'a' part of LSETUP. 4116 4117 -- : BFD_RELOC_BFIN_5_PCREL 4118 ADI Blackfin. 4119 4120 -- : BFD_RELOC_BFIN_16_LOW 4121 ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. 4122 4123 -- : BFD_RELOC_BFIN_10_PCREL 4124 ADI Blackfin. 4125 4126 -- : BFD_RELOC_BFIN_11_PCREL 4127 ADI Blackfin 'b' part of LSETUP. 4128 4129 -- : BFD_RELOC_BFIN_12_PCREL_JUMP 4130 ADI Blackfin. 4131 4132 -- : BFD_RELOC_BFIN_12_PCREL_JUMP_S 4133 ADI Blackfin Short jump, pcrel. 4134 4135 -- : BFD_RELOC_BFIN_24_PCREL_CALL_X 4136 ADI Blackfin Call.x not implemented. 4137 4138 -- : BFD_RELOC_BFIN_24_PCREL_JUMP_L 4139 ADI Blackfin Long Jump pcrel. 4140 4141 -- : BFD_RELOC_BFIN_GOT17M4 4142 -- : BFD_RELOC_BFIN_GOTHI 4143 -- : BFD_RELOC_BFIN_GOTLO 4144 -- : BFD_RELOC_BFIN_FUNCDESC 4145 -- : BFD_RELOC_BFIN_FUNCDESC_GOT17M4 4146 -- : BFD_RELOC_BFIN_FUNCDESC_GOTHI 4147 -- : BFD_RELOC_BFIN_FUNCDESC_GOTLO 4148 -- : BFD_RELOC_BFIN_FUNCDESC_VALUE 4149 -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4 4150 -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI 4151 -- : BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO 4152 -- : BFD_RELOC_BFIN_GOTOFF17M4 4153 -- : BFD_RELOC_BFIN_GOTOFFHI 4154 -- : BFD_RELOC_BFIN_GOTOFFLO 4155 ADI Blackfin FD-PIC relocations. 4156 4157 -- : BFD_RELOC_BFIN_GOT 4158 ADI Blackfin GOT relocation. 4159 4160 -- : BFD_RELOC_BFIN_PLTPC 4161 ADI Blackfin PLTPC relocation. 4162 4163 -- : BFD_ARELOC_BFIN_PUSH 4164 ADI Blackfin arithmetic relocation. 4165 4166 -- : BFD_ARELOC_BFIN_CONST 4167 ADI Blackfin arithmetic relocation. 4168 4169 -- : BFD_ARELOC_BFIN_ADD 4170 ADI Blackfin arithmetic relocation. 4171 4172 -- : BFD_ARELOC_BFIN_SUB 4173 ADI Blackfin arithmetic relocation. 4174 4175 -- : BFD_ARELOC_BFIN_MULT 4176 ADI Blackfin arithmetic relocation. 4177 4178 -- : BFD_ARELOC_BFIN_DIV 4179 ADI Blackfin arithmetic relocation. 4180 4181 -- : BFD_ARELOC_BFIN_MOD 4182 ADI Blackfin arithmetic relocation. 4183 4184 -- : BFD_ARELOC_BFIN_LSHIFT 4185 ADI Blackfin arithmetic relocation. 4186 4187 -- : BFD_ARELOC_BFIN_RSHIFT 4188 ADI Blackfin arithmetic relocation. 4189 4190 -- : BFD_ARELOC_BFIN_AND 4191 ADI Blackfin arithmetic relocation. 4192 4193 -- : BFD_ARELOC_BFIN_OR 4194 ADI Blackfin arithmetic relocation. 4195 4196 -- : BFD_ARELOC_BFIN_XOR 4197 ADI Blackfin arithmetic relocation. 4198 4199 -- : BFD_ARELOC_BFIN_LAND 4200 ADI Blackfin arithmetic relocation. 4201 4202 -- : BFD_ARELOC_BFIN_LOR 4203 ADI Blackfin arithmetic relocation. 4204 4205 -- : BFD_ARELOC_BFIN_LEN 4206 ADI Blackfin arithmetic relocation. 4207 4208 -- : BFD_ARELOC_BFIN_NEG 4209 ADI Blackfin arithmetic relocation. 4210 4211 -- : BFD_ARELOC_BFIN_COMP 4212 ADI Blackfin arithmetic relocation. 4213 4214 -- : BFD_ARELOC_BFIN_PAGE 4215 ADI Blackfin arithmetic relocation. 4216 4217 -- : BFD_ARELOC_BFIN_HWPAGE 4218 ADI Blackfin arithmetic relocation. 4219 4220 -- : BFD_ARELOC_BFIN_ADDR 4221 ADI Blackfin arithmetic relocation. 4222 4223 -- : BFD_RELOC_D10V_10_PCREL_R 4224 Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2 4225 bits assumed to be 0. 4226 4227 -- : BFD_RELOC_D10V_10_PCREL_L 4228 Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2 4229 bits assumed to be 0. This is the same as the previous reloc 4230 except it is in the left container, i.e., shifted left 15 bits. 4231 4232 -- : BFD_RELOC_D10V_18 4233 This is an 18-bit reloc with the right 2 bits assumed to be 0. 4234 4235 -- : BFD_RELOC_D10V_18_PCREL 4236 This is an 18-bit reloc with the right 2 bits assumed to be 0. 4237 4238 -- : BFD_RELOC_D30V_6 4239 Mitsubishi D30V relocs. This is a 6-bit absolute reloc. 4240 4241 -- : BFD_RELOC_D30V_9_PCREL 4242 This is a 6-bit pc-relative reloc with the right 3 bits assumed to 4243 be 0. 4244 4245 -- : BFD_RELOC_D30V_9_PCREL_R 4246 This is a 6-bit pc-relative reloc with the right 3 bits assumed to 4247 be 0. Same as the previous reloc but on the right side of the 4248 container. 4249 4250 -- : BFD_RELOC_D30V_15 4251 This is a 12-bit absolute reloc with the right 3 bitsassumed to be 4252 0. 4253 4254 -- : BFD_RELOC_D30V_15_PCREL 4255 This is a 12-bit pc-relative reloc with the right 3 bits assumed 4256 to be 0. 4257 4258 -- : BFD_RELOC_D30V_15_PCREL_R 4259 This is a 12-bit pc-relative reloc with the right 3 bits assumed 4260 to be 0. Same as the previous reloc but on the right side of the 4261 container. 4262 4263 -- : BFD_RELOC_D30V_21 4264 This is an 18-bit absolute reloc with the right 3 bits assumed to 4265 be 0. 4266 4267 -- : BFD_RELOC_D30V_21_PCREL 4268 This is an 18-bit pc-relative reloc with the right 3 bits assumed 4269 to be 0. 4270 4271 -- : BFD_RELOC_D30V_21_PCREL_R 4272 This is an 18-bit pc-relative reloc with the right 3 bits assumed 4273 to be 0. Same as the previous reloc but on the right side of the 4274 container. 4275 4276 -- : BFD_RELOC_D30V_32 4277 This is a 32-bit absolute reloc. 4278 4279 -- : BFD_RELOC_D30V_32_PCREL 4280 This is a 32-bit pc-relative reloc. 4281 4282 -- : BFD_RELOC_DLX_HI16_S 4283 DLX relocs 4284 4285 -- : BFD_RELOC_DLX_LO16 4286 DLX relocs 4287 4288 -- : BFD_RELOC_DLX_JMP26 4289 DLX relocs 4290 4291 -- : BFD_RELOC_M32C_HI8 4292 -- : BFD_RELOC_M32C_RL_JUMP 4293 -- : BFD_RELOC_M32C_RL_1ADDR 4294 -- : BFD_RELOC_M32C_RL_2ADDR 4295 Renesas M16C/M32C Relocations. 4296 4297 -- : BFD_RELOC_M32R_24 4298 Renesas M32R (formerly Mitsubishi M32R) relocs. This is a 24 bit 4299 absolute address. 4300 4301 -- : BFD_RELOC_M32R_10_PCREL 4302 This is a 10-bit pc-relative reloc with the right 2 bits assumed 4303 to be 0. 4304 4305 -- : BFD_RELOC_M32R_18_PCREL 4306 This is an 18-bit reloc with the right 2 bits assumed to be 0. 4307 4308 -- : BFD_RELOC_M32R_26_PCREL 4309 This is a 26-bit reloc with the right 2 bits assumed to be 0. 4310 4311 -- : BFD_RELOC_M32R_HI16_ULO 4312 This is a 16-bit reloc containing the high 16 bits of an address 4313 used when the lower 16 bits are treated as unsigned. 4314 4315 -- : BFD_RELOC_M32R_HI16_SLO 4316 This is a 16-bit reloc containing the high 16 bits of an address 4317 used when the lower 16 bits are treated as signed. 4318 4319 -- : BFD_RELOC_M32R_LO16 4320 This is a 16-bit reloc containing the lower 16 bits of an address. 4321 4322 -- : BFD_RELOC_M32R_SDA16 4323 This is a 16-bit reloc containing the small data area offset for 4324 use in add3, load, and store instructions. 4325 4326 -- : BFD_RELOC_M32R_GOT24 4327 -- : BFD_RELOC_M32R_26_PLTREL 4328 -- : BFD_RELOC_M32R_COPY 4329 -- : BFD_RELOC_M32R_GLOB_DAT 4330 -- : BFD_RELOC_M32R_JMP_SLOT 4331 -- : BFD_RELOC_M32R_RELATIVE 4332 -- : BFD_RELOC_M32R_GOTOFF 4333 -- : BFD_RELOC_M32R_GOTOFF_HI_ULO 4334 -- : BFD_RELOC_M32R_GOTOFF_HI_SLO 4335 -- : BFD_RELOC_M32R_GOTOFF_LO 4336 -- : BFD_RELOC_M32R_GOTPC24 4337 -- : BFD_RELOC_M32R_GOT16_HI_ULO 4338 -- : BFD_RELOC_M32R_GOT16_HI_SLO 4339 -- : BFD_RELOC_M32R_GOT16_LO 4340 -- : BFD_RELOC_M32R_GOTPC_HI_ULO 4341 -- : BFD_RELOC_M32R_GOTPC_HI_SLO 4342 -- : BFD_RELOC_M32R_GOTPC_LO 4343 For PIC. 4344 4345 -- : BFD_RELOC_V850_9_PCREL 4346 This is a 9-bit reloc 4347 4348 -- : BFD_RELOC_V850_22_PCREL 4349 This is a 22-bit reloc 4350 4351 -- : BFD_RELOC_V850_SDA_16_16_OFFSET 4352 This is a 16 bit offset from the short data area pointer. 4353 4354 -- : BFD_RELOC_V850_SDA_15_16_OFFSET 4355 This is a 16 bit offset (of which only 15 bits are used) from the 4356 short data area pointer. 4357 4358 -- : BFD_RELOC_V850_ZDA_16_16_OFFSET 4359 This is a 16 bit offset from the zero data area pointer. 4360 4361 -- : BFD_RELOC_V850_ZDA_15_16_OFFSET 4362 This is a 16 bit offset (of which only 15 bits are used) from the 4363 zero data area pointer. 4364 4365 -- : BFD_RELOC_V850_TDA_6_8_OFFSET 4366 This is an 8 bit offset (of which only 6 bits are used) from the 4367 tiny data area pointer. 4368 4369 -- : BFD_RELOC_V850_TDA_7_8_OFFSET 4370 This is an 8bit offset (of which only 7 bits are used) from the 4371 tiny data area pointer. 4372 4373 -- : BFD_RELOC_V850_TDA_7_7_OFFSET 4374 This is a 7 bit offset from the tiny data area pointer. 4375 4376 -- : BFD_RELOC_V850_TDA_16_16_OFFSET 4377 This is a 16 bit offset from the tiny data area pointer. 4378 4379 -- : BFD_RELOC_V850_TDA_4_5_OFFSET 4380 This is a 5 bit offset (of which only 4 bits are used) from the 4381 tiny data area pointer. 4382 4383 -- : BFD_RELOC_V850_TDA_4_4_OFFSET 4384 This is a 4 bit offset from the tiny data area pointer. 4385 4386 -- : BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET 4387 This is a 16 bit offset from the short data area pointer, with the 4388 bits placed non-contiguously in the instruction. 4389 4390 -- : BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET 4391 This is a 16 bit offset from the zero data area pointer, with the 4392 bits placed non-contiguously in the instruction. 4393 4394 -- : BFD_RELOC_V850_CALLT_6_7_OFFSET 4395 This is a 6 bit offset from the call table base pointer. 4396 4397 -- : BFD_RELOC_V850_CALLT_16_16_OFFSET 4398 This is a 16 bit offset from the call table base pointer. 4399 4400 -- : BFD_RELOC_V850_LONGCALL 4401 Used for relaxing indirect function calls. 4402 4403 -- : BFD_RELOC_V850_LONGJUMP 4404 Used for relaxing indirect jumps. 4405 4406 -- : BFD_RELOC_V850_ALIGN 4407 Used to maintain alignment whilst relaxing. 4408 4409 -- : BFD_RELOC_V850_LO16_SPLIT_OFFSET 4410 This is a variation of BFD_RELOC_LO16 that can be used in v850e 4411 ld.bu instructions. 4412 4413 -- : BFD_RELOC_MN10300_32_PCREL 4414 This is a 32bit pcrel reloc for the mn10300, offset by two bytes 4415 in the instruction. 4416 4417 -- : BFD_RELOC_MN10300_16_PCREL 4418 This is a 16bit pcrel reloc for the mn10300, offset by two bytes 4419 in the instruction. 4420 4421 -- : BFD_RELOC_TIC30_LDP 4422 This is a 8bit DP reloc for the tms320c30, where the most 4423 significant 8 bits of a 24 bit word are placed into the least 4424 significant 8 bits of the opcode. 4425 4426 -- : BFD_RELOC_TIC54X_PARTLS7 4427 This is a 7bit reloc for the tms320c54x, where the least 4428 significant 7 bits of a 16 bit word are placed into the least 4429 significant 7 bits of the opcode. 4430 4431 -- : BFD_RELOC_TIC54X_PARTMS9 4432 This is a 9bit DP reloc for the tms320c54x, where the most 4433 significant 9 bits of a 16 bit word are placed into the least 4434 significant 9 bits of the opcode. 4435 4436 -- : BFD_RELOC_TIC54X_23 4437 This is an extended address 23-bit reloc for the tms320c54x. 4438 4439 -- : BFD_RELOC_TIC54X_16_OF_23 4440 This is a 16-bit reloc for the tms320c54x, where the least 4441 significant 16 bits of a 23-bit extended address are placed into 4442 the opcode. 4443 4444 -- : BFD_RELOC_TIC54X_MS7_OF_23 4445 This is a reloc for the tms320c54x, where the most significant 7 4446 bits of a 23-bit extended address are placed into the opcode. 4447 4448 -- : BFD_RELOC_FR30_48 4449 This is a 48 bit reloc for the FR30 that stores 32 bits. 4450 4451 -- : BFD_RELOC_FR30_20 4452 This is a 32 bit reloc for the FR30 that stores 20 bits split up 4453 into two sections. 4454 4455 -- : BFD_RELOC_FR30_6_IN_4 4456 This is a 16 bit reloc for the FR30 that stores a 6 bit word 4457 offset in 4 bits. 4458 4459 -- : BFD_RELOC_FR30_8_IN_8 4460 This is a 16 bit reloc for the FR30 that stores an 8 bit byte 4461 offset into 8 bits. 4462 4463 -- : BFD_RELOC_FR30_9_IN_8 4464 This is a 16 bit reloc for the FR30 that stores a 9 bit short 4465 offset into 8 bits. 4466 4467 -- : BFD_RELOC_FR30_10_IN_8 4468 This is a 16 bit reloc for the FR30 that stores a 10 bit word 4469 offset into 8 bits. 4470 4471 -- : BFD_RELOC_FR30_9_PCREL 4472 This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative 4473 short offset into 8 bits. 4474 4475 -- : BFD_RELOC_FR30_12_PCREL 4476 This is a 16 bit reloc for the FR30 that stores a 12 bit pc 4477 relative short offset into 11 bits. 4478 4479 -- : BFD_RELOC_MCORE_PCREL_IMM8BY4 4480 -- : BFD_RELOC_MCORE_PCREL_IMM11BY2 4481 -- : BFD_RELOC_MCORE_PCREL_IMM4BY2 4482 -- : BFD_RELOC_MCORE_PCREL_32 4483 -- : BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2 4484 -- : BFD_RELOC_MCORE_RVA 4485 Motorola Mcore relocations. 4486 4487 -- : BFD_RELOC_MEP_8 4488 -- : BFD_RELOC_MEP_16 4489 -- : BFD_RELOC_MEP_32 4490 -- : BFD_RELOC_MEP_PCREL8A2 4491 -- : BFD_RELOC_MEP_PCREL12A2 4492 -- : BFD_RELOC_MEP_PCREL17A2 4493 -- : BFD_RELOC_MEP_PCREL24A2 4494 -- : BFD_RELOC_MEP_PCABS24A2 4495 -- : BFD_RELOC_MEP_LOW16 4496 -- : BFD_RELOC_MEP_HI16U 4497 -- : BFD_RELOC_MEP_HI16S 4498 -- : BFD_RELOC_MEP_GPREL 4499 -- : BFD_RELOC_MEP_TPREL 4500 -- : BFD_RELOC_MEP_TPREL7 4501 -- : BFD_RELOC_MEP_TPREL7A2 4502 -- : BFD_RELOC_MEP_TPREL7A4 4503 -- : BFD_RELOC_MEP_UIMM24 4504 -- : BFD_RELOC_MEP_ADDR24A4 4505 -- : BFD_RELOC_MEP_GNU_VTINHERIT 4506 -- : BFD_RELOC_MEP_GNU_VTENTRY 4507 Toshiba Media Processor Relocations. 4508 4509 -- : BFD_RELOC_MMIX_GETA 4510 -- : BFD_RELOC_MMIX_GETA_1 4511 -- : BFD_RELOC_MMIX_GETA_2 4512 -- : BFD_RELOC_MMIX_GETA_3 4513 These are relocations for the GETA instruction. 4514 4515 -- : BFD_RELOC_MMIX_CBRANCH 4516 -- : BFD_RELOC_MMIX_CBRANCH_J 4517 -- : BFD_RELOC_MMIX_CBRANCH_1 4518 -- : BFD_RELOC_MMIX_CBRANCH_2 4519 -- : BFD_RELOC_MMIX_CBRANCH_3 4520 These are relocations for a conditional branch instruction. 4521 4522 -- : BFD_RELOC_MMIX_PUSHJ 4523 -- : BFD_RELOC_MMIX_PUSHJ_1 4524 -- : BFD_RELOC_MMIX_PUSHJ_2 4525 -- : BFD_RELOC_MMIX_PUSHJ_3 4526 -- : BFD_RELOC_MMIX_PUSHJ_STUBBABLE 4527 These are relocations for the PUSHJ instruction. 4528 4529 -- : BFD_RELOC_MMIX_JMP 4530 -- : BFD_RELOC_MMIX_JMP_1 4531 -- : BFD_RELOC_MMIX_JMP_2 4532 -- : BFD_RELOC_MMIX_JMP_3 4533 These are relocations for the JMP instruction. 4534 4535 -- : BFD_RELOC_MMIX_ADDR19 4536 This is a relocation for a relative address as in a GETA 4537 instruction or a branch. 4538 4539 -- : BFD_RELOC_MMIX_ADDR27 4540 This is a relocation for a relative address as in a JMP 4541 instruction. 4542 4543 -- : BFD_RELOC_MMIX_REG_OR_BYTE 4544 This is a relocation for an instruction field that may be a general 4545 register or a value 0..255. 4546 4547 -- : BFD_RELOC_MMIX_REG 4548 This is a relocation for an instruction field that may be a general 4549 register. 4550 4551 -- : BFD_RELOC_MMIX_BASE_PLUS_OFFSET 4552 This is a relocation for two instruction fields holding a register 4553 and an offset, the equivalent of the relocation. 4554 4555 -- : BFD_RELOC_MMIX_LOCAL 4556 This relocation is an assertion that the expression is not 4557 allocated as a global register. It does not modify contents. 4558 4559 -- : BFD_RELOC_AVR_7_PCREL 4560 This is a 16 bit reloc for the AVR that stores 8 bit pc relative 4561 short offset into 7 bits. 4562 4563 -- : BFD_RELOC_AVR_13_PCREL 4564 This is a 16 bit reloc for the AVR that stores 13 bit pc relative 4565 short offset into 12 bits. 4566 4567 -- : BFD_RELOC_AVR_16_PM 4568 This is a 16 bit reloc for the AVR that stores 17 bit value 4569 (usually program memory address) into 16 bits. 4570 4571 -- : BFD_RELOC_AVR_LO8_LDI 4572 This is a 16 bit reloc for the AVR that stores 8 bit value (usually 4573 data memory address) into 8 bit immediate value of LDI insn. 4574 4575 -- : BFD_RELOC_AVR_HI8_LDI 4576 This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 4577 bit of data memory address) into 8 bit immediate value of LDI insn. 4578 4579 -- : BFD_RELOC_AVR_HH8_LDI 4580 This is a 16 bit reloc for the AVR that stores 8 bit value (most 4581 high 8 bit of program memory address) into 8 bit immediate value 4582 of LDI insn. 4583 4584 -- : BFD_RELOC_AVR_MS8_LDI 4585 This is a 16 bit reloc for the AVR that stores 8 bit value (most 4586 high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn. 4587 4588 -- : BFD_RELOC_AVR_LO8_LDI_NEG 4589 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4590 (usually data memory address) into 8 bit immediate value of SUBI 4591 insn. 4592 4593 -- : BFD_RELOC_AVR_HI8_LDI_NEG 4594 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4595 (high 8 bit of data memory address) into 8 bit immediate value of 4596 SUBI insn. 4597 4598 -- : BFD_RELOC_AVR_HH8_LDI_NEG 4599 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4600 (most high 8 bit of program memory address) into 8 bit immediate 4601 value of LDI or SUBI insn. 4602 4603 -- : BFD_RELOC_AVR_MS8_LDI_NEG 4604 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4605 (msb of 32 bit value) into 8 bit immediate value of LDI insn. 4606 4607 -- : BFD_RELOC_AVR_LO8_LDI_PM 4608 This is a 16 bit reloc for the AVR that stores 8 bit value (usually 4609 command address) into 8 bit immediate value of LDI insn. 4610 4611 -- : BFD_RELOC_AVR_LO8_LDI_GS 4612 This is a 16 bit reloc for the AVR that stores 8 bit value 4613 (command address) into 8 bit immediate value of LDI insn. If the 4614 address is beyond the 128k boundary, the linker inserts a jump 4615 stub for this reloc in the lower 128k. 4616 4617 -- : BFD_RELOC_AVR_HI8_LDI_PM 4618 This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 4619 bit of command address) into 8 bit immediate value of LDI insn. 4620 4621 -- : BFD_RELOC_AVR_HI8_LDI_GS 4622 This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 4623 bit of command address) into 8 bit immediate value of LDI insn. 4624 If the address is beyond the 128k boundary, the linker inserts a 4625 jump stub for this reloc below 128k. 4626 4627 -- : BFD_RELOC_AVR_HH8_LDI_PM 4628 This is a 16 bit reloc for the AVR that stores 8 bit value (most 4629 high 8 bit of command address) into 8 bit immediate value of LDI 4630 insn. 4631 4632 -- : BFD_RELOC_AVR_LO8_LDI_PM_NEG 4633 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4634 (usually command address) into 8 bit immediate value of SUBI insn. 4635 4636 -- : BFD_RELOC_AVR_HI8_LDI_PM_NEG 4637 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4638 (high 8 bit of 16 bit command address) into 8 bit immediate value 4639 of SUBI insn. 4640 4641 -- : BFD_RELOC_AVR_HH8_LDI_PM_NEG 4642 This is a 16 bit reloc for the AVR that stores negated 8 bit value 4643 (high 6 bit of 22 bit command address) into 8 bit immediate value 4644 of SUBI insn. 4645 4646 -- : BFD_RELOC_AVR_CALL 4647 This is a 32 bit reloc for the AVR that stores 23 bit value into 4648 22 bits. 4649 4650 -- : BFD_RELOC_AVR_LDI 4651 This is a 16 bit reloc for the AVR that stores all needed bits for 4652 absolute addressing with ldi with overflow check to linktime 4653 4654 -- : BFD_RELOC_AVR_6 4655 This is a 6 bit reloc for the AVR that stores offset for ldd/std 4656 instructions 4657 4658 -- : BFD_RELOC_AVR_6_ADIW 4659 This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw 4660 instructions 4661 4662 -- : BFD_RELOC_390_12 4663 Direct 12 bit. 4664 4665 -- : BFD_RELOC_390_GOT12 4666 12 bit GOT offset. 4667 4668 -- : BFD_RELOC_390_PLT32 4669 32 bit PC relative PLT address. 4670 4671 -- : BFD_RELOC_390_COPY 4672 Copy symbol at runtime. 4673 4674 -- : BFD_RELOC_390_GLOB_DAT 4675 Create GOT entry. 4676 4677 -- : BFD_RELOC_390_JMP_SLOT 4678 Create PLT entry. 4679 4680 -- : BFD_RELOC_390_RELATIVE 4681 Adjust by program base. 4682 4683 -- : BFD_RELOC_390_GOTPC 4684 32 bit PC relative offset to GOT. 4685 4686 -- : BFD_RELOC_390_GOT16 4687 16 bit GOT offset. 4688 4689 -- : BFD_RELOC_390_PC16DBL 4690 PC relative 16 bit shifted by 1. 4691 4692 -- : BFD_RELOC_390_PLT16DBL 4693 16 bit PC rel. PLT shifted by 1. 4694 4695 -- : BFD_RELOC_390_PC32DBL 4696 PC relative 32 bit shifted by 1. 4697 4698 -- : BFD_RELOC_390_PLT32DBL 4699 32 bit PC rel. PLT shifted by 1. 4700 4701 -- : BFD_RELOC_390_GOTPCDBL 4702 32 bit PC rel. GOT shifted by 1. 4703 4704 -- : BFD_RELOC_390_GOT64 4705 64 bit GOT offset. 4706 4707 -- : BFD_RELOC_390_PLT64 4708 64 bit PC relative PLT address. 4709 4710 -- : BFD_RELOC_390_GOTENT 4711 32 bit rel. offset to GOT entry. 4712 4713 -- : BFD_RELOC_390_GOTOFF64 4714 64 bit offset to GOT. 4715 4716 -- : BFD_RELOC_390_GOTPLT12 4717 12-bit offset to symbol-entry within GOT, with PLT handling. 4718 4719 -- : BFD_RELOC_390_GOTPLT16 4720 16-bit offset to symbol-entry within GOT, with PLT handling. 4721 4722 -- : BFD_RELOC_390_GOTPLT32 4723 32-bit offset to symbol-entry within GOT, with PLT handling. 4724 4725 -- : BFD_RELOC_390_GOTPLT64 4726 64-bit offset to symbol-entry within GOT, with PLT handling. 4727 4728 -- : BFD_RELOC_390_GOTPLTENT 4729 32-bit rel. offset to symbol-entry within GOT, with PLT handling. 4730 4731 -- : BFD_RELOC_390_PLTOFF16 4732 16-bit rel. offset from the GOT to a PLT entry. 4733 4734 -- : BFD_RELOC_390_PLTOFF32 4735 32-bit rel. offset from the GOT to a PLT entry. 4736 4737 -- : BFD_RELOC_390_PLTOFF64 4738 64-bit rel. offset from the GOT to a PLT entry. 4739 4740 -- : BFD_RELOC_390_TLS_LOAD 4741 -- : BFD_RELOC_390_TLS_GDCALL 4742 -- : BFD_RELOC_390_TLS_LDCALL 4743 -- : BFD_RELOC_390_TLS_GD32 4744 -- : BFD_RELOC_390_TLS_GD64 4745 -- : BFD_RELOC_390_TLS_GOTIE12 4746 -- : BFD_RELOC_390_TLS_GOTIE32 4747 -- : BFD_RELOC_390_TLS_GOTIE64 4748 -- : BFD_RELOC_390_TLS_LDM32 4749 -- : BFD_RELOC_390_TLS_LDM64 4750 -- : BFD_RELOC_390_TLS_IE32 4751 -- : BFD_RELOC_390_TLS_IE64 4752 -- : BFD_RELOC_390_TLS_IEENT 4753 -- : BFD_RELOC_390_TLS_LE32 4754 -- : BFD_RELOC_390_TLS_LE64 4755 -- : BFD_RELOC_390_TLS_LDO32 4756 -- : BFD_RELOC_390_TLS_LDO64 4757 -- : BFD_RELOC_390_TLS_DTPMOD 4758 -- : BFD_RELOC_390_TLS_DTPOFF 4759 -- : BFD_RELOC_390_TLS_TPOFF 4760 s390 tls relocations. 4761 4762 -- : BFD_RELOC_390_20 4763 -- : BFD_RELOC_390_GOT20 4764 -- : BFD_RELOC_390_GOTPLT20 4765 -- : BFD_RELOC_390_TLS_GOTIE20 4766 Long displacement extension. 4767 4768 -- : BFD_RELOC_SCORE_DUMMY1 4769 Score relocations 4770 4771 -- : BFD_RELOC_SCORE_GPREL15 4772 Low 16 bit for load/store 4773 4774 -- : BFD_RELOC_SCORE_DUMMY2 4775 -- : BFD_RELOC_SCORE_JMP 4776 This is a 24-bit reloc with the right 1 bit assumed to be 0 4777 4778 -- : BFD_RELOC_SCORE_BRANCH 4779 This is a 19-bit reloc with the right 1 bit assumed to be 0 4780 4781 -- : BFD_RELOC_SCORE16_JMP 4782 This is a 11-bit reloc with the right 1 bit assumed to be 0 4783 4784 -- : BFD_RELOC_SCORE16_BRANCH 4785 This is a 8-bit reloc with the right 1 bit assumed to be 0 4786 4787 -- : BFD_RELOC_SCORE_GOT15 4788 -- : BFD_RELOC_SCORE_GOT_LO16 4789 -- : BFD_RELOC_SCORE_CALL15 4790 -- : BFD_RELOC_SCORE_DUMMY_HI16 4791 Undocumented Score relocs 4792 4793 -- : BFD_RELOC_IP2K_FR9 4794 Scenix IP2K - 9-bit register number / data address 4795 4796 -- : BFD_RELOC_IP2K_BANK 4797 Scenix IP2K - 4-bit register/data bank number 4798 4799 -- : BFD_RELOC_IP2K_ADDR16CJP 4800 Scenix IP2K - low 13 bits of instruction word address 4801 4802 -- : BFD_RELOC_IP2K_PAGE3 4803 Scenix IP2K - high 3 bits of instruction word address 4804 4805 -- : BFD_RELOC_IP2K_LO8DATA 4806 -- : BFD_RELOC_IP2K_HI8DATA 4807 -- : BFD_RELOC_IP2K_EX8DATA 4808 Scenix IP2K - ext/low/high 8 bits of data address 4809 4810 -- : BFD_RELOC_IP2K_LO8INSN 4811 -- : BFD_RELOC_IP2K_HI8INSN 4812 Scenix IP2K - low/high 8 bits of instruction word address 4813 4814 -- : BFD_RELOC_IP2K_PC_SKIP 4815 Scenix IP2K - even/odd PC modifier to modify snb pcl.0 4816 4817 -- : BFD_RELOC_IP2K_TEXT 4818 Scenix IP2K - 16 bit word address in text section. 4819 4820 -- : BFD_RELOC_IP2K_FR_OFFSET 4821 Scenix IP2K - 7-bit sp or dp offset 4822 4823 -- : BFD_RELOC_VPE4KMATH_DATA 4824 -- : BFD_RELOC_VPE4KMATH_INSN 4825 Scenix VPE4K coprocessor - data/insn-space addressing 4826 4827 -- : BFD_RELOC_VTABLE_INHERIT 4828 -- : BFD_RELOC_VTABLE_ENTRY 4829 These two relocations are used by the linker to determine which of 4830 the entries in a C++ virtual function table are actually used. 4831 When the -gc-sections option is given, the linker will zero out 4832 the entries that are not used, so that the code for those 4833 functions need not be included in the output. 4834 4835 VTABLE_INHERIT is a zero-space relocation used to describe to the 4836 linker the inheritance tree of a C++ virtual function table. The 4837 relocation's symbol should be the parent class' vtable, and the 4838 relocation should be located at the child vtable. 4839 4840 VTABLE_ENTRY is a zero-space relocation that describes the use of a 4841 virtual function table entry. The reloc's symbol should refer to 4842 the table of the class mentioned in the code. Off of that base, 4843 an offset describes the entry that is being used. For Rela hosts, 4844 this offset is stored in the reloc's addend. For Rel hosts, we 4845 are forced to put this offset in the reloc's section offset. 4846 4847 -- : BFD_RELOC_IA64_IMM14 4848 -- : BFD_RELOC_IA64_IMM22 4849 -- : BFD_RELOC_IA64_IMM64 4850 -- : BFD_RELOC_IA64_DIR32MSB 4851 -- : BFD_RELOC_IA64_DIR32LSB 4852 -- : BFD_RELOC_IA64_DIR64MSB 4853 -- : BFD_RELOC_IA64_DIR64LSB 4854 -- : BFD_RELOC_IA64_GPREL22 4855 -- : BFD_RELOC_IA64_GPREL64I 4856 -- : BFD_RELOC_IA64_GPREL32MSB 4857 -- : BFD_RELOC_IA64_GPREL32LSB 4858 -- : BFD_RELOC_IA64_GPREL64MSB 4859 -- : BFD_RELOC_IA64_GPREL64LSB 4860 -- : BFD_RELOC_IA64_LTOFF22 4861 -- : BFD_RELOC_IA64_LTOFF64I 4862 -- : BFD_RELOC_IA64_PLTOFF22 4863 -- : BFD_RELOC_IA64_PLTOFF64I 4864 -- : BFD_RELOC_IA64_PLTOFF64MSB 4865 -- : BFD_RELOC_IA64_PLTOFF64LSB 4866 -- : BFD_RELOC_IA64_FPTR64I 4867 -- : BFD_RELOC_IA64_FPTR32MSB 4868 -- : BFD_RELOC_IA64_FPTR32LSB 4869 -- : BFD_RELOC_IA64_FPTR64MSB 4870 -- : BFD_RELOC_IA64_FPTR64LSB 4871 -- : BFD_RELOC_IA64_PCREL21B 4872 -- : BFD_RELOC_IA64_PCREL21BI 4873 -- : BFD_RELOC_IA64_PCREL21M 4874 -- : BFD_RELOC_IA64_PCREL21F 4875 -- : BFD_RELOC_IA64_PCREL22 4876 -- : BFD_RELOC_IA64_PCREL60B 4877 -- : BFD_RELOC_IA64_PCREL64I 4878 -- : BFD_RELOC_IA64_PCREL32MSB 4879 -- : BFD_RELOC_IA64_PCREL32LSB 4880 -- : BFD_RELOC_IA64_PCREL64MSB 4881 -- : BFD_RELOC_IA64_PCREL64LSB 4882 -- : BFD_RELOC_IA64_LTOFF_FPTR22 4883 -- : BFD_RELOC_IA64_LTOFF_FPTR64I 4884 -- : BFD_RELOC_IA64_LTOFF_FPTR32MSB 4885 -- : BFD_RELOC_IA64_LTOFF_FPTR32LSB 4886 -- : BFD_RELOC_IA64_LTOFF_FPTR64MSB 4887 -- : BFD_RELOC_IA64_LTOFF_FPTR64LSB 4888 -- : BFD_RELOC_IA64_SEGREL32MSB 4889 -- : BFD_RELOC_IA64_SEGREL32LSB 4890 -- : BFD_RELOC_IA64_SEGREL64MSB 4891 -- : BFD_RELOC_IA64_SEGREL64LSB 4892 -- : BFD_RELOC_IA64_SECREL32MSB 4893 -- : BFD_RELOC_IA64_SECREL32LSB 4894 -- : BFD_RELOC_IA64_SECREL64MSB 4895 -- : BFD_RELOC_IA64_SECREL64LSB 4896 -- : BFD_RELOC_IA64_REL32MSB 4897 -- : BFD_RELOC_IA64_REL32LSB 4898 -- : BFD_RELOC_IA64_REL64MSB 4899 -- : BFD_RELOC_IA64_REL64LSB 4900 -- : BFD_RELOC_IA64_LTV32MSB 4901 -- : BFD_RELOC_IA64_LTV32LSB 4902 -- : BFD_RELOC_IA64_LTV64MSB 4903 -- : BFD_RELOC_IA64_LTV64LSB 4904 -- : BFD_RELOC_IA64_IPLTMSB 4905 -- : BFD_RELOC_IA64_IPLTLSB 4906 -- : BFD_RELOC_IA64_COPY 4907 -- : BFD_RELOC_IA64_LTOFF22X 4908 -- : BFD_RELOC_IA64_LDXMOV 4909 -- : BFD_RELOC_IA64_TPREL14 4910 -- : BFD_RELOC_IA64_TPREL22 4911 -- : BFD_RELOC_IA64_TPREL64I 4912 -- : BFD_RELOC_IA64_TPREL64MSB 4913 -- : BFD_RELOC_IA64_TPREL64LSB 4914 -- : BFD_RELOC_IA64_LTOFF_TPREL22 4915 -- : BFD_RELOC_IA64_DTPMOD64MSB 4916 -- : BFD_RELOC_IA64_DTPMOD64LSB 4917 -- : BFD_RELOC_IA64_LTOFF_DTPMOD22 4918 -- : BFD_RELOC_IA64_DTPREL14 4919 -- : BFD_RELOC_IA64_DTPREL22 4920 -- : BFD_RELOC_IA64_DTPREL64I 4921 -- : BFD_RELOC_IA64_DTPREL32MSB 4922 -- : BFD_RELOC_IA64_DTPREL32LSB 4923 -- : BFD_RELOC_IA64_DTPREL64MSB 4924 -- : BFD_RELOC_IA64_DTPREL64LSB 4925 -- : BFD_RELOC_IA64_LTOFF_DTPREL22 4926 Intel IA64 Relocations. 4927 4928 -- : BFD_RELOC_M68HC11_HI8 4929 Motorola 68HC11 reloc. This is the 8 bit high part of an absolute 4930 address. 4931 4932 -- : BFD_RELOC_M68HC11_LO8 4933 Motorola 68HC11 reloc. This is the 8 bit low part of an absolute 4934 address. 4935 4936 -- : BFD_RELOC_M68HC11_3B 4937 Motorola 68HC11 reloc. This is the 3 bit of a value. 4938 4939 -- : BFD_RELOC_M68HC11_RL_JUMP 4940 Motorola 68HC11 reloc. This reloc marks the beginning of a 4941 jump/call instruction. It is used for linker relaxation to 4942 correctly identify beginning of instruction and change some 4943 branches to use PC-relative addressing mode. 4944 4945 -- : BFD_RELOC_M68HC11_RL_GROUP 4946 Motorola 68HC11 reloc. This reloc marks a group of several 4947 instructions that gcc generates and for which the linker 4948 relaxation pass can modify and/or remove some of them. 4949 4950 -- : BFD_RELOC_M68HC11_LO16 4951 Motorola 68HC11 reloc. This is the 16-bit lower part of an 4952 address. It is used for 'call' instruction to specify the symbol 4953 address without any special transformation (due to memory bank 4954 window). 4955 4956 -- : BFD_RELOC_M68HC11_PAGE 4957 Motorola 68HC11 reloc. This is a 8-bit reloc that specifies the 4958 page number of an address. It is used by 'call' instruction to 4959 specify the page number of the symbol. 4960 4961 -- : BFD_RELOC_M68HC11_24 4962 Motorola 68HC11 reloc. This is a 24-bit reloc that represents the 4963 address with a 16-bit value and a 8-bit page number. The symbol 4964 address is transformed to follow the 16K memory bank of 68HC12 4965 (seen as mapped in the window). 4966 4967 -- : BFD_RELOC_M68HC12_5B 4968 Motorola 68HC12 reloc. This is the 5 bits of a value. 4969 4970 -- : BFD_RELOC_16C_NUM08 4971 -- : BFD_RELOC_16C_NUM08_C 4972 -- : BFD_RELOC_16C_NUM16 4973 -- : BFD_RELOC_16C_NUM16_C 4974 -- : BFD_RELOC_16C_NUM32 4975 -- : BFD_RELOC_16C_NUM32_C 4976 -- : BFD_RELOC_16C_DISP04 4977 -- : BFD_RELOC_16C_DISP04_C 4978 -- : BFD_RELOC_16C_DISP08 4979 -- : BFD_RELOC_16C_DISP08_C 4980 -- : BFD_RELOC_16C_DISP16 4981 -- : BFD_RELOC_16C_DISP16_C 4982 -- : BFD_RELOC_16C_DISP24 4983 -- : BFD_RELOC_16C_DISP24_C 4984 -- : BFD_RELOC_16C_DISP24a 4985 -- : BFD_RELOC_16C_DISP24a_C 4986 -- : BFD_RELOC_16C_REG04 4987 -- : BFD_RELOC_16C_REG04_C 4988 -- : BFD_RELOC_16C_REG04a 4989 -- : BFD_RELOC_16C_REG04a_C 4990 -- : BFD_RELOC_16C_REG14 4991 -- : BFD_RELOC_16C_REG14_C 4992 -- : BFD_RELOC_16C_REG16 4993 -- : BFD_RELOC_16C_REG16_C 4994 -- : BFD_RELOC_16C_REG20 4995 -- : BFD_RELOC_16C_REG20_C 4996 -- : BFD_RELOC_16C_ABS20 4997 -- : BFD_RELOC_16C_ABS20_C 4998 -- : BFD_RELOC_16C_ABS24 4999 -- : BFD_RELOC_16C_ABS24_C 5000 -- : BFD_RELOC_16C_IMM04 5001 -- : BFD_RELOC_16C_IMM04_C 5002 -- : BFD_RELOC_16C_IMM16 5003 -- : BFD_RELOC_16C_IMM16_C 5004 -- : BFD_RELOC_16C_IMM20 5005 -- : BFD_RELOC_16C_IMM20_C 5006 -- : BFD_RELOC_16C_IMM24 5007 -- : BFD_RELOC_16C_IMM24_C 5008 -- : BFD_RELOC_16C_IMM32 5009 -- : BFD_RELOC_16C_IMM32_C 5010 NS CR16C Relocations. 5011 5012 -- : BFD_RELOC_CR16_NUM8 5013 -- : BFD_RELOC_CR16_NUM16 5014 -- : BFD_RELOC_CR16_NUM32 5015 -- : BFD_RELOC_CR16_NUM32a 5016 -- : BFD_RELOC_CR16_REGREL0 5017 -- : BFD_RELOC_CR16_REGREL4 5018 -- : BFD_RELOC_CR16_REGREL4a 5019 -- : BFD_RELOC_CR16_REGREL14 5020 -- : BFD_RELOC_CR16_REGREL14a 5021 -- : BFD_RELOC_CR16_REGREL16 5022 -- : BFD_RELOC_CR16_REGREL20 5023 -- : BFD_RELOC_CR16_REGREL20a 5024 -- : BFD_RELOC_CR16_ABS20 5025 -- : BFD_RELOC_CR16_ABS24 5026 -- : BFD_RELOC_CR16_IMM4 5027 -- : BFD_RELOC_CR16_IMM8 5028 -- : BFD_RELOC_CR16_IMM16 5029 -- : BFD_RELOC_CR16_IMM20 5030 -- : BFD_RELOC_CR16_IMM24 5031 -- : BFD_RELOC_CR16_IMM32 5032 -- : BFD_RELOC_CR16_IMM32a 5033 -- : BFD_RELOC_CR16_DISP4 5034 -- : BFD_RELOC_CR16_DISP8 5035 -- : BFD_RELOC_CR16_DISP16 5036 -- : BFD_RELOC_CR16_DISP20 5037 -- : BFD_RELOC_CR16_DISP24 5038 -- : BFD_RELOC_CR16_DISP24a 5039 -- : BFD_RELOC_CR16_SWITCH8 5040 -- : BFD_RELOC_CR16_SWITCH16 5041 -- : BFD_RELOC_CR16_SWITCH32 5042 NS CR16 Relocations. 5043 5044 -- : BFD_RELOC_CRX_REL4 5045 -- : BFD_RELOC_CRX_REL8 5046 -- : BFD_RELOC_CRX_REL8_CMP 5047 -- : BFD_RELOC_CRX_REL16 5048 -- : BFD_RELOC_CRX_REL24 5049 -- : BFD_RELOC_CRX_REL32 5050 -- : BFD_RELOC_CRX_REGREL12 5051 -- : BFD_RELOC_CRX_REGREL22 5052 -- : BFD_RELOC_CRX_REGREL28 5053 -- : BFD_RELOC_CRX_REGREL32 5054 -- : BFD_RELOC_CRX_ABS16 5055 -- : BFD_RELOC_CRX_ABS32 5056 -- : BFD_RELOC_CRX_NUM8 5057 -- : BFD_RELOC_CRX_NUM16 5058 -- : BFD_RELOC_CRX_NUM32 5059 -- : BFD_RELOC_CRX_IMM16 5060 -- : BFD_RELOC_CRX_IMM32 5061 -- : BFD_RELOC_CRX_SWITCH8 5062 -- : BFD_RELOC_CRX_SWITCH16 5063 -- : BFD_RELOC_CRX_SWITCH32 5064 NS CRX Relocations. 5065 5066 -- : BFD_RELOC_CRIS_BDISP8 5067 -- : BFD_RELOC_CRIS_UNSIGNED_5 5068 -- : BFD_RELOC_CRIS_SIGNED_6 5069 -- : BFD_RELOC_CRIS_UNSIGNED_6 5070 -- : BFD_RELOC_CRIS_SIGNED_8 5071 -- : BFD_RELOC_CRIS_UNSIGNED_8 5072 -- : BFD_RELOC_CRIS_SIGNED_16 5073 -- : BFD_RELOC_CRIS_UNSIGNED_16 5074 -- : BFD_RELOC_CRIS_LAPCQ_OFFSET 5075 -- : BFD_RELOC_CRIS_UNSIGNED_4 5076 These relocs are only used within the CRIS assembler. They are not 5077 (at present) written to any object files. 5078 5079 -- : BFD_RELOC_CRIS_COPY 5080 -- : BFD_RELOC_CRIS_GLOB_DAT 5081 -- : BFD_RELOC_CRIS_JUMP_SLOT 5082 -- : BFD_RELOC_CRIS_RELATIVE 5083 Relocs used in ELF shared libraries for CRIS. 5084 5085 -- : BFD_RELOC_CRIS_32_GOT 5086 32-bit offset to symbol-entry within GOT. 5087 5088 -- : BFD_RELOC_CRIS_16_GOT 5089 16-bit offset to symbol-entry within GOT. 5090 5091 -- : BFD_RELOC_CRIS_32_GOTPLT 5092 32-bit offset to symbol-entry within GOT, with PLT handling. 5093 5094 -- : BFD_RELOC_CRIS_16_GOTPLT 5095 16-bit offset to symbol-entry within GOT, with PLT handling. 5096 5097 -- : BFD_RELOC_CRIS_32_GOTREL 5098 32-bit offset to symbol, relative to GOT. 5099 5100 -- : BFD_RELOC_CRIS_32_PLT_GOTREL 5101 32-bit offset to symbol with PLT entry, relative to GOT. 5102 5103 -- : BFD_RELOC_CRIS_32_PLT_PCREL 5104 32-bit offset to symbol with PLT entry, relative to this 5105 relocation. 5106 5107 -- : BFD_RELOC_860_COPY 5108 -- : BFD_RELOC_860_GLOB_DAT 5109 -- : BFD_RELOC_860_JUMP_SLOT 5110 -- : BFD_RELOC_860_RELATIVE 5111 -- : BFD_RELOC_860_PC26 5112 -- : BFD_RELOC_860_PLT26 5113 -- : BFD_RELOC_860_PC16 5114 -- : BFD_RELOC_860_LOW0 5115 -- : BFD_RELOC_860_SPLIT0 5116 -- : BFD_RELOC_860_LOW1 5117 -- : BFD_RELOC_860_SPLIT1 5118 -- : BFD_RELOC_860_LOW2 5119 -- : BFD_RELOC_860_SPLIT2 5120 -- : BFD_RELOC_860_LOW3 5121 -- : BFD_RELOC_860_LOGOT0 5122 -- : BFD_RELOC_860_SPGOT0 5123 -- : BFD_RELOC_860_LOGOT1 5124 -- : BFD_RELOC_860_SPGOT1 5125 -- : BFD_RELOC_860_LOGOTOFF0 5126 -- : BFD_RELOC_860_SPGOTOFF0 5127 -- : BFD_RELOC_860_LOGOTOFF1 5128 -- : BFD_RELOC_860_SPGOTOFF1 5129 -- : BFD_RELOC_860_LOGOTOFF2 5130 -- : BFD_RELOC_860_LOGOTOFF3 5131 -- : BFD_RELOC_860_LOPC 5132 -- : BFD_RELOC_860_HIGHADJ 5133 -- : BFD_RELOC_860_HAGOT 5134 -- : BFD_RELOC_860_HAGOTOFF 5135 -- : BFD_RELOC_860_HAPC 5136 -- : BFD_RELOC_860_HIGH 5137 -- : BFD_RELOC_860_HIGOT 5138 -- : BFD_RELOC_860_HIGOTOFF 5139 Intel i860 Relocations. 5140 5141 -- : BFD_RELOC_OPENRISC_ABS_26 5142 -- : BFD_RELOC_OPENRISC_REL_26 5143 OpenRISC Relocations. 5144 5145 -- : BFD_RELOC_H8_DIR16A8 5146 -- : BFD_RELOC_H8_DIR16R8 5147 -- : BFD_RELOC_H8_DIR24A8 5148 -- : BFD_RELOC_H8_DIR24R8 5149 -- : BFD_RELOC_H8_DIR32A16 5150 H8 elf Relocations. 5151 5152 -- : BFD_RELOC_XSTORMY16_REL_12 5153 -- : BFD_RELOC_XSTORMY16_12 5154 -- : BFD_RELOC_XSTORMY16_24 5155 -- : BFD_RELOC_XSTORMY16_FPTR16 5156 Sony Xstormy16 Relocations. 5157 5158 -- : BFD_RELOC_RELC 5159 Self-describing complex relocations. 5160 5161 -- : BFD_RELOC_XC16X_PAG 5162 -- : BFD_RELOC_XC16X_POF 5163 -- : BFD_RELOC_XC16X_SEG 5164 -- : BFD_RELOC_XC16X_SOF 5165 Infineon Relocations. 5166 5167 -- : BFD_RELOC_VAX_GLOB_DAT 5168 -- : BFD_RELOC_VAX_JMP_SLOT 5169 -- : BFD_RELOC_VAX_RELATIVE 5170 Relocations used by VAX ELF. 5171 5172 -- : BFD_RELOC_MT_PC16 5173 Morpho MT - 16 bit immediate relocation. 5174 5175 -- : BFD_RELOC_MT_HI16 5176 Morpho MT - Hi 16 bits of an address. 5177 5178 -- : BFD_RELOC_MT_LO16 5179 Morpho MT - Low 16 bits of an address. 5180 5181 -- : BFD_RELOC_MT_GNU_VTINHERIT 5182 Morpho MT - Used to tell the linker which vtable entries are used. 5183 5184 -- : BFD_RELOC_MT_GNU_VTENTRY 5185 Morpho MT - Used to tell the linker which vtable entries are used. 5186 5187 -- : BFD_RELOC_MT_PCINSN8 5188 Morpho MT - 8 bit immediate relocation. 5189 5190 -- : BFD_RELOC_MSP430_10_PCREL 5191 -- : BFD_RELOC_MSP430_16_PCREL 5192 -- : BFD_RELOC_MSP430_16 5193 -- : BFD_RELOC_MSP430_16_PCREL_BYTE 5194 -- : BFD_RELOC_MSP430_16_BYTE 5195 -- : BFD_RELOC_MSP430_2X_PCREL 5196 -- : BFD_RELOC_MSP430_RL_PCREL 5197 msp430 specific relocation codes 5198 5199 -- : BFD_RELOC_IQ2000_OFFSET_16 5200 -- : BFD_RELOC_IQ2000_OFFSET_21 5201 -- : BFD_RELOC_IQ2000_UHI16 5202 IQ2000 Relocations. 5203 5204 -- : BFD_RELOC_XTENSA_RTLD 5205 Special Xtensa relocation used only by PLT entries in ELF shared 5206 objects to indicate that the runtime linker should set the value 5207 to one of its own internal functions or data structures. 5208 5209 -- : BFD_RELOC_XTENSA_GLOB_DAT 5210 -- : BFD_RELOC_XTENSA_JMP_SLOT 5211 -- : BFD_RELOC_XTENSA_RELATIVE 5212 Xtensa relocations for ELF shared objects. 5213 5214 -- : BFD_RELOC_XTENSA_PLT 5215 Xtensa relocation used in ELF object files for symbols that may 5216 require PLT entries. Otherwise, this is just a generic 32-bit 5217 relocation. 5218 5219 -- : BFD_RELOC_XTENSA_DIFF8 5220 -- : BFD_RELOC_XTENSA_DIFF16 5221 -- : BFD_RELOC_XTENSA_DIFF32 5222 Xtensa relocations to mark the difference of two local symbols. 5223 These are only needed to support linker relaxation and can be 5224 ignored when not relaxing. The field is set to the value of the 5225 difference assuming no relaxation. The relocation encodes the 5226 position of the first symbol so the linker can determine whether 5227 to adjust the field value. 5228 5229 -- : BFD_RELOC_XTENSA_SLOT0_OP 5230 -- : BFD_RELOC_XTENSA_SLOT1_OP 5231 -- : BFD_RELOC_XTENSA_SLOT2_OP 5232 -- : BFD_RELOC_XTENSA_SLOT3_OP 5233 -- : BFD_RELOC_XTENSA_SLOT4_OP 5234 -- : BFD_RELOC_XTENSA_SLOT5_OP 5235 -- : BFD_RELOC_XTENSA_SLOT6_OP 5236 -- : BFD_RELOC_XTENSA_SLOT7_OP 5237 -- : BFD_RELOC_XTENSA_SLOT8_OP 5238 -- : BFD_RELOC_XTENSA_SLOT9_OP 5239 -- : BFD_RELOC_XTENSA_SLOT10_OP 5240 -- : BFD_RELOC_XTENSA_SLOT11_OP 5241 -- : BFD_RELOC_XTENSA_SLOT12_OP 5242 -- : BFD_RELOC_XTENSA_SLOT13_OP 5243 -- : BFD_RELOC_XTENSA_SLOT14_OP 5244 Generic Xtensa relocations for instruction operands. Only the slot 5245 number is encoded in the relocation. The relocation applies to the 5246 last PC-relative immediate operand, or if there are no PC-relative 5247 immediates, to the last immediate operand. 5248 5249 -- : BFD_RELOC_XTENSA_SLOT0_ALT 5250 -- : BFD_RELOC_XTENSA_SLOT1_ALT 5251 -- : BFD_RELOC_XTENSA_SLOT2_ALT 5252 -- : BFD_RELOC_XTENSA_SLOT3_ALT 5253 -- : BFD_RELOC_XTENSA_SLOT4_ALT 5254 -- : BFD_RELOC_XTENSA_SLOT5_ALT 5255 -- : BFD_RELOC_XTENSA_SLOT6_ALT 5256 -- : BFD_RELOC_XTENSA_SLOT7_ALT 5257 -- : BFD_RELOC_XTENSA_SLOT8_ALT 5258 -- : BFD_RELOC_XTENSA_SLOT9_ALT 5259 -- : BFD_RELOC_XTENSA_SLOT10_ALT 5260 -- : BFD_RELOC_XTENSA_SLOT11_ALT 5261 -- : BFD_RELOC_XTENSA_SLOT12_ALT 5262 -- : BFD_RELOC_XTENSA_SLOT13_ALT 5263 -- : BFD_RELOC_XTENSA_SLOT14_ALT 5264 Alternate Xtensa relocations. Only the slot is encoded in the 5265 relocation. The meaning of these relocations is opcode-specific. 5266 5267 -- : BFD_RELOC_XTENSA_OP0 5268 -- : BFD_RELOC_XTENSA_OP1 5269 -- : BFD_RELOC_XTENSA_OP2 5270 Xtensa relocations for backward compatibility. These have all been 5271 replaced by BFD_RELOC_XTENSA_SLOT0_OP. 5272 5273 -- : BFD_RELOC_XTENSA_ASM_EXPAND 5274 Xtensa relocation to mark that the assembler expanded the 5275 instructions from an original target. The expansion size is 5276 encoded in the reloc size. 5277 5278 -- : BFD_RELOC_XTENSA_ASM_SIMPLIFY 5279 Xtensa relocation to mark that the linker should simplify 5280 assembler-expanded instructions. This is commonly used internally 5281 by the linker after analysis of a BFD_RELOC_XTENSA_ASM_EXPAND. 5282 5283 -- : BFD_RELOC_XTENSA_TLSDESC_FN 5284 -- : BFD_RELOC_XTENSA_TLSDESC_ARG 5285 -- : BFD_RELOC_XTENSA_TLS_DTPOFF 5286 -- : BFD_RELOC_XTENSA_TLS_TPOFF 5287 -- : BFD_RELOC_XTENSA_TLS_FUNC 5288 -- : BFD_RELOC_XTENSA_TLS_ARG 5289 -- : BFD_RELOC_XTENSA_TLS_CALL 5290 Xtensa TLS relocations. 5291 5292 -- : BFD_RELOC_Z80_DISP8 5293 8 bit signed offset in (ix+d) or (iy+d). 5294 5295 -- : BFD_RELOC_Z8K_DISP7 5296 DJNZ offset. 5297 5298 -- : BFD_RELOC_Z8K_CALLR 5299 CALR offset. 5300 5301 -- : BFD_RELOC_Z8K_IMM4L 5302 4 bit value. 5303 5304 5305 typedef enum bfd_reloc_code_real bfd_reloc_code_real_type; 5306 53072.10.2.2 `bfd_reloc_type_lookup' 5308................................ 5309 5310*Synopsis* 5311 reloc_howto_type *bfd_reloc_type_lookup 5312 (bfd *abfd, bfd_reloc_code_real_type code); 5313 reloc_howto_type *bfd_reloc_name_lookup 5314 (bfd *abfd, const char *reloc_name); 5315 *Description* 5316Return a pointer to a howto structure which, when invoked, will perform 5317the relocation CODE on data from the architecture noted. 5318 53192.10.2.3 `bfd_default_reloc_type_lookup' 5320........................................ 5321 5322*Synopsis* 5323 reloc_howto_type *bfd_default_reloc_type_lookup 5324 (bfd *abfd, bfd_reloc_code_real_type code); 5325 *Description* 5326Provides a default relocation lookup routine for any architecture. 5327 53282.10.2.4 `bfd_get_reloc_code_name' 5329.................................. 5330 5331*Synopsis* 5332 const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code); 5333 *Description* 5334Provides a printable name for the supplied relocation code. Useful 5335mainly for printing error messages. 5336 53372.10.2.5 `bfd_generic_relax_section' 5338.................................... 5339 5340*Synopsis* 5341 bfd_boolean bfd_generic_relax_section 5342 (bfd *abfd, 5343 asection *section, 5344 struct bfd_link_info *, 5345 bfd_boolean *); 5346 *Description* 5347Provides default handling for relaxing for back ends which don't do 5348relaxing. 5349 53502.10.2.6 `bfd_generic_gc_sections' 5351.................................. 5352 5353*Synopsis* 5354 bfd_boolean bfd_generic_gc_sections 5355 (bfd *, struct bfd_link_info *); 5356 *Description* 5357Provides default handling for relaxing for back ends which don't do 5358section gc - i.e., does nothing. 5359 53602.10.2.7 `bfd_generic_merge_sections' 5361..................................... 5362 5363*Synopsis* 5364 bfd_boolean bfd_generic_merge_sections 5365 (bfd *, struct bfd_link_info *); 5366 *Description* 5367Provides default handling for SEC_MERGE section merging for back ends 5368which don't have SEC_MERGE support - i.e., does nothing. 5369 53702.10.2.8 `bfd_generic_get_relocated_section_contents' 5371..................................................... 5372 5373*Synopsis* 5374 bfd_byte *bfd_generic_get_relocated_section_contents 5375 (bfd *abfd, 5376 struct bfd_link_info *link_info, 5377 struct bfd_link_order *link_order, 5378 bfd_byte *data, 5379 bfd_boolean relocatable, 5380 asymbol **symbols); 5381 *Description* 5382Provides default handling of relocation effort for back ends which 5383can't be bothered to do it efficiently. 5384 5385 5386File: bfd.info, Node: Core Files, Next: Targets, Prev: Relocations, Up: BFD front end 5387 53882.11 Core files 5389=============== 5390 53912.11.1 Core file functions 5392-------------------------- 5393 5394*Description* 5395These are functions pertaining to core files. 5396 53972.11.1.1 `bfd_core_file_failing_command' 5398........................................ 5399 5400*Synopsis* 5401 const char *bfd_core_file_failing_command (bfd *abfd); 5402 *Description* 5403Return a read-only string explaining which program was running when it 5404failed and produced the core file ABFD. 5405 54062.11.1.2 `bfd_core_file_failing_signal' 5407....................................... 5408 5409*Synopsis* 5410 int bfd_core_file_failing_signal (bfd *abfd); 5411 *Description* 5412Returns the signal number which caused the core dump which generated 5413the file the BFD ABFD is attached to. 5414 54152.11.1.3 `core_file_matches_executable_p' 5416......................................... 5417 5418*Synopsis* 5419 bfd_boolean core_file_matches_executable_p 5420 (bfd *core_bfd, bfd *exec_bfd); 5421 *Description* 5422Return `TRUE' if the core file attached to CORE_BFD was generated by a 5423run of the executable file attached to EXEC_BFD, `FALSE' otherwise. 5424 54252.11.1.4 `generic_core_file_matches_executable_p' 5426................................................. 5427 5428*Synopsis* 5429 bfd_boolean generic_core_file_matches_executable_p 5430 (bfd *core_bfd, bfd *exec_bfd); 5431 *Description* 5432Return TRUE if the core file attached to CORE_BFD was generated by a 5433run of the executable file attached to EXEC_BFD. The match is based on 5434executable basenames only. 5435 5436 Note: When not able to determine the core file failing command or 5437the executable name, we still return TRUE even though we're not sure 5438that core file and executable match. This is to avoid generating a 5439false warning in situations where we really don't know whether they 5440match or not. 5441 5442 5443File: bfd.info, Node: Targets, Next: Architectures, Prev: Core Files, Up: BFD front end 5444 54452.12 Targets 5446============ 5447 5448*Description* 5449Each port of BFD to a different machine requires the creation of a 5450target back end. All the back end provides to the root part of BFD is a 5451structure containing pointers to functions which perform certain low 5452level operations on files. BFD translates the applications's requests 5453through a pointer into calls to the back end routines. 5454 5455 When a file is opened with `bfd_openr', its format and target are 5456unknown. BFD uses various mechanisms to determine how to interpret the 5457file. The operations performed are: 5458 5459 * Create a BFD by calling the internal routine `_bfd_new_bfd', then 5460 call `bfd_find_target' with the target string supplied to 5461 `bfd_openr' and the new BFD pointer. 5462 5463 * If a null target string was provided to `bfd_find_target', look up 5464 the environment variable `GNUTARGET' and use that as the target 5465 string. 5466 5467 * If the target string is still `NULL', or the target string is 5468 `default', then use the first item in the target vector as the 5469 target type, and set `target_defaulted' in the BFD to cause 5470 `bfd_check_format' to loop through all the targets. *Note 5471 bfd_target::. *Note Formats::. 5472 5473 * Otherwise, inspect the elements in the target vector one by one, 5474 until a match on target name is found. When found, use it. 5475 5476 * Otherwise return the error `bfd_error_invalid_target' to 5477 `bfd_openr'. 5478 5479 * `bfd_openr' attempts to open the file using `bfd_open_file', and 5480 returns the BFD. 5481 Once the BFD has been opened and the target selected, the file 5482format may be determined. This is done by calling `bfd_check_format' on 5483the BFD with a suggested format. If `target_defaulted' has been set, 5484each possible target type is tried to see if it recognizes the 5485specified format. `bfd_check_format' returns `TRUE' when the caller 5486guesses right. 5487 5488* Menu: 5489 5490* bfd_target:: 5491 5492 5493File: bfd.info, Node: bfd_target, Prev: Targets, Up: Targets 5494 54952.12.1 bfd_target 5496----------------- 5497 5498*Description* 5499This structure contains everything that BFD knows about a target. It 5500includes things like its byte order, name, and which routines to call 5501to do various operations. 5502 5503 Every BFD points to a target structure with its `xvec' member. 5504 5505 The macros below are used to dispatch to functions through the 5506`bfd_target' vector. They are used in a number of macros further down 5507in `bfd.h', and are also used when calling various routines by hand 5508inside the BFD implementation. The ARGLIST argument must be 5509parenthesized; it contains all the arguments to the called function. 5510 5511 They make the documentation (more) unpleasant to read, so if someone 5512wants to fix this and not break the above, please do. 5513 #define BFD_SEND(bfd, message, arglist) \ 5514 ((*((bfd)->xvec->message)) arglist) 5515 5516 #ifdef DEBUG_BFD_SEND 5517 #undef BFD_SEND 5518 #define BFD_SEND(bfd, message, arglist) \ 5519 (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ 5520 ((*((bfd)->xvec->message)) arglist) : \ 5521 (bfd_assert (__FILE__,__LINE__), NULL)) 5522 #endif 5523 For operations which index on the BFD format: 5524 #define BFD_SEND_FMT(bfd, message, arglist) \ 5525 (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) 5526 5527 #ifdef DEBUG_BFD_SEND 5528 #undef BFD_SEND_FMT 5529 #define BFD_SEND_FMT(bfd, message, arglist) \ 5530 (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \ 5531 (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \ 5532 (bfd_assert (__FILE__,__LINE__), NULL)) 5533 #endif 5534 This is the structure which defines the type of BFD this is. The 5535`xvec' member of the struct `bfd' itself points here. Each module that 5536implements access to a different target under BFD, defines one of these. 5537 5538 FIXME, these names should be rationalised with the names of the 5539entry points which call them. Too bad we can't have one macro to define 5540them both! 5541 enum bfd_flavour 5542 { 5543 bfd_target_unknown_flavour, 5544 bfd_target_aout_flavour, 5545 bfd_target_coff_flavour, 5546 bfd_target_ecoff_flavour, 5547 bfd_target_xcoff_flavour, 5548 bfd_target_elf_flavour, 5549 bfd_target_ieee_flavour, 5550 bfd_target_nlm_flavour, 5551 bfd_target_oasys_flavour, 5552 bfd_target_tekhex_flavour, 5553 bfd_target_srec_flavour, 5554 bfd_target_ihex_flavour, 5555 bfd_target_som_flavour, 5556 bfd_target_os9k_flavour, 5557 bfd_target_versados_flavour, 5558 bfd_target_msdos_flavour, 5559 bfd_target_ovax_flavour, 5560 bfd_target_evax_flavour, 5561 bfd_target_mmo_flavour, 5562 bfd_target_mach_o_flavour, 5563 bfd_target_pef_flavour, 5564 bfd_target_pef_xlib_flavour, 5565 bfd_target_sym_flavour 5566 }; 5567 5568 enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN }; 5569 5570 /* Forward declaration. */ 5571 typedef struct bfd_link_info _bfd_link_info; 5572 5573 typedef struct bfd_target 5574 { 5575 /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */ 5576 char *name; 5577 5578 /* The "flavour" of a back end is a general indication about 5579 the contents of a file. */ 5580 enum bfd_flavour flavour; 5581 5582 /* The order of bytes within the data area of a file. */ 5583 enum bfd_endian byteorder; 5584 5585 /* The order of bytes within the header parts of a file. */ 5586 enum bfd_endian header_byteorder; 5587 5588 /* A mask of all the flags which an executable may have set - 5589 from the set `BFD_NO_FLAGS', `HAS_RELOC', ...`D_PAGED'. */ 5590 flagword object_flags; 5591 5592 /* A mask of all the flags which a section may have set - from 5593 the set `SEC_NO_FLAGS', `SEC_ALLOC', ...`SET_NEVER_LOAD'. */ 5594 flagword section_flags; 5595 5596 /* The character normally found at the front of a symbol. 5597 (if any), perhaps `_'. */ 5598 char symbol_leading_char; 5599 5600 /* The pad character for file names within an archive header. */ 5601 char ar_pad_char; 5602 5603 /* The maximum number of characters in an archive header. */ 5604 unsigned short ar_max_namelen; 5605 5606 /* Entries for byte swapping for data. These are different from the 5607 other entry points, since they don't take a BFD as the first argument. 5608 Certain other handlers could do the same. */ 5609 bfd_uint64_t (*bfd_getx64) (const void *); 5610 bfd_int64_t (*bfd_getx_signed_64) (const void *); 5611 void (*bfd_putx64) (bfd_uint64_t, void *); 5612 bfd_vma (*bfd_getx32) (const void *); 5613 bfd_signed_vma (*bfd_getx_signed_32) (const void *); 5614 void (*bfd_putx32) (bfd_vma, void *); 5615 bfd_vma (*bfd_getx16) (const void *); 5616 bfd_signed_vma (*bfd_getx_signed_16) (const void *); 5617 void (*bfd_putx16) (bfd_vma, void *); 5618 5619 /* Byte swapping for the headers. */ 5620 bfd_uint64_t (*bfd_h_getx64) (const void *); 5621 bfd_int64_t (*bfd_h_getx_signed_64) (const void *); 5622 void (*bfd_h_putx64) (bfd_uint64_t, void *); 5623 bfd_vma (*bfd_h_getx32) (const void *); 5624 bfd_signed_vma (*bfd_h_getx_signed_32) (const void *); 5625 void (*bfd_h_putx32) (bfd_vma, void *); 5626 bfd_vma (*bfd_h_getx16) (const void *); 5627 bfd_signed_vma (*bfd_h_getx_signed_16) (const void *); 5628 void (*bfd_h_putx16) (bfd_vma, void *); 5629 5630 /* Format dependent routines: these are vectors of entry points 5631 within the target vector structure, one for each format to check. */ 5632 5633 /* Check the format of a file being read. Return a `bfd_target *' or zero. */ 5634 const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *); 5635 5636 /* Set the format of a file being written. */ 5637 bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *); 5638 5639 /* Write cached information into a file being written, at `bfd_close'. */ 5640 bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *); 5641 The general target vector. These vectors are initialized using the 5642BFD_JUMP_TABLE macros. 5643 5644 /* Generic entry points. */ 5645 #define BFD_JUMP_TABLE_GENERIC(NAME) \ 5646 NAME##_close_and_cleanup, \ 5647 NAME##_bfd_free_cached_info, \ 5648 NAME##_new_section_hook, \ 5649 NAME##_get_section_contents, \ 5650 NAME##_get_section_contents_in_window 5651 5652 /* Called when the BFD is being closed to do any necessary cleanup. */ 5653 bfd_boolean (*_close_and_cleanup) (bfd *); 5654 /* Ask the BFD to free all cached information. */ 5655 bfd_boolean (*_bfd_free_cached_info) (bfd *); 5656 /* Called when a new section is created. */ 5657 bfd_boolean (*_new_section_hook) (bfd *, sec_ptr); 5658 /* Read the contents of a section. */ 5659 bfd_boolean (*_bfd_get_section_contents) 5660 (bfd *, sec_ptr, void *, file_ptr, bfd_size_type); 5661 bfd_boolean (*_bfd_get_section_contents_in_window) 5662 (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type); 5663 5664 /* Entry points to copy private data. */ 5665 #define BFD_JUMP_TABLE_COPY(NAME) \ 5666 NAME##_bfd_copy_private_bfd_data, \ 5667 NAME##_bfd_merge_private_bfd_data, \ 5668 _bfd_generic_init_private_section_data, \ 5669 NAME##_bfd_copy_private_section_data, \ 5670 NAME##_bfd_copy_private_symbol_data, \ 5671 NAME##_bfd_copy_private_header_data, \ 5672 NAME##_bfd_set_private_flags, \ 5673 NAME##_bfd_print_private_bfd_data 5674 5675 /* Called to copy BFD general private data from one object file 5676 to another. */ 5677 bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *); 5678 /* Called to merge BFD general private data from one object file 5679 to a common output file when linking. */ 5680 bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *); 5681 /* Called to initialize BFD private section data from one object file 5682 to another. */ 5683 #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \ 5684 BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info)) 5685 bfd_boolean (*_bfd_init_private_section_data) 5686 (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *); 5687 /* Called to copy BFD private section data from one object file 5688 to another. */ 5689 bfd_boolean (*_bfd_copy_private_section_data) 5690 (bfd *, sec_ptr, bfd *, sec_ptr); 5691 /* Called to copy BFD private symbol data from one symbol 5692 to another. */ 5693 bfd_boolean (*_bfd_copy_private_symbol_data) 5694 (bfd *, asymbol *, bfd *, asymbol *); 5695 /* Called to copy BFD private header data from one object file 5696 to another. */ 5697 bfd_boolean (*_bfd_copy_private_header_data) 5698 (bfd *, bfd *); 5699 /* Called to set private backend flags. */ 5700 bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword); 5701 5702 /* Called to print private BFD data. */ 5703 bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *); 5704 5705 /* Core file entry points. */ 5706 #define BFD_JUMP_TABLE_CORE(NAME) \ 5707 NAME##_core_file_failing_command, \ 5708 NAME##_core_file_failing_signal, \ 5709 NAME##_core_file_matches_executable_p 5710 5711 char * (*_core_file_failing_command) (bfd *); 5712 int (*_core_file_failing_signal) (bfd *); 5713 bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *); 5714 5715 /* Archive entry points. */ 5716 #define BFD_JUMP_TABLE_ARCHIVE(NAME) \ 5717 NAME##_slurp_armap, \ 5718 NAME##_slurp_extended_name_table, \ 5719 NAME##_construct_extended_name_table, \ 5720 NAME##_truncate_arname, \ 5721 NAME##_write_armap, \ 5722 NAME##_read_ar_hdr, \ 5723 NAME##_openr_next_archived_file, \ 5724 NAME##_get_elt_at_index, \ 5725 NAME##_generic_stat_arch_elt, \ 5726 NAME##_update_armap_timestamp 5727 5728 bfd_boolean (*_bfd_slurp_armap) (bfd *); 5729 bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *); 5730 bfd_boolean (*_bfd_construct_extended_name_table) 5731 (bfd *, char **, bfd_size_type *, const char **); 5732 void (*_bfd_truncate_arname) (bfd *, const char *, char *); 5733 bfd_boolean (*write_armap) 5734 (bfd *, unsigned int, struct orl *, unsigned int, int); 5735 void * (*_bfd_read_ar_hdr_fn) (bfd *); 5736 bfd * (*openr_next_archived_file) (bfd *, bfd *); 5737 #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) 5738 bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); 5739 int (*_bfd_stat_arch_elt) (bfd *, struct stat *); 5740 bfd_boolean (*_bfd_update_armap_timestamp) (bfd *); 5741 5742 /* Entry points used for symbols. */ 5743 #define BFD_JUMP_TABLE_SYMBOLS(NAME) \ 5744 NAME##_get_symtab_upper_bound, \ 5745 NAME##_canonicalize_symtab, \ 5746 NAME##_make_empty_symbol, \ 5747 NAME##_print_symbol, \ 5748 NAME##_get_symbol_info, \ 5749 NAME##_bfd_is_local_label_name, \ 5750 NAME##_bfd_is_target_special_symbol, \ 5751 NAME##_get_lineno, \ 5752 NAME##_find_nearest_line, \ 5753 _bfd_generic_find_line, \ 5754 NAME##_find_inliner_info, \ 5755 NAME##_bfd_make_debug_symbol, \ 5756 NAME##_read_minisymbols, \ 5757 NAME##_minisymbol_to_symbol 5758 5759 long (*_bfd_get_symtab_upper_bound) (bfd *); 5760 long (*_bfd_canonicalize_symtab) 5761 (bfd *, struct bfd_symbol **); 5762 struct bfd_symbol * 5763 (*_bfd_make_empty_symbol) (bfd *); 5764 void (*_bfd_print_symbol) 5765 (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type); 5766 #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e)) 5767 void (*_bfd_get_symbol_info) 5768 (bfd *, struct bfd_symbol *, symbol_info *); 5769 #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e)) 5770 bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *); 5771 bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *); 5772 alent * (*_get_lineno) (bfd *, struct bfd_symbol *); 5773 bfd_boolean (*_bfd_find_nearest_line) 5774 (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma, 5775 const char **, const char **, unsigned int *); 5776 bfd_boolean (*_bfd_find_line) 5777 (bfd *, struct bfd_symbol **, struct bfd_symbol *, 5778 const char **, unsigned int *); 5779 bfd_boolean (*_bfd_find_inliner_info) 5780 (bfd *, const char **, const char **, unsigned int *); 5781 /* Back-door to allow format-aware applications to create debug symbols 5782 while using BFD for everything else. Currently used by the assembler 5783 when creating COFF files. */ 5784 asymbol * (*_bfd_make_debug_symbol) 5785 (bfd *, void *, unsigned long size); 5786 #define bfd_read_minisymbols(b, d, m, s) \ 5787 BFD_SEND (b, _read_minisymbols, (b, d, m, s)) 5788 long (*_read_minisymbols) 5789 (bfd *, bfd_boolean, void **, unsigned int *); 5790 #define bfd_minisymbol_to_symbol(b, d, m, f) \ 5791 BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f)) 5792 asymbol * (*_minisymbol_to_symbol) 5793 (bfd *, bfd_boolean, const void *, asymbol *); 5794 5795 /* Routines for relocs. */ 5796 #define BFD_JUMP_TABLE_RELOCS(NAME) \ 5797 NAME##_get_reloc_upper_bound, \ 5798 NAME##_canonicalize_reloc, \ 5799 NAME##_bfd_reloc_type_lookup, \ 5800 NAME##_bfd_reloc_name_lookup 5801 5802 long (*_get_reloc_upper_bound) (bfd *, sec_ptr); 5803 long (*_bfd_canonicalize_reloc) 5804 (bfd *, sec_ptr, arelent **, struct bfd_symbol **); 5805 /* See documentation on reloc types. */ 5806 reloc_howto_type * 5807 (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type); 5808 reloc_howto_type * 5809 (*reloc_name_lookup) (bfd *, const char *); 5810 5811 5812 /* Routines used when writing an object file. */ 5813 #define BFD_JUMP_TABLE_WRITE(NAME) \ 5814 NAME##_set_arch_mach, \ 5815 NAME##_set_section_contents 5816 5817 bfd_boolean (*_bfd_set_arch_mach) 5818 (bfd *, enum bfd_architecture, unsigned long); 5819 bfd_boolean (*_bfd_set_section_contents) 5820 (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type); 5821 5822 /* Routines used by the linker. */ 5823 #define BFD_JUMP_TABLE_LINK(NAME) \ 5824 NAME##_sizeof_headers, \ 5825 NAME##_bfd_get_relocated_section_contents, \ 5826 NAME##_bfd_relax_section, \ 5827 NAME##_bfd_link_hash_table_create, \ 5828 NAME##_bfd_link_hash_table_free, \ 5829 NAME##_bfd_link_add_symbols, \ 5830 NAME##_bfd_link_just_syms, \ 5831 NAME##_bfd_final_link, \ 5832 NAME##_bfd_link_split_section, \ 5833 NAME##_bfd_gc_sections, \ 5834 NAME##_bfd_merge_sections, \ 5835 NAME##_bfd_is_group_section, \ 5836 NAME##_bfd_discard_group, \ 5837 NAME##_section_already_linked \ 5838 5839 int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *); 5840 bfd_byte * (*_bfd_get_relocated_section_contents) 5841 (bfd *, struct bfd_link_info *, struct bfd_link_order *, 5842 bfd_byte *, bfd_boolean, struct bfd_symbol **); 5843 5844 bfd_boolean (*_bfd_relax_section) 5845 (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *); 5846 5847 /* Create a hash table for the linker. Different backends store 5848 different information in this table. */ 5849 struct bfd_link_hash_table * 5850 (*_bfd_link_hash_table_create) (bfd *); 5851 5852 /* Release the memory associated with the linker hash table. */ 5853 void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *); 5854 5855 /* Add symbols from this object file into the hash table. */ 5856 bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *); 5857 5858 /* Indicate that we are only retrieving symbol values from this section. */ 5859 void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); 5860 5861 /* Do a link based on the link_order structures attached to each 5862 section of the BFD. */ 5863 bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); 5864 5865 /* Should this section be split up into smaller pieces during linking. */ 5866 bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *); 5867 5868 /* Remove sections that are not referenced from the output. */ 5869 bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *); 5870 5871 /* Attempt to merge SEC_MERGE sections. */ 5872 bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *); 5873 5874 /* Is this section a member of a group? */ 5875 bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *); 5876 5877 /* Discard members of a group. */ 5878 bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *); 5879 5880 /* Check if SEC has been already linked during a reloceatable or 5881 final link. */ 5882 void (*_section_already_linked) (bfd *, struct bfd_section *, 5883 struct bfd_link_info *); 5884 5885 /* Routines to handle dynamic symbols and relocs. */ 5886 #define BFD_JUMP_TABLE_DYNAMIC(NAME) \ 5887 NAME##_get_dynamic_symtab_upper_bound, \ 5888 NAME##_canonicalize_dynamic_symtab, \ 5889 NAME##_get_synthetic_symtab, \ 5890 NAME##_get_dynamic_reloc_upper_bound, \ 5891 NAME##_canonicalize_dynamic_reloc 5892 5893 /* Get the amount of memory required to hold the dynamic symbols. */ 5894 long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *); 5895 /* Read in the dynamic symbols. */ 5896 long (*_bfd_canonicalize_dynamic_symtab) 5897 (bfd *, struct bfd_symbol **); 5898 /* Create synthetized symbols. */ 5899 long (*_bfd_get_synthetic_symtab) 5900 (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **, 5901 struct bfd_symbol **); 5902 /* Get the amount of memory required to hold the dynamic relocs. */ 5903 long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *); 5904 /* Read in the dynamic relocs. */ 5905 long (*_bfd_canonicalize_dynamic_reloc) 5906 (bfd *, arelent **, struct bfd_symbol **); 5907 A pointer to an alternative bfd_target in case the current one is not 5908satisfactory. This can happen when the target cpu supports both big 5909and little endian code, and target chosen by the linker has the wrong 5910endianness. The function open_output() in ld/ldlang.c uses this field 5911to find an alternative output format that is suitable. 5912 /* Opposite endian version of this target. */ 5913 const struct bfd_target * alternative_target; 5914 5915 /* Data for use by back-end routines, which isn't 5916 generic enough to belong in this structure. */ 5917 const void *backend_data; 5918 5919 } bfd_target; 5920 59212.12.1.1 `bfd_set_default_target' 5922................................. 5923 5924*Synopsis* 5925 bfd_boolean bfd_set_default_target (const char *name); 5926 *Description* 5927Set the default target vector to use when recognizing a BFD. This 5928takes the name of the target, which may be a BFD target name or a 5929configuration triplet. 5930 59312.12.1.2 `bfd_find_target' 5932.......................... 5933 5934*Synopsis* 5935 const bfd_target *bfd_find_target (const char *target_name, bfd *abfd); 5936 *Description* 5937Return a pointer to the transfer vector for the object target named 5938TARGET_NAME. If TARGET_NAME is `NULL', choose the one in the 5939environment variable `GNUTARGET'; if that is null or not defined, then 5940choose the first entry in the target list. Passing in the string 5941"default" or setting the environment variable to "default" will cause 5942the first entry in the target list to be returned, and 5943"target_defaulted" will be set in the BFD if ABFD isn't `NULL'. This 5944causes `bfd_check_format' to loop over all the targets to find the one 5945that matches the file being read. 5946 59472.12.1.3 `bfd_target_list' 5948.......................... 5949 5950*Synopsis* 5951 const char ** bfd_target_list (void); 5952 *Description* 5953Return a freshly malloced NULL-terminated vector of the names of all 5954the valid BFD targets. Do not modify the names. 5955 59562.12.1.4 `bfd_seach_for_target' 5957............................... 5958 5959*Synopsis* 5960 const bfd_target *bfd_search_for_target 5961 (int (*search_func) (const bfd_target *, void *), 5962 void *); 5963 *Description* 5964Return a pointer to the first transfer vector in the list of transfer 5965vectors maintained by BFD that produces a non-zero result when passed 5966to the function SEARCH_FUNC. The parameter DATA is passed, unexamined, 5967to the search function. 5968 5969 5970File: bfd.info, Node: Architectures, Next: Opening and Closing, Prev: Targets, Up: BFD front end 5971 59722.13 Architectures 5973================== 5974 5975BFD keeps one atom in a BFD describing the architecture of the data 5976attached to the BFD: a pointer to a `bfd_arch_info_type'. 5977 5978 Pointers to structures can be requested independently of a BFD so 5979that an architecture's information can be interrogated without access 5980to an open BFD. 5981 5982 The architecture information is provided by each architecture 5983package. The set of default architectures is selected by the macro 5984`SELECT_ARCHITECTURES'. This is normally set up in the 5985`config/TARGET.mt' file of your choice. If the name is not defined, 5986then all the architectures supported are included. 5987 5988 When BFD starts up, all the architectures are called with an 5989initialize method. It is up to the architecture back end to insert as 5990many items into the list of architectures as it wants to; generally 5991this would be one for each machine and one for the default case (an 5992item with a machine field of 0). 5993 5994 BFD's idea of an architecture is implemented in `archures.c'. 5995 59962.13.1 bfd_architecture 5997----------------------- 5998 5999*Description* 6000This enum gives the object file's CPU architecture, in a global 6001sense--i.e., what processor family does it belong to? Another field 6002indicates which processor within the family is in use. The machine 6003gives a number which distinguishes different versions of the 6004architecture, containing, for example, 2 and 3 for Intel i960 KA and 6005i960 KB, and 68020 and 68030 for Motorola 68020 and 68030. 6006 enum bfd_architecture 6007 { 6008 bfd_arch_unknown, /* File arch not known. */ 6009 bfd_arch_obscure, /* Arch known, not one of these. */ 6010 bfd_arch_m68k, /* Motorola 68xxx */ 6011 #define bfd_mach_m68000 1 6012 #define bfd_mach_m68008 2 6013 #define bfd_mach_m68010 3 6014 #define bfd_mach_m68020 4 6015 #define bfd_mach_m68030 5 6016 #define bfd_mach_m68040 6 6017 #define bfd_mach_m68060 7 6018 #define bfd_mach_cpu32 8 6019 #define bfd_mach_fido 9 6020 #define bfd_mach_mcf_isa_a_nodiv 10 6021 #define bfd_mach_mcf_isa_a 11 6022 #define bfd_mach_mcf_isa_a_mac 12 6023 #define bfd_mach_mcf_isa_a_emac 13 6024 #define bfd_mach_mcf_isa_aplus 14 6025 #define bfd_mach_mcf_isa_aplus_mac 15 6026 #define bfd_mach_mcf_isa_aplus_emac 16 6027 #define bfd_mach_mcf_isa_b_nousp 17 6028 #define bfd_mach_mcf_isa_b_nousp_mac 18 6029 #define bfd_mach_mcf_isa_b_nousp_emac 19 6030 #define bfd_mach_mcf_isa_b 20 6031 #define bfd_mach_mcf_isa_b_mac 21 6032 #define bfd_mach_mcf_isa_b_emac 22 6033 #define bfd_mach_mcf_isa_b_float 23 6034 #define bfd_mach_mcf_isa_b_float_mac 24 6035 #define bfd_mach_mcf_isa_b_float_emac 25 6036 #define bfd_mach_mcf_isa_c 26 6037 #define bfd_mach_mcf_isa_c_mac 27 6038 #define bfd_mach_mcf_isa_c_emac 28 6039 #define bfd_mach_mcf_isa_c_nodiv 29 6040 #define bfd_mach_mcf_isa_c_nodiv_mac 30 6041 #define bfd_mach_mcf_isa_c_nodiv_emac 31 6042 bfd_arch_vax, /* DEC Vax */ 6043 bfd_arch_i960, /* Intel 960 */ 6044 /* The order of the following is important. 6045 lower number indicates a machine type that 6046 only accepts a subset of the instructions 6047 available to machines with higher numbers. 6048 The exception is the "ca", which is 6049 incompatible with all other machines except 6050 "core". */ 6051 6052 #define bfd_mach_i960_core 1 6053 #define bfd_mach_i960_ka_sa 2 6054 #define bfd_mach_i960_kb_sb 3 6055 #define bfd_mach_i960_mc 4 6056 #define bfd_mach_i960_xa 5 6057 #define bfd_mach_i960_ca 6 6058 #define bfd_mach_i960_jx 7 6059 #define bfd_mach_i960_hx 8 6060 6061 bfd_arch_or32, /* OpenRISC 32 */ 6062 6063 bfd_arch_sparc, /* SPARC */ 6064 #define bfd_mach_sparc 1 6065 /* The difference between v8plus and v9 is that v9 is a true 64 bit env. */ 6066 #define bfd_mach_sparc_sparclet 2 6067 #define bfd_mach_sparc_sparclite 3 6068 #define bfd_mach_sparc_v8plus 4 6069 #define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */ 6070 #define bfd_mach_sparc_sparclite_le 6 6071 #define bfd_mach_sparc_v9 7 6072 #define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */ 6073 #define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */ 6074 #define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */ 6075 /* Nonzero if MACH has the v9 instruction set. */ 6076 #define bfd_mach_sparc_v9_p(mach) \ 6077 ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \ 6078 && (mach) != bfd_mach_sparc_sparclite_le) 6079 /* Nonzero if MACH is a 64 bit sparc architecture. */ 6080 #define bfd_mach_sparc_64bit_p(mach) \ 6081 ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb) 6082 bfd_arch_spu, /* PowerPC SPU */ 6083 #define bfd_mach_spu 256 6084 bfd_arch_mips, /* MIPS Rxxxx */ 6085 #define bfd_mach_mips3000 3000 6086 #define bfd_mach_mips3900 3900 6087 #define bfd_mach_mips4000 4000 6088 #define bfd_mach_mips4010 4010 6089 #define bfd_mach_mips4100 4100 6090 #define bfd_mach_mips4111 4111 6091 #define bfd_mach_mips4120 4120 6092 #define bfd_mach_mips4300 4300 6093 #define bfd_mach_mips4400 4400 6094 #define bfd_mach_mips4600 4600 6095 #define bfd_mach_mips4650 4650 6096 #define bfd_mach_mips5000 5000 6097 #define bfd_mach_mips5400 5400 6098 #define bfd_mach_mips5500 5500 6099 #define bfd_mach_mips6000 6000 6100 #define bfd_mach_mips7000 7000 6101 #define bfd_mach_mips8000 8000 6102 #define bfd_mach_mips9000 9000 6103 #define bfd_mach_mips10000 10000 6104 #define bfd_mach_mips12000 12000 6105 #define bfd_mach_mips16 16 6106 #define bfd_mach_mips5 5 6107 #define bfd_mach_mips_loongson_2e 3001 6108 #define bfd_mach_mips_loongson_2f 3002 6109 #define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */ 6110 #define bfd_mach_mips_octeon 6501 6111 #define bfd_mach_mipsisa32 32 6112 #define bfd_mach_mipsisa32r2 33 6113 #define bfd_mach_mipsisa64 64 6114 #define bfd_mach_mipsisa64r2 65 6115 bfd_arch_i386, /* Intel 386 */ 6116 #define bfd_mach_i386_i386 1 6117 #define bfd_mach_i386_i8086 2 6118 #define bfd_mach_i386_i386_intel_syntax 3 6119 #define bfd_mach_x86_64 64 6120 #define bfd_mach_x86_64_intel_syntax 65 6121 bfd_arch_we32k, /* AT&T WE32xxx */ 6122 bfd_arch_tahoe, /* CCI/Harris Tahoe */ 6123 bfd_arch_i860, /* Intel 860 */ 6124 bfd_arch_i370, /* IBM 360/370 Mainframes */ 6125 bfd_arch_romp, /* IBM ROMP PC/RT */ 6126 bfd_arch_convex, /* Convex */ 6127 bfd_arch_m88k, /* Motorola 88xxx */ 6128 bfd_arch_m98k, /* Motorola 98xxx */ 6129 bfd_arch_pyramid, /* Pyramid Technology */ 6130 bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */ 6131 #define bfd_mach_h8300 1 6132 #define bfd_mach_h8300h 2 6133 #define bfd_mach_h8300s 3 6134 #define bfd_mach_h8300hn 4 6135 #define bfd_mach_h8300sn 5 6136 #define bfd_mach_h8300sx 6 6137 #define bfd_mach_h8300sxn 7 6138 bfd_arch_pdp11, /* DEC PDP-11 */ 6139 bfd_arch_powerpc, /* PowerPC */ 6140 #define bfd_mach_ppc 32 6141 #define bfd_mach_ppc64 64 6142 #define bfd_mach_ppc_403 403 6143 #define bfd_mach_ppc_403gc 4030 6144 #define bfd_mach_ppc_505 505 6145 #define bfd_mach_ppc_601 601 6146 #define bfd_mach_ppc_602 602 6147 #define bfd_mach_ppc_603 603 6148 #define bfd_mach_ppc_ec603e 6031 6149 #define bfd_mach_ppc_604 604 6150 #define bfd_mach_ppc_620 620 6151 #define bfd_mach_ppc_630 630 6152 #define bfd_mach_ppc_750 750 6153 #define bfd_mach_ppc_860 860 6154 #define bfd_mach_ppc_a35 35 6155 #define bfd_mach_ppc_rs64ii 642 6156 #define bfd_mach_ppc_rs64iii 643 6157 #define bfd_mach_ppc_7400 7400 6158 #define bfd_mach_ppc_e500 500 6159 #define bfd_mach_ppc_e500mc 5001 6160 bfd_arch_rs6000, /* IBM RS/6000 */ 6161 #define bfd_mach_rs6k 6000 6162 #define bfd_mach_rs6k_rs1 6001 6163 #define bfd_mach_rs6k_rsc 6003 6164 #define bfd_mach_rs6k_rs2 6002 6165 bfd_arch_hppa, /* HP PA RISC */ 6166 #define bfd_mach_hppa10 10 6167 #define bfd_mach_hppa11 11 6168 #define bfd_mach_hppa20 20 6169 #define bfd_mach_hppa20w 25 6170 bfd_arch_d10v, /* Mitsubishi D10V */ 6171 #define bfd_mach_d10v 1 6172 #define bfd_mach_d10v_ts2 2 6173 #define bfd_mach_d10v_ts3 3 6174 bfd_arch_d30v, /* Mitsubishi D30V */ 6175 bfd_arch_dlx, /* DLX */ 6176 bfd_arch_m68hc11, /* Motorola 68HC11 */ 6177 bfd_arch_m68hc12, /* Motorola 68HC12 */ 6178 #define bfd_mach_m6812_default 0 6179 #define bfd_mach_m6812 1 6180 #define bfd_mach_m6812s 2 6181 bfd_arch_z8k, /* Zilog Z8000 */ 6182 #define bfd_mach_z8001 1 6183 #define bfd_mach_z8002 2 6184 bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */ 6185 bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */ 6186 #define bfd_mach_sh 1 6187 #define bfd_mach_sh2 0x20 6188 #define bfd_mach_sh_dsp 0x2d 6189 #define bfd_mach_sh2a 0x2a 6190 #define bfd_mach_sh2a_nofpu 0x2b 6191 #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1 6192 #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2 6193 #define bfd_mach_sh2a_or_sh4 0x2a3 6194 #define bfd_mach_sh2a_or_sh3e 0x2a4 6195 #define bfd_mach_sh2e 0x2e 6196 #define bfd_mach_sh3 0x30 6197 #define bfd_mach_sh3_nommu 0x31 6198 #define bfd_mach_sh3_dsp 0x3d 6199 #define bfd_mach_sh3e 0x3e 6200 #define bfd_mach_sh4 0x40 6201 #define bfd_mach_sh4_nofpu 0x41 6202 #define bfd_mach_sh4_nommu_nofpu 0x42 6203 #define bfd_mach_sh4a 0x4a 6204 #define bfd_mach_sh4a_nofpu 0x4b 6205 #define bfd_mach_sh4al_dsp 0x4d 6206 #define bfd_mach_sh5 0x50 6207 bfd_arch_alpha, /* Dec Alpha */ 6208 #define bfd_mach_alpha_ev4 0x10 6209 #define bfd_mach_alpha_ev5 0x20 6210 #define bfd_mach_alpha_ev6 0x30 6211 bfd_arch_arm, /* Advanced Risc Machines ARM. */ 6212 #define bfd_mach_arm_unknown 0 6213 #define bfd_mach_arm_2 1 6214 #define bfd_mach_arm_2a 2 6215 #define bfd_mach_arm_3 3 6216 #define bfd_mach_arm_3M 4 6217 #define bfd_mach_arm_4 5 6218 #define bfd_mach_arm_4T 6 6219 #define bfd_mach_arm_5 7 6220 #define bfd_mach_arm_5T 8 6221 #define bfd_mach_arm_5TE 9 6222 #define bfd_mach_arm_XScale 10 6223 #define bfd_mach_arm_ep9312 11 6224 #define bfd_mach_arm_iWMMXt 12 6225 #define bfd_mach_arm_iWMMXt2 13 6226 bfd_arch_ns32k, /* National Semiconductors ns32000 */ 6227 bfd_arch_w65, /* WDC 65816 */ 6228 bfd_arch_tic30, /* Texas Instruments TMS320C30 */ 6229 bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */ 6230 #define bfd_mach_tic3x 30 6231 #define bfd_mach_tic4x 40 6232 bfd_arch_tic54x, /* Texas Instruments TMS320C54X */ 6233 bfd_arch_tic80, /* TI TMS320c80 (MVP) */ 6234 bfd_arch_v850, /* NEC V850 */ 6235 #define bfd_mach_v850 1 6236 #define bfd_mach_v850e 'E' 6237 #define bfd_mach_v850e1 '1' 6238 bfd_arch_arc, /* ARC Cores */ 6239 #define bfd_mach_arc_5 5 6240 #define bfd_mach_arc_6 6 6241 #define bfd_mach_arc_7 7 6242 #define bfd_mach_arc_8 8 6243 bfd_arch_m32c, /* Renesas M16C/M32C. */ 6244 #define bfd_mach_m16c 0x75 6245 #define bfd_mach_m32c 0x78 6246 bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */ 6247 #define bfd_mach_m32r 1 /* For backwards compatibility. */ 6248 #define bfd_mach_m32rx 'x' 6249 #define bfd_mach_m32r2 '2' 6250 bfd_arch_mn10200, /* Matsushita MN10200 */ 6251 bfd_arch_mn10300, /* Matsushita MN10300 */ 6252 #define bfd_mach_mn10300 300 6253 #define bfd_mach_am33 330 6254 #define bfd_mach_am33_2 332 6255 bfd_arch_fr30, 6256 #define bfd_mach_fr30 0x46523330 6257 bfd_arch_frv, 6258 #define bfd_mach_frv 1 6259 #define bfd_mach_frvsimple 2 6260 #define bfd_mach_fr300 300 6261 #define bfd_mach_fr400 400 6262 #define bfd_mach_fr450 450 6263 #define bfd_mach_frvtomcat 499 /* fr500 prototype */ 6264 #define bfd_mach_fr500 500 6265 #define bfd_mach_fr550 550 6266 bfd_arch_mcore, 6267 bfd_arch_mep, 6268 #define bfd_mach_mep 1 6269 #define bfd_mach_mep_h1 0x6831 6270 bfd_arch_ia64, /* HP/Intel ia64 */ 6271 #define bfd_mach_ia64_elf64 64 6272 #define bfd_mach_ia64_elf32 32 6273 bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */ 6274 #define bfd_mach_ip2022 1 6275 #define bfd_mach_ip2022ext 2 6276 bfd_arch_iq2000, /* Vitesse IQ2000. */ 6277 #define bfd_mach_iq2000 1 6278 #define bfd_mach_iq10 2 6279 bfd_arch_mt, 6280 #define bfd_mach_ms1 1 6281 #define bfd_mach_mrisc2 2 6282 #define bfd_mach_ms2 3 6283 bfd_arch_pj, 6284 bfd_arch_avr, /* Atmel AVR microcontrollers. */ 6285 #define bfd_mach_avr1 1 6286 #define bfd_mach_avr2 2 6287 #define bfd_mach_avr25 25 6288 #define bfd_mach_avr3 3 6289 #define bfd_mach_avr31 31 6290 #define bfd_mach_avr35 35 6291 #define bfd_mach_avr4 4 6292 #define bfd_mach_avr5 5 6293 #define bfd_mach_avr51 51 6294 #define bfd_mach_avr6 6 6295 bfd_arch_bfin, /* ADI Blackfin */ 6296 #define bfd_mach_bfin 1 6297 bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */ 6298 #define bfd_mach_cr16 1 6299 bfd_arch_cr16c, /* National Semiconductor CompactRISC. */ 6300 #define bfd_mach_cr16c 1 6301 bfd_arch_crx, /* National Semiconductor CRX. */ 6302 #define bfd_mach_crx 1 6303 bfd_arch_cris, /* Axis CRIS */ 6304 #define bfd_mach_cris_v0_v10 255 6305 #define bfd_mach_cris_v32 32 6306 #define bfd_mach_cris_v10_v32 1032 6307 bfd_arch_s390, /* IBM s390 */ 6308 #define bfd_mach_s390_31 31 6309 #define bfd_mach_s390_64 64 6310 bfd_arch_score, /* Sunplus score */ 6311 bfd_arch_openrisc, /* OpenRISC */ 6312 bfd_arch_mmix, /* Donald Knuth's educational processor. */ 6313 bfd_arch_xstormy16, 6314 #define bfd_mach_xstormy16 1 6315 bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */ 6316 #define bfd_mach_msp11 11 6317 #define bfd_mach_msp110 110 6318 #define bfd_mach_msp12 12 6319 #define bfd_mach_msp13 13 6320 #define bfd_mach_msp14 14 6321 #define bfd_mach_msp15 15 6322 #define bfd_mach_msp16 16 6323 #define bfd_mach_msp21 21 6324 #define bfd_mach_msp31 31 6325 #define bfd_mach_msp32 32 6326 #define bfd_mach_msp33 33 6327 #define bfd_mach_msp41 41 6328 #define bfd_mach_msp42 42 6329 #define bfd_mach_msp43 43 6330 #define bfd_mach_msp44 44 6331 bfd_arch_xc16x, /* Infineon's XC16X Series. */ 6332 #define bfd_mach_xc16x 1 6333 #define bfd_mach_xc16xl 2 6334 #define bfd_mach_xc16xs 3 6335 bfd_arch_xtensa, /* Tensilica's Xtensa cores. */ 6336 #define bfd_mach_xtensa 1 6337 bfd_arch_maxq, /* Dallas MAXQ 10/20 */ 6338 #define bfd_mach_maxq10 10 6339 #define bfd_mach_maxq20 20 6340 bfd_arch_z80, 6341 #define bfd_mach_z80strict 1 /* No undocumented opcodes. */ 6342 #define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */ 6343 #define bfd_mach_z80full 7 /* All undocumented instructions. */ 6344 #define bfd_mach_r800 11 /* R800: successor with multiplication. */ 6345 bfd_arch_last 6346 }; 6347 63482.13.2 bfd_arch_info 6349-------------------- 6350 6351*Description* 6352This structure contains information on architectures for use within BFD. 6353 6354 typedef struct bfd_arch_info 6355 { 6356 int bits_per_word; 6357 int bits_per_address; 6358 int bits_per_byte; 6359 enum bfd_architecture arch; 6360 unsigned long mach; 6361 const char *arch_name; 6362 const char *printable_name; 6363 unsigned int section_align_power; 6364 /* TRUE if this is the default machine for the architecture. 6365 The default arch should be the first entry for an arch so that 6366 all the entries for that arch can be accessed via `next'. */ 6367 bfd_boolean the_default; 6368 const struct bfd_arch_info * (*compatible) 6369 (const struct bfd_arch_info *a, const struct bfd_arch_info *b); 6370 6371 bfd_boolean (*scan) (const struct bfd_arch_info *, const char *); 6372 6373 const struct bfd_arch_info *next; 6374 } 6375 bfd_arch_info_type; 6376 63772.13.2.1 `bfd_printable_name' 6378............................. 6379 6380*Synopsis* 6381 const char *bfd_printable_name (bfd *abfd); 6382 *Description* 6383Return a printable string representing the architecture and machine 6384from the pointer to the architecture info structure. 6385 63862.13.2.2 `bfd_scan_arch' 6387........................ 6388 6389*Synopsis* 6390 const bfd_arch_info_type *bfd_scan_arch (const char *string); 6391 *Description* 6392Figure out if BFD supports any cpu which could be described with the 6393name STRING. Return a pointer to an `arch_info' structure if a machine 6394is found, otherwise NULL. 6395 63962.13.2.3 `bfd_arch_list' 6397........................ 6398 6399*Synopsis* 6400 const char **bfd_arch_list (void); 6401 *Description* 6402Return a freshly malloced NULL-terminated vector of the names of all 6403the valid BFD architectures. Do not modify the names. 6404 64052.13.2.4 `bfd_arch_get_compatible' 6406.................................. 6407 6408*Synopsis* 6409 const bfd_arch_info_type *bfd_arch_get_compatible 6410 (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns); 6411 *Description* 6412Determine whether two BFDs' architectures and machine types are 6413compatible. Calculates the lowest common denominator between the two 6414architectures and machine types implied by the BFDs and returns a 6415pointer to an `arch_info' structure describing the compatible machine. 6416 64172.13.2.5 `bfd_default_arch_struct' 6418.................................. 6419 6420*Description* 6421The `bfd_default_arch_struct' is an item of `bfd_arch_info_type' which 6422has been initialized to a fairly generic state. A BFD starts life by 6423pointing to this structure, until the correct back end has determined 6424the real architecture of the file. 6425 extern const bfd_arch_info_type bfd_default_arch_struct; 6426 64272.13.2.6 `bfd_set_arch_info' 6428............................ 6429 6430*Synopsis* 6431 void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg); 6432 *Description* 6433Set the architecture info of ABFD to ARG. 6434 64352.13.2.7 `bfd_default_set_arch_mach' 6436.................................... 6437 6438*Synopsis* 6439 bfd_boolean bfd_default_set_arch_mach 6440 (bfd *abfd, enum bfd_architecture arch, unsigned long mach); 6441 *Description* 6442Set the architecture and machine type in BFD ABFD to ARCH and MACH. 6443Find the correct pointer to a structure and insert it into the 6444`arch_info' pointer. 6445 64462.13.2.8 `bfd_get_arch' 6447....................... 6448 6449*Synopsis* 6450 enum bfd_architecture bfd_get_arch (bfd *abfd); 6451 *Description* 6452Return the enumerated type which describes the BFD ABFD's architecture. 6453 64542.13.2.9 `bfd_get_mach' 6455....................... 6456 6457*Synopsis* 6458 unsigned long bfd_get_mach (bfd *abfd); 6459 *Description* 6460Return the long type which describes the BFD ABFD's machine. 6461 64622.13.2.10 `bfd_arch_bits_per_byte' 6463.................................. 6464 6465*Synopsis* 6466 unsigned int bfd_arch_bits_per_byte (bfd *abfd); 6467 *Description* 6468Return the number of bits in one of the BFD ABFD's architecture's bytes. 6469 64702.13.2.11 `bfd_arch_bits_per_address' 6471..................................... 6472 6473*Synopsis* 6474 unsigned int bfd_arch_bits_per_address (bfd *abfd); 6475 *Description* 6476Return the number of bits in one of the BFD ABFD's architecture's 6477addresses. 6478 64792.13.2.12 `bfd_default_compatible' 6480.................................. 6481 6482*Synopsis* 6483 const bfd_arch_info_type *bfd_default_compatible 6484 (const bfd_arch_info_type *a, const bfd_arch_info_type *b); 6485 *Description* 6486The default function for testing for compatibility. 6487 64882.13.2.13 `bfd_default_scan' 6489............................ 6490 6491*Synopsis* 6492 bfd_boolean bfd_default_scan 6493 (const struct bfd_arch_info *info, const char *string); 6494 *Description* 6495The default function for working out whether this is an architecture 6496hit and a machine hit. 6497 64982.13.2.14 `bfd_get_arch_info' 6499............................. 6500 6501*Synopsis* 6502 const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd); 6503 *Description* 6504Return the architecture info struct in ABFD. 6505 65062.13.2.15 `bfd_lookup_arch' 6507........................... 6508 6509*Synopsis* 6510 const bfd_arch_info_type *bfd_lookup_arch 6511 (enum bfd_architecture arch, unsigned long machine); 6512 *Description* 6513Look for the architecture info structure which matches the arguments 6514ARCH and MACHINE. A machine of 0 matches the machine/architecture 6515structure which marks itself as the default. 6516 65172.13.2.16 `bfd_printable_arch_mach' 6518................................... 6519 6520*Synopsis* 6521 const char *bfd_printable_arch_mach 6522 (enum bfd_architecture arch, unsigned long machine); 6523 *Description* 6524Return a printable string representing the architecture and machine 6525type. 6526 6527 This routine is depreciated. 6528 65292.13.2.17 `bfd_octets_per_byte' 6530............................... 6531 6532*Synopsis* 6533 unsigned int bfd_octets_per_byte (bfd *abfd); 6534 *Description* 6535Return the number of octets (8-bit quantities) per target byte (minimum 6536addressable unit). In most cases, this will be one, but some DSP 6537targets have 16, 32, or even 48 bits per byte. 6538 65392.13.2.18 `bfd_arch_mach_octets_per_byte' 6540......................................... 6541 6542*Synopsis* 6543 unsigned int bfd_arch_mach_octets_per_byte 6544 (enum bfd_architecture arch, unsigned long machine); 6545 *Description* 6546See bfd_octets_per_byte. 6547 6548 This routine is provided for those cases where a bfd * is not 6549available 6550 6551 6552File: bfd.info, Node: Opening and Closing, Next: Internal, Prev: Architectures, Up: BFD front end 6553 65542.14 Opening and closing BFDs 6555============================= 6556 65572.14.1 Functions for opening and closing 6558---------------------------------------- 6559 65602.14.1.1 `bfd_fopen' 6561.................... 6562 6563*Synopsis* 6564 bfd *bfd_fopen (const char *filename, const char *target, 6565 const char *mode, int fd); 6566 *Description* 6567Open the file FILENAME with the target TARGET. Return a pointer to the 6568created BFD. If FD is not -1, then `fdopen' is used to open the file; 6569otherwise, `fopen' is used. MODE is passed directly to `fopen' or 6570`fdopen'. 6571 6572 Calls `bfd_find_target', so TARGET is interpreted as by that 6573function. 6574 6575 The new BFD is marked as cacheable iff FD is -1. 6576 6577 If `NULL' is returned then an error has occured. Possible errors 6578are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call' 6579error. 6580 65812.14.1.2 `bfd_openr' 6582.................... 6583 6584*Synopsis* 6585 bfd *bfd_openr (const char *filename, const char *target); 6586 *Description* 6587Open the file FILENAME (using `fopen') with the target TARGET. Return 6588a pointer to the created BFD. 6589 6590 Calls `bfd_find_target', so TARGET is interpreted as by that 6591function. 6592 6593 If `NULL' is returned then an error has occured. Possible errors 6594are `bfd_error_no_memory', `bfd_error_invalid_target' or `system_call' 6595error. 6596 65972.14.1.3 `bfd_fdopenr' 6598...................... 6599 6600*Synopsis* 6601 bfd *bfd_fdopenr (const char *filename, const char *target, int fd); 6602 *Description* 6603`bfd_fdopenr' is to `bfd_fopenr' much like `fdopen' is to `fopen'. It 6604opens a BFD on a file already described by the FD supplied. 6605 6606 When the file is later `bfd_close'd, the file descriptor will be 6607closed. If the caller desires that this file descriptor be cached by 6608BFD (opened as needed, closed as needed to free descriptors for other 6609opens), with the supplied FD used as an initial file descriptor (but 6610subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the 6611returned BFD. The default is to assume no caching; the file descriptor 6612will remain open until `bfd_close', and will not be affected by BFD 6613operations on other files. 6614 6615 Possible errors are `bfd_error_no_memory', 6616`bfd_error_invalid_target' and `bfd_error_system_call'. 6617 66182.14.1.4 `bfd_openstreamr' 6619.......................... 6620 6621*Synopsis* 6622 bfd *bfd_openstreamr (const char *, const char *, void *); 6623 *Description* 6624Open a BFD for read access on an existing stdio stream. When the BFD 6625is passed to `bfd_close', the stream will be closed. 6626 66272.14.1.5 `bfd_openr_iovec' 6628.......................... 6629 6630*Synopsis* 6631 bfd *bfd_openr_iovec (const char *filename, const char *target, 6632 void *(*open) (struct bfd *nbfd, 6633 void *open_closure), 6634 void *open_closure, 6635 file_ptr (*pread) (struct bfd *nbfd, 6636 void *stream, 6637 void *buf, 6638 file_ptr nbytes, 6639 file_ptr offset), 6640 int (*close) (struct bfd *nbfd, 6641 void *stream), 6642 int (*stat) (struct bfd *abfd, 6643 void *stream, 6644 struct stat *sb)); 6645 *Description* 6646Create and return a BFD backed by a read-only STREAM. The STREAM is 6647created using OPEN, accessed using PREAD and destroyed using CLOSE. 6648 6649 Calls `bfd_find_target', so TARGET is interpreted as by that 6650function. 6651 6652 Calls OPEN (which can call `bfd_zalloc' and `bfd_get_filename') to 6653obtain the read-only stream backing the BFD. OPEN either succeeds 6654returning the non-`NULL' STREAM, or fails returning `NULL' (setting 6655`bfd_error'). 6656 6657 Calls PREAD to request NBYTES of data from STREAM starting at OFFSET 6658(e.g., via a call to `bfd_read'). PREAD either succeeds returning the 6659number of bytes read (which can be less than NBYTES when end-of-file), 6660or fails returning -1 (setting `bfd_error'). 6661 6662 Calls CLOSE when the BFD is later closed using `bfd_close'. CLOSE 6663either succeeds returning 0, or fails returning -1 (setting 6664`bfd_error'). 6665 6666 Calls STAT to fill in a stat structure for bfd_stat, bfd_get_size, 6667and bfd_get_mtime calls. STAT returns 0 on success, or returns -1 on 6668failure (setting `bfd_error'). 6669 6670 If `bfd_openr_iovec' returns `NULL' then an error has occurred. 6671Possible errors are `bfd_error_no_memory', `bfd_error_invalid_target' 6672and `bfd_error_system_call'. 6673 66742.14.1.6 `bfd_openw' 6675.................... 6676 6677*Synopsis* 6678 bfd *bfd_openw (const char *filename, const char *target); 6679 *Description* 6680Create a BFD, associated with file FILENAME, using the file format 6681TARGET, and return a pointer to it. 6682 6683 Possible errors are `bfd_error_system_call', `bfd_error_no_memory', 6684`bfd_error_invalid_target'. 6685 66862.14.1.7 `bfd_close' 6687.................... 6688 6689*Synopsis* 6690 bfd_boolean bfd_close (bfd *abfd); 6691 *Description* 6692Close a BFD. If the BFD was open for writing, then pending operations 6693are completed and the file written out and closed. If the created file 6694is executable, then `chmod' is called to mark it as such. 6695 6696 All memory attached to the BFD is released. 6697 6698 The file descriptor associated with the BFD is closed (even if it 6699was passed in to BFD by `bfd_fdopenr'). 6700 6701 *Returns* 6702`TRUE' is returned if all is ok, otherwise `FALSE'. 6703 67042.14.1.8 `bfd_close_all_done' 6705............................. 6706 6707*Synopsis* 6708 bfd_boolean bfd_close_all_done (bfd *); 6709 *Description* 6710Close a BFD. Differs from `bfd_close' since it does not complete any 6711pending operations. This routine would be used if the application had 6712just used BFD for swapping and didn't want to use any of the writing 6713code. 6714 6715 If the created file is executable, then `chmod' is called to mark it 6716as such. 6717 6718 All memory attached to the BFD is released. 6719 6720 *Returns* 6721`TRUE' is returned if all is ok, otherwise `FALSE'. 6722 67232.14.1.9 `bfd_create' 6724..................... 6725 6726*Synopsis* 6727 bfd *bfd_create (const char *filename, bfd *templ); 6728 *Description* 6729Create a new BFD in the manner of `bfd_openw', but without opening a 6730file. The new BFD takes the target from the target used by TEMPLATE. 6731The format is always set to `bfd_object'. 6732 67332.14.1.10 `bfd_make_writable' 6734............................. 6735 6736*Synopsis* 6737 bfd_boolean bfd_make_writable (bfd *abfd); 6738 *Description* 6739Takes a BFD as created by `bfd_create' and converts it into one like as 6740returned by `bfd_openw'. It does this by converting the BFD to 6741BFD_IN_MEMORY. It's assumed that you will call `bfd_make_readable' on 6742this bfd later. 6743 6744 *Returns* 6745`TRUE' is returned if all is ok, otherwise `FALSE'. 6746 67472.14.1.11 `bfd_make_readable' 6748............................. 6749 6750*Synopsis* 6751 bfd_boolean bfd_make_readable (bfd *abfd); 6752 *Description* 6753Takes a BFD as created by `bfd_create' and `bfd_make_writable' and 6754converts it into one like as returned by `bfd_openr'. It does this by 6755writing the contents out to the memory buffer, then reversing the 6756direction. 6757 6758 *Returns* 6759`TRUE' is returned if all is ok, otherwise `FALSE'. 6760 67612.14.1.12 `bfd_alloc' 6762..................... 6763 6764*Synopsis* 6765 void *bfd_alloc (bfd *abfd, bfd_size_type wanted); 6766 *Description* 6767Allocate a block of WANTED bytes of memory attached to `abfd' and 6768return a pointer to it. 6769 67702.14.1.13 `bfd_alloc2' 6771...................... 6772 6773*Synopsis* 6774 void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size); 6775 *Description* 6776Allocate a block of NMEMB elements of SIZE bytes each of memory 6777attached to `abfd' and return a pointer to it. 6778 67792.14.1.14 `bfd_zalloc' 6780...................... 6781 6782*Synopsis* 6783 void *bfd_zalloc (bfd *abfd, bfd_size_type wanted); 6784 *Description* 6785Allocate a block of WANTED bytes of zeroed memory attached to `abfd' 6786and return a pointer to it. 6787 67882.14.1.15 `bfd_zalloc2' 6789....................... 6790 6791*Synopsis* 6792 void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size); 6793 *Description* 6794Allocate a block of NMEMB elements of SIZE bytes each of zeroed memory 6795attached to `abfd' and return a pointer to it. 6796 67972.14.1.16 `bfd_calc_gnu_debuglink_crc32' 6798........................................ 6799 6800*Synopsis* 6801 unsigned long bfd_calc_gnu_debuglink_crc32 6802 (unsigned long crc, const unsigned char *buf, bfd_size_type len); 6803 *Description* 6804Computes a CRC value as used in the .gnu_debuglink section. Advances 6805the previously computed CRC value by computing and adding in the crc32 6806for LEN bytes of BUF. 6807 6808 *Returns* 6809Return the updated CRC32 value. 6810 68112.14.1.17 `get_debug_link_info' 6812............................... 6813 6814*Synopsis* 6815 char *get_debug_link_info (bfd *abfd, unsigned long *crc32_out); 6816 *Description* 6817fetch the filename and CRC32 value for any separate debuginfo 6818associated with ABFD. Return NULL if no such info found, otherwise 6819return filename and update CRC32_OUT. 6820 68212.14.1.18 `separate_debug_file_exists' 6822...................................... 6823 6824*Synopsis* 6825 bfd_boolean separate_debug_file_exists 6826 (char *name, unsigned long crc32); 6827 *Description* 6828Checks to see if NAME is a file and if its contents match CRC32. 6829 68302.14.1.19 `find_separate_debug_file' 6831.................................... 6832 6833*Synopsis* 6834 char *find_separate_debug_file (bfd *abfd); 6835 *Description* 6836Searches ABFD for a reference to separate debugging information, scans 6837various locations in the filesystem, including the file tree rooted at 6838DEBUG_FILE_DIRECTORY, and returns a filename of such debugging 6839information if the file is found and has matching CRC32. Returns NULL 6840if no reference to debugging file exists, or file cannot be found. 6841 68422.14.1.20 `bfd_follow_gnu_debuglink' 6843.................................... 6844 6845*Synopsis* 6846 char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir); 6847 *Description* 6848Takes a BFD and searches it for a .gnu_debuglink section. If this 6849section is found, it examines the section for the name and checksum of 6850a '.debug' file containing auxiliary debugging information. It then 6851searches the filesystem for this .debug file in some standard 6852locations, including the directory tree rooted at DIR, and if found 6853returns the full filename. 6854 6855 If DIR is NULL, it will search a default path configured into libbfd 6856at build time. [XXX this feature is not currently implemented]. 6857 6858 *Returns* 6859`NULL' on any errors or failure to locate the .debug file, otherwise a 6860pointer to a heap-allocated string containing the filename. The caller 6861is responsible for freeing this string. 6862 68632.14.1.21 `bfd_create_gnu_debuglink_section' 6864............................................ 6865 6866*Synopsis* 6867 struct bfd_section *bfd_create_gnu_debuglink_section 6868 (bfd *abfd, const char *filename); 6869 *Description* 6870Takes a BFD and adds a .gnu_debuglink section to it. The section is 6871sized to be big enough to contain a link to the specified FILENAME. 6872 6873 *Returns* 6874A pointer to the new section is returned if all is ok. Otherwise 6875`NULL' is returned and bfd_error is set. 6876 68772.14.1.22 `bfd_fill_in_gnu_debuglink_section' 6878............................................. 6879 6880*Synopsis* 6881 bfd_boolean bfd_fill_in_gnu_debuglink_section 6882 (bfd *abfd, struct bfd_section *sect, const char *filename); 6883 *Description* 6884Takes a BFD and containing a .gnu_debuglink section SECT and fills in 6885the contents of the section to contain a link to the specified 6886FILENAME. The filename should be relative to the current directory. 6887 6888 *Returns* 6889`TRUE' is returned if all is ok. Otherwise `FALSE' is returned and 6890bfd_error is set. 6891 6892 6893File: bfd.info, Node: Internal, Next: File Caching, Prev: Opening and Closing, Up: BFD front end 6894 68952.15 Implementation details 6896=========================== 6897 68982.15.1 Internal functions 6899------------------------- 6900 6901*Description* 6902These routines are used within BFD. They are not intended for export, 6903but are documented here for completeness. 6904 69052.15.1.1 `bfd_write_bigendian_4byte_int' 6906........................................ 6907 6908*Synopsis* 6909 bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int); 6910 *Description* 6911Write a 4 byte integer I to the output BFD ABFD, in big endian order 6912regardless of what else is going on. This is useful in archives. 6913 69142.15.1.2 `bfd_put_size' 6915....................... 6916 69172.15.1.3 `bfd_get_size' 6918....................... 6919 6920*Description* 6921These macros as used for reading and writing raw data in sections; each 6922access (except for bytes) is vectored through the target format of the 6923BFD and mangled accordingly. The mangling performs any necessary endian 6924translations and removes alignment restrictions. Note that types 6925accepted and returned by these macros are identical so they can be 6926swapped around in macros--for example, `libaout.h' defines `GET_WORD' 6927to either `bfd_get_32' or `bfd_get_64'. 6928 6929 In the put routines, VAL must be a `bfd_vma'. If we are on a system 6930without prototypes, the caller is responsible for making sure that is 6931true, with a cast if necessary. We don't cast them in the macro 6932definitions because that would prevent `lint' or `gcc -Wall' from 6933detecting sins such as passing a pointer. To detect calling these with 6934less than a `bfd_vma', use `gcc -Wconversion' on a host with 64 bit 6935`bfd_vma''s. 6936 6937 /* Byte swapping macros for user section data. */ 6938 6939 #define bfd_put_8(abfd, val, ptr) \ 6940 ((void) (*((unsigned char *) (ptr)) = (val) & 0xff)) 6941 #define bfd_put_signed_8 \ 6942 bfd_put_8 6943 #define bfd_get_8(abfd, ptr) \ 6944 (*(unsigned char *) (ptr) & 0xff) 6945 #define bfd_get_signed_8(abfd, ptr) \ 6946 (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80) 6947 6948 #define bfd_put_16(abfd, val, ptr) \ 6949 BFD_SEND (abfd, bfd_putx16, ((val),(ptr))) 6950 #define bfd_put_signed_16 \ 6951 bfd_put_16 6952 #define bfd_get_16(abfd, ptr) \ 6953 BFD_SEND (abfd, bfd_getx16, (ptr)) 6954 #define bfd_get_signed_16(abfd, ptr) \ 6955 BFD_SEND (abfd, bfd_getx_signed_16, (ptr)) 6956 6957 #define bfd_put_32(abfd, val, ptr) \ 6958 BFD_SEND (abfd, bfd_putx32, ((val),(ptr))) 6959 #define bfd_put_signed_32 \ 6960 bfd_put_32 6961 #define bfd_get_32(abfd, ptr) \ 6962 BFD_SEND (abfd, bfd_getx32, (ptr)) 6963 #define bfd_get_signed_32(abfd, ptr) \ 6964 BFD_SEND (abfd, bfd_getx_signed_32, (ptr)) 6965 6966 #define bfd_put_64(abfd, val, ptr) \ 6967 BFD_SEND (abfd, bfd_putx64, ((val), (ptr))) 6968 #define bfd_put_signed_64 \ 6969 bfd_put_64 6970 #define bfd_get_64(abfd, ptr) \ 6971 BFD_SEND (abfd, bfd_getx64, (ptr)) 6972 #define bfd_get_signed_64(abfd, ptr) \ 6973 BFD_SEND (abfd, bfd_getx_signed_64, (ptr)) 6974 6975 #define bfd_get(bits, abfd, ptr) \ 6976 ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \ 6977 : (bits) == 16 ? bfd_get_16 (abfd, ptr) \ 6978 : (bits) == 32 ? bfd_get_32 (abfd, ptr) \ 6979 : (bits) == 64 ? bfd_get_64 (abfd, ptr) \ 6980 : (abort (), (bfd_vma) - 1)) 6981 6982 #define bfd_put(bits, abfd, val, ptr) \ 6983 ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \ 6984 : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \ 6985 : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \ 6986 : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \ 6987 : (abort (), (void) 0)) 6988 69892.15.1.4 `bfd_h_put_size' 6990......................... 6991 6992*Description* 6993These macros have the same function as their `bfd_get_x' brethren, 6994except that they are used for removing information for the header 6995records of object files. Believe it or not, some object files keep 6996their header records in big endian order and their data in little 6997endian order. 6998 6999 /* Byte swapping macros for file header data. */ 7000 7001 #define bfd_h_put_8(abfd, val, ptr) \ 7002 bfd_put_8 (abfd, val, ptr) 7003 #define bfd_h_put_signed_8(abfd, val, ptr) \ 7004 bfd_put_8 (abfd, val, ptr) 7005 #define bfd_h_get_8(abfd, ptr) \ 7006 bfd_get_8 (abfd, ptr) 7007 #define bfd_h_get_signed_8(abfd, ptr) \ 7008 bfd_get_signed_8 (abfd, ptr) 7009 7010 #define bfd_h_put_16(abfd, val, ptr) \ 7011 BFD_SEND (abfd, bfd_h_putx16, (val, ptr)) 7012 #define bfd_h_put_signed_16 \ 7013 bfd_h_put_16 7014 #define bfd_h_get_16(abfd, ptr) \ 7015 BFD_SEND (abfd, bfd_h_getx16, (ptr)) 7016 #define bfd_h_get_signed_16(abfd, ptr) \ 7017 BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr)) 7018 7019 #define bfd_h_put_32(abfd, val, ptr) \ 7020 BFD_SEND (abfd, bfd_h_putx32, (val, ptr)) 7021 #define bfd_h_put_signed_32 \ 7022 bfd_h_put_32 7023 #define bfd_h_get_32(abfd, ptr) \ 7024 BFD_SEND (abfd, bfd_h_getx32, (ptr)) 7025 #define bfd_h_get_signed_32(abfd, ptr) \ 7026 BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr)) 7027 7028 #define bfd_h_put_64(abfd, val, ptr) \ 7029 BFD_SEND (abfd, bfd_h_putx64, (val, ptr)) 7030 #define bfd_h_put_signed_64 \ 7031 bfd_h_put_64 7032 #define bfd_h_get_64(abfd, ptr) \ 7033 BFD_SEND (abfd, bfd_h_getx64, (ptr)) 7034 #define bfd_h_get_signed_64(abfd, ptr) \ 7035 BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr)) 7036 7037 /* Aliases for the above, which should eventually go away. */ 7038 7039 #define H_PUT_64 bfd_h_put_64 7040 #define H_PUT_32 bfd_h_put_32 7041 #define H_PUT_16 bfd_h_put_16 7042 #define H_PUT_8 bfd_h_put_8 7043 #define H_PUT_S64 bfd_h_put_signed_64 7044 #define H_PUT_S32 bfd_h_put_signed_32 7045 #define H_PUT_S16 bfd_h_put_signed_16 7046 #define H_PUT_S8 bfd_h_put_signed_8 7047 #define H_GET_64 bfd_h_get_64 7048 #define H_GET_32 bfd_h_get_32 7049 #define H_GET_16 bfd_h_get_16 7050 #define H_GET_8 bfd_h_get_8 7051 #define H_GET_S64 bfd_h_get_signed_64 7052 #define H_GET_S32 bfd_h_get_signed_32 7053 #define H_GET_S16 bfd_h_get_signed_16 7054 #define H_GET_S8 bfd_h_get_signed_8 7055 70562.15.1.5 `bfd_log2' 7057................... 7058 7059*Synopsis* 7060 unsigned int bfd_log2 (bfd_vma x); 7061 *Description* 7062Return the log base 2 of the value supplied, rounded up. E.g., an X of 70631025 returns 11. A X of 0 returns 0. 7064 7065 7066File: bfd.info, Node: File Caching, Next: Linker Functions, Prev: Internal, Up: BFD front end 7067 70682.16 File caching 7069================= 7070 7071The file caching mechanism is embedded within BFD and allows the 7072application to open as many BFDs as it wants without regard to the 7073underlying operating system's file descriptor limit (often as low as 20 7074open files). The module in `cache.c' maintains a least recently used 7075list of `BFD_CACHE_MAX_OPEN' files, and exports the name 7076`bfd_cache_lookup', which runs around and makes sure that the required 7077BFD is open. If not, then it chooses a file to close, closes it and 7078opens the one wanted, returning its file handle. 7079 70802.16.1 Caching functions 7081------------------------ 7082 70832.16.1.1 `bfd_cache_init' 7084......................... 7085 7086*Synopsis* 7087 bfd_boolean bfd_cache_init (bfd *abfd); 7088 *Description* 7089Add a newly opened BFD to the cache. 7090 70912.16.1.2 `bfd_cache_close' 7092.......................... 7093 7094*Synopsis* 7095 bfd_boolean bfd_cache_close (bfd *abfd); 7096 *Description* 7097Remove the BFD ABFD from the cache. If the attached file is open, then 7098close it too. 7099 7100 *Returns* 7101`FALSE' is returned if closing the file fails, `TRUE' is returned if 7102all is well. 7103 71042.16.1.3 `bfd_cache_close_all' 7105.............................. 7106 7107*Synopsis* 7108 bfd_boolean bfd_cache_close_all (void); 7109 *Description* 7110Remove all BFDs from the cache. If the attached file is open, then 7111close it too. 7112 7113 *Returns* 7114`FALSE' is returned if closing one of the file fails, `TRUE' is 7115returned if all is well. 7116 71172.16.1.4 `bfd_open_file' 7118........................ 7119 7120*Synopsis* 7121 FILE* bfd_open_file (bfd *abfd); 7122 *Description* 7123Call the OS to open a file for ABFD. Return the `FILE *' (possibly 7124`NULL') that results from this operation. Set up the BFD so that 7125future accesses know the file is open. If the `FILE *' returned is 7126`NULL', then it won't have been put in the cache, so it won't have to 7127be removed from it. 7128 7129 7130File: bfd.info, Node: Linker Functions, Next: Hash Tables, Prev: File Caching, Up: BFD front end 7131 71322.17 Linker Functions 7133===================== 7134 7135The linker uses three special entry points in the BFD target vector. 7136It is not necessary to write special routines for these entry points 7137when creating a new BFD back end, since generic versions are provided. 7138However, writing them can speed up linking and make it use 7139significantly less runtime memory. 7140 7141 The first routine creates a hash table used by the other routines. 7142The second routine adds the symbols from an object file to the hash 7143table. The third routine takes all the object files and links them 7144together to create the output file. These routines are designed so 7145that the linker proper does not need to know anything about the symbols 7146in the object files that it is linking. The linker merely arranges the 7147sections as directed by the linker script and lets BFD handle the 7148details of symbols and relocs. 7149 7150 The second routine and third routines are passed a pointer to a 7151`struct bfd_link_info' structure (defined in `bfdlink.h') which holds 7152information relevant to the link, including the linker hash table 7153(which was created by the first routine) and a set of callback 7154functions to the linker proper. 7155 7156 The generic linker routines are in `linker.c', and use the header 7157file `genlink.h'. As of this writing, the only back ends which have 7158implemented versions of these routines are a.out (in `aoutx.h') and 7159ECOFF (in `ecoff.c'). The a.out routines are used as examples 7160throughout this section. 7161 7162* Menu: 7163 7164* Creating a Linker Hash Table:: 7165* Adding Symbols to the Hash Table:: 7166* Performing the Final Link:: 7167 7168 7169File: bfd.info, Node: Creating a Linker Hash Table, Next: Adding Symbols to the Hash Table, Prev: Linker Functions, Up: Linker Functions 7170 71712.17.1 Creating a linker hash table 7172----------------------------------- 7173 7174The linker routines must create a hash table, which must be derived 7175from `struct bfd_link_hash_table' described in `bfdlink.c'. *Note Hash 7176Tables::, for information on how to create a derived hash table. This 7177entry point is called using the target vector of the linker output file. 7178 7179 The `_bfd_link_hash_table_create' entry point must allocate and 7180initialize an instance of the desired hash table. If the back end does 7181not require any additional information to be stored with the entries in 7182the hash table, the entry point may simply create a `struct 7183bfd_link_hash_table'. Most likely, however, some additional 7184information will be needed. 7185 7186 For example, with each entry in the hash table the a.out linker 7187keeps the index the symbol has in the final output file (this index 7188number is used so that when doing a relocatable link the symbol index 7189used in the output file can be quickly filled in when copying over a 7190reloc). The a.out linker code defines the required structures and 7191functions for a hash table derived from `struct bfd_link_hash_table'. 7192The a.out linker hash table is created by the function 7193`NAME(aout,link_hash_table_create)'; it simply allocates space for the 7194hash table, initializes it, and returns a pointer to it. 7195 7196 When writing the linker routines for a new back end, you will 7197generally not know exactly which fields will be required until you have 7198finished. You should simply create a new hash table which defines no 7199additional fields, and then simply add fields as they become necessary. 7200 7201 7202File: bfd.info, Node: Adding Symbols to the Hash Table, Next: Performing the Final Link, Prev: Creating a Linker Hash Table, Up: Linker Functions 7203 72042.17.2 Adding symbols to the hash table 7205--------------------------------------- 7206 7207The linker proper will call the `_bfd_link_add_symbols' entry point for 7208each object file or archive which is to be linked (typically these are 7209the files named on the command line, but some may also come from the 7210linker script). The entry point is responsible for examining the file. 7211For an object file, BFD must add any relevant symbol information to 7212the hash table. For an archive, BFD must determine which elements of 7213the archive should be used and adding them to the link. 7214 7215 The a.out version of this entry point is 7216`NAME(aout,link_add_symbols)'. 7217 7218* Menu: 7219 7220* Differing file formats:: 7221* Adding symbols from an object file:: 7222* Adding symbols from an archive:: 7223 7224 7225File: bfd.info, Node: Differing file formats, Next: Adding symbols from an object file, Prev: Adding Symbols to the Hash Table, Up: Adding Symbols to the Hash Table 7226 72272.17.2.1 Differing file formats 7228............................... 7229 7230Normally all the files involved in a link will be of the same format, 7231but it is also possible to link together different format object files, 7232and the back end must support that. The `_bfd_link_add_symbols' entry 7233point is called via the target vector of the file to be added. This 7234has an important consequence: the function may not assume that the hash 7235table is the type created by the corresponding 7236`_bfd_link_hash_table_create' vector. All the `_bfd_link_add_symbols' 7237function can assume about the hash table is that it is derived from 7238`struct bfd_link_hash_table'. 7239 7240 Sometimes the `_bfd_link_add_symbols' function must store some 7241information in the hash table entry to be used by the `_bfd_final_link' 7242function. In such a case the output bfd xvec must be checked to make 7243sure that the hash table was created by an object file of the same 7244format. 7245 7246 The `_bfd_final_link' routine must be prepared to handle a hash 7247entry without any extra information added by the 7248`_bfd_link_add_symbols' function. A hash entry without extra 7249information will also occur when the linker script directs the linker 7250to create a symbol. Note that, regardless of how a hash table entry is 7251added, all the fields will be initialized to some sort of null value by 7252the hash table entry initialization function. 7253 7254 See `ecoff_link_add_externals' for an example of how to check the 7255output bfd before saving information (in this case, the ECOFF external 7256symbol debugging information) in a hash table entry. 7257 7258 7259File: bfd.info, Node: Adding symbols from an object file, Next: Adding symbols from an archive, Prev: Differing file formats, Up: Adding Symbols to the Hash Table 7260 72612.17.2.2 Adding symbols from an object file 7262........................................... 7263 7264When the `_bfd_link_add_symbols' routine is passed an object file, it 7265must add all externally visible symbols in that object file to the hash 7266table. The actual work of adding the symbol to the hash table is 7267normally handled by the function `_bfd_generic_link_add_one_symbol'. 7268The `_bfd_link_add_symbols' routine is responsible for reading all the 7269symbols from the object file and passing the correct information to 7270`_bfd_generic_link_add_one_symbol'. 7271 7272 The `_bfd_link_add_symbols' routine should not use 7273`bfd_canonicalize_symtab' to read the symbols. The point of providing 7274this routine is to avoid the overhead of converting the symbols into 7275generic `asymbol' structures. 7276 7277 `_bfd_generic_link_add_one_symbol' handles the details of combining 7278common symbols, warning about multiple definitions, and so forth. It 7279takes arguments which describe the symbol to add, notably symbol flags, 7280a section, and an offset. The symbol flags include such things as 7281`BSF_WEAK' or `BSF_INDIRECT'. The section is a section in the object 7282file, or something like `bfd_und_section_ptr' for an undefined symbol 7283or `bfd_com_section_ptr' for a common symbol. 7284 7285 If the `_bfd_final_link' routine is also going to need to read the 7286symbol information, the `_bfd_link_add_symbols' routine should save it 7287somewhere attached to the object file BFD. However, the information 7288should only be saved if the `keep_memory' field of the `info' argument 7289is TRUE, so that the `-no-keep-memory' linker switch is effective. 7290 7291 The a.out function which adds symbols from an object file is 7292`aout_link_add_object_symbols', and most of the interesting work is in 7293`aout_link_add_symbols'. The latter saves pointers to the hash tables 7294entries created by `_bfd_generic_link_add_one_symbol' indexed by symbol 7295number, so that the `_bfd_final_link' routine does not have to call the 7296hash table lookup routine to locate the entry. 7297 7298 7299File: bfd.info, Node: Adding symbols from an archive, Prev: Adding symbols from an object file, Up: Adding Symbols to the Hash Table 7300 73012.17.2.3 Adding symbols from an archive 7302....................................... 7303 7304When the `_bfd_link_add_symbols' routine is passed an archive, it must 7305look through the symbols defined by the archive and decide which 7306elements of the archive should be included in the link. For each such 7307element it must call the `add_archive_element' linker callback, and it 7308must add the symbols from the object file to the linker hash table. 7309 7310 In most cases the work of looking through the symbols in the archive 7311should be done by the `_bfd_generic_link_add_archive_symbols' function. 7312This function builds a hash table from the archive symbol table and 7313looks through the list of undefined symbols to see which elements 7314should be included. `_bfd_generic_link_add_archive_symbols' is passed 7315a function to call to make the final decision about adding an archive 7316element to the link and to do the actual work of adding the symbols to 7317the linker hash table. 7318 7319 The function passed to `_bfd_generic_link_add_archive_symbols' must 7320read the symbols of the archive element and decide whether the archive 7321element should be included in the link. If the element is to be 7322included, the `add_archive_element' linker callback routine must be 7323called with the element as an argument, and the elements symbols must 7324be added to the linker hash table just as though the element had itself 7325been passed to the `_bfd_link_add_symbols' function. 7326 7327 When the a.out `_bfd_link_add_symbols' function receives an archive, 7328it calls `_bfd_generic_link_add_archive_symbols' passing 7329`aout_link_check_archive_element' as the function argument. 7330`aout_link_check_archive_element' calls `aout_link_check_ar_symbols'. 7331If the latter decides to add the element (an element is only added if 7332it provides a real, non-common, definition for a previously undefined 7333or common symbol) it calls the `add_archive_element' callback and then 7334`aout_link_check_archive_element' calls `aout_link_add_symbols' to 7335actually add the symbols to the linker hash table. 7336 7337 The ECOFF back end is unusual in that it does not normally call 7338`_bfd_generic_link_add_archive_symbols', because ECOFF archives already 7339contain a hash table of symbols. The ECOFF back end searches the 7340archive itself to avoid the overhead of creating a new hash table. 7341 7342 7343File: bfd.info, Node: Performing the Final Link, Prev: Adding Symbols to the Hash Table, Up: Linker Functions 7344 73452.17.3 Performing the final link 7346-------------------------------- 7347 7348When all the input files have been processed, the linker calls the 7349`_bfd_final_link' entry point of the output BFD. This routine is 7350responsible for producing the final output file, which has several 7351aspects. It must relocate the contents of the input sections and copy 7352the data into the output sections. It must build an output symbol 7353table including any local symbols from the input files and the global 7354symbols from the hash table. When producing relocatable output, it must 7355modify the input relocs and write them into the output file. There may 7356also be object format dependent work to be done. 7357 7358 The linker will also call the `write_object_contents' entry point 7359when the BFD is closed. The two entry points must work together in 7360order to produce the correct output file. 7361 7362 The details of how this works are inevitably dependent upon the 7363specific object file format. The a.out `_bfd_final_link' routine is 7364`NAME(aout,final_link)'. 7365 7366* Menu: 7367 7368* Information provided by the linker:: 7369* Relocating the section contents:: 7370* Writing the symbol table:: 7371 7372 7373File: bfd.info, Node: Information provided by the linker, Next: Relocating the section contents, Prev: Performing the Final Link, Up: Performing the Final Link 7374 73752.17.3.1 Information provided by the linker 7376........................................... 7377 7378Before the linker calls the `_bfd_final_link' entry point, it sets up 7379some data structures for the function to use. 7380 7381 The `input_bfds' field of the `bfd_link_info' structure will point 7382to a list of all the input files included in the link. These files are 7383linked through the `link_next' field of the `bfd' structure. 7384 7385 Each section in the output file will have a list of `link_order' 7386structures attached to the `map_head.link_order' field (the 7387`link_order' structure is defined in `bfdlink.h'). These structures 7388describe how to create the contents of the output section in terms of 7389the contents of various input sections, fill constants, and, 7390eventually, other types of information. They also describe relocs that 7391must be created by the BFD backend, but do not correspond to any input 7392file; this is used to support -Ur, which builds constructors while 7393generating a relocatable object file. 7394 7395 7396File: bfd.info, Node: Relocating the section contents, Next: Writing the symbol table, Prev: Information provided by the linker, Up: Performing the Final Link 7397 73982.17.3.2 Relocating the section contents 7399........................................ 7400 7401The `_bfd_final_link' function should look through the `link_order' 7402structures attached to each section of the output file. Each 7403`link_order' structure should either be handled specially, or it should 7404be passed to the function `_bfd_default_link_order' which will do the 7405right thing (`_bfd_default_link_order' is defined in `linker.c'). 7406 7407 For efficiency, a `link_order' of type `bfd_indirect_link_order' 7408whose associated section belongs to a BFD of the same format as the 7409output BFD must be handled specially. This type of `link_order' 7410describes part of an output section in terms of a section belonging to 7411one of the input files. The `_bfd_final_link' function should read the 7412contents of the section and any associated relocs, apply the relocs to 7413the section contents, and write out the modified section contents. If 7414performing a relocatable link, the relocs themselves must also be 7415modified and written out. 7416 7417 The functions `_bfd_relocate_contents' and 7418`_bfd_final_link_relocate' provide some general support for performing 7419the actual relocations, notably overflow checking. Their arguments 7420include information about the symbol the relocation is against and a 7421`reloc_howto_type' argument which describes the relocation to perform. 7422These functions are defined in `reloc.c'. 7423 7424 The a.out function which handles reading, relocating, and writing 7425section contents is `aout_link_input_section'. The actual relocation 7426is done in `aout_link_input_section_std' and 7427`aout_link_input_section_ext'. 7428 7429 7430File: bfd.info, Node: Writing the symbol table, Prev: Relocating the section contents, Up: Performing the Final Link 7431 74322.17.3.3 Writing the symbol table 7433................................. 7434 7435The `_bfd_final_link' function must gather all the symbols in the input 7436files and write them out. It must also write out all the symbols in 7437the global hash table. This must be controlled by the `strip' and 7438`discard' fields of the `bfd_link_info' structure. 7439 7440 The local symbols of the input files will not have been entered into 7441the linker hash table. The `_bfd_final_link' routine must consider 7442each input file and include the symbols in the output file. It may be 7443convenient to do this when looking through the `link_order' structures, 7444or it may be done by stepping through the `input_bfds' list. 7445 7446 The `_bfd_final_link' routine must also traverse the global hash 7447table to gather all the externally visible symbols. It is possible 7448that most of the externally visible symbols may be written out when 7449considering the symbols of each input file, but it is still necessary 7450to traverse the hash table since the linker script may have defined 7451some symbols that are not in any of the input files. 7452 7453 The `strip' field of the `bfd_link_info' structure controls which 7454symbols are written out. The possible values are listed in 7455`bfdlink.h'. If the value is `strip_some', then the `keep_hash' field 7456of the `bfd_link_info' structure is a hash table of symbols to keep; 7457each symbol should be looked up in this hash table, and only symbols 7458which are present should be included in the output file. 7459 7460 If the `strip' field of the `bfd_link_info' structure permits local 7461symbols to be written out, the `discard' field is used to further 7462controls which local symbols are included in the output file. If the 7463value is `discard_l', then all local symbols which begin with a certain 7464prefix are discarded; this is controlled by the 7465`bfd_is_local_label_name' entry point. 7466 7467 The a.out backend handles symbols by calling 7468`aout_link_write_symbols' on each input BFD and then traversing the 7469global hash table with the function `aout_link_write_other_symbol'. It 7470builds a string table while writing out the symbols, which is written 7471to the output file at the end of `NAME(aout,final_link)'. 7472 74732.17.3.4 `bfd_link_split_section' 7474................................. 7475 7476*Synopsis* 7477 bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec); 7478 *Description* 7479Return nonzero if SEC should be split during a reloceatable or final 7480link. 7481 #define bfd_link_split_section(abfd, sec) \ 7482 BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec)) 7483 74842.17.3.5 `bfd_section_already_linked' 7485..................................... 7486 7487*Synopsis* 7488 void bfd_section_already_linked (bfd *abfd, asection *sec, 7489 struct bfd_link_info *info); 7490 *Description* 7491Check if SEC has been already linked during a reloceatable or final 7492link. 7493 #define bfd_section_already_linked(abfd, sec, info) \ 7494 BFD_SEND (abfd, _section_already_linked, (abfd, sec, info)) 7495 7496 7497File: bfd.info, Node: Hash Tables, Prev: Linker Functions, Up: BFD front end 7498 74992.18 Hash Tables 7500================ 7501 7502BFD provides a simple set of hash table functions. Routines are 7503provided to initialize a hash table, to free a hash table, to look up a 7504string in a hash table and optionally create an entry for it, and to 7505traverse a hash table. There is currently no routine to delete an 7506string from a hash table. 7507 7508 The basic hash table does not permit any data to be stored with a 7509string. However, a hash table is designed to present a base class from 7510which other types of hash tables may be derived. These derived types 7511may store additional information with the string. Hash tables were 7512implemented in this way, rather than simply providing a data pointer in 7513a hash table entry, because they were designed for use by the linker 7514back ends. The linker may create thousands of hash table entries, and 7515the overhead of allocating private data and storing and following 7516pointers becomes noticeable. 7517 7518 The basic hash table code is in `hash.c'. 7519 7520* Menu: 7521 7522* Creating and Freeing a Hash Table:: 7523* Looking Up or Entering a String:: 7524* Traversing a Hash Table:: 7525* Deriving a New Hash Table Type:: 7526 7527 7528File: bfd.info, Node: Creating and Freeing a Hash Table, Next: Looking Up or Entering a String, Prev: Hash Tables, Up: Hash Tables 7529 75302.18.1 Creating and freeing a hash table 7531---------------------------------------- 7532 7533To create a hash table, create an instance of a `struct bfd_hash_table' 7534(defined in `bfd.h') and call `bfd_hash_table_init' (if you know 7535approximately how many entries you will need, the function 7536`bfd_hash_table_init_n', which takes a SIZE argument, may be used). 7537`bfd_hash_table_init' returns `FALSE' if some sort of error occurs. 7538 7539 The function `bfd_hash_table_init' take as an argument a function to 7540use to create new entries. For a basic hash table, use the function 7541`bfd_hash_newfunc'. *Note Deriving a New Hash Table Type::, for why 7542you would want to use a different value for this argument. 7543 7544 `bfd_hash_table_init' will create an objalloc which will be used to 7545allocate new entries. You may allocate memory on this objalloc using 7546`bfd_hash_allocate'. 7547 7548 Use `bfd_hash_table_free' to free up all the memory that has been 7549allocated for a hash table. This will not free up the `struct 7550bfd_hash_table' itself, which you must provide. 7551 7552 Use `bfd_hash_set_default_size' to set the default size of hash 7553table to use. 7554 7555 7556File: bfd.info, Node: Looking Up or Entering a String, Next: Traversing a Hash Table, Prev: Creating and Freeing a Hash Table, Up: Hash Tables 7557 75582.18.2 Looking up or entering a string 7559-------------------------------------- 7560 7561The function `bfd_hash_lookup' is used both to look up a string in the 7562hash table and to create a new entry. 7563 7564 If the CREATE argument is `FALSE', `bfd_hash_lookup' will look up a 7565string. If the string is found, it will returns a pointer to a `struct 7566bfd_hash_entry'. If the string is not found in the table 7567`bfd_hash_lookup' will return `NULL'. You should not modify any of the 7568fields in the returns `struct bfd_hash_entry'. 7569 7570 If the CREATE argument is `TRUE', the string will be entered into 7571the hash table if it is not already there. Either way a pointer to a 7572`struct bfd_hash_entry' will be returned, either to the existing 7573structure or to a newly created one. In this case, a `NULL' return 7574means that an error occurred. 7575 7576 If the CREATE argument is `TRUE', and a new entry is created, the 7577COPY argument is used to decide whether to copy the string onto the 7578hash table objalloc or not. If COPY is passed as `FALSE', you must be 7579careful not to deallocate or modify the string as long as the hash table 7580exists. 7581 7582 7583File: bfd.info, Node: Traversing a Hash Table, Next: Deriving a New Hash Table Type, Prev: Looking Up or Entering a String, Up: Hash Tables 7584 75852.18.3 Traversing a hash table 7586------------------------------ 7587 7588The function `bfd_hash_traverse' may be used to traverse a hash table, 7589calling a function on each element. The traversal is done in a random 7590order. 7591 7592 `bfd_hash_traverse' takes as arguments a function and a generic 7593`void *' pointer. The function is called with a hash table entry (a 7594`struct bfd_hash_entry *') and the generic pointer passed to 7595`bfd_hash_traverse'. The function must return a `boolean' value, which 7596indicates whether to continue traversing the hash table. If the 7597function returns `FALSE', `bfd_hash_traverse' will stop the traversal 7598and return immediately. 7599 7600 7601File: bfd.info, Node: Deriving a New Hash Table Type, Prev: Traversing a Hash Table, Up: Hash Tables 7602 76032.18.4 Deriving a new hash table type 7604------------------------------------- 7605 7606Many uses of hash tables want to store additional information which 7607each entry in the hash table. Some also find it convenient to store 7608additional information with the hash table itself. This may be done 7609using a derived hash table. 7610 7611 Since C is not an object oriented language, creating a derived hash 7612table requires sticking together some boilerplate routines with a few 7613differences specific to the type of hash table you want to create. 7614 7615 An example of a derived hash table is the linker hash table. The 7616structures for this are defined in `bfdlink.h'. The functions are in 7617`linker.c'. 7618 7619 You may also derive a hash table from an already derived hash table. 7620For example, the a.out linker backend code uses a hash table derived 7621from the linker hash table. 7622 7623* Menu: 7624 7625* Define the Derived Structures:: 7626* Write the Derived Creation Routine:: 7627* Write Other Derived Routines:: 7628 7629 7630File: bfd.info, Node: Define the Derived Structures, Next: Write the Derived Creation Routine, Prev: Deriving a New Hash Table Type, Up: Deriving a New Hash Table Type 7631 76322.18.4.1 Define the derived structures 7633...................................... 7634 7635You must define a structure for an entry in the hash table, and a 7636structure for the hash table itself. 7637 7638 The first field in the structure for an entry in the hash table must 7639be of the type used for an entry in the hash table you are deriving 7640from. If you are deriving from a basic hash table this is `struct 7641bfd_hash_entry', which is defined in `bfd.h'. The first field in the 7642structure for the hash table itself must be of the type of the hash 7643table you are deriving from itself. If you are deriving from a basic 7644hash table, this is `struct bfd_hash_table'. 7645 7646 For example, the linker hash table defines `struct 7647bfd_link_hash_entry' (in `bfdlink.h'). The first field, `root', is of 7648type `struct bfd_hash_entry'. Similarly, the first field in `struct 7649bfd_link_hash_table', `table', is of type `struct bfd_hash_table'. 7650 7651 7652File: bfd.info, Node: Write the Derived Creation Routine, Next: Write Other Derived Routines, Prev: Define the Derived Structures, Up: Deriving a New Hash Table Type 7653 76542.18.4.2 Write the derived creation routine 7655........................................... 7656 7657You must write a routine which will create and initialize an entry in 7658the hash table. This routine is passed as the function argument to 7659`bfd_hash_table_init'. 7660 7661 In order to permit other hash tables to be derived from the hash 7662table you are creating, this routine must be written in a standard way. 7663 7664 The first argument to the creation routine is a pointer to a hash 7665table entry. This may be `NULL', in which case the routine should 7666allocate the right amount of space. Otherwise the space has already 7667been allocated by a hash table type derived from this one. 7668 7669 After allocating space, the creation routine must call the creation 7670routine of the hash table type it is derived from, passing in a pointer 7671to the space it just allocated. This will initialize any fields used 7672by the base hash table. 7673 7674 Finally the creation routine must initialize any local fields for 7675the new hash table type. 7676 7677 Here is a boilerplate example of a creation routine. FUNCTION_NAME 7678is the name of the routine. ENTRY_TYPE is the type of an entry in the 7679hash table you are creating. BASE_NEWFUNC is the name of the creation 7680routine of the hash table type your hash table is derived from. 7681 7682 struct bfd_hash_entry * 7683 FUNCTION_NAME (struct bfd_hash_entry *entry, 7684 struct bfd_hash_table *table, 7685 const char *string) 7686 { 7687 struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry; 7688 7689 /* Allocate the structure if it has not already been allocated by a 7690 derived class. */ 7691 if (ret == NULL) 7692 { 7693 ret = bfd_hash_allocate (table, sizeof (* ret)); 7694 if (ret == NULL) 7695 return NULL; 7696 } 7697 7698 /* Call the allocation method of the base class. */ 7699 ret = ((ENTRY_TYPE *) 7700 BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string)); 7701 7702 /* Initialize the local fields here. */ 7703 7704 return (struct bfd_hash_entry *) ret; 7705 } 7706 *Description* 7707The creation routine for the linker hash table, which is in `linker.c', 7708looks just like this example. FUNCTION_NAME is 7709`_bfd_link_hash_newfunc'. ENTRY_TYPE is `struct bfd_link_hash_entry'. 7710BASE_NEWFUNC is `bfd_hash_newfunc', the creation routine for a basic 7711hash table. 7712 7713 `_bfd_link_hash_newfunc' also initializes the local fields in a 7714linker hash table entry: `type', `written' and `next'. 7715 7716 7717File: bfd.info, Node: Write Other Derived Routines, Prev: Write the Derived Creation Routine, Up: Deriving a New Hash Table Type 7718 77192.18.4.3 Write other derived routines 7720..................................... 7721 7722You will want to write other routines for your new hash table, as well. 7723 7724 You will want an initialization routine which calls the 7725initialization routine of the hash table you are deriving from and 7726initializes any other local fields. For the linker hash table, this is 7727`_bfd_link_hash_table_init' in `linker.c'. 7728 7729 You will want a lookup routine which calls the lookup routine of the 7730hash table you are deriving from and casts the result. The linker hash 7731table uses `bfd_link_hash_lookup' in `linker.c' (this actually takes an 7732additional argument which it uses to decide how to return the looked up 7733value). 7734 7735 You may want a traversal routine. This should just call the 7736traversal routine of the hash table you are deriving from with 7737appropriate casts. The linker hash table uses `bfd_link_hash_traverse' 7738in `linker.c'. 7739 7740 These routines may simply be defined as macros. For example, the 7741a.out backend linker hash table, which is derived from the linker hash 7742table, uses macros for the lookup and traversal routines. These are 7743`aout_link_hash_lookup' and `aout_link_hash_traverse' in aoutx.h. 7744 7745 7746File: bfd.info, Node: BFD back ends, Next: GNU Free Documentation License, Prev: BFD front end, Up: Top 7747 77483 BFD back ends 7749*************** 7750 7751* Menu: 7752 7753* What to Put Where:: 7754* aout :: a.out backends 7755* coff :: coff backends 7756* elf :: elf backends 7757* mmo :: mmo backend 7758 7759 7760File: bfd.info, Node: What to Put Where, Next: aout, Prev: BFD back ends, Up: BFD back ends 7761 77623.1 What to Put Where 7763===================== 7764 7765All of BFD lives in one directory. 7766 7767 7768File: bfd.info, Node: aout, Next: coff, Prev: What to Put Where, Up: BFD back ends 7769 77703.2 a.out backends 7771================== 7772 7773*Description* 7774BFD supports a number of different flavours of a.out format, though the 7775major differences are only the sizes of the structures on disk, and the 7776shape of the relocation information. 7777 7778 The support is split into a basic support file `aoutx.h' and other 7779files which derive functions from the base. One derivation file is 7780`aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions 7781support for sun3, sun4, 386 and 29k a.out files, to create a target 7782jump vector for a specific target. 7783 7784 This information is further split out into more specific files for 7785each machine, including `sunos.c' for sun3 and sun4, `newsos3.c' for 7786the Sony NEWS, and `demo64.c' for a demonstration of a 64 bit a.out 7787format. 7788 7789 The base file `aoutx.h' defines general mechanisms for reading and 7790writing records to and from disk and various other methods which BFD 7791requires. It is included by `aout32.c' and `aout64.c' to form the names 7792`aout_32_swap_exec_header_in', `aout_64_swap_exec_header_in', etc. 7793 7794 As an example, this is what goes on to make the back end for a sun4, 7795from `aout32.c': 7796 7797 #define ARCH_SIZE 32 7798 #include "aoutx.h" 7799 7800 Which exports names: 7801 7802 ... 7803 aout_32_canonicalize_reloc 7804 aout_32_find_nearest_line 7805 aout_32_get_lineno 7806 aout_32_get_reloc_upper_bound 7807 ... 7808 7809 from `sunos.c': 7810 7811 #define TARGET_NAME "a.out-sunos-big" 7812 #define VECNAME sunos_big_vec 7813 #include "aoutf1.h" 7814 7815 requires all the names from `aout32.c', and produces the jump vector 7816 7817 sunos_big_vec 7818 7819 The file `host-aout.c' is a special case. It is for a large set of 7820hosts that use "more or less standard" a.out files, and for which 7821cross-debugging is not interesting. It uses the standard 32-bit a.out 7822support routines, but determines the file offsets and addresses of the 7823text, data, and BSS sections, the machine architecture and machine 7824type, and the entry point address, in a host-dependent manner. Once 7825these values have been determined, generic code is used to handle the 7826object file. 7827 7828 When porting it to run on a new system, you must supply: 7829 7830 HOST_PAGE_SIZE 7831 HOST_SEGMENT_SIZE 7832 HOST_MACHINE_ARCH (optional) 7833 HOST_MACHINE_MACHINE (optional) 7834 HOST_TEXT_START_ADDR 7835 HOST_STACK_END_ADDR 7836 7837 in the file `../include/sys/h-XXX.h' (for your host). These values, 7838plus the structures and macros defined in `a.out.h' on your host 7839system, will produce a BFD target that will access ordinary a.out files 7840on your host. To configure a new machine to use `host-aout.c', specify: 7841 7842 TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec 7843 TDEPFILES= host-aout.o trad-core.o 7844 7845 in the `config/XXX.mt' file, and modify `configure.in' to use the 7846`XXX.mt' file (by setting "`bfd_target=XXX'") when your configuration 7847is selected. 7848 78493.2.1 Relocations 7850----------------- 7851 7852*Description* 7853The file `aoutx.h' provides for both the _standard_ and _extended_ 7854forms of a.out relocation records. 7855 7856 The standard records contain only an address, a symbol index, and a 7857type field. The extended records (used on 29ks and sparcs) also have a 7858full integer for an addend. 7859 78603.2.2 Internal entry points 7861--------------------------- 7862 7863*Description* 7864`aoutx.h' exports several routines for accessing the contents of an 7865a.out file, which are gathered and exported in turn by various format 7866specific files (eg sunos.c). 7867 78683.2.2.1 `aout_SIZE_swap_exec_header_in' 7869....................................... 7870 7871*Synopsis* 7872 void aout_SIZE_swap_exec_header_in, 7873 (bfd *abfd, 7874 struct external_exec *bytes, 7875 struct internal_exec *execp); 7876 *Description* 7877Swap the information in an executable header RAW_BYTES taken from a raw 7878byte stream memory image into the internal exec header structure EXECP. 7879 78803.2.2.2 `aout_SIZE_swap_exec_header_out' 7881........................................ 7882 7883*Synopsis* 7884 void aout_SIZE_swap_exec_header_out 7885 (bfd *abfd, 7886 struct internal_exec *execp, 7887 struct external_exec *raw_bytes); 7888 *Description* 7889Swap the information in an internal exec header structure EXECP into 7890the buffer RAW_BYTES ready for writing to disk. 7891 78923.2.2.3 `aout_SIZE_some_aout_object_p' 7893...................................... 7894 7895*Synopsis* 7896 const bfd_target *aout_SIZE_some_aout_object_p 7897 (bfd *abfd, 7898 struct internal_exec *execp, 7899 const bfd_target *(*callback_to_real_object_p) (bfd *)); 7900 *Description* 7901Some a.out variant thinks that the file open in ABFD checking is an 7902a.out file. Do some more checking, and set up for access if it really 7903is. Call back to the calling environment's "finish up" function just 7904before returning, to handle any last-minute setup. 7905 79063.2.2.4 `aout_SIZE_mkobject' 7907............................ 7908 7909*Synopsis* 7910 bfd_boolean aout_SIZE_mkobject, (bfd *abfd); 7911 *Description* 7912Initialize BFD ABFD for use with a.out files. 7913 79143.2.2.5 `aout_SIZE_machine_type' 7915................................ 7916 7917*Synopsis* 7918 enum machine_type aout_SIZE_machine_type 7919 (enum bfd_architecture arch, 7920 unsigned long machine, 7921 bfd_boolean *unknown); 7922 *Description* 7923Keep track of machine architecture and machine type for a.out's. Return 7924the `machine_type' for a particular architecture and machine, or 7925`M_UNKNOWN' if that exact architecture and machine can't be represented 7926in a.out format. 7927 7928 If the architecture is understood, machine type 0 (default) is 7929always understood. 7930 79313.2.2.6 `aout_SIZE_set_arch_mach' 7932................................. 7933 7934*Synopsis* 7935 bfd_boolean aout_SIZE_set_arch_mach, 7936 (bfd *, 7937 enum bfd_architecture arch, 7938 unsigned long machine); 7939 *Description* 7940Set the architecture and the machine of the BFD ABFD to the values ARCH 7941and MACHINE. Verify that ABFD's format can support the architecture 7942required. 7943 79443.2.2.7 `aout_SIZE_new_section_hook' 7945.................................... 7946 7947*Synopsis* 7948 bfd_boolean aout_SIZE_new_section_hook, 7949 (bfd *abfd, 7950 asection *newsect); 7951 *Description* 7952Called by the BFD in response to a `bfd_make_section' request. 7953 7954 7955File: bfd.info, Node: coff, Next: elf, Prev: aout, Up: BFD back ends 7956 79573.3 coff backends 7958================= 7959 7960BFD supports a number of different flavours of coff format. The major 7961differences between formats are the sizes and alignments of fields in 7962structures on disk, and the occasional extra field. 7963 7964 Coff in all its varieties is implemented with a few common files and 7965a number of implementation specific files. For example, The 88k bcs 7966coff format is implemented in the file `coff-m88k.c'. This file 7967`#include's `coff/m88k.h' which defines the external structure of the 7968coff format for the 88k, and `coff/internal.h' which defines the 7969internal structure. `coff-m88k.c' also defines the relocations used by 7970the 88k format *Note Relocations::. 7971 7972 The Intel i960 processor version of coff is implemented in 7973`coff-i960.c'. This file has the same structure as `coff-m88k.c', 7974except that it includes `coff/i960.h' rather than `coff-m88k.h'. 7975 79763.3.1 Porting to a new version of coff 7977-------------------------------------- 7978 7979The recommended method is to select from the existing implementations 7980the version of coff which is most like the one you want to use. For 7981example, we'll say that i386 coff is the one you select, and that your 7982coff flavour is called foo. Copy `i386coff.c' to `foocoff.c', copy 7983`../include/coff/i386.h' to `../include/coff/foo.h', and add the lines 7984to `targets.c' and `Makefile.in' so that your new back end is used. 7985Alter the shapes of the structures in `../include/coff/foo.h' so that 7986they match what you need. You will probably also have to add `#ifdef's 7987to the code in `coff/internal.h' and `coffcode.h' if your version of 7988coff is too wild. 7989 7990 You can verify that your new BFD backend works quite simply by 7991building `objdump' from the `binutils' directory, and making sure that 7992its version of what's going on and your host system's idea (assuming it 7993has the pretty standard coff dump utility, usually called `att-dump' or 7994just `dump') are the same. Then clean up your code, and send what 7995you've done to Cygnus. Then your stuff will be in the next release, and 7996you won't have to keep integrating it. 7997 79983.3.2 How the coff backend works 7999-------------------------------- 8000 80013.3.2.1 File layout 8002................... 8003 8004The Coff backend is split into generic routines that are applicable to 8005any Coff target and routines that are specific to a particular target. 8006The target-specific routines are further split into ones which are 8007basically the same for all Coff targets except that they use the 8008external symbol format or use different values for certain constants. 8009 8010 The generic routines are in `coffgen.c'. These routines work for 8011any Coff target. They use some hooks into the target specific code; 8012the hooks are in a `bfd_coff_backend_data' structure, one of which 8013exists for each target. 8014 8015 The essentially similar target-specific routines are in 8016`coffcode.h'. This header file includes executable C code. The 8017various Coff targets first include the appropriate Coff header file, 8018make any special defines that are needed, and then include `coffcode.h'. 8019 8020 Some of the Coff targets then also have additional routines in the 8021target source file itself. 8022 8023 For example, `coff-i960.c' includes `coff/internal.h' and 8024`coff/i960.h'. It then defines a few constants, such as `I960', and 8025includes `coffcode.h'. Since the i960 has complex relocation types, 8026`coff-i960.c' also includes some code to manipulate the i960 relocs. 8027This code is not in `coffcode.h' because it would not be used by any 8028other target. 8029 80303.3.2.2 Bit twiddling 8031..................... 8032 8033Each flavour of coff supported in BFD has its own header file 8034describing the external layout of the structures. There is also an 8035internal description of the coff layout, in `coff/internal.h'. A major 8036function of the coff backend is swapping the bytes and twiddling the 8037bits to translate the external form of the structures into the normal 8038internal form. This is all performed in the `bfd_swap'_thing_direction 8039routines. Some elements are different sizes between different versions 8040of coff; it is the duty of the coff version specific include file to 8041override the definitions of various packing routines in `coffcode.h'. 8042E.g., the size of line number entry in coff is sometimes 16 bits, and 8043sometimes 32 bits. `#define'ing `PUT_LNSZ_LNNO' and `GET_LNSZ_LNNO' 8044will select the correct one. No doubt, some day someone will find a 8045version of coff which has a varying field size not catered to at the 8046moment. To port BFD, that person will have to add more `#defines'. 8047Three of the bit twiddling routines are exported to `gdb'; 8048`coff_swap_aux_in', `coff_swap_sym_in' and `coff_swap_lineno_in'. `GDB' 8049reads the symbol table on its own, but uses BFD to fix things up. More 8050of the bit twiddlers are exported for `gas'; `coff_swap_aux_out', 8051`coff_swap_sym_out', `coff_swap_lineno_out', `coff_swap_reloc_out', 8052`coff_swap_filehdr_out', `coff_swap_aouthdr_out', 8053`coff_swap_scnhdr_out'. `Gas' currently keeps track of all the symbol 8054table and reloc drudgery itself, thereby saving the internal BFD 8055overhead, but uses BFD to swap things on the way out, making cross 8056ports much safer. Doing so also allows BFD (and thus the linker) to 8057use the same header files as `gas', which makes one avenue to disaster 8058disappear. 8059 80603.3.2.3 Symbol reading 8061...................... 8062 8063The simple canonical form for symbols used by BFD is not rich enough to 8064keep all the information available in a coff symbol table. The back end 8065gets around this problem by keeping the original symbol table around, 8066"behind the scenes". 8067 8068 When a symbol table is requested (through a call to 8069`bfd_canonicalize_symtab'), a request gets through to 8070`coff_get_normalized_symtab'. This reads the symbol table from the coff 8071file and swaps all the structures inside into the internal form. It 8072also fixes up all the pointers in the table (represented in the file by 8073offsets from the first symbol in the table) into physical pointers to 8074elements in the new internal table. This involves some work since the 8075meanings of fields change depending upon context: a field that is a 8076pointer to another structure in the symbol table at one moment may be 8077the size in bytes of a structure at the next. Another pass is made 8078over the table. All symbols which mark file names (`C_FILE' symbols) 8079are modified so that the internal string points to the value in the 8080auxent (the real filename) rather than the normal text associated with 8081the symbol (`".file"'). 8082 8083 At this time the symbol names are moved around. Coff stores all 8084symbols less than nine characters long physically within the symbol 8085table; longer strings are kept at the end of the file in the string 8086table. This pass moves all strings into memory and replaces them with 8087pointers to the strings. 8088 8089 The symbol table is massaged once again, this time to create the 8090canonical table used by the BFD application. Each symbol is inspected 8091in turn, and a decision made (using the `sclass' field) about the 8092various flags to set in the `asymbol'. *Note Symbols::. The generated 8093canonical table shares strings with the hidden internal symbol table. 8094 8095 Any linenumbers are read from the coff file too, and attached to the 8096symbols which own the functions the linenumbers belong to. 8097 80983.3.2.4 Symbol writing 8099...................... 8100 8101Writing a symbol to a coff file which didn't come from a coff file will 8102lose any debugging information. The `asymbol' structure remembers the 8103BFD from which the symbol was taken, and on output the back end makes 8104sure that the same destination target as source target is present. 8105 8106 When the symbols have come from a coff file then all the debugging 8107information is preserved. 8108 8109 Symbol tables are provided for writing to the back end in a vector 8110of pointers to pointers. This allows applications like the linker to 8111accumulate and output large symbol tables without having to do too much 8112byte copying. 8113 8114 This function runs through the provided symbol table and patches 8115each symbol marked as a file place holder (`C_FILE') to point to the 8116next file place holder in the list. It also marks each `offset' field 8117in the list with the offset from the first symbol of the current symbol. 8118 8119 Another function of this procedure is to turn the canonical value 8120form of BFD into the form used by coff. Internally, BFD expects symbol 8121values to be offsets from a section base; so a symbol physically at 81220x120, but in a section starting at 0x100, would have the value 0x20. 8123Coff expects symbols to contain their final value, so symbols have 8124their values changed at this point to reflect their sum with their 8125owning section. This transformation uses the `output_section' field of 8126the `asymbol''s `asection' *Note Sections::. 8127 8128 * `coff_mangle_symbols' 8129 This routine runs though the provided symbol table and uses the 8130offsets generated by the previous pass and the pointers generated when 8131the symbol table was read in to create the structured hierarchy 8132required by coff. It changes each pointer to a symbol into the index 8133into the symbol table of the asymbol. 8134 8135 * `coff_write_symbols' 8136 This routine runs through the symbol table and patches up the 8137symbols from their internal form into the coff way, calls the bit 8138twiddlers, and writes out the table to the file. 8139 81403.3.2.5 `coff_symbol_type' 8141.......................... 8142 8143*Description* 8144The hidden information for an `asymbol' is described in a 8145`combined_entry_type': 8146 8147 8148 typedef struct coff_ptr_struct 8149 { 8150 /* Remembers the offset from the first symbol in the file for 8151 this symbol. Generated by coff_renumber_symbols. */ 8152 unsigned int offset; 8153 8154 /* Should the value of this symbol be renumbered. Used for 8155 XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */ 8156 unsigned int fix_value : 1; 8157 8158 /* Should the tag field of this symbol be renumbered. 8159 Created by coff_pointerize_aux. */ 8160 unsigned int fix_tag : 1; 8161 8162 /* Should the endidx field of this symbol be renumbered. 8163 Created by coff_pointerize_aux. */ 8164 unsigned int fix_end : 1; 8165 8166 /* Should the x_csect.x_scnlen field be renumbered. 8167 Created by coff_pointerize_aux. */ 8168 unsigned int fix_scnlen : 1; 8169 8170 /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the 8171 index into the line number entries. Set by coff_slurp_symbol_table. */ 8172 unsigned int fix_line : 1; 8173 8174 /* The container for the symbol structure as read and translated 8175 from the file. */ 8176 union 8177 { 8178 union internal_auxent auxent; 8179 struct internal_syment syment; 8180 } u; 8181 } combined_entry_type; 8182 8183 8184 /* Each canonical asymbol really looks like this: */ 8185 8186 typedef struct coff_symbol_struct 8187 { 8188 /* The actual symbol which the rest of BFD works with */ 8189 asymbol symbol; 8190 8191 /* A pointer to the hidden information for this symbol */ 8192 combined_entry_type *native; 8193 8194 /* A pointer to the linenumber information for this symbol */ 8195 struct lineno_cache_entry *lineno; 8196 8197 /* Have the line numbers been relocated yet ? */ 8198 bfd_boolean done_lineno; 8199 } coff_symbol_type; 8200 82013.3.2.6 `bfd_coff_backend_data' 8202............................... 8203 8204 /* COFF symbol classifications. */ 8205 8206 enum coff_symbol_classification 8207 { 8208 /* Global symbol. */ 8209 COFF_SYMBOL_GLOBAL, 8210 /* Common symbol. */ 8211 COFF_SYMBOL_COMMON, 8212 /* Undefined symbol. */ 8213 COFF_SYMBOL_UNDEFINED, 8214 /* Local symbol. */ 8215 COFF_SYMBOL_LOCAL, 8216 /* PE section symbol. */ 8217 COFF_SYMBOL_PE_SECTION 8218 }; 8219Special entry points for gdb to swap in coff symbol table parts: 8220 typedef struct 8221 { 8222 void (*_bfd_coff_swap_aux_in) 8223 (bfd *, void *, int, int, int, int, void *); 8224 8225 void (*_bfd_coff_swap_sym_in) 8226 (bfd *, void *, void *); 8227 8228 void (*_bfd_coff_swap_lineno_in) 8229 (bfd *, void *, void *); 8230 8231 unsigned int (*_bfd_coff_swap_aux_out) 8232 (bfd *, void *, int, int, int, int, void *); 8233 8234 unsigned int (*_bfd_coff_swap_sym_out) 8235 (bfd *, void *, void *); 8236 8237 unsigned int (*_bfd_coff_swap_lineno_out) 8238 (bfd *, void *, void *); 8239 8240 unsigned int (*_bfd_coff_swap_reloc_out) 8241 (bfd *, void *, void *); 8242 8243 unsigned int (*_bfd_coff_swap_filehdr_out) 8244 (bfd *, void *, void *); 8245 8246 unsigned int (*_bfd_coff_swap_aouthdr_out) 8247 (bfd *, void *, void *); 8248 8249 unsigned int (*_bfd_coff_swap_scnhdr_out) 8250 (bfd *, void *, void *); 8251 8252 unsigned int _bfd_filhsz; 8253 unsigned int _bfd_aoutsz; 8254 unsigned int _bfd_scnhsz; 8255 unsigned int _bfd_symesz; 8256 unsigned int _bfd_auxesz; 8257 unsigned int _bfd_relsz; 8258 unsigned int _bfd_linesz; 8259 unsigned int _bfd_filnmlen; 8260 bfd_boolean _bfd_coff_long_filenames; 8261 bfd_boolean _bfd_coff_long_section_names; 8262 unsigned int _bfd_coff_default_section_alignment_power; 8263 bfd_boolean _bfd_coff_force_symnames_in_strings; 8264 unsigned int _bfd_coff_debug_string_prefix_length; 8265 8266 void (*_bfd_coff_swap_filehdr_in) 8267 (bfd *, void *, void *); 8268 8269 void (*_bfd_coff_swap_aouthdr_in) 8270 (bfd *, void *, void *); 8271 8272 void (*_bfd_coff_swap_scnhdr_in) 8273 (bfd *, void *, void *); 8274 8275 void (*_bfd_coff_swap_reloc_in) 8276 (bfd *abfd, void *, void *); 8277 8278 bfd_boolean (*_bfd_coff_bad_format_hook) 8279 (bfd *, void *); 8280 8281 bfd_boolean (*_bfd_coff_set_arch_mach_hook) 8282 (bfd *, void *); 8283 8284 void * (*_bfd_coff_mkobject_hook) 8285 (bfd *, void *, void *); 8286 8287 bfd_boolean (*_bfd_styp_to_sec_flags_hook) 8288 (bfd *, void *, const char *, asection *, flagword *); 8289 8290 void (*_bfd_set_alignment_hook) 8291 (bfd *, asection *, void *); 8292 8293 bfd_boolean (*_bfd_coff_slurp_symbol_table) 8294 (bfd *); 8295 8296 bfd_boolean (*_bfd_coff_symname_in_debug) 8297 (bfd *, struct internal_syment *); 8298 8299 bfd_boolean (*_bfd_coff_pointerize_aux_hook) 8300 (bfd *, combined_entry_type *, combined_entry_type *, 8301 unsigned int, combined_entry_type *); 8302 8303 bfd_boolean (*_bfd_coff_print_aux) 8304 (bfd *, FILE *, combined_entry_type *, combined_entry_type *, 8305 combined_entry_type *, unsigned int); 8306 8307 void (*_bfd_coff_reloc16_extra_cases) 8308 (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *, 8309 bfd_byte *, unsigned int *, unsigned int *); 8310 8311 int (*_bfd_coff_reloc16_estimate) 8312 (bfd *, asection *, arelent *, unsigned int, 8313 struct bfd_link_info *); 8314 8315 enum coff_symbol_classification (*_bfd_coff_classify_symbol) 8316 (bfd *, struct internal_syment *); 8317 8318 bfd_boolean (*_bfd_coff_compute_section_file_positions) 8319 (bfd *); 8320 8321 bfd_boolean (*_bfd_coff_start_final_link) 8322 (bfd *, struct bfd_link_info *); 8323 8324 bfd_boolean (*_bfd_coff_relocate_section) 8325 (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, 8326 struct internal_reloc *, struct internal_syment *, asection **); 8327 8328 reloc_howto_type *(*_bfd_coff_rtype_to_howto) 8329 (bfd *, asection *, struct internal_reloc *, 8330 struct coff_link_hash_entry *, struct internal_syment *, 8331 bfd_vma *); 8332 8333 bfd_boolean (*_bfd_coff_adjust_symndx) 8334 (bfd *, struct bfd_link_info *, bfd *, asection *, 8335 struct internal_reloc *, bfd_boolean *); 8336 8337 bfd_boolean (*_bfd_coff_link_add_one_symbol) 8338 (struct bfd_link_info *, bfd *, const char *, flagword, 8339 asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean, 8340 struct bfd_link_hash_entry **); 8341 8342 bfd_boolean (*_bfd_coff_link_output_has_begun) 8343 (bfd *, struct coff_final_link_info *); 8344 8345 bfd_boolean (*_bfd_coff_final_link_postscript) 8346 (bfd *, struct coff_final_link_info *); 8347 8348 bfd_boolean (*_bfd_coff_print_pdata) 8349 (bfd *, void *); 8350 8351 } bfd_coff_backend_data; 8352 8353 #define coff_backend_info(abfd) \ 8354 ((bfd_coff_backend_data *) (abfd)->xvec->backend_data) 8355 8356 #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \ 8357 ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i)) 8358 8359 #define bfd_coff_swap_sym_in(a,e,i) \ 8360 ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i)) 8361 8362 #define bfd_coff_swap_lineno_in(a,e,i) \ 8363 ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i)) 8364 8365 #define bfd_coff_swap_reloc_out(abfd, i, o) \ 8366 ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o)) 8367 8368 #define bfd_coff_swap_lineno_out(abfd, i, o) \ 8369 ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o)) 8370 8371 #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \ 8372 ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o)) 8373 8374 #define bfd_coff_swap_sym_out(abfd, i,o) \ 8375 ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o)) 8376 8377 #define bfd_coff_swap_scnhdr_out(abfd, i,o) \ 8378 ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o)) 8379 8380 #define bfd_coff_swap_filehdr_out(abfd, i,o) \ 8381 ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o)) 8382 8383 #define bfd_coff_swap_aouthdr_out(abfd, i,o) \ 8384 ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o)) 8385 8386 #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz) 8387 #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz) 8388 #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz) 8389 #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz) 8390 #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz) 8391 #define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz) 8392 #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz) 8393 #define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen) 8394 #define bfd_coff_long_filenames(abfd) \ 8395 (coff_backend_info (abfd)->_bfd_coff_long_filenames) 8396 #define bfd_coff_long_section_names(abfd) \ 8397 (coff_backend_info (abfd)->_bfd_coff_long_section_names) 8398 #define bfd_coff_default_section_alignment_power(abfd) \ 8399 (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power) 8400 #define bfd_coff_swap_filehdr_in(abfd, i,o) \ 8401 ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o)) 8402 8403 #define bfd_coff_swap_aouthdr_in(abfd, i,o) \ 8404 ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o)) 8405 8406 #define bfd_coff_swap_scnhdr_in(abfd, i,o) \ 8407 ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o)) 8408 8409 #define bfd_coff_swap_reloc_in(abfd, i, o) \ 8410 ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o)) 8411 8412 #define bfd_coff_bad_format_hook(abfd, filehdr) \ 8413 ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr)) 8414 8415 #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\ 8416 ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr)) 8417 #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\ 8418 ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\ 8419 (abfd, filehdr, aouthdr)) 8420 8421 #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\ 8422 ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\ 8423 (abfd, scnhdr, name, section, flags_ptr)) 8424 8425 #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\ 8426 ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr)) 8427 8428 #define bfd_coff_slurp_symbol_table(abfd)\ 8429 ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd)) 8430 8431 #define bfd_coff_symname_in_debug(abfd, sym)\ 8432 ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym)) 8433 8434 #define bfd_coff_force_symnames_in_strings(abfd)\ 8435 (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings) 8436 8437 #define bfd_coff_debug_string_prefix_length(abfd)\ 8438 (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length) 8439 8440 #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\ 8441 ((coff_backend_info (abfd)->_bfd_coff_print_aux)\ 8442 (abfd, file, base, symbol, aux, indaux)) 8443 8444 #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\ 8445 reloc, data, src_ptr, dst_ptr)\ 8446 ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\ 8447 (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)) 8448 8449 #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\ 8450 ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\ 8451 (abfd, section, reloc, shrink, link_info)) 8452 8453 #define bfd_coff_classify_symbol(abfd, sym)\ 8454 ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\ 8455 (abfd, sym)) 8456 8457 #define bfd_coff_compute_section_file_positions(abfd)\ 8458 ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\ 8459 (abfd)) 8460 8461 #define bfd_coff_start_final_link(obfd, info)\ 8462 ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\ 8463 (obfd, info)) 8464 #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\ 8465 ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\ 8466 (obfd, info, ibfd, o, con, rel, isyms, secs)) 8467 #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\ 8468 ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\ 8469 (abfd, sec, rel, h, sym, addendp)) 8470 #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\ 8471 ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ 8472 (obfd, info, ibfd, sec, rel, adjustedp)) 8473 #define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\ 8474 value, string, cp, coll, hashp)\ 8475 ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ 8476 (info, abfd, name, flags, section, value, string, cp, coll, hashp)) 8477 8478 #define bfd_coff_link_output_has_begun(a,p) \ 8479 ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p)) 8480 #define bfd_coff_final_link_postscript(a,p) \ 8481 ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p)) 8482 8483 #define bfd_coff_have_print_pdata(a) \ 8484 (coff_backend_info (a)->_bfd_coff_print_pdata) 8485 #define bfd_coff_print_pdata(a,p) \ 8486 ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p)) 8487 84883.3.2.7 Writing relocations 8489........................... 8490 8491To write relocations, the back end steps though the canonical 8492relocation table and create an `internal_reloc'. The symbol index to 8493use is removed from the `offset' field in the symbol table supplied. 8494The address comes directly from the sum of the section base address and 8495the relocation offset; the type is dug directly from the howto field. 8496Then the `internal_reloc' is swapped into the shape of an 8497`external_reloc' and written out to disk. 8498 84993.3.2.8 Reading linenumbers 8500........................... 8501 8502Creating the linenumber table is done by reading in the entire coff 8503linenumber table, and creating another table for internal use. 8504 8505 A coff linenumber table is structured so that each function is 8506marked as having a line number of 0. Each line within the function is 8507an offset from the first line in the function. The base of the line 8508number information for the table is stored in the symbol associated 8509with the function. 8510 8511 Note: The PE format uses line number 0 for a flag indicating a new 8512source file. 8513 8514 The information is copied from the external to the internal table, 8515and each symbol which marks a function is marked by pointing its... 8516 8517 How does this work ? 8518 85193.3.2.9 Reading relocations 8520........................... 8521 8522Coff relocations are easily transformed into the internal BFD form 8523(`arelent'). 8524 8525 Reading a coff relocation table is done in the following stages: 8526 8527 * Read the entire coff relocation table into memory. 8528 8529 * Process each relocation in turn; first swap it from the external 8530 to the internal form. 8531 8532 * Turn the symbol referenced in the relocation's symbol index into a 8533 pointer into the canonical symbol table. This table is the same 8534 as the one returned by a call to `bfd_canonicalize_symtab'. The 8535 back end will call that routine and save the result if a 8536 canonicalization hasn't been done. 8537 8538 * The reloc index is turned into a pointer to a howto structure, in 8539 a back end specific way. For instance, the 386 and 960 use the 8540 `r_type' to directly produce an index into a howto table vector; 8541 the 88k subtracts a number from the `r_type' field and creates an 8542 addend field. 8543 8544 8545File: bfd.info, Node: elf, Next: mmo, Prev: coff, Up: BFD back ends 8546 85473.4 ELF backends 8548================ 8549 8550BFD support for ELF formats is being worked on. Currently, the best 8551supported back ends are for sparc and i386 (running svr4 or Solaris 2). 8552 8553 Documentation of the internals of the support code still needs to be 8554written. The code is changing quickly enough that we haven't bothered 8555yet. 8556 85573.4.0.1 `bfd_elf_find_section' 8558.............................. 8559 8560*Synopsis* 8561 struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name); 8562 *Description* 8563Helper functions for GDB to locate the string tables. Since BFD hides 8564string tables from callers, GDB needs to use an internal hook to find 8565them. Sun's .stabstr, in particular, isn't even pointed to by the 8566.stab section, so ordinary mechanisms wouldn't work to find it, even if 8567we had some. 8568 8569 8570File: bfd.info, Node: mmo, Prev: elf, Up: BFD back ends 8571 85723.5 mmo backend 8573=============== 8574 8575The mmo object format is used exclusively together with Professor 8576Donald E. Knuth's educational 64-bit processor MMIX. The simulator 8577`mmix' which is available at 8578`http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz' 8579understands this format. That package also includes a combined 8580assembler and linker called `mmixal'. The mmo format has no advantages 8581feature-wise compared to e.g. ELF. It is a simple non-relocatable 8582object format with no support for archives or debugging information, 8583except for symbol value information and line numbers (which is not yet 8584implemented in BFD). See 8585`http://www-cs-faculty.stanford.edu/~knuth/mmix.html' for more 8586information about MMIX. The ELF format is used for intermediate object 8587files in the BFD implementation. 8588 8589* Menu: 8590 8591* File layout:: 8592* Symbol-table:: 8593* mmo section mapping:: 8594 8595 8596File: bfd.info, Node: File layout, Next: Symbol-table, Prev: mmo, Up: mmo 8597 85983.5.1 File layout 8599----------------- 8600 8601The mmo file contents is not partitioned into named sections as with 8602e.g. ELF. Memory areas is formed by specifying the location of the 8603data that follows. Only the memory area `0x0000...00' to `0x01ff...ff' 8604is executable, so it is used for code (and constants) and the area 8605`0x2000...00' to `0x20ff...ff' is used for writable data. *Note mmo 8606section mapping::. 8607 8608 There is provision for specifying "special data" of 65536 different 8609types. We use type 80 (decimal), arbitrarily chosen the same as the 8610ELF `e_machine' number for MMIX, filling it with section information 8611normally found in ELF objects. *Note mmo section mapping::. 8612 8613 Contents is entered as 32-bit words, xor:ed over previous contents, 8614always zero-initialized. A word that starts with the byte `0x98' forms 8615a command called a `lopcode', where the next byte distinguished between 8616the thirteen lopcodes. The two remaining bytes, called the `Y' and `Z' 8617fields, or the `YZ' field (a 16-bit big-endian number), are used for 8618various purposes different for each lopcode. As documented in 8619`http://www-cs-faculty.stanford.edu/~knuth/mmixal-intro.ps.gz', the 8620lopcodes are: 8621 8622`lop_quote' 8623 0x98000001. The next word is contents, regardless of whether it 8624 starts with 0x98 or not. 8625 8626`lop_loc' 8627 0x9801YYZZ, where `Z' is 1 or 2. This is a location directive, 8628 setting the location for the next data to the next 32-bit word 8629 (for Z = 1) or 64-bit word (for Z = 2), plus Y * 2^56. Normally 8630 `Y' is 0 for the text segment and 2 for the data segment. 8631 8632`lop_skip' 8633 0x9802YYZZ. Increase the current location by `YZ' bytes. 8634 8635`lop_fixo' 8636 0x9803YYZZ, where `Z' is 1 or 2. Store the current location as 64 8637 bits into the location pointed to by the next 32-bit (Z = 1) or 8638 64-bit (Z = 2) word, plus Y * 2^56. 8639 8640`lop_fixr' 8641 0x9804YYZZ. `YZ' is stored into the current location plus 2 - 4 * 8642 YZ. 8643 8644`lop_fixrx' 8645 0x980500ZZ. `Z' is 16 or 24. A value `L' derived from the 8646 following 32-bit word are used in a manner similar to `YZ' in 8647 lop_fixr: it is xor:ed into the current location minus 4 * L. The 8648 first byte of the word is 0 or 1. If it is 1, then L = (LOWEST 24 8649 BITS OF WORD) - 2^Z, if 0, then L = (LOWEST 24 BITS OF WORD). 8650 8651`lop_file' 8652 0x9806YYZZ. `Y' is the file number, `Z' is count of 32-bit words. 8653 Set the file number to `Y' and the line counter to 0. The next Z 8654 * 4 bytes contain the file name, padded with zeros if the count is 8655 not a multiple of four. The same `Y' may occur multiple times, 8656 but `Z' must be 0 for all but the first occurrence. 8657 8658`lop_line' 8659 0x9807YYZZ. `YZ' is the line number. Together with lop_file, it 8660 forms the source location for the next 32-bit word. Note that for 8661 each non-lopcode 32-bit word, line numbers are assumed incremented 8662 by one. 8663 8664`lop_spec' 8665 0x9808YYZZ. `YZ' is the type number. Data until the next lopcode 8666 other than lop_quote forms special data of type `YZ'. *Note mmo 8667 section mapping::. 8668 8669 Other types than 80, (or type 80 with a content that does not 8670 parse) is stored in sections named `.MMIX.spec_data.N' where N is 8671 the `YZ'-type. The flags for such a sections say not to allocate 8672 or load the data. The vma is 0. Contents of multiple occurrences 8673 of special data N is concatenated to the data of the previous 8674 lop_spec Ns. The location in data or code at which the lop_spec 8675 occurred is lost. 8676 8677`lop_pre' 8678 0x980901ZZ. The first lopcode in a file. The `Z' field forms the 8679 length of header information in 32-bit words, where the first word 8680 tells the time in seconds since `00:00:00 GMT Jan 1 1970'. 8681 8682`lop_post' 8683 0x980a00ZZ. Z > 32. This lopcode follows after all 8684 content-generating lopcodes in a program. The `Z' field denotes 8685 the value of `rG' at the beginning of the program. The following 8686 256 - Z big-endian 64-bit words are loaded into global registers 8687 `$G' ... `$255'. 8688 8689`lop_stab' 8690 0x980b0000. The next-to-last lopcode in a program. Must follow 8691 immediately after the lop_post lopcode and its data. After this 8692 lopcode follows all symbols in a compressed format (*note 8693 Symbol-table::). 8694 8695`lop_end' 8696 0x980cYYZZ. The last lopcode in a program. It must follow the 8697 lop_stab lopcode and its data. The `YZ' field contains the number 8698 of 32-bit words of symbol table information after the preceding 8699 lop_stab lopcode. 8700 8701 Note that the lopcode "fixups"; `lop_fixr', `lop_fixrx' and 8702`lop_fixo' are not generated by BFD, but are handled. They are 8703generated by `mmixal'. 8704 8705 This trivial one-label, one-instruction file: 8706 8707 :Main TRAP 1,2,3 8708 8709 can be represented this way in mmo: 8710 8711 0x98090101 - lop_pre, one 32-bit word with timestamp. 8712 <timestamp> 8713 0x98010002 - lop_loc, text segment, using a 64-bit address. 8714 Note that mmixal does not emit this for the file above. 8715 0x00000000 - Address, high 32 bits. 8716 0x00000000 - Address, low 32 bits. 8717 0x98060002 - lop_file, 2 32-bit words for file-name. 8718 0x74657374 - "test" 8719 0x2e730000 - ".s\0\0" 8720 0x98070001 - lop_line, line 1. 8721 0x00010203 - TRAP 1,2,3 8722 0x980a00ff - lop_post, setting $255 to 0. 8723 0x00000000 8724 0x00000000 8725 0x980b0000 - lop_stab for ":Main" = 0, serial 1. 8726 0x203a4040 *Note Symbol-table::. 8727 0x10404020 8728 0x4d206120 8729 0x69016e00 8730 0x81000000 8731 0x980c0005 - lop_end; symbol table contained five 32-bit words. 8732 8733 8734File: bfd.info, Node: Symbol-table, Next: mmo section mapping, Prev: File layout, Up: mmo 8735 87363.5.2 Symbol table format 8737------------------------- 8738 8739From mmixal.w (or really, the generated mmixal.tex) in 8740`http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz'): 8741"Symbols are stored and retrieved by means of a `ternary search trie', 8742following ideas of Bentley and Sedgewick. (See ACM-SIAM Symp. on 8743Discrete Algorithms `8' (1997), 360-369; R.Sedgewick, `Algorithms in C' 8744(Reading, Mass. Addison-Wesley, 1998), `15.4'.) Each trie node stores 8745a character, and there are branches to subtries for the cases where a 8746given character is less than, equal to, or greater than the character 8747in the trie. There also is a pointer to a symbol table entry if a 8748symbol ends at the current node." 8749 8750 So it's a tree encoded as a stream of bytes. The stream of bytes 8751acts on a single virtual global symbol, adding and removing characters 8752and signalling complete symbol points. Here, we read the stream and 8753create symbols at the completion points. 8754 8755 First, there's a control byte `m'. If any of the listed bits in `m' 8756is nonzero, we execute what stands at the right, in the listed order: 8757 8758 (MMO3_LEFT) 8759 0x40 - Traverse left trie. 8760 (Read a new command byte and recurse.) 8761 8762 (MMO3_SYMBITS) 8763 0x2f - Read the next byte as a character and store it in the 8764 current character position; increment character position. 8765 Test the bits of `m': 8766 8767 (MMO3_WCHAR) 8768 0x80 - The character is 16-bit (so read another byte, 8769 merge into current character. 8770 8771 (MMO3_TYPEBITS) 8772 0xf - We have a complete symbol; parse the type, value 8773 and serial number and do what should be done 8774 with a symbol. The type and length information 8775 is in j = (m & 0xf). 8776 8777 (MMO3_REGQUAL_BITS) 8778 j == 0xf: A register variable. The following 8779 byte tells which register. 8780 j <= 8: An absolute symbol. Read j bytes as the 8781 big-endian number the symbol equals. 8782 A j = 2 with two zero bytes denotes an 8783 unknown symbol. 8784 j > 8: As with j <= 8, but add (0x20 << 56) 8785 to the value in the following j - 8 8786 bytes. 8787 8788 Then comes the serial number, as a variant of 8789 uleb128, but better named ubeb128: 8790 Read bytes and shift the previous value left 7 8791 (multiply by 128). Add in the new byte, repeat 8792 until a byte has bit 7 set. The serial number 8793 is the computed value minus 128. 8794 8795 (MMO3_MIDDLE) 8796 0x20 - Traverse middle trie. (Read a new command byte 8797 and recurse.) Decrement character position. 8798 8799 (MMO3_RIGHT) 8800 0x10 - Traverse right trie. (Read a new command byte and 8801 recurse.) 8802 8803 Let's look again at the `lop_stab' for the trivial file (*note File 8804layout::). 8805 8806 0x980b0000 - lop_stab for ":Main" = 0, serial 1. 8807 0x203a4040 8808 0x10404020 8809 0x4d206120 8810 0x69016e00 8811 0x81000000 8812 8813 This forms the trivial trie (note that the path between ":" and "M" 8814is redundant): 8815 8816 203a ":" 8817 40 / 8818 40 / 8819 10 \ 8820 40 / 8821 40 / 8822 204d "M" 8823 2061 "a" 8824 2069 "i" 8825 016e "n" is the last character in a full symbol, and 8826 with a value represented in one byte. 8827 00 The value is 0. 8828 81 The serial number is 1. 8829 8830 8831File: bfd.info, Node: mmo section mapping, Prev: Symbol-table, Up: mmo 8832 88333.5.3 mmo section mapping 8834------------------------- 8835 8836The implementation in BFD uses special data type 80 (decimal) to 8837encapsulate and describe named sections, containing e.g. debug 8838information. If needed, any datum in the encapsulation will be quoted 8839using lop_quote. First comes a 32-bit word holding the number of 884032-bit words containing the zero-terminated zero-padded segment name. 8841After the name there's a 32-bit word holding flags describing the 8842section type. Then comes a 64-bit big-endian word with the section 8843length (in bytes), then another with the section start address. 8844Depending on the type of section, the contents might follow, 8845zero-padded to 32-bit boundary. For a loadable section (such as data 8846or code), the contents might follow at some later point, not 8847necessarily immediately, as a lop_loc with the same start address as in 8848the section description, followed by the contents. This in effect 8849forms a descriptor that must be emitted before the actual contents. 8850Sections described this way must not overlap. 8851 8852 For areas that don't have such descriptors, synthetic sections are 8853formed by BFD. Consecutive contents in the two memory areas 8854`0x0000...00' to `0x01ff...ff' and `0x2000...00' to `0x20ff...ff' are 8855entered in sections named `.text' and `.data' respectively. If an area 8856is not otherwise described, but would together with a neighboring lower 8857area be less than `0x40000000' bytes long, it is joined with the lower 8858area and the gap is zero-filled. For other cases, a new section is 8859formed, named `.MMIX.sec.N'. Here, N is a number, a running count 8860through the mmo file, starting at 0. 8861 8862 A loadable section specified as: 8863 8864 .section secname,"ax" 8865 TETRA 1,2,3,4,-1,-2009 8866 BYTE 80 8867 8868 and linked to address `0x4', is represented by the sequence: 8869 8870 0x98080050 - lop_spec 80 8871 0x00000002 - two 32-bit words for the section name 8872 0x7365636e - "secn" 8873 0x616d6500 - "ame\0" 8874 0x00000033 - flags CODE, READONLY, LOAD, ALLOC 8875 0x00000000 - high 32 bits of section length 8876 0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits 8877 0x00000000 - high 32 bits of section address 8878 0x00000004 - section address is 4 8879 0x98010002 - 64 bits with address of following data 8880 0x00000000 - high 32 bits of address 8881 0x00000004 - low 32 bits: data starts at address 4 8882 0x00000001 - 1 8883 0x00000002 - 2 8884 0x00000003 - 3 8885 0x00000004 - 4 8886 0xffffffff - -1 8887 0xfffff827 - -2009 8888 0x50000000 - 80 as a byte, padded with zeros. 8889 8890 Note that the lop_spec wrapping does not include the section 8891contents. Compare this to a non-loaded section specified as: 8892 8893 .section thirdsec 8894 TETRA 200001,100002 8895 BYTE 38,40 8896 8897 This, when linked to address `0x200000000000001c', is represented by: 8898 8899 0x98080050 - lop_spec 80 8900 0x00000002 - two 32-bit words for the section name 8901 0x7365636e - "thir" 8902 0x616d6500 - "dsec" 8903 0x00000010 - flag READONLY 8904 0x00000000 - high 32 bits of section length 8905 0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits 8906 0x20000000 - high 32 bits of address 8907 0x0000001c - low 32 bits of address 0x200000000000001c 8908 0x00030d41 - 200001 8909 0x000186a2 - 100002 8910 0x26280000 - 38, 40 as bytes, padded with zeros 8911 8912 For the latter example, the section contents must not be loaded in 8913memory, and is therefore specified as part of the special data. The 8914address is usually unimportant but might provide information for e.g. 8915the DWARF 2 debugging format. 8916 8917 8918File: bfd.info, Node: GNU Free Documentation License, Next: BFD Index, Prev: BFD back ends, Up: Top 8919 8920Appendix A GNU Free Documentation License 8921***************************************** 8922 8923 Version 1.1, March 2000 8924 8925 Copyright (C) 2000, 2003 Free Software Foundation, Inc. 8926 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 8927 8928 Everyone is permitted to copy and distribute verbatim copies 8929 of this license document, but changing it is not allowed. 8930 8931 8932 0. PREAMBLE 8933 8934 The purpose of this License is to make a manual, textbook, or other 8935 written document "free" in the sense of freedom: to assure everyone 8936 the effective freedom to copy and redistribute it, with or without 8937 modifying it, either commercially or noncommercially. Secondarily, 8938 this License preserves for the author and publisher a way to get 8939 credit for their work, while not being considered responsible for 8940 modifications made by others. 8941 8942 This License is a kind of "copyleft", which means that derivative 8943 works of the document must themselves be free in the same sense. 8944 It complements the GNU General Public License, which is a copyleft 8945 license designed for free software. 8946 8947 We have designed this License in order to use it for manuals for 8948 free software, because free software needs free documentation: a 8949 free program should come with manuals providing the same freedoms 8950 that the software does. But this License is not limited to 8951 software manuals; it can be used for any textual work, regardless 8952 of subject matter or whether it is published as a printed book. 8953 We recommend this License principally for works whose purpose is 8954 instruction or reference. 8955 8956 8957 1. APPLICABILITY AND DEFINITIONS 8958 8959 This License applies to any manual or other work that contains a 8960 notice placed by the copyright holder saying it can be distributed 8961 under the terms of this License. The "Document", below, refers to 8962 any such manual or work. Any member of the public is a licensee, 8963 and is addressed as "you." 8964 8965 A "Modified Version" of the Document means any work containing the 8966 Document or a portion of it, either copied verbatim, or with 8967 modifications and/or translated into another language. 8968 8969 A "Secondary Section" is a named appendix or a front-matter 8970 section of the Document that deals exclusively with the 8971 relationship of the publishers or authors of the Document to the 8972 Document's overall subject (or to related matters) and contains 8973 nothing that could fall directly within that overall subject. 8974 (For example, if the Document is in part a textbook of 8975 mathematics, a Secondary Section may not explain any mathematics.) 8976 The relationship could be a matter of historical connection with 8977 the subject or with related matters, or of legal, commercial, 8978 philosophical, ethical or political position regarding them. 8979 8980 The "Invariant Sections" are certain Secondary Sections whose 8981 titles are designated, as being those of Invariant Sections, in 8982 the notice that says that the Document is released under this 8983 License. 8984 8985 The "Cover Texts" are certain short passages of text that are 8986 listed, as Front-Cover Texts or Back-Cover Texts, in the notice 8987 that says that the Document is released under this License. 8988 8989 A "Transparent" copy of the Document means a machine-readable copy, 8990 represented in a format whose specification is available to the 8991 general public, whose contents can be viewed and edited directly 8992 and straightforwardly with generic text editors or (for images 8993 composed of pixels) generic paint programs or (for drawings) some 8994 widely available drawing editor, and that is suitable for input to 8995 text formatters or for automatic translation to a variety of 8996 formats suitable for input to text formatters. A copy made in an 8997 otherwise Transparent file format whose markup has been designed 8998 to thwart or discourage subsequent modification by readers is not 8999 Transparent. A copy that is not "Transparent" is called "Opaque." 9000 9001 Examples of suitable formats for Transparent copies include plain 9002 ASCII without markup, Texinfo input format, LaTeX input format, 9003 SGML or XML using a publicly available DTD, and 9004 standard-conforming simple HTML designed for human modification. 9005 Opaque formats include PostScript, PDF, proprietary formats that 9006 can be read and edited only by proprietary word processors, SGML 9007 or XML for which the DTD and/or processing tools are not generally 9008 available, and the machine-generated HTML produced by some word 9009 processors for output purposes only. 9010 9011 The "Title Page" means, for a printed book, the title page itself, 9012 plus such following pages as are needed to hold, legibly, the 9013 material this License requires to appear in the title page. For 9014 works in formats which do not have any title page as such, "Title 9015 Page" means the text near the most prominent appearance of the 9016 work's title, preceding the beginning of the body of the text. 9017 9018 2. VERBATIM COPYING 9019 9020 You may copy and distribute the Document in any medium, either 9021 commercially or noncommercially, provided that this License, the 9022 copyright notices, and the license notice saying this License 9023 applies to the Document are reproduced in all copies, and that you 9024 add no other conditions whatsoever to those of this License. You 9025 may not use technical measures to obstruct or control the reading 9026 or further copying of the copies you make or distribute. However, 9027 you may accept compensation in exchange for copies. If you 9028 distribute a large enough number of copies you must also follow 9029 the conditions in section 3. 9030 9031 You may also lend copies, under the same conditions stated above, 9032 and you may publicly display copies. 9033 9034 3. COPYING IN QUANTITY 9035 9036 If you publish printed copies of the Document numbering more than 9037 100, and the Document's license notice requires Cover Texts, you 9038 must enclose the copies in covers that carry, clearly and legibly, 9039 all these Cover Texts: Front-Cover Texts on the front cover, and 9040 Back-Cover Texts on the back cover. Both covers must also clearly 9041 and legibly identify you as the publisher of these copies. The 9042 front cover must present the full title with all words of the 9043 title equally prominent and visible. You may add other material 9044 on the covers in addition. Copying with changes limited to the 9045 covers, as long as they preserve the title of the Document and 9046 satisfy these conditions, can be treated as verbatim copying in 9047 other respects. 9048 9049 If the required texts for either cover are too voluminous to fit 9050 legibly, you should put the first ones listed (as many as fit 9051 reasonably) on the actual cover, and continue the rest onto 9052 adjacent pages. 9053 9054 If you publish or distribute Opaque copies of the Document 9055 numbering more than 100, you must either include a 9056 machine-readable Transparent copy along with each Opaque copy, or 9057 state in or with each Opaque copy a publicly-accessible 9058 computer-network location containing a complete Transparent copy 9059 of the Document, free of added material, which the general 9060 network-using public has access to download anonymously at no 9061 charge using public-standard network protocols. If you use the 9062 latter option, you must take reasonably prudent steps, when you 9063 begin distribution of Opaque copies in quantity, to ensure that 9064 this Transparent copy will remain thus accessible at the stated 9065 location until at least one year after the last time you 9066 distribute an Opaque copy (directly or through your agents or 9067 retailers) of that edition to the public. 9068 9069 It is requested, but not required, that you contact the authors of 9070 the Document well before redistributing any large number of 9071 copies, to give them a chance to provide you with an updated 9072 version of the Document. 9073 9074 4. MODIFICATIONS 9075 9076 You may copy and distribute a Modified Version of the Document 9077 under the conditions of sections 2 and 3 above, provided that you 9078 release the Modified Version under precisely this License, with 9079 the Modified Version filling the role of the Document, thus 9080 licensing distribution and modification of the Modified Version to 9081 whoever possesses a copy of it. In addition, you must do these 9082 things in the Modified Version: 9083 9084 A. Use in the Title Page (and on the covers, if any) a title 9085 distinct from that of the Document, and from those of previous 9086 versions (which should, if there were any, be listed in the 9087 History section of the Document). You may use the same title 9088 as a previous version if the original publisher of that version 9089 gives permission. 9090 B. List on the Title Page, as authors, one or more persons or 9091 entities responsible for authorship of the modifications in the 9092 Modified Version, together with at least five of the principal 9093 authors of the Document (all of its principal authors, if it 9094 has less than five). 9095 C. State on the Title page the name of the publisher of the 9096 Modified Version, as the publisher. 9097 D. Preserve all the copyright notices of the Document. 9098 E. Add an appropriate copyright notice for your modifications 9099 adjacent to the other copyright notices. 9100 F. Include, immediately after the copyright notices, a license 9101 notice giving the public permission to use the Modified Version 9102 under the terms of this License, in the form shown in the 9103 Addendum below. 9104 G. Preserve in that license notice the full lists of Invariant 9105 Sections and required Cover Texts given in the Document's 9106 license notice. 9107 H. Include an unaltered copy of this License. 9108 I. Preserve the section entitled "History", and its title, and add 9109 to it an item stating at least the title, year, new authors, and 9110 publisher of the Modified Version as given on the Title Page. 9111 If there is no section entitled "History" in the Document, 9112 create one stating the title, year, authors, and publisher of 9113 the Document as given on its Title Page, then add an item 9114 describing the Modified Version as stated in the previous 9115 sentence. 9116 J. Preserve the network location, if any, given in the Document for 9117 public access to a Transparent copy of the Document, and 9118 likewise the network locations given in the Document for 9119 previous versions it was based on. These may be placed in the 9120 "History" section. You may omit a network location for a work 9121 that was published at least four years before the Document 9122 itself, or if the original publisher of the version it refers 9123 to gives permission. 9124 K. In any section entitled "Acknowledgements" or "Dedications", 9125 preserve the section's title, and preserve in the section all the 9126 substance and tone of each of the contributor acknowledgements 9127 and/or dedications given therein. 9128 L. Preserve all the Invariant Sections of the Document, 9129 unaltered in their text and in their titles. Section numbers 9130 or the equivalent are not considered part of the section titles. 9131 M. Delete any section entitled "Endorsements." Such a section 9132 may not be included in the Modified Version. 9133 N. Do not retitle any existing section as "Endorsements" or to 9134 conflict in title with any Invariant Section. 9135 9136 If the Modified Version includes new front-matter sections or 9137 appendices that qualify as Secondary Sections and contain no 9138 material copied from the Document, you may at your option 9139 designate some or all of these sections as invariant. To do this, 9140 add their titles to the list of Invariant Sections in the Modified 9141 Version's license notice. These titles must be distinct from any 9142 other section titles. 9143 9144 You may add a section entitled "Endorsements", provided it contains 9145 nothing but endorsements of your Modified Version by various 9146 parties-for example, statements of peer review or that the text has 9147 been approved by an organization as the authoritative definition 9148 of a standard. 9149 9150 You may add a passage of up to five words as a Front-Cover Text, 9151 and a passage of up to 25 words as a Back-Cover Text, to the end 9152 of the list of Cover Texts in the Modified Version. Only one 9153 passage of Front-Cover Text and one of Back-Cover Text may be 9154 added by (or through arrangements made by) any one entity. If the 9155 Document already includes a cover text for the same cover, 9156 previously added by you or by arrangement made by the same entity 9157 you are acting on behalf of, you may not add another; but you may 9158 replace the old one, on explicit permission from the previous 9159 publisher that added the old one. 9160 9161 The author(s) and publisher(s) of the Document do not by this 9162 License give permission to use their names for publicity for or to 9163 assert or imply endorsement of any Modified Version. 9164 9165 5. COMBINING DOCUMENTS 9166 9167 You may combine the Document with other documents released under 9168 this License, under the terms defined in section 4 above for 9169 modified versions, provided that you include in the combination 9170 all of the Invariant Sections of all of the original documents, 9171 unmodified, and list them all as Invariant Sections of your 9172 combined work in its license notice. 9173 9174 The combined work need only contain one copy of this License, and 9175 multiple identical Invariant Sections may be replaced with a single 9176 copy. If there are multiple Invariant Sections with the same name 9177 but different contents, make the title of each such section unique 9178 by adding at the end of it, in parentheses, the name of the 9179 original author or publisher of that section if known, or else a 9180 unique number. Make the same adjustment to the section titles in 9181 the list of Invariant Sections in the license notice of the 9182 combined work. 9183 9184 In the combination, you must combine any sections entitled 9185 "History" in the various original documents, forming one section 9186 entitled "History"; likewise combine any sections entitled 9187 "Acknowledgements", and any sections entitled "Dedications." You 9188 must delete all sections entitled "Endorsements." 9189 9190 6. COLLECTIONS OF DOCUMENTS 9191 9192 You may make a collection consisting of the Document and other 9193 documents released under this License, and replace the individual 9194 copies of this License in the various documents with a single copy 9195 that is included in the collection, provided that you follow the 9196 rules of this License for verbatim copying of each of the 9197 documents in all other respects. 9198 9199 You may extract a single document from such a collection, and 9200 distribute it individually under this License, provided you insert 9201 a copy of this License into the extracted document, and follow 9202 this License in all other respects regarding verbatim copying of 9203 that document. 9204 9205 7. AGGREGATION WITH INDEPENDENT WORKS 9206 9207 A compilation of the Document or its derivatives with other 9208 separate and independent documents or works, in or on a volume of 9209 a storage or distribution medium, does not as a whole count as a 9210 Modified Version of the Document, provided no compilation 9211 copyright is claimed for the compilation. Such a compilation is 9212 called an "aggregate", and this License does not apply to the 9213 other self-contained works thus compiled with the Document, on 9214 account of their being thus compiled, if they are not themselves 9215 derivative works of the Document. 9216 9217 If the Cover Text requirement of section 3 is applicable to these 9218 copies of the Document, then if the Document is less than one 9219 quarter of the entire aggregate, the Document's Cover Texts may be 9220 placed on covers that surround only the Document within the 9221 aggregate. Otherwise they must appear on covers around the whole 9222 aggregate. 9223 9224 8. TRANSLATION 9225 9226 Translation is considered a kind of modification, so you may 9227 distribute translations of the Document under the terms of section 9228 4. Replacing Invariant Sections with translations requires special 9229 permission from their copyright holders, but you may include 9230 translations of some or all Invariant Sections in addition to the 9231 original versions of these Invariant Sections. You may include a 9232 translation of this License provided that you also include the 9233 original English version of this License. In case of a 9234 disagreement between the translation and the original English 9235 version of this License, the original English version will prevail. 9236 9237 9. TERMINATION 9238 9239 You may not copy, modify, sublicense, or distribute the Document 9240 except as expressly provided for under this License. Any other 9241 attempt to copy, modify, sublicense or distribute the Document is 9242 void, and will automatically terminate your rights under this 9243 License. However, parties who have received copies, or rights, 9244 from you under this License will not have their licenses 9245 terminated so long as such parties remain in full compliance. 9246 9247 10. FUTURE REVISIONS OF THIS LICENSE 9248 9249 The Free Software Foundation may publish new, revised versions of 9250 the GNU Free Documentation License from time to time. Such new 9251 versions will be similar in spirit to the present version, but may 9252 differ in detail to address new problems or concerns. See 9253 http://www.gnu.org/copyleft/. 9254 9255 Each version of the License is given a distinguishing version 9256 number. If the Document specifies that a particular numbered 9257 version of this License "or any later version" applies to it, you 9258 have the option of following the terms and conditions either of 9259 that specified version or of any later version that has been 9260 published (not as a draft) by the Free Software Foundation. If 9261 the Document does not specify a version number of this License, 9262 you may choose any version ever published (not as a draft) by the 9263 Free Software Foundation. 9264 9265 9266ADDENDUM: How to use this License for your documents 9267==================================================== 9268 9269To use this License in a document you have written, include a copy of 9270the License in the document and put the following copyright and license 9271notices just after the title page: 9272 9273 Copyright (C) YEAR YOUR NAME. 9274 Permission is granted to copy, distribute and/or modify this document 9275 under the terms of the GNU Free Documentation License, Version 1.1 9276 or any later version published by the Free Software Foundation; 9277 with the Invariant Sections being LIST THEIR TITLES, with the 9278 Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. 9279 A copy of the license is included in the section entitled "GNU 9280 Free Documentation License." 9281 9282 If you have no Invariant Sections, write "with no Invariant Sections" 9283instead of saying which ones are invariant. If you have no Front-Cover 9284Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being 9285LIST"; likewise for Back-Cover Texts. 9286 9287 If your document contains nontrivial examples of program code, we 9288recommend releasing these examples in parallel under your choice of 9289free software license, such as the GNU General Public License, to 9290permit their use in free software. 9291 9292 9293File: bfd.info, Node: BFD Index, Prev: GNU Free Documentation License, Up: Top 9294 9295BFD Index 9296********* 9297 9298[index] 9299* Menu: 9300 9301* _bfd_final_link_relocate: Relocating the section contents. 9302 (line 22) 9303* _bfd_generic_link_add_archive_symbols: Adding symbols from an archive. 9304 (line 12) 9305* _bfd_generic_link_add_one_symbol: Adding symbols from an object file. 9306 (line 19) 9307* _bfd_generic_make_empty_symbol: symbol handling functions. 9308 (line 92) 9309* _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table. 9310 (line 6) 9311* _bfd_link_final_link in target vector: Performing the Final Link. 9312 (line 6) 9313* _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table. 9314 (line 6) 9315* _bfd_relocate_contents: Relocating the section contents. 9316 (line 22) 9317* aout_SIZE_machine_type: aout. (line 147) 9318* aout_SIZE_mkobject: aout. (line 139) 9319* aout_SIZE_new_section_hook: aout. (line 177) 9320* aout_SIZE_set_arch_mach: aout. (line 164) 9321* aout_SIZE_some_aout_object_p: aout. (line 125) 9322* aout_SIZE_swap_exec_header_in: aout. (line 101) 9323* aout_SIZE_swap_exec_header_out: aout. (line 113) 9324* arelent_chain: typedef arelent. (line 339) 9325* BFD: Overview. (line 6) 9326* BFD canonical format: Canonical format. (line 11) 9327* bfd_alloc: Opening and Closing. 9328 (line 210) 9329* bfd_alloc2: Opening and Closing. 9330 (line 219) 9331* bfd_alt_mach_code: BFD front end. (line 681) 9332* bfd_arch_bits_per_address: Architectures. (line 501) 9333* bfd_arch_bits_per_byte: Architectures. (line 493) 9334* bfd_arch_get_compatible: Architectures. (line 436) 9335* bfd_arch_list: Architectures. (line 427) 9336* bfd_arch_mach_octets_per_byte: Architectures. (line 570) 9337* BFD_ARELOC_BFIN_ADD: howto manager. (line 966) 9338* BFD_ARELOC_BFIN_ADDR: howto manager. (line 1017) 9339* BFD_ARELOC_BFIN_AND: howto manager. (line 987) 9340* BFD_ARELOC_BFIN_COMP: howto manager. (line 1008) 9341* BFD_ARELOC_BFIN_CONST: howto manager. (line 963) 9342* BFD_ARELOC_BFIN_DIV: howto manager. (line 975) 9343* BFD_ARELOC_BFIN_HWPAGE: howto manager. (line 1014) 9344* BFD_ARELOC_BFIN_LAND: howto manager. (line 996) 9345* BFD_ARELOC_BFIN_LEN: howto manager. (line 1002) 9346* BFD_ARELOC_BFIN_LOR: howto manager. (line 999) 9347* BFD_ARELOC_BFIN_LSHIFT: howto manager. (line 981) 9348* BFD_ARELOC_BFIN_MOD: howto manager. (line 978) 9349* BFD_ARELOC_BFIN_MULT: howto manager. (line 972) 9350* BFD_ARELOC_BFIN_NEG: howto manager. (line 1005) 9351* BFD_ARELOC_BFIN_OR: howto manager. (line 990) 9352* BFD_ARELOC_BFIN_PAGE: howto manager. (line 1011) 9353* BFD_ARELOC_BFIN_PUSH: howto manager. (line 960) 9354* BFD_ARELOC_BFIN_RSHIFT: howto manager. (line 984) 9355* BFD_ARELOC_BFIN_SUB: howto manager. (line 969) 9356* BFD_ARELOC_BFIN_XOR: howto manager. (line 993) 9357* bfd_cache_close: File Caching. (line 26) 9358* bfd_cache_close_all: File Caching. (line 39) 9359* bfd_cache_init: File Caching. (line 18) 9360* bfd_calc_gnu_debuglink_crc32: Opening and Closing. 9361 (line 246) 9362* bfd_canonicalize_reloc: BFD front end. (line 400) 9363* bfd_canonicalize_symtab: symbol handling functions. 9364 (line 50) 9365* bfd_check_format: Formats. (line 21) 9366* bfd_check_format_matches: Formats. (line 52) 9367* bfd_check_overflow: typedef arelent. (line 351) 9368* bfd_close: Opening and Closing. 9369 (line 135) 9370* bfd_close_all_done: Opening and Closing. 9371 (line 153) 9372* bfd_coff_backend_data: coff. (line 246) 9373* bfd_copy_private_bfd_data: BFD front end. (line 539) 9374* bfd_copy_private_header_data: BFD front end. (line 521) 9375* bfd_copy_private_section_data: section prototypes. (line 255) 9376* bfd_copy_private_symbol_data: symbol handling functions. 9377 (line 140) 9378* bfd_core_file_failing_command: Core Files. (line 12) 9379* bfd_core_file_failing_signal: Core Files. (line 21) 9380* bfd_create: Opening and Closing. 9381 (line 172) 9382* bfd_create_gnu_debuglink_section: Opening and Closing. 9383 (line 312) 9384* bfd_decode_symclass: symbol handling functions. 9385 (line 111) 9386* bfd_default_arch_struct: Architectures. (line 448) 9387* bfd_default_compatible: Architectures. (line 510) 9388* bfd_default_reloc_type_lookup: howto manager. (line 2115) 9389* bfd_default_scan: Architectures. (line 519) 9390* bfd_default_set_arch_mach: Architectures. (line 466) 9391* bfd_demangle: BFD front end. (line 779) 9392* bfd_elf_find_section: elf. (line 13) 9393* bfd_emul_get_commonpagesize: BFD front end. (line 759) 9394* bfd_emul_get_maxpagesize: BFD front end. (line 739) 9395* bfd_emul_set_commonpagesize: BFD front end. (line 770) 9396* bfd_emul_set_maxpagesize: BFD front end. (line 750) 9397* bfd_errmsg: BFD front end. (line 325) 9398* bfd_fdopenr: Opening and Closing. 9399 (line 46) 9400* bfd_fill_in_gnu_debuglink_section: Opening and Closing. 9401 (line 326) 9402* bfd_find_target: bfd_target. (line 439) 9403* bfd_follow_gnu_debuglink: Opening and Closing. 9404 (line 291) 9405* bfd_fopen: Opening and Closing. 9406 (line 9) 9407* bfd_format_string: Formats. (line 79) 9408* bfd_generic_discard_group: section prototypes. (line 281) 9409* bfd_generic_gc_sections: howto manager. (line 2146) 9410* bfd_generic_get_relocated_section_contents: howto manager. (line 2166) 9411* bfd_generic_is_group_section: section prototypes. (line 273) 9412* bfd_generic_merge_sections: howto manager. (line 2156) 9413* bfd_generic_relax_section: howto manager. (line 2133) 9414* bfd_get_arch: Architectures. (line 477) 9415* bfd_get_arch_info: Architectures. (line 529) 9416* bfd_get_arch_size: BFD front end. (line 444) 9417* bfd_get_error: BFD front end. (line 306) 9418* bfd_get_error_handler: BFD front end. (line 376) 9419* bfd_get_gp_size: BFD front end. (line 485) 9420* bfd_get_mach: Architectures. (line 485) 9421* bfd_get_mtime: BFD front end. (line 820) 9422* bfd_get_next_mapent: Archives. (line 52) 9423* bfd_get_reloc_code_name: howto manager. (line 2124) 9424* bfd_get_reloc_size: typedef arelent. (line 330) 9425* bfd_get_reloc_upper_bound: BFD front end. (line 390) 9426* bfd_get_section_by_name: section prototypes. (line 17) 9427* bfd_get_section_by_name_if: section prototypes. (line 31) 9428* bfd_get_section_contents: section prototypes. (line 228) 9429* bfd_get_sign_extend_vma: BFD front end. (line 457) 9430* bfd_get_size <1>: Internal. (line 25) 9431* bfd_get_size: BFD front end. (line 829) 9432* bfd_get_symtab_upper_bound: symbol handling functions. 9433 (line 6) 9434* bfd_get_unique_section_name: section prototypes. (line 50) 9435* bfd_h_put_size: Internal. (line 97) 9436* bfd_hash_allocate: Creating and Freeing a Hash Table. 9437 (line 17) 9438* bfd_hash_lookup: Looking Up or Entering a String. 9439 (line 6) 9440* bfd_hash_newfunc: Creating and Freeing a Hash Table. 9441 (line 12) 9442* bfd_hash_set_default_size: Creating and Freeing a Hash Table. 9443 (line 25) 9444* bfd_hash_table_free: Creating and Freeing a Hash Table. 9445 (line 21) 9446* bfd_hash_table_init: Creating and Freeing a Hash Table. 9447 (line 6) 9448* bfd_hash_table_init_n: Creating and Freeing a Hash Table. 9449 (line 6) 9450* bfd_hash_traverse: Traversing a Hash Table. 9451 (line 6) 9452* bfd_init: Initialization. (line 11) 9453* bfd_install_relocation: typedef arelent. (line 392) 9454* bfd_is_local_label: symbol handling functions. 9455 (line 17) 9456* bfd_is_local_label_name: symbol handling functions. 9457 (line 26) 9458* bfd_is_target_special_symbol: symbol handling functions. 9459 (line 38) 9460* bfd_is_undefined_symclass: symbol handling functions. 9461 (line 120) 9462* bfd_link_split_section: Writing the symbol table. 9463 (line 44) 9464* bfd_log2: Internal. (line 164) 9465* bfd_lookup_arch: Architectures. (line 537) 9466* bfd_make_debug_symbol: symbol handling functions. 9467 (line 102) 9468* bfd_make_empty_symbol: symbol handling functions. 9469 (line 78) 9470* bfd_make_readable: Opening and Closing. 9471 (line 196) 9472* bfd_make_section: section prototypes. (line 129) 9473* bfd_make_section_anyway: section prototypes. (line 100) 9474* bfd_make_section_anyway_with_flags: section prototypes. (line 82) 9475* bfd_make_section_old_way: section prototypes. (line 62) 9476* bfd_make_section_with_flags: section prototypes. (line 116) 9477* bfd_make_writable: Opening and Closing. 9478 (line 182) 9479* bfd_malloc_and_get_section: section prototypes. (line 245) 9480* bfd_map_over_sections: section prototypes. (line 155) 9481* bfd_merge_private_bfd_data: BFD front end. (line 555) 9482* bfd_octets_per_byte: Architectures. (line 560) 9483* bfd_open_file: File Caching. (line 52) 9484* bfd_openr: Opening and Closing. 9485 (line 30) 9486* bfd_openr_iovec: Opening and Closing. 9487 (line 76) 9488* bfd_openr_next_archived_file: Archives. (line 78) 9489* bfd_openstreamr: Opening and Closing. 9490 (line 67) 9491* bfd_openw: Opening and Closing. 9492 (line 123) 9493* bfd_perform_relocation: typedef arelent. (line 367) 9494* bfd_perror: BFD front end. (line 334) 9495* bfd_preserve_finish: BFD front end. (line 729) 9496* bfd_preserve_restore: BFD front end. (line 719) 9497* bfd_preserve_save: BFD front end. (line 703) 9498* bfd_print_symbol_vandf: symbol handling functions. 9499 (line 70) 9500* bfd_printable_arch_mach: Architectures. (line 548) 9501* bfd_printable_name: Architectures. (line 408) 9502* bfd_put_size: Internal. (line 22) 9503* BFD_RELOC_12_PCREL: howto manager. (line 39) 9504* BFD_RELOC_14: howto manager. (line 31) 9505* BFD_RELOC_16: howto manager. (line 30) 9506* BFD_RELOC_16_BASEREL: howto manager. (line 80) 9507* BFD_RELOC_16_GOT_PCREL: howto manager. (line 52) 9508* BFD_RELOC_16_GOTOFF: howto manager. (line 55) 9509* BFD_RELOC_16_PCREL: howto manager. (line 38) 9510* BFD_RELOC_16_PCREL_S2: howto manager. (line 92) 9511* BFD_RELOC_16_PLT_PCREL: howto manager. (line 63) 9512* BFD_RELOC_16_PLTOFF: howto manager. (line 67) 9513* BFD_RELOC_16C_ABS20: howto manager. (line 1793) 9514* BFD_RELOC_16C_ABS20_C: howto manager. (line 1794) 9515* BFD_RELOC_16C_ABS24: howto manager. (line 1795) 9516* BFD_RELOC_16C_ABS24_C: howto manager. (line 1796) 9517* BFD_RELOC_16C_DISP04: howto manager. (line 1773) 9518* BFD_RELOC_16C_DISP04_C: howto manager. (line 1774) 9519* BFD_RELOC_16C_DISP08: howto manager. (line 1775) 9520* BFD_RELOC_16C_DISP08_C: howto manager. (line 1776) 9521* BFD_RELOC_16C_DISP16: howto manager. (line 1777) 9522* BFD_RELOC_16C_DISP16_C: howto manager. (line 1778) 9523* BFD_RELOC_16C_DISP24: howto manager. (line 1779) 9524* BFD_RELOC_16C_DISP24_C: howto manager. (line 1780) 9525* BFD_RELOC_16C_DISP24a: howto manager. (line 1781) 9526* BFD_RELOC_16C_DISP24a_C: howto manager. (line 1782) 9527* BFD_RELOC_16C_IMM04: howto manager. (line 1797) 9528* BFD_RELOC_16C_IMM04_C: howto manager. (line 1798) 9529* BFD_RELOC_16C_IMM16: howto manager. (line 1799) 9530* BFD_RELOC_16C_IMM16_C: howto manager. (line 1800) 9531* BFD_RELOC_16C_IMM20: howto manager. (line 1801) 9532* BFD_RELOC_16C_IMM20_C: howto manager. (line 1802) 9533* BFD_RELOC_16C_IMM24: howto manager. (line 1803) 9534* BFD_RELOC_16C_IMM24_C: howto manager. (line 1804) 9535* BFD_RELOC_16C_IMM32: howto manager. (line 1805) 9536* BFD_RELOC_16C_IMM32_C: howto manager. (line 1806) 9537* BFD_RELOC_16C_NUM08: howto manager. (line 1767) 9538* BFD_RELOC_16C_NUM08_C: howto manager. (line 1768) 9539* BFD_RELOC_16C_NUM16: howto manager. (line 1769) 9540* BFD_RELOC_16C_NUM16_C: howto manager. (line 1770) 9541* BFD_RELOC_16C_NUM32: howto manager. (line 1771) 9542* BFD_RELOC_16C_NUM32_C: howto manager. (line 1772) 9543* BFD_RELOC_16C_REG04: howto manager. (line 1783) 9544* BFD_RELOC_16C_REG04_C: howto manager. (line 1784) 9545* BFD_RELOC_16C_REG04a: howto manager. (line 1785) 9546* BFD_RELOC_16C_REG04a_C: howto manager. (line 1786) 9547* BFD_RELOC_16C_REG14: howto manager. (line 1787) 9548* BFD_RELOC_16C_REG14_C: howto manager. (line 1788) 9549* BFD_RELOC_16C_REG16: howto manager. (line 1789) 9550* BFD_RELOC_16C_REG16_C: howto manager. (line 1790) 9551* BFD_RELOC_16C_REG20: howto manager. (line 1791) 9552* BFD_RELOC_16C_REG20_C: howto manager. (line 1792) 9553* BFD_RELOC_23_PCREL_S2: howto manager. (line 93) 9554* BFD_RELOC_24: howto manager. (line 29) 9555* BFD_RELOC_24_PCREL: howto manager. (line 37) 9556* BFD_RELOC_24_PLT_PCREL: howto manager. (line 62) 9557* BFD_RELOC_26: howto manager. (line 28) 9558* BFD_RELOC_32: howto manager. (line 27) 9559* BFD_RELOC_32_BASEREL: howto manager. (line 79) 9560* BFD_RELOC_32_GOT_PCREL: howto manager. (line 51) 9561* BFD_RELOC_32_GOTOFF: howto manager. (line 54) 9562* BFD_RELOC_32_PCREL: howto manager. (line 36) 9563* BFD_RELOC_32_PCREL_S2: howto manager. (line 91) 9564* BFD_RELOC_32_PLT_PCREL: howto manager. (line 61) 9565* BFD_RELOC_32_PLTOFF: howto manager. (line 66) 9566* BFD_RELOC_32_SECREL: howto manager. (line 48) 9567* BFD_RELOC_386_COPY: howto manager. (line 470) 9568* BFD_RELOC_386_GLOB_DAT: howto manager. (line 471) 9569* BFD_RELOC_386_GOT32: howto manager. (line 468) 9570* BFD_RELOC_386_GOTOFF: howto manager. (line 474) 9571* BFD_RELOC_386_GOTPC: howto manager. (line 475) 9572* BFD_RELOC_386_JUMP_SLOT: howto manager. (line 472) 9573* BFD_RELOC_386_PLT32: howto manager. (line 469) 9574* BFD_RELOC_386_RELATIVE: howto manager. (line 473) 9575* BFD_RELOC_386_TLS_DESC: howto manager. (line 490) 9576* BFD_RELOC_386_TLS_DESC_CALL: howto manager. (line 489) 9577* BFD_RELOC_386_TLS_DTPMOD32: howto manager. (line 485) 9578* BFD_RELOC_386_TLS_DTPOFF32: howto manager. (line 486) 9579* BFD_RELOC_386_TLS_GD: howto manager. (line 480) 9580* BFD_RELOC_386_TLS_GOTDESC: howto manager. (line 488) 9581* BFD_RELOC_386_TLS_GOTIE: howto manager. (line 478) 9582* BFD_RELOC_386_TLS_IE: howto manager. (line 477) 9583* BFD_RELOC_386_TLS_IE_32: howto manager. (line 483) 9584* BFD_RELOC_386_TLS_LDM: howto manager. (line 481) 9585* BFD_RELOC_386_TLS_LDO_32: howto manager. (line 482) 9586* BFD_RELOC_386_TLS_LE: howto manager. (line 479) 9587* BFD_RELOC_386_TLS_LE_32: howto manager. (line 484) 9588* BFD_RELOC_386_TLS_TPOFF: howto manager. (line 476) 9589* BFD_RELOC_386_TLS_TPOFF32: howto manager. (line 487) 9590* BFD_RELOC_390_12: howto manager. (line 1459) 9591* BFD_RELOC_390_20: howto manager. (line 1559) 9592* BFD_RELOC_390_COPY: howto manager. (line 1468) 9593* BFD_RELOC_390_GLOB_DAT: howto manager. (line 1471) 9594* BFD_RELOC_390_GOT12: howto manager. (line 1462) 9595* BFD_RELOC_390_GOT16: howto manager. (line 1483) 9596* BFD_RELOC_390_GOT20: howto manager. (line 1560) 9597* BFD_RELOC_390_GOT64: howto manager. (line 1501) 9598* BFD_RELOC_390_GOTENT: howto manager. (line 1507) 9599* BFD_RELOC_390_GOTOFF64: howto manager. (line 1510) 9600* BFD_RELOC_390_GOTPC: howto manager. (line 1480) 9601* BFD_RELOC_390_GOTPCDBL: howto manager. (line 1498) 9602* BFD_RELOC_390_GOTPLT12: howto manager. (line 1513) 9603* BFD_RELOC_390_GOTPLT16: howto manager. (line 1516) 9604* BFD_RELOC_390_GOTPLT20: howto manager. (line 1561) 9605* BFD_RELOC_390_GOTPLT32: howto manager. (line 1519) 9606* BFD_RELOC_390_GOTPLT64: howto manager. (line 1522) 9607* BFD_RELOC_390_GOTPLTENT: howto manager. (line 1525) 9608* BFD_RELOC_390_JMP_SLOT: howto manager. (line 1474) 9609* BFD_RELOC_390_PC16DBL: howto manager. (line 1486) 9610* BFD_RELOC_390_PC32DBL: howto manager. (line 1492) 9611* BFD_RELOC_390_PLT16DBL: howto manager. (line 1489) 9612* BFD_RELOC_390_PLT32: howto manager. (line 1465) 9613* BFD_RELOC_390_PLT32DBL: howto manager. (line 1495) 9614* BFD_RELOC_390_PLT64: howto manager. (line 1504) 9615* BFD_RELOC_390_PLTOFF16: howto manager. (line 1528) 9616* BFD_RELOC_390_PLTOFF32: howto manager. (line 1531) 9617* BFD_RELOC_390_PLTOFF64: howto manager. (line 1534) 9618* BFD_RELOC_390_RELATIVE: howto manager. (line 1477) 9619* BFD_RELOC_390_TLS_DTPMOD: howto manager. (line 1554) 9620* BFD_RELOC_390_TLS_DTPOFF: howto manager. (line 1555) 9621* BFD_RELOC_390_TLS_GD32: howto manager. (line 1540) 9622* BFD_RELOC_390_TLS_GD64: howto manager. (line 1541) 9623* BFD_RELOC_390_TLS_GDCALL: howto manager. (line 1538) 9624* BFD_RELOC_390_TLS_GOTIE12: howto manager. (line 1542) 9625* BFD_RELOC_390_TLS_GOTIE20: howto manager. (line 1562) 9626* BFD_RELOC_390_TLS_GOTIE32: howto manager. (line 1543) 9627* BFD_RELOC_390_TLS_GOTIE64: howto manager. (line 1544) 9628* BFD_RELOC_390_TLS_IE32: howto manager. (line 1547) 9629* BFD_RELOC_390_TLS_IE64: howto manager. (line 1548) 9630* BFD_RELOC_390_TLS_IEENT: howto manager. (line 1549) 9631* BFD_RELOC_390_TLS_LDCALL: howto manager. (line 1539) 9632* BFD_RELOC_390_TLS_LDM32: howto manager. (line 1545) 9633* BFD_RELOC_390_TLS_LDM64: howto manager. (line 1546) 9634* BFD_RELOC_390_TLS_LDO32: howto manager. (line 1552) 9635* BFD_RELOC_390_TLS_LDO64: howto manager. (line 1553) 9636* BFD_RELOC_390_TLS_LE32: howto manager. (line 1550) 9637* BFD_RELOC_390_TLS_LE64: howto manager. (line 1551) 9638* BFD_RELOC_390_TLS_LOAD: howto manager. (line 1537) 9639* BFD_RELOC_390_TLS_TPOFF: howto manager. (line 1556) 9640* BFD_RELOC_64: howto manager. (line 26) 9641* BFD_RELOC_64_PCREL: howto manager. (line 35) 9642* BFD_RELOC_64_PLT_PCREL: howto manager. (line 60) 9643* BFD_RELOC_64_PLTOFF: howto manager. (line 65) 9644* BFD_RELOC_68K_GLOB_DAT: howto manager. (line 74) 9645* BFD_RELOC_68K_JMP_SLOT: howto manager. (line 75) 9646* BFD_RELOC_68K_RELATIVE: howto manager. (line 76) 9647* BFD_RELOC_8: howto manager. (line 32) 9648* BFD_RELOC_860_COPY: howto manager. (line 1904) 9649* BFD_RELOC_860_GLOB_DAT: howto manager. (line 1905) 9650* BFD_RELOC_860_HAGOT: howto manager. (line 1930) 9651* BFD_RELOC_860_HAGOTOFF: howto manager. (line 1931) 9652* BFD_RELOC_860_HAPC: howto manager. (line 1932) 9653* BFD_RELOC_860_HIGH: howto manager. (line 1933) 9654* BFD_RELOC_860_HIGHADJ: howto manager. (line 1929) 9655* BFD_RELOC_860_HIGOT: howto manager. (line 1934) 9656* BFD_RELOC_860_HIGOTOFF: howto manager. (line 1935) 9657* BFD_RELOC_860_JUMP_SLOT: howto manager. (line 1906) 9658* BFD_RELOC_860_LOGOT0: howto manager. (line 1918) 9659* BFD_RELOC_860_LOGOT1: howto manager. (line 1920) 9660* BFD_RELOC_860_LOGOTOFF0: howto manager. (line 1922) 9661* BFD_RELOC_860_LOGOTOFF1: howto manager. (line 1924) 9662* BFD_RELOC_860_LOGOTOFF2: howto manager. (line 1926) 9663* BFD_RELOC_860_LOGOTOFF3: howto manager. (line 1927) 9664* BFD_RELOC_860_LOPC: howto manager. (line 1928) 9665* BFD_RELOC_860_LOW0: howto manager. (line 1911) 9666* BFD_RELOC_860_LOW1: howto manager. (line 1913) 9667* BFD_RELOC_860_LOW2: howto manager. (line 1915) 9668* BFD_RELOC_860_LOW3: howto manager. (line 1917) 9669* BFD_RELOC_860_PC16: howto manager. (line 1910) 9670* BFD_RELOC_860_PC26: howto manager. (line 1908) 9671* BFD_RELOC_860_PLT26: howto manager. (line 1909) 9672* BFD_RELOC_860_RELATIVE: howto manager. (line 1907) 9673* BFD_RELOC_860_SPGOT0: howto manager. (line 1919) 9674* BFD_RELOC_860_SPGOT1: howto manager. (line 1921) 9675* BFD_RELOC_860_SPGOTOFF0: howto manager. (line 1923) 9676* BFD_RELOC_860_SPGOTOFF1: howto manager. (line 1925) 9677* BFD_RELOC_860_SPLIT0: howto manager. (line 1912) 9678* BFD_RELOC_860_SPLIT1: howto manager. (line 1914) 9679* BFD_RELOC_860_SPLIT2: howto manager. (line 1916) 9680* BFD_RELOC_8_BASEREL: howto manager. (line 84) 9681* BFD_RELOC_8_FFnn: howto manager. (line 88) 9682* BFD_RELOC_8_GOT_PCREL: howto manager. (line 53) 9683* BFD_RELOC_8_GOTOFF: howto manager. (line 59) 9684* BFD_RELOC_8_PCREL: howto manager. (line 40) 9685* BFD_RELOC_8_PLT_PCREL: howto manager. (line 64) 9686* BFD_RELOC_8_PLTOFF: howto manager. (line 71) 9687* BFD_RELOC_ALPHA_BRSGP: howto manager. (line 280) 9688* BFD_RELOC_ALPHA_CODEADDR: howto manager. (line 271) 9689* BFD_RELOC_ALPHA_DTPMOD64: howto manager. (line 287) 9690* BFD_RELOC_ALPHA_DTPREL16: howto manager. (line 292) 9691* BFD_RELOC_ALPHA_DTPREL64: howto manager. (line 289) 9692* BFD_RELOC_ALPHA_DTPREL_HI16: howto manager. (line 290) 9693* BFD_RELOC_ALPHA_DTPREL_LO16: howto manager. (line 291) 9694* BFD_RELOC_ALPHA_ELF_LITERAL: howto manager. (line 236) 9695* BFD_RELOC_ALPHA_GOTDTPREL16: howto manager. (line 288) 9696* BFD_RELOC_ALPHA_GOTTPREL16: howto manager. (line 293) 9697* BFD_RELOC_ALPHA_GPDISP: howto manager. (line 230) 9698* BFD_RELOC_ALPHA_GPDISP_HI16: howto manager. (line 216) 9699* BFD_RELOC_ALPHA_GPDISP_LO16: howto manager. (line 224) 9700* BFD_RELOC_ALPHA_GPREL_HI16: howto manager. (line 275) 9701* BFD_RELOC_ALPHA_GPREL_LO16: howto manager. (line 276) 9702* BFD_RELOC_ALPHA_HINT: howto manager. (line 262) 9703* BFD_RELOC_ALPHA_LINKAGE: howto manager. (line 267) 9704* BFD_RELOC_ALPHA_LITERAL: howto manager. (line 235) 9705* BFD_RELOC_ALPHA_LITUSE: howto manager. (line 237) 9706* BFD_RELOC_ALPHA_TLSGD: howto manager. (line 285) 9707* BFD_RELOC_ALPHA_TLSLDM: howto manager. (line 286) 9708* BFD_RELOC_ALPHA_TPREL16: howto manager. (line 297) 9709* BFD_RELOC_ALPHA_TPREL64: howto manager. (line 294) 9710* BFD_RELOC_ALPHA_TPREL_HI16: howto manager. (line 295) 9711* BFD_RELOC_ALPHA_TPREL_LO16: howto manager. (line 296) 9712* BFD_RELOC_ARC_B22_PCREL: howto manager. (line 895) 9713* BFD_RELOC_ARC_B26: howto manager. (line 900) 9714* BFD_RELOC_ARM_ADR_IMM: howto manager. (line 788) 9715* BFD_RELOC_ARM_ADRL_IMMEDIATE: howto manager. (line 775) 9716* BFD_RELOC_ARM_ALU_PC_G0: howto manager. (line 742) 9717* BFD_RELOC_ARM_ALU_PC_G0_NC: howto manager. (line 741) 9718* BFD_RELOC_ARM_ALU_PC_G1: howto manager. (line 744) 9719* BFD_RELOC_ARM_ALU_PC_G1_NC: howto manager. (line 743) 9720* BFD_RELOC_ARM_ALU_PC_G2: howto manager. (line 745) 9721* BFD_RELOC_ARM_ALU_SB_G0: howto manager. (line 756) 9722* BFD_RELOC_ARM_ALU_SB_G0_NC: howto manager. (line 755) 9723* BFD_RELOC_ARM_ALU_SB_G1: howto manager. (line 758) 9724* BFD_RELOC_ARM_ALU_SB_G1_NC: howto manager. (line 757) 9725* BFD_RELOC_ARM_ALU_SB_G2: howto manager. (line 759) 9726* BFD_RELOC_ARM_CP_OFF_IMM: howto manager. (line 784) 9727* BFD_RELOC_ARM_CP_OFF_IMM_S2: howto manager. (line 785) 9728* BFD_RELOC_ARM_GLOB_DAT: howto manager. (line 723) 9729* BFD_RELOC_ARM_GOT32: howto manager. (line 724) 9730* BFD_RELOC_ARM_GOTOFF: howto manager. (line 727) 9731* BFD_RELOC_ARM_GOTPC: howto manager. (line 728) 9732* BFD_RELOC_ARM_HWLITERAL: howto manager. (line 795) 9733* BFD_RELOC_ARM_IMMEDIATE: howto manager. (line 774) 9734* BFD_RELOC_ARM_IN_POOL: howto manager. (line 791) 9735* BFD_RELOC_ARM_JUMP_SLOT: howto manager. (line 722) 9736* BFD_RELOC_ARM_LDC_PC_G0: howto manager. (line 752) 9737* BFD_RELOC_ARM_LDC_PC_G1: howto manager. (line 753) 9738* BFD_RELOC_ARM_LDC_PC_G2: howto manager. (line 754) 9739* BFD_RELOC_ARM_LDC_SB_G0: howto manager. (line 766) 9740* BFD_RELOC_ARM_LDC_SB_G1: howto manager. (line 767) 9741* BFD_RELOC_ARM_LDC_SB_G2: howto manager. (line 768) 9742* BFD_RELOC_ARM_LDR_IMM: howto manager. (line 789) 9743* BFD_RELOC_ARM_LDR_PC_G0: howto manager. (line 746) 9744* BFD_RELOC_ARM_LDR_PC_G1: howto manager. (line 747) 9745* BFD_RELOC_ARM_LDR_PC_G2: howto manager. (line 748) 9746* BFD_RELOC_ARM_LDR_SB_G0: howto manager. (line 760) 9747* BFD_RELOC_ARM_LDR_SB_G1: howto manager. (line 761) 9748* BFD_RELOC_ARM_LDR_SB_G2: howto manager. (line 762) 9749* BFD_RELOC_ARM_LDRS_PC_G0: howto manager. (line 749) 9750* BFD_RELOC_ARM_LDRS_PC_G1: howto manager. (line 750) 9751* BFD_RELOC_ARM_LDRS_PC_G2: howto manager. (line 751) 9752* BFD_RELOC_ARM_LDRS_SB_G0: howto manager. (line 763) 9753* BFD_RELOC_ARM_LDRS_SB_G1: howto manager. (line 764) 9754* BFD_RELOC_ARM_LDRS_SB_G2: howto manager. (line 765) 9755* BFD_RELOC_ARM_LITERAL: howto manager. (line 790) 9756* BFD_RELOC_ARM_MOVT: howto manager. (line 713) 9757* BFD_RELOC_ARM_MOVT_PCREL: howto manager. (line 715) 9758* BFD_RELOC_ARM_MOVW: howto manager. (line 712) 9759* BFD_RELOC_ARM_MOVW_PCREL: howto manager. (line 714) 9760* BFD_RELOC_ARM_MULTI: howto manager. (line 783) 9761* BFD_RELOC_ARM_OFFSET_IMM: howto manager. (line 686) 9762* BFD_RELOC_ARM_OFFSET_IMM8: howto manager. (line 792) 9763* BFD_RELOC_ARM_PCREL_BLX: howto manager. (line 657) 9764* BFD_RELOC_ARM_PCREL_BRANCH: howto manager. (line 653) 9765* BFD_RELOC_ARM_PCREL_CALL: howto manager. (line 667) 9766* BFD_RELOC_ARM_PCREL_JUMP: howto manager. (line 671) 9767* BFD_RELOC_ARM_PLT32: howto manager. (line 725) 9768* BFD_RELOC_ARM_PREL31: howto manager. (line 709) 9769* BFD_RELOC_ARM_RELATIVE: howto manager. (line 726) 9770* BFD_RELOC_ARM_ROSEGREL32: howto manager. (line 698) 9771* BFD_RELOC_ARM_SBREL32: howto manager. (line 701) 9772* BFD_RELOC_ARM_SHIFT_IMM: howto manager. (line 780) 9773* BFD_RELOC_ARM_SMC: howto manager. (line 781) 9774* BFD_RELOC_ARM_SWI: howto manager. (line 782) 9775* BFD_RELOC_ARM_T32_ADD_IMM: howto manager. (line 777) 9776* BFD_RELOC_ARM_T32_ADD_PC12: howto manager. (line 779) 9777* BFD_RELOC_ARM_T32_CP_OFF_IMM: howto manager. (line 786) 9778* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2: howto manager. (line 787) 9779* BFD_RELOC_ARM_T32_IMM12: howto manager. (line 778) 9780* BFD_RELOC_ARM_T32_IMMEDIATE: howto manager. (line 776) 9781* BFD_RELOC_ARM_T32_OFFSET_IMM: howto manager. (line 794) 9782* BFD_RELOC_ARM_T32_OFFSET_U8: howto manager. (line 793) 9783* BFD_RELOC_ARM_TARGET1: howto manager. (line 694) 9784* BFD_RELOC_ARM_TARGET2: howto manager. (line 704) 9785* BFD_RELOC_ARM_THUMB_ADD: howto manager. (line 796) 9786* BFD_RELOC_ARM_THUMB_IMM: howto manager. (line 797) 9787* BFD_RELOC_ARM_THUMB_MOVT: howto manager. (line 717) 9788* BFD_RELOC_ARM_THUMB_MOVT_PCREL: howto manager. (line 719) 9789* BFD_RELOC_ARM_THUMB_MOVW: howto manager. (line 716) 9790* BFD_RELOC_ARM_THUMB_MOVW_PCREL: howto manager. (line 718) 9791* BFD_RELOC_ARM_THUMB_OFFSET: howto manager. (line 690) 9792* BFD_RELOC_ARM_THUMB_SHIFT: howto manager. (line 798) 9793* BFD_RELOC_ARM_TLS_DTPMOD32: howto manager. (line 735) 9794* BFD_RELOC_ARM_TLS_DTPOFF32: howto manager. (line 734) 9795* BFD_RELOC_ARM_TLS_GD32: howto manager. (line 731) 9796* BFD_RELOC_ARM_TLS_IE32: howto manager. (line 737) 9797* BFD_RELOC_ARM_TLS_LDM32: howto manager. (line 733) 9798* BFD_RELOC_ARM_TLS_LDO32: howto manager. (line 732) 9799* BFD_RELOC_ARM_TLS_LE32: howto manager. (line 738) 9800* BFD_RELOC_ARM_TLS_TPOFF32: howto manager. (line 736) 9801* BFD_RELOC_ARM_V4BX: howto manager. (line 771) 9802* BFD_RELOC_AVR_13_PCREL: howto manager. (line 1360) 9803* BFD_RELOC_AVR_16_PM: howto manager. (line 1364) 9804* BFD_RELOC_AVR_6: howto manager. (line 1451) 9805* BFD_RELOC_AVR_6_ADIW: howto manager. (line 1455) 9806* BFD_RELOC_AVR_7_PCREL: howto manager. (line 1356) 9807* BFD_RELOC_AVR_CALL: howto manager. (line 1443) 9808* BFD_RELOC_AVR_HH8_LDI: howto manager. (line 1376) 9809* BFD_RELOC_AVR_HH8_LDI_NEG: howto manager. (line 1395) 9810* BFD_RELOC_AVR_HH8_LDI_PM: howto manager. (line 1424) 9811* BFD_RELOC_AVR_HH8_LDI_PM_NEG: howto manager. (line 1438) 9812* BFD_RELOC_AVR_HI8_LDI: howto manager. (line 1372) 9813* BFD_RELOC_AVR_HI8_LDI_GS: howto manager. (line 1418) 9814* BFD_RELOC_AVR_HI8_LDI_NEG: howto manager. (line 1390) 9815* BFD_RELOC_AVR_HI8_LDI_PM: howto manager. (line 1414) 9816* BFD_RELOC_AVR_HI8_LDI_PM_NEG: howto manager. (line 1433) 9817* BFD_RELOC_AVR_LDI: howto manager. (line 1447) 9818* BFD_RELOC_AVR_LO8_LDI: howto manager. (line 1368) 9819* BFD_RELOC_AVR_LO8_LDI_GS: howto manager. (line 1408) 9820* BFD_RELOC_AVR_LO8_LDI_NEG: howto manager. (line 1385) 9821* BFD_RELOC_AVR_LO8_LDI_PM: howto manager. (line 1404) 9822* BFD_RELOC_AVR_LO8_LDI_PM_NEG: howto manager. (line 1429) 9823* BFD_RELOC_AVR_MS8_LDI: howto manager. (line 1381) 9824* BFD_RELOC_AVR_MS8_LDI_NEG: howto manager. (line 1400) 9825* BFD_RELOC_BFIN_10_PCREL: howto manager. (line 920) 9826* BFD_RELOC_BFIN_11_PCREL: howto manager. (line 923) 9827* BFD_RELOC_BFIN_12_PCREL_JUMP: howto manager. (line 926) 9828* BFD_RELOC_BFIN_12_PCREL_JUMP_S: howto manager. (line 929) 9829* BFD_RELOC_BFIN_16_HIGH: howto manager. (line 908) 9830* BFD_RELOC_BFIN_16_IMM: howto manager. (line 905) 9831* BFD_RELOC_BFIN_16_LOW: howto manager. (line 917) 9832* BFD_RELOC_BFIN_24_PCREL_CALL_X: howto manager. (line 932) 9833* BFD_RELOC_BFIN_24_PCREL_JUMP_L: howto manager. (line 935) 9834* BFD_RELOC_BFIN_4_PCREL: howto manager. (line 911) 9835* BFD_RELOC_BFIN_5_PCREL: howto manager. (line 914) 9836* BFD_RELOC_BFIN_FUNCDESC: howto manager. (line 941) 9837* BFD_RELOC_BFIN_FUNCDESC_GOT17M4: howto manager. (line 942) 9838* BFD_RELOC_BFIN_FUNCDESC_GOTHI: howto manager. (line 943) 9839* BFD_RELOC_BFIN_FUNCDESC_GOTLO: howto manager. (line 944) 9840* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4: howto manager. (line 946) 9841* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI: howto manager. (line 947) 9842* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO: howto manager. (line 948) 9843* BFD_RELOC_BFIN_FUNCDESC_VALUE: howto manager. (line 945) 9844* BFD_RELOC_BFIN_GOT: howto manager. (line 954) 9845* BFD_RELOC_BFIN_GOT17M4: howto manager. (line 938) 9846* BFD_RELOC_BFIN_GOTHI: howto manager. (line 939) 9847* BFD_RELOC_BFIN_GOTLO: howto manager. (line 940) 9848* BFD_RELOC_BFIN_GOTOFF17M4: howto manager. (line 949) 9849* BFD_RELOC_BFIN_GOTOFFHI: howto manager. (line 950) 9850* BFD_RELOC_BFIN_GOTOFFLO: howto manager. (line 951) 9851* BFD_RELOC_BFIN_PLTPC: howto manager. (line 957) 9852* bfd_reloc_code_type: howto manager. (line 10) 9853* BFD_RELOC_CR16_ABS20: howto manager. (line 1821) 9854* BFD_RELOC_CR16_ABS24: howto manager. (line 1822) 9855* BFD_RELOC_CR16_DISP16: howto manager. (line 1832) 9856* BFD_RELOC_CR16_DISP20: howto manager. (line 1833) 9857* BFD_RELOC_CR16_DISP24: howto manager. (line 1834) 9858* BFD_RELOC_CR16_DISP24a: howto manager. (line 1835) 9859* BFD_RELOC_CR16_DISP4: howto manager. (line 1830) 9860* BFD_RELOC_CR16_DISP8: howto manager. (line 1831) 9861* BFD_RELOC_CR16_IMM16: howto manager. (line 1825) 9862* BFD_RELOC_CR16_IMM20: howto manager. (line 1826) 9863* BFD_RELOC_CR16_IMM24: howto manager. (line 1827) 9864* BFD_RELOC_CR16_IMM32: howto manager. (line 1828) 9865* BFD_RELOC_CR16_IMM32a: howto manager. (line 1829) 9866* BFD_RELOC_CR16_IMM4: howto manager. (line 1823) 9867* BFD_RELOC_CR16_IMM8: howto manager. (line 1824) 9868* BFD_RELOC_CR16_NUM16: howto manager. (line 1810) 9869* BFD_RELOC_CR16_NUM32: howto manager. (line 1811) 9870* BFD_RELOC_CR16_NUM32a: howto manager. (line 1812) 9871* BFD_RELOC_CR16_NUM8: howto manager. (line 1809) 9872* BFD_RELOC_CR16_REGREL0: howto manager. (line 1813) 9873* BFD_RELOC_CR16_REGREL14: howto manager. (line 1816) 9874* BFD_RELOC_CR16_REGREL14a: howto manager. (line 1817) 9875* BFD_RELOC_CR16_REGREL16: howto manager. (line 1818) 9876* BFD_RELOC_CR16_REGREL20: howto manager. (line 1819) 9877* BFD_RELOC_CR16_REGREL20a: howto manager. (line 1820) 9878* BFD_RELOC_CR16_REGREL4: howto manager. (line 1814) 9879* BFD_RELOC_CR16_REGREL4a: howto manager. (line 1815) 9880* BFD_RELOC_CR16_SWITCH16: howto manager. (line 1837) 9881* BFD_RELOC_CR16_SWITCH32: howto manager. (line 1838) 9882* BFD_RELOC_CR16_SWITCH8: howto manager. (line 1836) 9883* BFD_RELOC_CRIS_16_GOT: howto manager. (line 1885) 9884* BFD_RELOC_CRIS_16_GOTPLT: howto manager. (line 1891) 9885* BFD_RELOC_CRIS_32_GOT: howto manager. (line 1882) 9886* BFD_RELOC_CRIS_32_GOTPLT: howto manager. (line 1888) 9887* BFD_RELOC_CRIS_32_GOTREL: howto manager. (line 1894) 9888* BFD_RELOC_CRIS_32_PLT_GOTREL: howto manager. (line 1897) 9889* BFD_RELOC_CRIS_32_PLT_PCREL: howto manager. (line 1900) 9890* BFD_RELOC_CRIS_BDISP8: howto manager. (line 1863) 9891* BFD_RELOC_CRIS_COPY: howto manager. (line 1876) 9892* BFD_RELOC_CRIS_GLOB_DAT: howto manager. (line 1877) 9893* BFD_RELOC_CRIS_JUMP_SLOT: howto manager. (line 1878) 9894* BFD_RELOC_CRIS_LAPCQ_OFFSET: howto manager. (line 1871) 9895* BFD_RELOC_CRIS_RELATIVE: howto manager. (line 1879) 9896* BFD_RELOC_CRIS_SIGNED_16: howto manager. (line 1869) 9897* BFD_RELOC_CRIS_SIGNED_6: howto manager. (line 1865) 9898* BFD_RELOC_CRIS_SIGNED_8: howto manager. (line 1867) 9899* BFD_RELOC_CRIS_UNSIGNED_16: howto manager. (line 1870) 9900* BFD_RELOC_CRIS_UNSIGNED_4: howto manager. (line 1872) 9901* BFD_RELOC_CRIS_UNSIGNED_5: howto manager. (line 1864) 9902* BFD_RELOC_CRIS_UNSIGNED_6: howto manager. (line 1866) 9903* BFD_RELOC_CRIS_UNSIGNED_8: howto manager. (line 1868) 9904* BFD_RELOC_CRX_ABS16: howto manager. (line 1851) 9905* BFD_RELOC_CRX_ABS32: howto manager. (line 1852) 9906* BFD_RELOC_CRX_IMM16: howto manager. (line 1856) 9907* BFD_RELOC_CRX_IMM32: howto manager. (line 1857) 9908* BFD_RELOC_CRX_NUM16: howto manager. (line 1854) 9909* BFD_RELOC_CRX_NUM32: howto manager. (line 1855) 9910* BFD_RELOC_CRX_NUM8: howto manager. (line 1853) 9911* BFD_RELOC_CRX_REGREL12: howto manager. (line 1847) 9912* BFD_RELOC_CRX_REGREL22: howto manager. (line 1848) 9913* BFD_RELOC_CRX_REGREL28: howto manager. (line 1849) 9914* BFD_RELOC_CRX_REGREL32: howto manager. (line 1850) 9915* BFD_RELOC_CRX_REL16: howto manager. (line 1844) 9916* BFD_RELOC_CRX_REL24: howto manager. (line 1845) 9917* BFD_RELOC_CRX_REL32: howto manager. (line 1846) 9918* BFD_RELOC_CRX_REL4: howto manager. (line 1841) 9919* BFD_RELOC_CRX_REL8: howto manager. (line 1842) 9920* BFD_RELOC_CRX_REL8_CMP: howto manager. (line 1843) 9921* BFD_RELOC_CRX_SWITCH16: howto manager. (line 1859) 9922* BFD_RELOC_CRX_SWITCH32: howto manager. (line 1860) 9923* BFD_RELOC_CRX_SWITCH8: howto manager. (line 1858) 9924* BFD_RELOC_CTOR: howto manager. (line 647) 9925* BFD_RELOC_D10V_10_PCREL_L: howto manager. (line 1024) 9926* BFD_RELOC_D10V_10_PCREL_R: howto manager. (line 1020) 9927* BFD_RELOC_D10V_18: howto manager. (line 1029) 9928* BFD_RELOC_D10V_18_PCREL: howto manager. (line 1032) 9929* BFD_RELOC_D30V_15: howto manager. (line 1047) 9930* BFD_RELOC_D30V_15_PCREL: howto manager. (line 1051) 9931* BFD_RELOC_D30V_15_PCREL_R: howto manager. (line 1055) 9932* BFD_RELOC_D30V_21: howto manager. (line 1060) 9933* BFD_RELOC_D30V_21_PCREL: howto manager. (line 1064) 9934* BFD_RELOC_D30V_21_PCREL_R: howto manager. (line 1068) 9935* BFD_RELOC_D30V_32: howto manager. (line 1073) 9936* BFD_RELOC_D30V_32_PCREL: howto manager. (line 1076) 9937* BFD_RELOC_D30V_6: howto manager. (line 1035) 9938* BFD_RELOC_D30V_9_PCREL: howto manager. (line 1038) 9939* BFD_RELOC_D30V_9_PCREL_R: howto manager. (line 1042) 9940* BFD_RELOC_DLX_HI16_S: howto manager. (line 1079) 9941* BFD_RELOC_DLX_JMP26: howto manager. (line 1085) 9942* BFD_RELOC_DLX_LO16: howto manager. (line 1082) 9943* BFD_RELOC_FR30_10_IN_8: howto manager. (line 1264) 9944* BFD_RELOC_FR30_12_PCREL: howto manager. (line 1272) 9945* BFD_RELOC_FR30_20: howto manager. (line 1248) 9946* BFD_RELOC_FR30_48: howto manager. (line 1245) 9947* BFD_RELOC_FR30_6_IN_4: howto manager. (line 1252) 9948* BFD_RELOC_FR30_8_IN_8: howto manager. (line 1256) 9949* BFD_RELOC_FR30_9_IN_8: howto manager. (line 1260) 9950* BFD_RELOC_FR30_9_PCREL: howto manager. (line 1268) 9951* BFD_RELOC_FRV_FUNCDESC: howto manager. (line 403) 9952* BFD_RELOC_FRV_FUNCDESC_GOT12: howto manager. (line 404) 9953* BFD_RELOC_FRV_FUNCDESC_GOTHI: howto manager. (line 405) 9954* BFD_RELOC_FRV_FUNCDESC_GOTLO: howto manager. (line 406) 9955* BFD_RELOC_FRV_FUNCDESC_GOTOFF12: howto manager. (line 408) 9956* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: howto manager. (line 409) 9957* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: howto manager. (line 410) 9958* BFD_RELOC_FRV_FUNCDESC_VALUE: howto manager. (line 407) 9959* BFD_RELOC_FRV_GETTLSOFF: howto manager. (line 414) 9960* BFD_RELOC_FRV_GETTLSOFF_RELAX: howto manager. (line 427) 9961* BFD_RELOC_FRV_GOT12: howto manager. (line 400) 9962* BFD_RELOC_FRV_GOTHI: howto manager. (line 401) 9963* BFD_RELOC_FRV_GOTLO: howto manager. (line 402) 9964* BFD_RELOC_FRV_GOTOFF12: howto manager. (line 411) 9965* BFD_RELOC_FRV_GOTOFFHI: howto manager. (line 412) 9966* BFD_RELOC_FRV_GOTOFFLO: howto manager. (line 413) 9967* BFD_RELOC_FRV_GOTTLSDESC12: howto manager. (line 416) 9968* BFD_RELOC_FRV_GOTTLSDESCHI: howto manager. (line 417) 9969* BFD_RELOC_FRV_GOTTLSDESCLO: howto manager. (line 418) 9970* BFD_RELOC_FRV_GOTTLSOFF12: howto manager. (line 422) 9971* BFD_RELOC_FRV_GOTTLSOFFHI: howto manager. (line 423) 9972* BFD_RELOC_FRV_GOTTLSOFFLO: howto manager. (line 424) 9973* BFD_RELOC_FRV_GPREL12: howto manager. (line 395) 9974* BFD_RELOC_FRV_GPREL32: howto manager. (line 397) 9975* BFD_RELOC_FRV_GPRELHI: howto manager. (line 398) 9976* BFD_RELOC_FRV_GPRELLO: howto manager. (line 399) 9977* BFD_RELOC_FRV_GPRELU12: howto manager. (line 396) 9978* BFD_RELOC_FRV_HI16: howto manager. (line 394) 9979* BFD_RELOC_FRV_LABEL16: howto manager. (line 391) 9980* BFD_RELOC_FRV_LABEL24: howto manager. (line 392) 9981* BFD_RELOC_FRV_LO16: howto manager. (line 393) 9982* BFD_RELOC_FRV_TLSDESC_RELAX: howto manager. (line 426) 9983* BFD_RELOC_FRV_TLSDESC_VALUE: howto manager. (line 415) 9984* BFD_RELOC_FRV_TLSMOFF: howto manager. (line 429) 9985* BFD_RELOC_FRV_TLSMOFF12: howto manager. (line 419) 9986* BFD_RELOC_FRV_TLSMOFFHI: howto manager. (line 420) 9987* BFD_RELOC_FRV_TLSMOFFLO: howto manager. (line 421) 9988* BFD_RELOC_FRV_TLSOFF: howto manager. (line 425) 9989* BFD_RELOC_FRV_TLSOFF_RELAX: howto manager. (line 428) 9990* BFD_RELOC_GPREL16: howto manager. (line 106) 9991* BFD_RELOC_GPREL32: howto manager. (line 107) 9992* BFD_RELOC_H8_DIR16A8: howto manager. (line 1942) 9993* BFD_RELOC_H8_DIR16R8: howto manager. (line 1943) 9994* BFD_RELOC_H8_DIR24A8: howto manager. (line 1944) 9995* BFD_RELOC_H8_DIR24R8: howto manager. (line 1945) 9996* BFD_RELOC_H8_DIR32A16: howto manager. (line 1946) 9997* BFD_RELOC_HI16: howto manager. (line 310) 9998* BFD_RELOC_HI16_BASEREL: howto manager. (line 82) 9999* BFD_RELOC_HI16_GOTOFF: howto manager. (line 57) 10000* BFD_RELOC_HI16_PCREL: howto manager. (line 322) 10001* BFD_RELOC_HI16_PLTOFF: howto manager. (line 69) 10002* BFD_RELOC_HI16_S: howto manager. (line 313) 10003* BFD_RELOC_HI16_S_BASEREL: howto manager. (line 83) 10004* BFD_RELOC_HI16_S_GOTOFF: howto manager. (line 58) 10005* BFD_RELOC_HI16_S_PCREL: howto manager. (line 325) 10006* BFD_RELOC_HI16_S_PLTOFF: howto manager. (line 70) 10007* BFD_RELOC_HI22: howto manager. (line 101) 10008* BFD_RELOC_I370_D12: howto manager. (line 644) 10009* BFD_RELOC_I960_CALLJ: howto manager. (line 113) 10010* BFD_RELOC_IA64_COPY: howto manager. (line 1703) 10011* BFD_RELOC_IA64_DIR32LSB: howto manager. (line 1648) 10012* BFD_RELOC_IA64_DIR32MSB: howto manager. (line 1647) 10013* BFD_RELOC_IA64_DIR64LSB: howto manager. (line 1650) 10014* BFD_RELOC_IA64_DIR64MSB: howto manager. (line 1649) 10015* BFD_RELOC_IA64_DTPMOD64LSB: howto manager. (line 1713) 10016* BFD_RELOC_IA64_DTPMOD64MSB: howto manager. (line 1712) 10017* BFD_RELOC_IA64_DTPREL14: howto manager. (line 1715) 10018* BFD_RELOC_IA64_DTPREL22: howto manager. (line 1716) 10019* BFD_RELOC_IA64_DTPREL32LSB: howto manager. (line 1719) 10020* BFD_RELOC_IA64_DTPREL32MSB: howto manager. (line 1718) 10021* BFD_RELOC_IA64_DTPREL64I: howto manager. (line 1717) 10022* BFD_RELOC_IA64_DTPREL64LSB: howto manager. (line 1721) 10023* BFD_RELOC_IA64_DTPREL64MSB: howto manager. (line 1720) 10024* BFD_RELOC_IA64_FPTR32LSB: howto manager. (line 1665) 10025* BFD_RELOC_IA64_FPTR32MSB: howto manager. (line 1664) 10026* BFD_RELOC_IA64_FPTR64I: howto manager. (line 1663) 10027* BFD_RELOC_IA64_FPTR64LSB: howto manager. (line 1667) 10028* BFD_RELOC_IA64_FPTR64MSB: howto manager. (line 1666) 10029* BFD_RELOC_IA64_GPREL22: howto manager. (line 1651) 10030* BFD_RELOC_IA64_GPREL32LSB: howto manager. (line 1654) 10031* BFD_RELOC_IA64_GPREL32MSB: howto manager. (line 1653) 10032* BFD_RELOC_IA64_GPREL64I: howto manager. (line 1652) 10033* BFD_RELOC_IA64_GPREL64LSB: howto manager. (line 1656) 10034* BFD_RELOC_IA64_GPREL64MSB: howto manager. (line 1655) 10035* BFD_RELOC_IA64_IMM14: howto manager. (line 1644) 10036* BFD_RELOC_IA64_IMM22: howto manager. (line 1645) 10037* BFD_RELOC_IA64_IMM64: howto manager. (line 1646) 10038* BFD_RELOC_IA64_IPLTLSB: howto manager. (line 1702) 10039* BFD_RELOC_IA64_IPLTMSB: howto manager. (line 1701) 10040* BFD_RELOC_IA64_LDXMOV: howto manager. (line 1705) 10041* BFD_RELOC_IA64_LTOFF22: howto manager. (line 1657) 10042* BFD_RELOC_IA64_LTOFF22X: howto manager. (line 1704) 10043* BFD_RELOC_IA64_LTOFF64I: howto manager. (line 1658) 10044* BFD_RELOC_IA64_LTOFF_DTPMOD22: howto manager. (line 1714) 10045* BFD_RELOC_IA64_LTOFF_DTPREL22: howto manager. (line 1722) 10046* BFD_RELOC_IA64_LTOFF_FPTR22: howto manager. (line 1679) 10047* BFD_RELOC_IA64_LTOFF_FPTR32LSB: howto manager. (line 1682) 10048* BFD_RELOC_IA64_LTOFF_FPTR32MSB: howto manager. (line 1681) 10049* BFD_RELOC_IA64_LTOFF_FPTR64I: howto manager. (line 1680) 10050* BFD_RELOC_IA64_LTOFF_FPTR64LSB: howto manager. (line 1684) 10051* BFD_RELOC_IA64_LTOFF_FPTR64MSB: howto manager. (line 1683) 10052* BFD_RELOC_IA64_LTOFF_TPREL22: howto manager. (line 1711) 10053* BFD_RELOC_IA64_LTV32LSB: howto manager. (line 1698) 10054* BFD_RELOC_IA64_LTV32MSB: howto manager. (line 1697) 10055* BFD_RELOC_IA64_LTV64LSB: howto manager. (line 1700) 10056* BFD_RELOC_IA64_LTV64MSB: howto manager. (line 1699) 10057* BFD_RELOC_IA64_PCREL21B: howto manager. (line 1668) 10058* BFD_RELOC_IA64_PCREL21BI: howto manager. (line 1669) 10059* BFD_RELOC_IA64_PCREL21F: howto manager. (line 1671) 10060* BFD_RELOC_IA64_PCREL21M: howto manager. (line 1670) 10061* BFD_RELOC_IA64_PCREL22: howto manager. (line 1672) 10062* BFD_RELOC_IA64_PCREL32LSB: howto manager. (line 1676) 10063* BFD_RELOC_IA64_PCREL32MSB: howto manager. (line 1675) 10064* BFD_RELOC_IA64_PCREL60B: howto manager. (line 1673) 10065* BFD_RELOC_IA64_PCREL64I: howto manager. (line 1674) 10066* BFD_RELOC_IA64_PCREL64LSB: howto manager. (line 1678) 10067* BFD_RELOC_IA64_PCREL64MSB: howto manager. (line 1677) 10068* BFD_RELOC_IA64_PLTOFF22: howto manager. (line 1659) 10069* BFD_RELOC_IA64_PLTOFF64I: howto manager. (line 1660) 10070* BFD_RELOC_IA64_PLTOFF64LSB: howto manager. (line 1662) 10071* BFD_RELOC_IA64_PLTOFF64MSB: howto manager. (line 1661) 10072* BFD_RELOC_IA64_REL32LSB: howto manager. (line 1694) 10073* BFD_RELOC_IA64_REL32MSB: howto manager. (line 1693) 10074* BFD_RELOC_IA64_REL64LSB: howto manager. (line 1696) 10075* BFD_RELOC_IA64_REL64MSB: howto manager. (line 1695) 10076* BFD_RELOC_IA64_SECREL32LSB: howto manager. (line 1690) 10077* BFD_RELOC_IA64_SECREL32MSB: howto manager. (line 1689) 10078* BFD_RELOC_IA64_SECREL64LSB: howto manager. (line 1692) 10079* BFD_RELOC_IA64_SECREL64MSB: howto manager. (line 1691) 10080* BFD_RELOC_IA64_SEGREL32LSB: howto manager. (line 1686) 10081* BFD_RELOC_IA64_SEGREL32MSB: howto manager. (line 1685) 10082* BFD_RELOC_IA64_SEGREL64LSB: howto manager. (line 1688) 10083* BFD_RELOC_IA64_SEGREL64MSB: howto manager. (line 1687) 10084* BFD_RELOC_IA64_TPREL14: howto manager. (line 1706) 10085* BFD_RELOC_IA64_TPREL22: howto manager. (line 1707) 10086* BFD_RELOC_IA64_TPREL64I: howto manager. (line 1708) 10087* BFD_RELOC_IA64_TPREL64LSB: howto manager. (line 1710) 10088* BFD_RELOC_IA64_TPREL64MSB: howto manager. (line 1709) 10089* BFD_RELOC_IP2K_ADDR16CJP: howto manager. (line 1596) 10090* BFD_RELOC_IP2K_BANK: howto manager. (line 1593) 10091* BFD_RELOC_IP2K_EX8DATA: howto manager. (line 1604) 10092* BFD_RELOC_IP2K_FR9: howto manager. (line 1590) 10093* BFD_RELOC_IP2K_FR_OFFSET: howto manager. (line 1617) 10094* BFD_RELOC_IP2K_HI8DATA: howto manager. (line 1603) 10095* BFD_RELOC_IP2K_HI8INSN: howto manager. (line 1608) 10096* BFD_RELOC_IP2K_LO8DATA: howto manager. (line 1602) 10097* BFD_RELOC_IP2K_LO8INSN: howto manager. (line 1607) 10098* BFD_RELOC_IP2K_PAGE3: howto manager. (line 1599) 10099* BFD_RELOC_IP2K_PC_SKIP: howto manager. (line 1611) 10100* BFD_RELOC_IP2K_TEXT: howto manager. (line 1614) 10101* BFD_RELOC_IQ2000_OFFSET_16: howto manager. (line 1996) 10102* BFD_RELOC_IQ2000_OFFSET_21: howto manager. (line 1997) 10103* BFD_RELOC_IQ2000_UHI16: howto manager. (line 1998) 10104* BFD_RELOC_LO10: howto manager. (line 102) 10105* BFD_RELOC_LO16: howto manager. (line 319) 10106* BFD_RELOC_LO16_BASEREL: howto manager. (line 81) 10107* BFD_RELOC_LO16_GOTOFF: howto manager. (line 56) 10108* BFD_RELOC_LO16_PCREL: howto manager. (line 328) 10109* BFD_RELOC_LO16_PLTOFF: howto manager. (line 68) 10110* BFD_RELOC_M32C_HI8: howto manager. (line 1088) 10111* BFD_RELOC_M32C_RL_1ADDR: howto manager. (line 1090) 10112* BFD_RELOC_M32C_RL_2ADDR: howto manager. (line 1091) 10113* BFD_RELOC_M32C_RL_JUMP: howto manager. (line 1089) 10114* BFD_RELOC_M32R_10_PCREL: howto manager. (line 1098) 10115* BFD_RELOC_M32R_18_PCREL: howto manager. (line 1102) 10116* BFD_RELOC_M32R_24: howto manager. (line 1094) 10117* BFD_RELOC_M32R_26_PCREL: howto manager. (line 1105) 10118* BFD_RELOC_M32R_26_PLTREL: howto manager. (line 1124) 10119* BFD_RELOC_M32R_COPY: howto manager. (line 1125) 10120* BFD_RELOC_M32R_GLOB_DAT: howto manager. (line 1126) 10121* BFD_RELOC_M32R_GOT16_HI_SLO: howto manager. (line 1135) 10122* BFD_RELOC_M32R_GOT16_HI_ULO: howto manager. (line 1134) 10123* BFD_RELOC_M32R_GOT16_LO: howto manager. (line 1136) 10124* BFD_RELOC_M32R_GOT24: howto manager. (line 1123) 10125* BFD_RELOC_M32R_GOTOFF: howto manager. (line 1129) 10126* BFD_RELOC_M32R_GOTOFF_HI_SLO: howto manager. (line 1131) 10127* BFD_RELOC_M32R_GOTOFF_HI_ULO: howto manager. (line 1130) 10128* BFD_RELOC_M32R_GOTOFF_LO: howto manager. (line 1132) 10129* BFD_RELOC_M32R_GOTPC24: howto manager. (line 1133) 10130* BFD_RELOC_M32R_GOTPC_HI_SLO: howto manager. (line 1138) 10131* BFD_RELOC_M32R_GOTPC_HI_ULO: howto manager. (line 1137) 10132* BFD_RELOC_M32R_GOTPC_LO: howto manager. (line 1139) 10133* BFD_RELOC_M32R_HI16_SLO: howto manager. (line 1112) 10134* BFD_RELOC_M32R_HI16_ULO: howto manager. (line 1108) 10135* BFD_RELOC_M32R_JMP_SLOT: howto manager. (line 1127) 10136* BFD_RELOC_M32R_LO16: howto manager. (line 1116) 10137* BFD_RELOC_M32R_RELATIVE: howto manager. (line 1128) 10138* BFD_RELOC_M32R_SDA16: howto manager. (line 1119) 10139* BFD_RELOC_M68HC11_24: howto manager. (line 1758) 10140* BFD_RELOC_M68HC11_3B: howto manager. (line 1733) 10141* BFD_RELOC_M68HC11_HI8: howto manager. (line 1725) 10142* BFD_RELOC_M68HC11_LO16: howto manager. (line 1747) 10143* BFD_RELOC_M68HC11_LO8: howto manager. (line 1729) 10144* BFD_RELOC_M68HC11_PAGE: howto manager. (line 1753) 10145* BFD_RELOC_M68HC11_RL_GROUP: howto manager. (line 1742) 10146* BFD_RELOC_M68HC11_RL_JUMP: howto manager. (line 1736) 10147* BFD_RELOC_M68HC12_5B: howto manager. (line 1764) 10148* BFD_RELOC_MCORE_PCREL_32: howto manager. (line 1279) 10149* BFD_RELOC_MCORE_PCREL_IMM11BY2: howto manager. (line 1277) 10150* BFD_RELOC_MCORE_PCREL_IMM4BY2: howto manager. (line 1278) 10151* BFD_RELOC_MCORE_PCREL_IMM8BY4: howto manager. (line 1276) 10152* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2: howto manager. (line 1280) 10153* BFD_RELOC_MCORE_RVA: howto manager. (line 1281) 10154* BFD_RELOC_MEP_16: howto manager. (line 1285) 10155* BFD_RELOC_MEP_32: howto manager. (line 1286) 10156* BFD_RELOC_MEP_8: howto manager. (line 1284) 10157* BFD_RELOC_MEP_ADDR24A4: howto manager. (line 1301) 10158* BFD_RELOC_MEP_GNU_VTENTRY: howto manager. (line 1303) 10159* BFD_RELOC_MEP_GNU_VTINHERIT: howto manager. (line 1302) 10160* BFD_RELOC_MEP_GPREL: howto manager. (line 1295) 10161* BFD_RELOC_MEP_HI16S: howto manager. (line 1294) 10162* BFD_RELOC_MEP_HI16U: howto manager. (line 1293) 10163* BFD_RELOC_MEP_LOW16: howto manager. (line 1292) 10164* BFD_RELOC_MEP_PCABS24A2: howto manager. (line 1291) 10165* BFD_RELOC_MEP_PCREL12A2: howto manager. (line 1288) 10166* BFD_RELOC_MEP_PCREL17A2: howto manager. (line 1289) 10167* BFD_RELOC_MEP_PCREL24A2: howto manager. (line 1290) 10168* BFD_RELOC_MEP_PCREL8A2: howto manager. (line 1287) 10169* BFD_RELOC_MEP_TPREL: howto manager. (line 1296) 10170* BFD_RELOC_MEP_TPREL7: howto manager. (line 1297) 10171* BFD_RELOC_MEP_TPREL7A2: howto manager. (line 1298) 10172* BFD_RELOC_MEP_TPREL7A4: howto manager. (line 1299) 10173* BFD_RELOC_MEP_UIMM24: howto manager. (line 1300) 10174* BFD_RELOC_MIPS16_CALL16: howto manager. (line 332) 10175* BFD_RELOC_MIPS16_GOT16: howto manager. (line 331) 10176* BFD_RELOC_MIPS16_GPREL: howto manager. (line 307) 10177* BFD_RELOC_MIPS16_HI16: howto manager. (line 336) 10178* BFD_RELOC_MIPS16_HI16_S: howto manager. (line 339) 10179* BFD_RELOC_MIPS16_JMP: howto manager. (line 304) 10180* BFD_RELOC_MIPS16_LO16: howto manager. (line 345) 10181* BFD_RELOC_MIPS_CALL16: howto manager. (line 352) 10182* BFD_RELOC_MIPS_CALL_HI16: howto manager. (line 355) 10183* BFD_RELOC_MIPS_CALL_LO16: howto manager. (line 356) 10184* BFD_RELOC_MIPS_COPY: howto manager. (line 387) 10185* BFD_RELOC_MIPS_DELETE: howto manager. (line 365) 10186* BFD_RELOC_MIPS_GOT16: howto manager. (line 351) 10187* BFD_RELOC_MIPS_GOT_DISP: howto manager. (line 360) 10188* BFD_RELOC_MIPS_GOT_HI16: howto manager. (line 353) 10189* BFD_RELOC_MIPS_GOT_LO16: howto manager. (line 354) 10190* BFD_RELOC_MIPS_GOT_OFST: howto manager. (line 359) 10191* BFD_RELOC_MIPS_GOT_PAGE: howto manager. (line 358) 10192* BFD_RELOC_MIPS_HIGHER: howto manager. (line 367) 10193* BFD_RELOC_MIPS_HIGHEST: howto manager. (line 366) 10194* BFD_RELOC_MIPS_INSERT_A: howto manager. (line 363) 10195* BFD_RELOC_MIPS_INSERT_B: howto manager. (line 364) 10196* BFD_RELOC_MIPS_JALR: howto manager. (line 371) 10197* BFD_RELOC_MIPS_JMP: howto manager. (line 300) 10198* BFD_RELOC_MIPS_JUMP_SLOT: howto manager. (line 388) 10199* BFD_RELOC_MIPS_LITERAL: howto manager. (line 348) 10200* BFD_RELOC_MIPS_REL16: howto manager. (line 369) 10201* BFD_RELOC_MIPS_RELGOT: howto manager. (line 370) 10202* BFD_RELOC_MIPS_SCN_DISP: howto manager. (line 368) 10203* BFD_RELOC_MIPS_SHIFT5: howto manager. (line 361) 10204* BFD_RELOC_MIPS_SHIFT6: howto manager. (line 362) 10205* BFD_RELOC_MIPS_SUB: howto manager. (line 357) 10206* BFD_RELOC_MIPS_TLS_DTPMOD32: howto manager. (line 372) 10207* BFD_RELOC_MIPS_TLS_DTPMOD64: howto manager. (line 374) 10208* BFD_RELOC_MIPS_TLS_DTPREL32: howto manager. (line 373) 10209* BFD_RELOC_MIPS_TLS_DTPREL64: howto manager. (line 375) 10210* BFD_RELOC_MIPS_TLS_DTPREL_HI16: howto manager. (line 378) 10211* BFD_RELOC_MIPS_TLS_DTPREL_LO16: howto manager. (line 379) 10212* BFD_RELOC_MIPS_TLS_GD: howto manager. (line 376) 10213* BFD_RELOC_MIPS_TLS_GOTTPREL: howto manager. (line 380) 10214* BFD_RELOC_MIPS_TLS_LDM: howto manager. (line 377) 10215* BFD_RELOC_MIPS_TLS_TPREL32: howto manager. (line 381) 10216* BFD_RELOC_MIPS_TLS_TPREL64: howto manager. (line 382) 10217* BFD_RELOC_MIPS_TLS_TPREL_HI16: howto manager. (line 383) 10218* BFD_RELOC_MIPS_TLS_TPREL_LO16: howto manager. (line 384) 10219* BFD_RELOC_MMIX_ADDR19: howto manager. (line 1332) 10220* BFD_RELOC_MMIX_ADDR27: howto manager. (line 1336) 10221* BFD_RELOC_MMIX_BASE_PLUS_OFFSET: howto manager. (line 1348) 10222* BFD_RELOC_MMIX_CBRANCH: howto manager. (line 1312) 10223* BFD_RELOC_MMIX_CBRANCH_1: howto manager. (line 1314) 10224* BFD_RELOC_MMIX_CBRANCH_2: howto manager. (line 1315) 10225* BFD_RELOC_MMIX_CBRANCH_3: howto manager. (line 1316) 10226* BFD_RELOC_MMIX_CBRANCH_J: howto manager. (line 1313) 10227* BFD_RELOC_MMIX_GETA: howto manager. (line 1306) 10228* BFD_RELOC_MMIX_GETA_1: howto manager. (line 1307) 10229* BFD_RELOC_MMIX_GETA_2: howto manager. (line 1308) 10230* BFD_RELOC_MMIX_GETA_3: howto manager. (line 1309) 10231* BFD_RELOC_MMIX_JMP: howto manager. (line 1326) 10232* BFD_RELOC_MMIX_JMP_1: howto manager. (line 1327) 10233* BFD_RELOC_MMIX_JMP_2: howto manager. (line 1328) 10234* BFD_RELOC_MMIX_JMP_3: howto manager. (line 1329) 10235* BFD_RELOC_MMIX_LOCAL: howto manager. (line 1352) 10236* BFD_RELOC_MMIX_PUSHJ: howto manager. (line 1319) 10237* BFD_RELOC_MMIX_PUSHJ_1: howto manager. (line 1320) 10238* BFD_RELOC_MMIX_PUSHJ_2: howto manager. (line 1321) 10239* BFD_RELOC_MMIX_PUSHJ_3: howto manager. (line 1322) 10240* BFD_RELOC_MMIX_PUSHJ_STUBBABLE: howto manager. (line 1323) 10241* BFD_RELOC_MMIX_REG: howto manager. (line 1344) 10242* BFD_RELOC_MMIX_REG_OR_BYTE: howto manager. (line 1340) 10243* BFD_RELOC_MN10300_16_PCREL: howto manager. (line 1214) 10244* BFD_RELOC_MN10300_32_PCREL: howto manager. (line 1210) 10245* BFD_RELOC_MN10300_ALIGN: howto manager. (line 464) 10246* BFD_RELOC_MN10300_COPY: howto manager. (line 447) 10247* BFD_RELOC_MN10300_GLOB_DAT: howto manager. (line 450) 10248* BFD_RELOC_MN10300_GOT16: howto manager. (line 443) 10249* BFD_RELOC_MN10300_GOT24: howto manager. (line 439) 10250* BFD_RELOC_MN10300_GOT32: howto manager. (line 435) 10251* BFD_RELOC_MN10300_GOTOFF24: howto manager. (line 432) 10252* BFD_RELOC_MN10300_JMP_SLOT: howto manager. (line 453) 10253* BFD_RELOC_MN10300_RELATIVE: howto manager. (line 456) 10254* BFD_RELOC_MN10300_SYM_DIFF: howto manager. (line 459) 10255* BFD_RELOC_MSP430_10_PCREL: howto manager. (line 1987) 10256* BFD_RELOC_MSP430_16: howto manager. (line 1989) 10257* BFD_RELOC_MSP430_16_BYTE: howto manager. (line 1991) 10258* BFD_RELOC_MSP430_16_PCREL: howto manager. (line 1988) 10259* BFD_RELOC_MSP430_16_PCREL_BYTE: howto manager. (line 1990) 10260* BFD_RELOC_MSP430_2X_PCREL: howto manager. (line 1992) 10261* BFD_RELOC_MSP430_RL_PCREL: howto manager. (line 1993) 10262* BFD_RELOC_MT_GNU_VTENTRY: howto manager. (line 1981) 10263* BFD_RELOC_MT_GNU_VTINHERIT: howto manager. (line 1978) 10264* BFD_RELOC_MT_HI16: howto manager. (line 1972) 10265* BFD_RELOC_MT_LO16: howto manager. (line 1975) 10266* BFD_RELOC_MT_PC16: howto manager. (line 1969) 10267* BFD_RELOC_MT_PCINSN8: howto manager. (line 1984) 10268* BFD_RELOC_NONE: howto manager. (line 116) 10269* BFD_RELOC_NS32K_DISP_16: howto manager. (line 528) 10270* BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. (line 531) 10271* BFD_RELOC_NS32K_DISP_32: howto manager. (line 529) 10272* BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. (line 532) 10273* BFD_RELOC_NS32K_DISP_8: howto manager. (line 527) 10274* BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. (line 530) 10275* BFD_RELOC_NS32K_IMM_16: howto manager. (line 522) 10276* BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. (line 525) 10277* BFD_RELOC_NS32K_IMM_32: howto manager. (line 523) 10278* BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. (line 526) 10279* BFD_RELOC_NS32K_IMM_8: howto manager. (line 521) 10280* BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. (line 524) 10281* BFD_RELOC_OPENRISC_ABS_26: howto manager. (line 1938) 10282* BFD_RELOC_OPENRISC_REL_26: howto manager. (line 1939) 10283* BFD_RELOC_PDP11_DISP_6_PCREL: howto manager. (line 536) 10284* BFD_RELOC_PDP11_DISP_8_PCREL: howto manager. (line 535) 10285* BFD_RELOC_PJ_CODE_DIR16: howto manager. (line 541) 10286* BFD_RELOC_PJ_CODE_DIR32: howto manager. (line 542) 10287* BFD_RELOC_PJ_CODE_HI16: howto manager. (line 539) 10288* BFD_RELOC_PJ_CODE_LO16: howto manager. (line 540) 10289* BFD_RELOC_PJ_CODE_REL16: howto manager. (line 543) 10290* BFD_RELOC_PJ_CODE_REL32: howto manager. (line 544) 10291* BFD_RELOC_PPC64_ADDR16_DS: howto manager. (line 589) 10292* BFD_RELOC_PPC64_ADDR16_LO_DS: howto manager. (line 590) 10293* BFD_RELOC_PPC64_DTPREL16_DS: howto manager. (line 636) 10294* BFD_RELOC_PPC64_DTPREL16_HIGHER: howto manager. (line 638) 10295* BFD_RELOC_PPC64_DTPREL16_HIGHERA: howto manager. (line 639) 10296* BFD_RELOC_PPC64_DTPREL16_HIGHEST: howto manager. (line 640) 10297* BFD_RELOC_PPC64_DTPREL16_HIGHESTA: howto manager. (line 641) 10298* BFD_RELOC_PPC64_DTPREL16_LO_DS: howto manager. (line 637) 10299* BFD_RELOC_PPC64_GOT16_DS: howto manager. (line 591) 10300* BFD_RELOC_PPC64_GOT16_LO_DS: howto manager. (line 592) 10301* BFD_RELOC_PPC64_HIGHER: howto manager. (line 577) 10302* BFD_RELOC_PPC64_HIGHER_S: howto manager. (line 578) 10303* BFD_RELOC_PPC64_HIGHEST: howto manager. (line 579) 10304* BFD_RELOC_PPC64_HIGHEST_S: howto manager. (line 580) 10305* BFD_RELOC_PPC64_PLT16_LO_DS: howto manager. (line 593) 10306* BFD_RELOC_PPC64_PLTGOT16: howto manager. (line 585) 10307* BFD_RELOC_PPC64_PLTGOT16_DS: howto manager. (line 598) 10308* BFD_RELOC_PPC64_PLTGOT16_HA: howto manager. (line 588) 10309* BFD_RELOC_PPC64_PLTGOT16_HI: howto manager. (line 587) 10310* BFD_RELOC_PPC64_PLTGOT16_LO: howto manager. (line 586) 10311* BFD_RELOC_PPC64_PLTGOT16_LO_DS: howto manager. (line 599) 10312* BFD_RELOC_PPC64_SECTOFF_DS: howto manager. (line 594) 10313* BFD_RELOC_PPC64_SECTOFF_LO_DS: howto manager. (line 595) 10314* BFD_RELOC_PPC64_TOC: howto manager. (line 584) 10315* BFD_RELOC_PPC64_TOC16_DS: howto manager. (line 596) 10316* BFD_RELOC_PPC64_TOC16_HA: howto manager. (line 583) 10317* BFD_RELOC_PPC64_TOC16_HI: howto manager. (line 582) 10318* BFD_RELOC_PPC64_TOC16_LO: howto manager. (line 581) 10319* BFD_RELOC_PPC64_TOC16_LO_DS: howto manager. (line 597) 10320* BFD_RELOC_PPC64_TPREL16_DS: howto manager. (line 630) 10321* BFD_RELOC_PPC64_TPREL16_HIGHER: howto manager. (line 632) 10322* BFD_RELOC_PPC64_TPREL16_HIGHERA: howto manager. (line 633) 10323* BFD_RELOC_PPC64_TPREL16_HIGHEST: howto manager. (line 634) 10324* BFD_RELOC_PPC64_TPREL16_HIGHESTA: howto manager. (line 635) 10325* BFD_RELOC_PPC64_TPREL16_LO_DS: howto manager. (line 631) 10326* BFD_RELOC_PPC_B16: howto manager. (line 550) 10327* BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. (line 552) 10328* BFD_RELOC_PPC_B16_BRTAKEN: howto manager. (line 551) 10329* BFD_RELOC_PPC_B26: howto manager. (line 547) 10330* BFD_RELOC_PPC_BA16: howto manager. (line 553) 10331* BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. (line 555) 10332* BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. (line 554) 10333* BFD_RELOC_PPC_BA26: howto manager. (line 548) 10334* BFD_RELOC_PPC_COPY: howto manager. (line 556) 10335* BFD_RELOC_PPC_DTPMOD: howto manager. (line 603) 10336* BFD_RELOC_PPC_DTPREL: howto manager. (line 613) 10337* BFD_RELOC_PPC_DTPREL16: howto manager. (line 609) 10338* BFD_RELOC_PPC_DTPREL16_HA: howto manager. (line 612) 10339* BFD_RELOC_PPC_DTPREL16_HI: howto manager. (line 611) 10340* BFD_RELOC_PPC_DTPREL16_LO: howto manager. (line 610) 10341* BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. (line 575) 10342* BFD_RELOC_PPC_EMB_MRKREF: howto manager. (line 570) 10343* BFD_RELOC_PPC_EMB_NADDR16: howto manager. (line 562) 10344* BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. (line 565) 10345* BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. (line 564) 10346* BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. (line 563) 10347* BFD_RELOC_PPC_EMB_NADDR32: howto manager. (line 561) 10348* BFD_RELOC_PPC_EMB_RELSDA: howto manager. (line 576) 10349* BFD_RELOC_PPC_EMB_RELSEC16: howto manager. (line 571) 10350* BFD_RELOC_PPC_EMB_RELST_HA: howto manager. (line 574) 10351* BFD_RELOC_PPC_EMB_RELST_HI: howto manager. (line 573) 10352* BFD_RELOC_PPC_EMB_RELST_LO: howto manager. (line 572) 10353* BFD_RELOC_PPC_EMB_SDA21: howto manager. (line 569) 10354* BFD_RELOC_PPC_EMB_SDA2I16: howto manager. (line 567) 10355* BFD_RELOC_PPC_EMB_SDA2REL: howto manager. (line 568) 10356* BFD_RELOC_PPC_EMB_SDAI16: howto manager. (line 566) 10357* BFD_RELOC_PPC_GLOB_DAT: howto manager. (line 557) 10358* BFD_RELOC_PPC_GOT_DTPREL16: howto manager. (line 626) 10359* BFD_RELOC_PPC_GOT_DTPREL16_HA: howto manager. (line 629) 10360* BFD_RELOC_PPC_GOT_DTPREL16_HI: howto manager. (line 628) 10361* BFD_RELOC_PPC_GOT_DTPREL16_LO: howto manager. (line 627) 10362* BFD_RELOC_PPC_GOT_TLSGD16: howto manager. (line 614) 10363* BFD_RELOC_PPC_GOT_TLSGD16_HA: howto manager. (line 617) 10364* BFD_RELOC_PPC_GOT_TLSGD16_HI: howto manager. (line 616) 10365* BFD_RELOC_PPC_GOT_TLSGD16_LO: howto manager. (line 615) 10366* BFD_RELOC_PPC_GOT_TLSLD16: howto manager. (line 618) 10367* BFD_RELOC_PPC_GOT_TLSLD16_HA: howto manager. (line 621) 10368* BFD_RELOC_PPC_GOT_TLSLD16_HI: howto manager. (line 620) 10369* BFD_RELOC_PPC_GOT_TLSLD16_LO: howto manager. (line 619) 10370* BFD_RELOC_PPC_GOT_TPREL16: howto manager. (line 622) 10371* BFD_RELOC_PPC_GOT_TPREL16_HA: howto manager. (line 625) 10372* BFD_RELOC_PPC_GOT_TPREL16_HI: howto manager. (line 624) 10373* BFD_RELOC_PPC_GOT_TPREL16_LO: howto manager. (line 623) 10374* BFD_RELOC_PPC_JMP_SLOT: howto manager. (line 558) 10375* BFD_RELOC_PPC_LOCAL24PC: howto manager. (line 560) 10376* BFD_RELOC_PPC_RELATIVE: howto manager. (line 559) 10377* BFD_RELOC_PPC_TLS: howto manager. (line 602) 10378* BFD_RELOC_PPC_TOC16: howto manager. (line 549) 10379* BFD_RELOC_PPC_TPREL: howto manager. (line 608) 10380* BFD_RELOC_PPC_TPREL16: howto manager. (line 604) 10381* BFD_RELOC_PPC_TPREL16_HA: howto manager. (line 607) 10382* BFD_RELOC_PPC_TPREL16_HI: howto manager. (line 606) 10383* BFD_RELOC_PPC_TPREL16_LO: howto manager. (line 605) 10384* BFD_RELOC_RELC: howto manager. (line 1955) 10385* BFD_RELOC_RVA: howto manager. (line 85) 10386* BFD_RELOC_SCORE16_BRANCH: howto manager. (line 1581) 10387* BFD_RELOC_SCORE16_JMP: howto manager. (line 1578) 10388* BFD_RELOC_SCORE_BRANCH: howto manager. (line 1575) 10389* BFD_RELOC_SCORE_CALL15: howto manager. (line 1586) 10390* BFD_RELOC_SCORE_DUMMY1: howto manager. (line 1565) 10391* BFD_RELOC_SCORE_DUMMY2: howto manager. (line 1571) 10392* BFD_RELOC_SCORE_DUMMY_HI16: howto manager. (line 1587) 10393* BFD_RELOC_SCORE_GOT15: howto manager. (line 1584) 10394* BFD_RELOC_SCORE_GOT_LO16: howto manager. (line 1585) 10395* BFD_RELOC_SCORE_GPREL15: howto manager. (line 1568) 10396* BFD_RELOC_SCORE_JMP: howto manager. (line 1572) 10397* BFD_RELOC_SH_ALIGN: howto manager. (line 824) 10398* BFD_RELOC_SH_CODE: howto manager. (line 825) 10399* BFD_RELOC_SH_COPY: howto manager. (line 830) 10400* BFD_RELOC_SH_COPY64: howto manager. (line 855) 10401* BFD_RELOC_SH_COUNT: howto manager. (line 823) 10402* BFD_RELOC_SH_DATA: howto manager. (line 826) 10403* BFD_RELOC_SH_DISP12: howto manager. (line 806) 10404* BFD_RELOC_SH_DISP12BY2: howto manager. (line 807) 10405* BFD_RELOC_SH_DISP12BY4: howto manager. (line 808) 10406* BFD_RELOC_SH_DISP12BY8: howto manager. (line 809) 10407* BFD_RELOC_SH_DISP20: howto manager. (line 810) 10408* BFD_RELOC_SH_DISP20BY8: howto manager. (line 811) 10409* BFD_RELOC_SH_GLOB_DAT: howto manager. (line 831) 10410* BFD_RELOC_SH_GLOB_DAT64: howto manager. (line 856) 10411* BFD_RELOC_SH_GOT10BY4: howto manager. (line 859) 10412* BFD_RELOC_SH_GOT10BY8: howto manager. (line 860) 10413* BFD_RELOC_SH_GOT_HI16: howto manager. (line 838) 10414* BFD_RELOC_SH_GOT_LOW16: howto manager. (line 835) 10415* BFD_RELOC_SH_GOT_MEDHI16: howto manager. (line 837) 10416* BFD_RELOC_SH_GOT_MEDLOW16: howto manager. (line 836) 10417* BFD_RELOC_SH_GOTOFF_HI16: howto manager. (line 850) 10418* BFD_RELOC_SH_GOTOFF_LOW16: howto manager. (line 847) 10419* BFD_RELOC_SH_GOTOFF_MEDHI16: howto manager. (line 849) 10420* BFD_RELOC_SH_GOTOFF_MEDLOW16: howto manager. (line 848) 10421* BFD_RELOC_SH_GOTPC: howto manager. (line 834) 10422* BFD_RELOC_SH_GOTPC_HI16: howto manager. (line 854) 10423* BFD_RELOC_SH_GOTPC_LOW16: howto manager. (line 851) 10424* BFD_RELOC_SH_GOTPC_MEDHI16: howto manager. (line 853) 10425* BFD_RELOC_SH_GOTPC_MEDLOW16: howto manager. (line 852) 10426* BFD_RELOC_SH_GOTPLT10BY4: howto manager. (line 861) 10427* BFD_RELOC_SH_GOTPLT10BY8: howto manager. (line 862) 10428* BFD_RELOC_SH_GOTPLT32: howto manager. (line 863) 10429* BFD_RELOC_SH_GOTPLT_HI16: howto manager. (line 842) 10430* BFD_RELOC_SH_GOTPLT_LOW16: howto manager. (line 839) 10431* BFD_RELOC_SH_GOTPLT_MEDHI16: howto manager. (line 841) 10432* BFD_RELOC_SH_GOTPLT_MEDLOW16: howto manager. (line 840) 10433* BFD_RELOC_SH_IMM3: howto manager. (line 804) 10434* BFD_RELOC_SH_IMM3U: howto manager. (line 805) 10435* BFD_RELOC_SH_IMM4: howto manager. (line 812) 10436* BFD_RELOC_SH_IMM4BY2: howto manager. (line 813) 10437* BFD_RELOC_SH_IMM4BY4: howto manager. (line 814) 10438* BFD_RELOC_SH_IMM8: howto manager. (line 815) 10439* BFD_RELOC_SH_IMM8BY2: howto manager. (line 816) 10440* BFD_RELOC_SH_IMM8BY4: howto manager. (line 817) 10441* BFD_RELOC_SH_IMM_HI16: howto manager. (line 881) 10442* BFD_RELOC_SH_IMM_HI16_PCREL: howto manager. (line 882) 10443* BFD_RELOC_SH_IMM_LOW16: howto manager. (line 875) 10444* BFD_RELOC_SH_IMM_LOW16_PCREL: howto manager. (line 876) 10445* BFD_RELOC_SH_IMM_MEDHI16: howto manager. (line 879) 10446* BFD_RELOC_SH_IMM_MEDHI16_PCREL: howto manager. (line 880) 10447* BFD_RELOC_SH_IMM_MEDLOW16: howto manager. (line 877) 10448* BFD_RELOC_SH_IMM_MEDLOW16_PCREL: howto manager. (line 878) 10449* BFD_RELOC_SH_IMMS10: howto manager. (line 869) 10450* BFD_RELOC_SH_IMMS10BY2: howto manager. (line 870) 10451* BFD_RELOC_SH_IMMS10BY4: howto manager. (line 871) 10452* BFD_RELOC_SH_IMMS10BY8: howto manager. (line 872) 10453* BFD_RELOC_SH_IMMS16: howto manager. (line 873) 10454* BFD_RELOC_SH_IMMS6: howto manager. (line 866) 10455* BFD_RELOC_SH_IMMS6BY32: howto manager. (line 867) 10456* BFD_RELOC_SH_IMMU16: howto manager. (line 874) 10457* BFD_RELOC_SH_IMMU5: howto manager. (line 865) 10458* BFD_RELOC_SH_IMMU6: howto manager. (line 868) 10459* BFD_RELOC_SH_JMP_SLOT: howto manager. (line 832) 10460* BFD_RELOC_SH_JMP_SLOT64: howto manager. (line 857) 10461* BFD_RELOC_SH_LABEL: howto manager. (line 827) 10462* BFD_RELOC_SH_LOOP_END: howto manager. (line 829) 10463* BFD_RELOC_SH_LOOP_START: howto manager. (line 828) 10464* BFD_RELOC_SH_PCDISP12BY2: howto manager. (line 803) 10465* BFD_RELOC_SH_PCDISP8BY2: howto manager. (line 802) 10466* BFD_RELOC_SH_PCRELIMM8BY2: howto manager. (line 818) 10467* BFD_RELOC_SH_PCRELIMM8BY4: howto manager. (line 819) 10468* BFD_RELOC_SH_PLT_HI16: howto manager. (line 846) 10469* BFD_RELOC_SH_PLT_LOW16: howto manager. (line 843) 10470* BFD_RELOC_SH_PLT_MEDHI16: howto manager. (line 845) 10471* BFD_RELOC_SH_PLT_MEDLOW16: howto manager. (line 844) 10472* BFD_RELOC_SH_PT_16: howto manager. (line 883) 10473* BFD_RELOC_SH_RELATIVE: howto manager. (line 833) 10474* BFD_RELOC_SH_RELATIVE64: howto manager. (line 858) 10475* BFD_RELOC_SH_SHMEDIA_CODE: howto manager. (line 864) 10476* BFD_RELOC_SH_SWITCH16: howto manager. (line 820) 10477* BFD_RELOC_SH_SWITCH32: howto manager. (line 821) 10478* BFD_RELOC_SH_TLS_DTPMOD32: howto manager. (line 889) 10479* BFD_RELOC_SH_TLS_DTPOFF32: howto manager. (line 890) 10480* BFD_RELOC_SH_TLS_GD_32: howto manager. (line 884) 10481* BFD_RELOC_SH_TLS_IE_32: howto manager. (line 887) 10482* BFD_RELOC_SH_TLS_LD_32: howto manager. (line 885) 10483* BFD_RELOC_SH_TLS_LDO_32: howto manager. (line 886) 10484* BFD_RELOC_SH_TLS_LE_32: howto manager. (line 888) 10485* BFD_RELOC_SH_TLS_TPOFF32: howto manager. (line 891) 10486* BFD_RELOC_SH_USES: howto manager. (line 822) 10487* BFD_RELOC_SPARC13: howto manager. (line 119) 10488* BFD_RELOC_SPARC22: howto manager. (line 118) 10489* BFD_RELOC_SPARC_10: howto manager. (line 146) 10490* BFD_RELOC_SPARC_11: howto manager. (line 147) 10491* BFD_RELOC_SPARC_5: howto manager. (line 159) 10492* BFD_RELOC_SPARC_6: howto manager. (line 158) 10493* BFD_RELOC_SPARC_64: howto manager. (line 145) 10494* BFD_RELOC_SPARC_7: howto manager. (line 157) 10495* BFD_RELOC_SPARC_BASE13: howto manager. (line 141) 10496* BFD_RELOC_SPARC_BASE22: howto manager. (line 142) 10497* BFD_RELOC_SPARC_COPY: howto manager. (line 126) 10498* BFD_RELOC_SPARC_DISP64: howto manager. (line 160) 10499* BFD_RELOC_SPARC_GLOB_DAT: howto manager. (line 127) 10500* BFD_RELOC_SPARC_GOT10: howto manager. (line 120) 10501* BFD_RELOC_SPARC_GOT13: howto manager. (line 121) 10502* BFD_RELOC_SPARC_GOT22: howto manager. (line 122) 10503* BFD_RELOC_SPARC_GOTDATA_HIX22: howto manager. (line 133) 10504* BFD_RELOC_SPARC_GOTDATA_LOX10: howto manager. (line 134) 10505* BFD_RELOC_SPARC_GOTDATA_OP: howto manager. (line 137) 10506* BFD_RELOC_SPARC_GOTDATA_OP_HIX22: howto manager. (line 135) 10507* BFD_RELOC_SPARC_GOTDATA_OP_LOX10: howto manager. (line 136) 10508* BFD_RELOC_SPARC_H44: howto manager. (line 165) 10509* BFD_RELOC_SPARC_HH22: howto manager. (line 149) 10510* BFD_RELOC_SPARC_HIX22: howto manager. (line 163) 10511* BFD_RELOC_SPARC_HM10: howto manager. (line 150) 10512* BFD_RELOC_SPARC_JMP_SLOT: howto manager. (line 128) 10513* BFD_RELOC_SPARC_L44: howto manager. (line 167) 10514* BFD_RELOC_SPARC_LM22: howto manager. (line 151) 10515* BFD_RELOC_SPARC_LOX10: howto manager. (line 164) 10516* BFD_RELOC_SPARC_M44: howto manager. (line 166) 10517* BFD_RELOC_SPARC_OLO10: howto manager. (line 148) 10518* BFD_RELOC_SPARC_PC10: howto manager. (line 123) 10519* BFD_RELOC_SPARC_PC22: howto manager. (line 124) 10520* BFD_RELOC_SPARC_PC_HH22: howto manager. (line 152) 10521* BFD_RELOC_SPARC_PC_HM10: howto manager. (line 153) 10522* BFD_RELOC_SPARC_PC_LM22: howto manager. (line 154) 10523* BFD_RELOC_SPARC_PLT32: howto manager. (line 161) 10524* BFD_RELOC_SPARC_PLT64: howto manager. (line 162) 10525* BFD_RELOC_SPARC_REGISTER: howto manager. (line 168) 10526* BFD_RELOC_SPARC_RELATIVE: howto manager. (line 129) 10527* BFD_RELOC_SPARC_REV32: howto manager. (line 171) 10528* BFD_RELOC_SPARC_TLS_DTPMOD32: howto manager. (line 192) 10529* BFD_RELOC_SPARC_TLS_DTPMOD64: howto manager. (line 193) 10530* BFD_RELOC_SPARC_TLS_DTPOFF32: howto manager. (line 194) 10531* BFD_RELOC_SPARC_TLS_DTPOFF64: howto manager. (line 195) 10532* BFD_RELOC_SPARC_TLS_GD_ADD: howto manager. (line 176) 10533* BFD_RELOC_SPARC_TLS_GD_CALL: howto manager. (line 177) 10534* BFD_RELOC_SPARC_TLS_GD_HI22: howto manager. (line 174) 10535* BFD_RELOC_SPARC_TLS_GD_LO10: howto manager. (line 175) 10536* BFD_RELOC_SPARC_TLS_IE_ADD: howto manager. (line 189) 10537* BFD_RELOC_SPARC_TLS_IE_HI22: howto manager. (line 185) 10538* BFD_RELOC_SPARC_TLS_IE_LD: howto manager. (line 187) 10539* BFD_RELOC_SPARC_TLS_IE_LDX: howto manager. (line 188) 10540* BFD_RELOC_SPARC_TLS_IE_LO10: howto manager. (line 186) 10541* BFD_RELOC_SPARC_TLS_LDM_ADD: howto manager. (line 180) 10542* BFD_RELOC_SPARC_TLS_LDM_CALL: howto manager. (line 181) 10543* BFD_RELOC_SPARC_TLS_LDM_HI22: howto manager. (line 178) 10544* BFD_RELOC_SPARC_TLS_LDM_LO10: howto manager. (line 179) 10545* BFD_RELOC_SPARC_TLS_LDO_ADD: howto manager. (line 184) 10546* BFD_RELOC_SPARC_TLS_LDO_HIX22: howto manager. (line 182) 10547* BFD_RELOC_SPARC_TLS_LDO_LOX10: howto manager. (line 183) 10548* BFD_RELOC_SPARC_TLS_LE_HIX22: howto manager. (line 190) 10549* BFD_RELOC_SPARC_TLS_LE_LOX10: howto manager. (line 191) 10550* BFD_RELOC_SPARC_TLS_TPOFF32: howto manager. (line 196) 10551* BFD_RELOC_SPARC_TLS_TPOFF64: howto manager. (line 197) 10552* BFD_RELOC_SPARC_UA16: howto manager. (line 130) 10553* BFD_RELOC_SPARC_UA32: howto manager. (line 131) 10554* BFD_RELOC_SPARC_UA64: howto manager. (line 132) 10555* BFD_RELOC_SPARC_WDISP16: howto manager. (line 155) 10556* BFD_RELOC_SPARC_WDISP19: howto manager. (line 156) 10557* BFD_RELOC_SPARC_WDISP22: howto manager. (line 117) 10558* BFD_RELOC_SPARC_WPLT30: howto manager. (line 125) 10559* BFD_RELOC_SPU_HI16: howto manager. (line 211) 10560* BFD_RELOC_SPU_IMM10: howto manager. (line 202) 10561* BFD_RELOC_SPU_IMM10W: howto manager. (line 203) 10562* BFD_RELOC_SPU_IMM16: howto manager. (line 204) 10563* BFD_RELOC_SPU_IMM16W: howto manager. (line 205) 10564* BFD_RELOC_SPU_IMM18: howto manager. (line 206) 10565* BFD_RELOC_SPU_IMM7: howto manager. (line 200) 10566* BFD_RELOC_SPU_IMM8: howto manager. (line 201) 10567* BFD_RELOC_SPU_LO16: howto manager. (line 210) 10568* BFD_RELOC_SPU_PCREL16: howto manager. (line 209) 10569* BFD_RELOC_SPU_PCREL9a: howto manager. (line 207) 10570* BFD_RELOC_SPU_PCREL9b: howto manager. (line 208) 10571* BFD_RELOC_SPU_PPU32: howto manager. (line 212) 10572* BFD_RELOC_SPU_PPU64: howto manager. (line 213) 10573* BFD_RELOC_THUMB_PCREL_BLX: howto manager. (line 662) 10574* BFD_RELOC_THUMB_PCREL_BRANCH12: howto manager. (line 676) 10575* BFD_RELOC_THUMB_PCREL_BRANCH20: howto manager. (line 677) 10576* BFD_RELOC_THUMB_PCREL_BRANCH23: howto manager. (line 678) 10577* BFD_RELOC_THUMB_PCREL_BRANCH25: howto manager. (line 679) 10578* BFD_RELOC_THUMB_PCREL_BRANCH7: howto manager. (line 674) 10579* BFD_RELOC_THUMB_PCREL_BRANCH9: howto manager. (line 675) 10580* BFD_RELOC_TIC30_LDP: howto manager. (line 1218) 10581* BFD_RELOC_TIC54X_16_OF_23: howto manager. (line 1236) 10582* BFD_RELOC_TIC54X_23: howto manager. (line 1233) 10583* BFD_RELOC_TIC54X_MS7_OF_23: howto manager. (line 1241) 10584* BFD_RELOC_TIC54X_PARTLS7: howto manager. (line 1223) 10585* BFD_RELOC_TIC54X_PARTMS9: howto manager. (line 1228) 10586* bfd_reloc_type_lookup: howto manager. (line 2102) 10587* BFD_RELOC_V850_22_PCREL: howto manager. (line 1145) 10588* BFD_RELOC_V850_9_PCREL: howto manager. (line 1142) 10589* BFD_RELOC_V850_ALIGN: howto manager. (line 1203) 10590* BFD_RELOC_V850_CALLT_16_16_OFFSET: howto manager. (line 1194) 10591* BFD_RELOC_V850_CALLT_6_7_OFFSET: howto manager. (line 1191) 10592* BFD_RELOC_V850_LO16_SPLIT_OFFSET: howto manager. (line 1206) 10593* BFD_RELOC_V850_LONGCALL: howto manager. (line 1197) 10594* BFD_RELOC_V850_LONGJUMP: howto manager. (line 1200) 10595* BFD_RELOC_V850_SDA_15_16_OFFSET: howto manager. (line 1151) 10596* BFD_RELOC_V850_SDA_16_16_OFFSET: howto manager. (line 1148) 10597* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager. (line 1183) 10598* BFD_RELOC_V850_TDA_16_16_OFFSET: howto manager. (line 1173) 10599* BFD_RELOC_V850_TDA_4_4_OFFSET: howto manager. (line 1180) 10600* BFD_RELOC_V850_TDA_4_5_OFFSET: howto manager. (line 1176) 10601* BFD_RELOC_V850_TDA_6_8_OFFSET: howto manager. (line 1162) 10602* BFD_RELOC_V850_TDA_7_7_OFFSET: howto manager. (line 1170) 10603* BFD_RELOC_V850_TDA_7_8_OFFSET: howto manager. (line 1166) 10604* BFD_RELOC_V850_ZDA_15_16_OFFSET: howto manager. (line 1158) 10605* BFD_RELOC_V850_ZDA_16_16_OFFSET: howto manager. (line 1155) 10606* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager. (line 1187) 10607* BFD_RELOC_VAX_GLOB_DAT: howto manager. (line 1964) 10608* BFD_RELOC_VAX_JMP_SLOT: howto manager. (line 1965) 10609* BFD_RELOC_VAX_RELATIVE: howto manager. (line 1966) 10610* BFD_RELOC_VPE4KMATH_DATA: howto manager. (line 1620) 10611* BFD_RELOC_VPE4KMATH_INSN: howto manager. (line 1621) 10612* BFD_RELOC_VTABLE_ENTRY: howto manager. (line 1625) 10613* BFD_RELOC_VTABLE_INHERIT: howto manager. (line 1624) 10614* BFD_RELOC_X86_64_32S: howto manager. (line 500) 10615* BFD_RELOC_X86_64_COPY: howto manager. (line 495) 10616* BFD_RELOC_X86_64_DTPMOD64: howto manager. (line 501) 10617* BFD_RELOC_X86_64_DTPOFF32: howto manager. (line 506) 10618* BFD_RELOC_X86_64_DTPOFF64: howto manager. (line 502) 10619* BFD_RELOC_X86_64_GLOB_DAT: howto manager. (line 496) 10620* BFD_RELOC_X86_64_GOT32: howto manager. (line 493) 10621* BFD_RELOC_X86_64_GOT64: howto manager. (line 511) 10622* BFD_RELOC_X86_64_GOTOFF64: howto manager. (line 509) 10623* BFD_RELOC_X86_64_GOTPC32: howto manager. (line 510) 10624* BFD_RELOC_X86_64_GOTPC32_TLSDESC: howto manager. (line 516) 10625* BFD_RELOC_X86_64_GOTPC64: howto manager. (line 513) 10626* BFD_RELOC_X86_64_GOTPCREL: howto manager. (line 499) 10627* BFD_RELOC_X86_64_GOTPCREL64: howto manager. (line 512) 10628* BFD_RELOC_X86_64_GOTPLT64: howto manager. (line 514) 10629* BFD_RELOC_X86_64_GOTTPOFF: howto manager. (line 507) 10630* BFD_RELOC_X86_64_JUMP_SLOT: howto manager. (line 497) 10631* BFD_RELOC_X86_64_PLT32: howto manager. (line 494) 10632* BFD_RELOC_X86_64_PLTOFF64: howto manager. (line 515) 10633* BFD_RELOC_X86_64_RELATIVE: howto manager. (line 498) 10634* BFD_RELOC_X86_64_TLSDESC: howto manager. (line 518) 10635* BFD_RELOC_X86_64_TLSDESC_CALL: howto manager. (line 517) 10636* BFD_RELOC_X86_64_TLSGD: howto manager. (line 504) 10637* BFD_RELOC_X86_64_TLSLD: howto manager. (line 505) 10638* BFD_RELOC_X86_64_TPOFF32: howto manager. (line 508) 10639* BFD_RELOC_X86_64_TPOFF64: howto manager. (line 503) 10640* BFD_RELOC_XC16X_PAG: howto manager. (line 1958) 10641* BFD_RELOC_XC16X_POF: howto manager. (line 1959) 10642* BFD_RELOC_XC16X_SEG: howto manager. (line 1960) 10643* BFD_RELOC_XC16X_SOF: howto manager. (line 1961) 10644* BFD_RELOC_XSTORMY16_12: howto manager. (line 1950) 10645* BFD_RELOC_XSTORMY16_24: howto manager. (line 1951) 10646* BFD_RELOC_XSTORMY16_FPTR16: howto manager. (line 1952) 10647* BFD_RELOC_XSTORMY16_REL_12: howto manager. (line 1949) 10648* BFD_RELOC_XTENSA_ASM_EXPAND: howto manager. (line 2070) 10649* BFD_RELOC_XTENSA_ASM_SIMPLIFY: howto manager. (line 2075) 10650* BFD_RELOC_XTENSA_DIFF16: howto manager. (line 2017) 10651* BFD_RELOC_XTENSA_DIFF32: howto manager. (line 2018) 10652* BFD_RELOC_XTENSA_DIFF8: howto manager. (line 2016) 10653* BFD_RELOC_XTENSA_GLOB_DAT: howto manager. (line 2006) 10654* BFD_RELOC_XTENSA_JMP_SLOT: howto manager. (line 2007) 10655* BFD_RELOC_XTENSA_OP0: howto manager. (line 2064) 10656* BFD_RELOC_XTENSA_OP1: howto manager. (line 2065) 10657* BFD_RELOC_XTENSA_OP2: howto manager. (line 2066) 10658* BFD_RELOC_XTENSA_PLT: howto manager. (line 2011) 10659* BFD_RELOC_XTENSA_RELATIVE: howto manager. (line 2008) 10660* BFD_RELOC_XTENSA_RTLD: howto manager. (line 2001) 10661* BFD_RELOC_XTENSA_SLOT0_ALT: howto manager. (line 2046) 10662* BFD_RELOC_XTENSA_SLOT0_OP: howto manager. (line 2026) 10663* BFD_RELOC_XTENSA_SLOT10_ALT: howto manager. (line 2056) 10664* BFD_RELOC_XTENSA_SLOT10_OP: howto manager. (line 2036) 10665* BFD_RELOC_XTENSA_SLOT11_ALT: howto manager. (line 2057) 10666* BFD_RELOC_XTENSA_SLOT11_OP: howto manager. (line 2037) 10667* BFD_RELOC_XTENSA_SLOT12_ALT: howto manager. (line 2058) 10668* BFD_RELOC_XTENSA_SLOT12_OP: howto manager. (line 2038) 10669* BFD_RELOC_XTENSA_SLOT13_ALT: howto manager. (line 2059) 10670* BFD_RELOC_XTENSA_SLOT13_OP: howto manager. (line 2039) 10671* BFD_RELOC_XTENSA_SLOT14_ALT: howto manager. (line 2060) 10672* BFD_RELOC_XTENSA_SLOT14_OP: howto manager. (line 2040) 10673* BFD_RELOC_XTENSA_SLOT1_ALT: howto manager. (line 2047) 10674* BFD_RELOC_XTENSA_SLOT1_OP: howto manager. (line 2027) 10675* BFD_RELOC_XTENSA_SLOT2_ALT: howto manager. (line 2048) 10676* BFD_RELOC_XTENSA_SLOT2_OP: howto manager. (line 2028) 10677* BFD_RELOC_XTENSA_SLOT3_ALT: howto manager. (line 2049) 10678* BFD_RELOC_XTENSA_SLOT3_OP: howto manager. (line 2029) 10679* BFD_RELOC_XTENSA_SLOT4_ALT: howto manager. (line 2050) 10680* BFD_RELOC_XTENSA_SLOT4_OP: howto manager. (line 2030) 10681* BFD_RELOC_XTENSA_SLOT5_ALT: howto manager. (line 2051) 10682* BFD_RELOC_XTENSA_SLOT5_OP: howto manager. (line 2031) 10683* BFD_RELOC_XTENSA_SLOT6_ALT: howto manager. (line 2052) 10684* BFD_RELOC_XTENSA_SLOT6_OP: howto manager. (line 2032) 10685* BFD_RELOC_XTENSA_SLOT7_ALT: howto manager. (line 2053) 10686* BFD_RELOC_XTENSA_SLOT7_OP: howto manager. (line 2033) 10687* BFD_RELOC_XTENSA_SLOT8_ALT: howto manager. (line 2054) 10688* BFD_RELOC_XTENSA_SLOT8_OP: howto manager. (line 2034) 10689* BFD_RELOC_XTENSA_SLOT9_ALT: howto manager. (line 2055) 10690* BFD_RELOC_XTENSA_SLOT9_OP: howto manager. (line 2035) 10691* BFD_RELOC_XTENSA_TLS_ARG: howto manager. (line 2085) 10692* BFD_RELOC_XTENSA_TLS_CALL: howto manager. (line 2086) 10693* BFD_RELOC_XTENSA_TLS_DTPOFF: howto manager. (line 2082) 10694* BFD_RELOC_XTENSA_TLS_FUNC: howto manager. (line 2084) 10695* BFD_RELOC_XTENSA_TLS_TPOFF: howto manager. (line 2083) 10696* BFD_RELOC_XTENSA_TLSDESC_ARG: howto manager. (line 2081) 10697* BFD_RELOC_XTENSA_TLSDESC_FN: howto manager. (line 2080) 10698* BFD_RELOC_Z80_DISP8: howto manager. (line 2089) 10699* BFD_RELOC_Z8K_CALLR: howto manager. (line 2095) 10700* BFD_RELOC_Z8K_DISP7: howto manager. (line 2092) 10701* BFD_RELOC_Z8K_IMM4L: howto manager. (line 2098) 10702* bfd_scan_arch: Architectures. (line 417) 10703* bfd_scan_vma: BFD front end. (line 505) 10704* bfd_seach_for_target: bfd_target. (line 464) 10705* bfd_section_already_linked: Writing the symbol table. 10706 (line 55) 10707* bfd_section_list_clear: section prototypes. (line 8) 10708* bfd_sections_find_if: section prototypes. (line 176) 10709* bfd_set_arch_info: Architectures. (line 458) 10710* bfd_set_archive_head: Archives. (line 69) 10711* bfd_set_default_target: bfd_target. (line 429) 10712* bfd_set_error: BFD front end. (line 315) 10713* bfd_set_error_handler: BFD front end. (line 357) 10714* bfd_set_error_program_name: BFD front end. (line 366) 10715* bfd_set_file_flags: BFD front end. (line 425) 10716* bfd_set_format: Formats. (line 68) 10717* bfd_set_gp_size: BFD front end. (line 495) 10718* bfd_set_private_flags: BFD front end. (line 572) 10719* bfd_set_reloc: BFD front end. (line 415) 10720* bfd_set_section_contents: section prototypes. (line 207) 10721* bfd_set_section_flags: section prototypes. (line 140) 10722* bfd_set_section_size: section prototypes. (line 193) 10723* bfd_set_start_address: BFD front end. (line 474) 10724* bfd_set_symtab: symbol handling functions. 10725 (line 60) 10726* bfd_symbol_info: symbol handling functions. 10727 (line 130) 10728* bfd_target_list: bfd_target. (line 455) 10729* bfd_write_bigendian_4byte_int: Internal. (line 13) 10730* bfd_zalloc: Opening and Closing. 10731 (line 228) 10732* bfd_zalloc2: Opening and Closing. 10733 (line 237) 10734* coff_symbol_type: coff. (line 186) 10735* core_file_matches_executable_p: Core Files. (line 30) 10736* find_separate_debug_file: Opening and Closing. 10737 (line 279) 10738* generic_core_file_matches_executable_p: Core Files. (line 40) 10739* get_debug_link_info: Opening and Closing. 10740 (line 260) 10741* Hash tables: Hash Tables. (line 6) 10742* internal object-file format: Canonical format. (line 11) 10743* Linker: Linker Functions. (line 6) 10744* Other functions: BFD front end. (line 587) 10745* separate_debug_file_exists: Opening and Closing. 10746 (line 270) 10747* struct bfd_iovec: BFD front end. (line 790) 10748* target vector (_bfd_final_link): Performing the Final Link. 10749 (line 6) 10750* target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table. 10751 (line 6) 10752* target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table. 10753 (line 6) 10754* The HOWTO Macro: typedef arelent. (line 291) 10755* what is it?: Overview. (line 6) 10756 10757 10758 10759Tag Table: 10760Node: Top1045 10761Node: Overview1384 10762Node: History2435 10763Node: How It Works3381 10764Node: What BFD Version 2 Can Do4924 10765Node: BFD information loss6239 10766Node: Canonical format8771 10767Node: BFD front end13143 10768Node: Memory Usage43650 10769Node: Initialization44878 10770Node: Sections45337 10771Node: Section Input45820 10772Node: Section Output47185 10773Node: typedef asection49671 10774Node: section prototypes74252 10775Node: Symbols83932 10776Node: Reading Symbols85527 10777Node: Writing Symbols86634 10778Node: Mini Symbols88343 10779Node: typedef asymbol89317 10780Node: symbol handling functions94682 10781Node: Archives100024 10782Node: Formats103750 10783Node: Relocations106698 10784Node: typedef arelent107425 10785Node: howto manager123236 10786Node: Core Files191032 10787Node: Targets192849 10788Node: bfd_target194819 10789Node: Architectures215124 10790Node: Opening and Closing237607 10791Node: Internal248871 10792Node: File Caching255204 10793Node: Linker Functions257118 10794Node: Creating a Linker Hash Table258791 10795Node: Adding Symbols to the Hash Table260529 10796Node: Differing file formats261429 10797Node: Adding symbols from an object file263154 10798Node: Adding symbols from an archive265305 10799Node: Performing the Final Link267719 10800Node: Information provided by the linker268961 10801Node: Relocating the section contents270115 10802Node: Writing the symbol table271866 10803Node: Hash Tables274908 10804Node: Creating and Freeing a Hash Table276106 10805Node: Looking Up or Entering a String277356 10806Node: Traversing a Hash Table278609 10807Node: Deriving a New Hash Table Type279398 10808Node: Define the Derived Structures280464 10809Node: Write the Derived Creation Routine281545 10810Node: Write Other Derived Routines284169 10811Node: BFD back ends285484 10812Node: What to Put Where285754 10813Node: aout285934 10814Node: coff292252 10815Node: elf317003 10816Node: mmo317866 10817Node: File layout318794 10818Node: Symbol-table324441 10819Node: mmo section mapping328210 10820Node: GNU Free Documentation License331862 10821Node: BFD Index351591 10822 10823End Tag Table 10824