1 This is binutils.info, produced by makeinfo version 4.8 from 2 binutils.texi. 3 4 Copyright (C) 1991-2014 Free Software Foundation, Inc. 5 6 Permission is granted to copy, distribute and/or modify this document 7 under the terms of the GNU Free Documentation License, Version 1.3 or 8 any later version published by the Free Software Foundation; with no 9 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover 10 Texts. A copy of the license is included in the section entitled "GNU 11 Free Documentation License". 12 13 INFO-DIR-SECTION Software development 14 START-INFO-DIR-ENTRY 15 * Binutils: (binutils). The GNU binary utilities. 16 END-INFO-DIR-ENTRY 17 18 INFO-DIR-SECTION Individual utilities 19 START-INFO-DIR-ENTRY 20 * addr2line: (binutils)addr2line. Convert addresses to file and line. 21 * ar: (binutils)ar. Create, modify, and extract from archives. 22 * c++filt: (binutils)c++filt. Filter to demangle encoded C++ symbols. 23 * cxxfilt: (binutils)c++filt. MS-DOS name for c++filt. 24 * dlltool: (binutils)dlltool. Create files needed to build and use DLLs. 25 * nlmconv: (binutils)nlmconv. Converts object code into an NLM. 26 * nm: (binutils)nm. List symbols from object files. 27 * objcopy: (binutils)objcopy. Copy and translate object files. 28 * objdump: (binutils)objdump. Display information from object files. 29 * ranlib: (binutils)ranlib. Generate index to archive contents. 30 * readelf: (binutils)readelf. Display the contents of ELF format files. 31 * size: (binutils)size. List section sizes and total size. 32 * strings: (binutils)strings. List printable strings from files. 33 * strip: (binutils)strip. Discard symbols. 34 * elfedit: (binutils)elfedit. Update the ELF header of ELF files. 35 * windmc: (binutils)windmc. Generator for Windows message resources. 36 * windres: (binutils)windres. Manipulate Windows resources. 37 END-INFO-DIR-ENTRY 38 39 40 File: binutils.info, Node: Top, Next: ar, Up: (dir) 41 42 Introduction 43 ************ 44 45 This brief manual contains documentation for the GNU binary utilities 46 (GNU Binutils) version 2.25: 47 48 This document is distributed under the terms of the GNU Free 49 Documentation License version 1.3. A copy of the license is included 50 in the section entitled "GNU Free Documentation License". 51 52 * Menu: 53 54 * ar:: Create, modify, and extract from archives 55 * nm:: List symbols from object files 56 * objcopy:: Copy and translate object files 57 * objdump:: Display information from object files 58 * ranlib:: Generate index to archive contents 59 * size:: List section sizes and total size 60 * strings:: List printable strings from files 61 * strip:: Discard symbols 62 * c++filt:: Filter to demangle encoded C++ symbols 63 * cxxfilt: c++filt. MS-DOS name for c++filt 64 * addr2line:: Convert addresses to file and line 65 * nlmconv:: Converts object code into an NLM 66 * windmc:: Generator for Windows message resources 67 * windres:: Manipulate Windows resources 68 * dlltool:: Create files needed to build and use DLLs 69 * readelf:: Display the contents of ELF format files 70 * elfedit:: Update the ELF header of ELF files 71 * Common Options:: Command-line options for all utilities 72 * Selecting the Target System:: How these utilities determine the target 73 * Reporting Bugs:: Reporting Bugs 74 * GNU Free Documentation License:: GNU Free Documentation License 75 * Binutils Index:: Binutils Index 76 77 78 File: binutils.info, Node: ar, Next: nm, Prev: Top, Up: Top 79 80 1 ar 81 **** 82 83 ar [-]P[MOD] [`--plugin' NAME] [`--target' BFDNAME] [RELPOS] [COUNT] ARCHIVE [MEMBER...] 84 ar -M [ <mri-script ] 85 86 The GNU `ar' program creates, modifies, and extracts from archives. 87 An "archive" is a single file holding a collection of other files in a 88 structure that makes it possible to retrieve the original individual 89 files (called "members" of the archive). 90 91 The original files' contents, mode (permissions), timestamp, owner, 92 and group are preserved in the archive, and can be restored on 93 extraction. 94 95 GNU `ar' can maintain archives whose members have names of any 96 length; however, depending on how `ar' is configured on your system, a 97 limit on member-name length may be imposed for compatibility with 98 archive formats maintained with other tools. If it exists, the limit 99 is often 15 characters (typical of formats related to a.out) or 16 100 characters (typical of formats related to coff). 101 102 `ar' is considered a binary utility because archives of this sort 103 are most often used as "libraries" holding commonly needed subroutines. 104 105 `ar' creates an index to the symbols defined in relocatable object 106 modules in the archive when you specify the modifier `s'. Once 107 created, this index is updated in the archive whenever `ar' makes a 108 change to its contents (save for the `q' update operation). An archive 109 with such an index speeds up linking to the library, and allows 110 routines in the library to call each other without regard to their 111 placement in the archive. 112 113 You may use `nm -s' or `nm --print-armap' to list this index table. 114 If an archive lacks the table, another form of `ar' called `ranlib' can 115 be used to add just the table. 116 117 GNU `ar' can optionally create a _thin_ archive, which contains a 118 symbol index and references to the original copies of the member files 119 of the archive. This is useful for building libraries for use within a 120 local build tree, where the relocatable objects are expected to remain 121 available, and copying the contents of each object would only waste 122 time and space. 123 124 An archive can either be _thin_ or it can be normal. It cannot be 125 both at the same time. Once an archive is created its format cannot be 126 changed without first deleting it and then creating a new archive in 127 its place. 128 129 Thin archives are also _flattened_, so that adding one thin archive 130 to another thin archive does not nest it, as would happen with a normal 131 archive. Instead the elements of the first archive are added 132 individually to the second archive. 133 134 The paths to the elements of the archive are stored relative to the 135 archive itself. For security reasons absolute paths and paths with a 136 `/../' component are not allowed. 137 138 GNU `ar' is designed to be compatible with two different facilities. 139 You can control its activity using command-line options, like the 140 different varieties of `ar' on Unix systems; or, if you specify the 141 single command-line option `-M', you can control it with a script 142 supplied via standard input, like the MRI "librarian" program. 143 144 * Menu: 145 146 * ar cmdline:: Controlling `ar' on the command line 147 * ar scripts:: Controlling `ar' with a script 148 149 150 File: binutils.info, Node: ar cmdline, Next: ar scripts, Up: ar 151 152 1.1 Controlling `ar' on the Command Line 153 ======================================== 154 155 ar [`-X32_64'] [`-']P[MOD] [`--plugin' NAME] [`--target' BFDNAME] [RELPOS] [COUNT] ARCHIVE [MEMBER...] 156 157 When you use `ar' in the Unix style, `ar' insists on at least two 158 arguments to execute: one keyletter specifying the _operation_ 159 (optionally accompanied by other keyletters specifying _modifiers_), 160 and the archive name to act on. 161 162 Most operations can also accept further MEMBER arguments, specifying 163 particular files to operate on. 164 165 GNU `ar' allows you to mix the operation code P and modifier flags 166 MOD in any order, within the first command-line argument. 167 168 If you wish, you may begin the first command-line argument with a 169 dash. 170 171 The P keyletter specifies what operation to execute; it may be any 172 of the following, but you must specify only one of them: 173 174 `d' 175 _Delete_ modules from the archive. Specify the names of modules to 176 be deleted as MEMBER...; the archive is untouched if you specify 177 no files to delete. 178 179 If you specify the `v' modifier, `ar' lists each module as it is 180 deleted. 181 182 `m' 183 Use this operation to _move_ members in an archive. 184 185 The ordering of members in an archive can make a difference in how 186 programs are linked using the library, if a symbol is defined in 187 more than one member. 188 189 If no modifiers are used with `m', any members you name in the 190 MEMBER arguments are moved to the _end_ of the archive; you can 191 use the `a', `b', or `i' modifiers to move them to a specified 192 place instead. 193 194 `p' 195 _Print_ the specified members of the archive, to the standard 196 output file. If the `v' modifier is specified, show the member 197 name before copying its contents to standard output. 198 199 If you specify no MEMBER arguments, all the files in the archive 200 are printed. 201 202 `q' 203 _Quick append_; Historically, add the files MEMBER... to the end of 204 ARCHIVE, without checking for replacement. 205 206 The modifiers `a', `b', and `i' do _not_ affect this operation; 207 new members are always placed at the end of the archive. 208 209 The modifier `v' makes `ar' list each file as it is appended. 210 211 Since the point of this operation is speed, implementations of 212 `ar' have the option of not updating the archive's symbol table if 213 one exists. Too many different systems however assume that symbol 214 tables are always up-to-date, so GNU `ar' will rebuild the table 215 even with a quick append. 216 217 Note - GNU `ar' treats the command `qs' as a synonym for `r' - 218 replacing already existing files in the archive and appending new 219 ones at the end. 220 221 `r' 222 Insert the files MEMBER... into ARCHIVE (with _replacement_). This 223 operation differs from `q' in that any previously existing members 224 are deleted if their names match those being added. 225 226 If one of the files named in MEMBER... does not exist, `ar' 227 displays an error message, and leaves undisturbed any existing 228 members of the archive matching that name. 229 230 By default, new members are added at the end of the file; but you 231 may use one of the modifiers `a', `b', or `i' to request placement 232 relative to some existing member. 233 234 The modifier `v' used with this operation elicits a line of output 235 for each file inserted, along with one of the letters `a' or `r' 236 to indicate whether the file was appended (no old member deleted) 237 or replaced. 238 239 `s' 240 Add an index to the archive, or update it if it already exists. 241 Note this command is an exception to the rule that there can only 242 be one command letter, as it is possible to use it as either a 243 command or a modifier. In either case it does the same thing. 244 245 `t' 246 Display a _table_ listing the contents of ARCHIVE, or those of the 247 files listed in MEMBER... that are present in the archive. 248 Normally only the member name is shown; if you also want to see 249 the modes (permissions), timestamp, owner, group, and size, you can 250 request that by also specifying the `v' modifier. 251 252 If you do not specify a MEMBER, all files in the archive are 253 listed. 254 255 If there is more than one file with the same name (say, `fie') in 256 an archive (say `b.a'), `ar t b.a fie' lists only the first 257 instance; to see them all, you must ask for a complete listing--in 258 our example, `ar t b.a'. 259 260 `x' 261 _Extract_ members (named MEMBER) from the archive. You can use 262 the `v' modifier with this operation, to request that `ar' list 263 each name as it extracts it. 264 265 If you do not specify a MEMBER, all files in the archive are 266 extracted. 267 268 Files cannot be extracted from a thin archive. 269 270 `--help' 271 Displays the list of command line options supported by `ar' and 272 then exits. 273 274 `--version' 275 Displays the version information of `ar' and then exits. 276 277 278 A number of modifiers (MOD) may immediately follow the P keyletter, 279 to specify variations on an operation's behavior: 280 281 `a' 282 Add new files _after_ an existing member of the archive. If you 283 use the modifier `a', the name of an existing archive member must 284 be present as the RELPOS argument, before the ARCHIVE 285 specification. 286 287 `b' 288 Add new files _before_ an existing member of the archive. If you 289 use the modifier `b', the name of an existing archive member must 290 be present as the RELPOS argument, before the ARCHIVE 291 specification. (same as `i'). 292 293 `c' 294 _Create_ the archive. The specified ARCHIVE is always created if 295 it did not exist, when you request an update. But a warning is 296 issued unless you specify in advance that you expect to create it, 297 by using this modifier. 298 299 `D' 300 Operate in _deterministic_ mode. When adding files and the archive 301 index use zero for UIDs, GIDs, timestamps, and use consistent file 302 modes for all files. When this option is used, if `ar' is used 303 with identical options and identical input files, multiple runs 304 will create identical output files regardless of the input files' 305 owners, groups, file modes, or modification times. 306 307 If `binutils' was configured with 308 `--enable-deterministic-archives', then this mode is on by default. 309 It can be disabled with the `U' modifier, below. 310 311 `f' 312 Truncate names in the archive. GNU `ar' will normally permit file 313 names of any length. This will cause it to create archives which 314 are not compatible with the native `ar' program on some systems. 315 If this is a concern, the `f' modifier may be used to truncate file 316 names when putting them in the archive. 317 318 `i' 319 Insert new files _before_ an existing member of the archive. If 320 you use the modifier `i', the name of an existing archive member 321 must be present as the RELPOS argument, before the ARCHIVE 322 specification. (same as `b'). 323 324 `l' 325 This modifier is accepted but not used. 326 327 `N' 328 Uses the COUNT parameter. This is used if there are multiple 329 entries in the archive with the same name. Extract or delete 330 instance COUNT of the given name from the archive. 331 332 `o' 333 Preserve the _original_ dates of members when extracting them. If 334 you do not specify this modifier, files extracted from the archive 335 are stamped with the time of extraction. 336 337 `P' 338 Use the full path name when matching names in the archive. GNU 339 `ar' can not create an archive with a full path name (such archives 340 are not POSIX complaint), but other archive creators can. This 341 option will cause GNU `ar' to match file names using a complete 342 path name, which can be convenient when extracting a single file 343 from an archive created by another tool. 344 345 `s' 346 Write an object-file index into the archive, or update an existing 347 one, even if no other change is made to the archive. You may use 348 this modifier flag either with any operation, or alone. Running 349 `ar s' on an archive is equivalent to running `ranlib' on it. 350 351 `S' 352 Do not generate an archive symbol table. This can speed up 353 building a large library in several steps. The resulting archive 354 can not be used with the linker. In order to build a symbol 355 table, you must omit the `S' modifier on the last execution of 356 `ar', or you must run `ranlib' on the archive. 357 358 `T' 359 Make the specified ARCHIVE a _thin_ archive. If it already exists 360 and is a regular archive, the existing members must be present in 361 the same directory as ARCHIVE. 362 363 `u' 364 Normally, `ar r'... inserts all files listed into the archive. If 365 you would like to insert _only_ those of the files you list that 366 are newer than existing members of the same names, use this 367 modifier. The `u' modifier is allowed only for the operation `r' 368 (replace). In particular, the combination `qu' is not allowed, 369 since checking the timestamps would lose any speed advantage from 370 the operation `q'. 371 372 `U' 373 Do _not_ operate in _deterministic_ mode. This is the inverse of 374 the `D' modifier, above: added files and the archive index will 375 get their actual UID, GID, timestamp, and file mode values. 376 377 This is the default unless `binutils' was configured with 378 `--enable-deterministic-archives'. 379 380 `v' 381 This modifier requests the _verbose_ version of an operation. Many 382 operations display additional information, such as filenames 383 processed, when the modifier `v' is appended. 384 385 `V' 386 This modifier shows the version number of `ar'. 387 388 `ar' ignores an initial option spelt `-X32_64', for compatibility 389 with AIX. The behaviour produced by this option is the default for GNU 390 `ar'. `ar' does not support any of the other `-X' options; in 391 particular, it does not support `-X32' which is the default for AIX 392 `ar'. 393 394 The optional command line switch `--plugin' NAME causes `ar' to load 395 the plugin called NAME which adds support for more file formats. This 396 option is only available if the toolchain has been built with plugin 397 support enabled. 398 399 The optional command line switch `--target' BFDNAME specifies that 400 the archive members are in an object code format different from your 401 system's default format. See *Note Target Selection::, for more 402 information. 403 404 405 File: binutils.info, Node: ar scripts, Prev: ar cmdline, Up: ar 406 407 1.2 Controlling `ar' with a Script 408 ================================== 409 410 ar -M [ <SCRIPT ] 411 412 If you use the single command-line option `-M' with `ar', you can 413 control its operation with a rudimentary command language. This form 414 of `ar' operates interactively if standard input is coming directly 415 from a terminal. During interactive use, `ar' prompts for input (the 416 prompt is `AR >'), and continues executing even after errors. If you 417 redirect standard input to a script file, no prompts are issued, and 418 `ar' abandons execution (with a nonzero exit code) on any error. 419 420 The `ar' command language is _not_ designed to be equivalent to the 421 command-line options; in fact, it provides somewhat less control over 422 archives. The only purpose of the command language is to ease the 423 transition to GNU `ar' for developers who already have scripts written 424 for the MRI "librarian" program. 425 426 The syntax for the `ar' command language is straightforward: 427 * commands are recognized in upper or lower case; for example, `LIST' 428 is the same as `list'. In the following descriptions, commands are 429 shown in upper case for clarity. 430 431 * a single command may appear on each line; it is the first word on 432 the line. 433 434 * empty lines are allowed, and have no effect. 435 436 * comments are allowed; text after either of the characters `*' or 437 `;' is ignored. 438 439 * Whenever you use a list of names as part of the argument to an `ar' 440 command, you can separate the individual names with either commas 441 or blanks. Commas are shown in the explanations below, for 442 clarity. 443 444 * `+' is used as a line continuation character; if `+' appears at 445 the end of a line, the text on the following line is considered 446 part of the current command. 447 448 Here are the commands you can use in `ar' scripts, or when using 449 `ar' interactively. Three of them have special significance: 450 451 `OPEN' or `CREATE' specify a "current archive", which is a temporary 452 file required for most of the other commands. 453 454 `SAVE' commits the changes so far specified by the script. Prior to 455 `SAVE', commands affect only the temporary copy of the current archive. 456 457 `ADDLIB ARCHIVE' 458 `ADDLIB ARCHIVE (MODULE, MODULE, ... MODULE)' 459 Add all the contents of ARCHIVE (or, if specified, each named 460 MODULE from ARCHIVE) to the current archive. 461 462 Requires prior use of `OPEN' or `CREATE'. 463 464 `ADDMOD MEMBER, MEMBER, ... MEMBER' 465 Add each named MEMBER as a module in the current archive. 466 467 Requires prior use of `OPEN' or `CREATE'. 468 469 `CLEAR' 470 Discard the contents of the current archive, canceling the effect 471 of any operations since the last `SAVE'. May be executed (with no 472 effect) even if no current archive is specified. 473 474 `CREATE ARCHIVE' 475 Creates an archive, and makes it the current archive (required for 476 many other commands). The new archive is created with a temporary 477 name; it is not actually saved as ARCHIVE until you use `SAVE'. 478 You can overwrite existing archives; similarly, the contents of any 479 existing file named ARCHIVE will not be destroyed until `SAVE'. 480 481 `DELETE MODULE, MODULE, ... MODULE' 482 Delete each listed MODULE from the current archive; equivalent to 483 `ar -d ARCHIVE MODULE ... MODULE'. 484 485 Requires prior use of `OPEN' or `CREATE'. 486 487 `DIRECTORY ARCHIVE (MODULE, ... MODULE)' 488 `DIRECTORY ARCHIVE (MODULE, ... MODULE) OUTPUTFILE' 489 List each named MODULE present in ARCHIVE. The separate command 490 `VERBOSE' specifies the form of the output: when verbose output is 491 off, output is like that of `ar -t ARCHIVE MODULE...'. When 492 verbose output is on, the listing is like `ar -tv ARCHIVE 493 MODULE...'. 494 495 Output normally goes to the standard output stream; however, if you 496 specify OUTPUTFILE as a final argument, `ar' directs the output to 497 that file. 498 499 `END' 500 Exit from `ar', with a `0' exit code to indicate successful 501 completion. This command does not save the output file; if you 502 have changed the current archive since the last `SAVE' command, 503 those changes are lost. 504 505 `EXTRACT MODULE, MODULE, ... MODULE' 506 Extract each named MODULE from the current archive, writing them 507 into the current directory as separate files. Equivalent to `ar -x 508 ARCHIVE MODULE...'. 509 510 Requires prior use of `OPEN' or `CREATE'. 511 512 `LIST' 513 Display full contents of the current archive, in "verbose" style 514 regardless of the state of `VERBOSE'. The effect is like `ar tv 515 ARCHIVE'. (This single command is a GNU `ar' enhancement, rather 516 than present for MRI compatibility.) 517 518 Requires prior use of `OPEN' or `CREATE'. 519 520 `OPEN ARCHIVE' 521 Opens an existing archive for use as the current archive (required 522 for many other commands). Any changes as the result of subsequent 523 commands will not actually affect ARCHIVE until you next use 524 `SAVE'. 525 526 `REPLACE MODULE, MODULE, ... MODULE' 527 In the current archive, replace each existing MODULE (named in the 528 `REPLACE' arguments) from files in the current working directory. 529 To execute this command without errors, both the file, and the 530 module in the current archive, must exist. 531 532 Requires prior use of `OPEN' or `CREATE'. 533 534 `VERBOSE' 535 Toggle an internal flag governing the output from `DIRECTORY'. 536 When the flag is on, `DIRECTORY' output matches output from `ar 537 -tv '.... 538 539 `SAVE' 540 Commit your changes to the current archive, and actually save it 541 as a file with the name specified in the last `CREATE' or `OPEN' 542 command. 543 544 Requires prior use of `OPEN' or `CREATE'. 545 546 547 548 File: binutils.info, Node: nm, Next: objcopy, Prev: ar, Up: Top 549 550 2 nm 551 **** 552 553 nm [`-A'|`-o'|`--print-file-name'] [`-a'|`--debug-syms'] 554 [`-B'|`--format=bsd'] [`-C'|`--demangle'[=STYLE]] 555 [`-D'|`--dynamic'] [`-f'FORMAT|`--format='FORMAT] 556 [`-g'|`--extern-only'] [`-h'|`--help'] 557 [`-l'|`--line-numbers'] [`-n'|`-v'|`--numeric-sort'] 558 [`-P'|`--portability'] [`-p'|`--no-sort'] 559 [`-r'|`--reverse-sort'] [`-S'|`--print-size'] 560 [`-s'|`--print-armap'] [`-t' RADIX|`--radix='RADIX] 561 [`-u'|`--undefined-only'] [`-V'|`--version'] 562 [`-X 32_64'] [`--defined-only'] [`--no-demangle'] 563 [`--plugin' NAME] [`--size-sort'] [`--special-syms'] 564 [`--synthetic'] [`--target='BFDNAME] 565 [OBJFILE...] 566 567 GNU `nm' lists the symbols from object files OBJFILE.... If no 568 object files are listed as arguments, `nm' assumes the file `a.out'. 569 570 For each symbol, `nm' shows: 571 572 * The symbol value, in the radix selected by options (see below), or 573 hexadecimal by default. 574 575 * The symbol type. At least the following types are used; others 576 are, as well, depending on the object file format. If lowercase, 577 the symbol is usually local; if uppercase, the symbol is global 578 (external). There are however a few lowercase symbols that are 579 shown for special global symbols (`u', `v' and `w'). 580 581 `A' 582 The symbol's value is absolute, and will not be changed by 583 further linking. 584 585 `B' 586 `b' 587 The symbol is in the uninitialized data section (known as 588 BSS). 589 590 `C' 591 The symbol is common. Common symbols are uninitialized data. 592 When linking, multiple common symbols may appear with the 593 same name. If the symbol is defined anywhere, the common 594 symbols are treated as undefined references. For more 595 details on common symbols, see the discussion of -warn-common 596 in *Note Linker options: (ld.info)Options. 597 598 `D' 599 `d' 600 The symbol is in the initialized data section. 601 602 `G' 603 `g' 604 The symbol is in an initialized data section for small 605 objects. Some object file formats permit more efficient 606 access to small data objects, such as a global int variable 607 as opposed to a large global array. 608 609 `i' 610 For PE format files this indicates that the symbol is in a 611 section specific to the implementation of DLLs. For ELF 612 format files this indicates that the symbol is an indirect 613 function. This is a GNU extension to the standard set of ELF 614 symbol types. It indicates a symbol which if referenced by a 615 relocation does not evaluate to its address, but instead must 616 be invoked at runtime. The runtime execution will then 617 return the value to be used in the relocation. 618 619 `I' 620 The symbol is an indirect reference to another symbol. 621 622 `N' 623 The symbol is a debugging symbol. 624 625 `p' 626 The symbols is in a stack unwind section. 627 628 `R' 629 `r' 630 The symbol is in a read only data section. 631 632 `S' 633 `s' 634 The symbol is in an uninitialized data section for small 635 objects. 636 637 `T' 638 `t' 639 The symbol is in the text (code) section. 640 641 `U' 642 The symbol is undefined. 643 644 `u' 645 The symbol is a unique global symbol. This is a GNU 646 extension to the standard set of ELF symbol bindings. For 647 such a symbol the dynamic linker will make sure that in the 648 entire process there is just one symbol with this name and 649 type in use. 650 651 `V' 652 `v' 653 The symbol is a weak object. When a weak defined symbol is 654 linked with a normal defined symbol, the normal defined 655 symbol is used with no error. When a weak undefined symbol 656 is linked and the symbol is not defined, the value of the 657 weak symbol becomes zero with no error. On some systems, 658 uppercase indicates that a default value has been specified. 659 660 `W' 661 `w' 662 The symbol is a weak symbol that has not been specifically 663 tagged as a weak object symbol. When a weak defined symbol 664 is linked with a normal defined symbol, the normal defined 665 symbol is used with no error. When a weak undefined symbol 666 is linked and the symbol is not defined, the value of the 667 symbol is determined in a system-specific manner without 668 error. On some systems, uppercase indicates that a default 669 value has been specified. 670 671 `-' 672 The symbol is a stabs symbol in an a.out object file. In 673 this case, the next values printed are the stabs other field, 674 the stabs desc field, and the stab type. Stabs symbols are 675 used to hold debugging information. 676 677 `?' 678 The symbol type is unknown, or object file format specific. 679 680 * The symbol name. 681 682 The long and short forms of options, shown here as alternatives, are 683 equivalent. 684 685 `-A' 686 `-o' 687 `--print-file-name' 688 Precede each symbol by the name of the input file (or archive 689 member) in which it was found, rather than identifying the input 690 file once only, before all of its symbols. 691 692 `-a' 693 `--debug-syms' 694 Display all symbols, even debugger-only symbols; normally these 695 are not listed. 696 697 `-B' 698 The same as `--format=bsd' (for compatibility with the MIPS `nm'). 699 700 `-C' 701 `--demangle[=STYLE]' 702 Decode ("demangle") low-level symbol names into user-level names. 703 Besides removing any initial underscore prepended by the system, 704 this makes C++ function names readable. Different compilers have 705 different mangling styles. The optional demangling style argument 706 can be used to choose an appropriate demangling style for your 707 compiler. *Note c++filt::, for more information on demangling. 708 709 `--no-demangle' 710 Do not demangle low-level symbol names. This is the default. 711 712 `-D' 713 `--dynamic' 714 Display the dynamic symbols rather than the normal symbols. This 715 is only meaningful for dynamic objects, such as certain types of 716 shared libraries. 717 718 `-f FORMAT' 719 `--format=FORMAT' 720 Use the output format FORMAT, which can be `bsd', `sysv', or 721 `posix'. The default is `bsd'. Only the first character of 722 FORMAT is significant; it can be either upper or lower case. 723 724 `-g' 725 `--extern-only' 726 Display only external symbols. 727 728 `-h' 729 `--help' 730 Show a summary of the options to `nm' and exit. 731 732 `-l' 733 `--line-numbers' 734 For each symbol, use debugging information to try to find a 735 filename and line number. For a defined symbol, look for the line 736 number of the address of the symbol. For an undefined symbol, 737 look for the line number of a relocation entry which refers to the 738 symbol. If line number information can be found, print it after 739 the other symbol information. 740 741 `-n' 742 `-v' 743 `--numeric-sort' 744 Sort symbols numerically by their addresses, rather than 745 alphabetically by their names. 746 747 `-p' 748 `--no-sort' 749 Do not bother to sort the symbols in any order; print them in the 750 order encountered. 751 752 `-P' 753 `--portability' 754 Use the POSIX.2 standard output format instead of the default 755 format. Equivalent to `-f posix'. 756 757 `-r' 758 `--reverse-sort' 759 Reverse the order of the sort (whether numeric or alphabetic); let 760 the last come first. 761 762 `-S' 763 `--print-size' 764 Print both value and size of defined symbols for the `bsd' output 765 style. This option has no effect for object formats that do not 766 record symbol sizes, unless `--size-sort' is also used in which 767 case a calculated size is displayed. 768 769 `-s' 770 `--print-armap' 771 When listing symbols from archive members, include the index: a 772 mapping (stored in the archive by `ar' or `ranlib') of which 773 modules contain definitions for which names. 774 775 `-t RADIX' 776 `--radix=RADIX' 777 Use RADIX as the radix for printing the symbol values. It must be 778 `d' for decimal, `o' for octal, or `x' for hexadecimal. 779 780 `-u' 781 `--undefined-only' 782 Display only undefined symbols (those external to each object 783 file). 784 785 `-V' 786 `--version' 787 Show the version number of `nm' and exit. 788 789 `-X' 790 This option is ignored for compatibility with the AIX version of 791 `nm'. It takes one parameter which must be the string `32_64'. 792 The default mode of AIX `nm' corresponds to `-X 32', which is not 793 supported by GNU `nm'. 794 795 `--defined-only' 796 Display only defined symbols for each object file. 797 798 `--plugin NAME' 799 Load the plugin called NAME to add support for extra target types. 800 This option is only available if the toolchain has been built 801 with plugin support enabled. 802 803 `--size-sort' 804 Sort symbols by size. The size is computed as the difference 805 between the value of the symbol and the value of the symbol with 806 the next higher value. If the `bsd' output format is used the 807 size of the symbol is printed, rather than the value, and `-S' 808 must be used in order both size and value to be printed. 809 810 `--special-syms' 811 Display symbols which have a target-specific special meaning. 812 These symbols are usually used by the target for some special 813 processing and are not normally helpful when included in the 814 normal symbol lists. For example for ARM targets this option 815 would skip the mapping symbols used to mark transitions between 816 ARM code, THUMB code and data. 817 818 `--synthetic' 819 Include synthetic symbols in the output. These are special symbols 820 created by the linker for various purposes. They are not shown by 821 default since they are not part of the binary's original source 822 code. 823 824 `--target=BFDNAME' 825 Specify an object code format other than your system's default 826 format. *Note Target Selection::, for more information. 827 828 829 830 File: binutils.info, Node: objcopy, Next: objdump, Prev: nm, Up: Top 831 832 3 objcopy 833 ********* 834 835 objcopy [`-F' BFDNAME|`--target='BFDNAME] 836 [`-I' BFDNAME|`--input-target='BFDNAME] 837 [`-O' BFDNAME|`--output-target='BFDNAME] 838 [`-B' BFDARCH|`--binary-architecture='BFDARCH] 839 [`-S'|`--strip-all'] 840 [`-g'|`--strip-debug'] 841 [`-K' SYMBOLNAME|`--keep-symbol='SYMBOLNAME] 842 [`-N' SYMBOLNAME|`--strip-symbol='SYMBOLNAME] 843 [`--strip-unneeded-symbol='SYMBOLNAME] 844 [`-G' SYMBOLNAME|`--keep-global-symbol='SYMBOLNAME] 845 [`--localize-hidden'] 846 [`-L' SYMBOLNAME|`--localize-symbol='SYMBOLNAME] 847 [`--globalize-symbol='SYMBOLNAME] 848 [`-W' SYMBOLNAME|`--weaken-symbol='SYMBOLNAME] 849 [`-w'|`--wildcard'] 850 [`-x'|`--discard-all'] 851 [`-X'|`--discard-locals'] 852 [`-b' BYTE|`--byte='BYTE] 853 [`-i' [BREADTH]|`--interleave'[=BREADTH]] 854 [`--interleave-width='WIDTH] 855 [`-j' SECTIONPATTERN|`--only-section='SECTIONPATTERN] 856 [`-R' SECTIONPATTERN|`--remove-section='SECTIONPATTERN] 857 [`-p'|`--preserve-dates'] 858 [`-D'|`--enable-deterministic-archives'] 859 [`-U'|`--disable-deterministic-archives'] 860 [`--debugging'] 861 [`--gap-fill='VAL] 862 [`--pad-to='ADDRESS] 863 [`--set-start='VAL] 864 [`--adjust-start='INCR] 865 [`--change-addresses='INCR] 866 [`--change-section-address' SECTIONPATTERN{=,+,-}VAL] 867 [`--change-section-lma' SECTIONPATTERN{=,+,-}VAL] 868 [`--change-section-vma' SECTIONPATTERN{=,+,-}VAL] 869 [`--change-warnings'] [`--no-change-warnings'] 870 [`--set-section-flags' SECTIONPATTERN=FLAGS] 871 [`--add-section' SECTIONNAME=FILENAME] 872 [`--dump-section' SECTIONNAME=FILENAME] 873 [`--rename-section' OLDNAME=NEWNAME[,FLAGS]] 874 [`--long-section-names' {enable,disable,keep}] 875 [`--change-leading-char'] [`--remove-leading-char'] 876 [`--reverse-bytes='NUM] 877 [`--srec-len='IVAL] [`--srec-forceS3'] 878 [`--redefine-sym' OLD=NEW] 879 [`--redefine-syms='FILENAME] 880 [`--weaken'] 881 [`--keep-symbols='FILENAME] 882 [`--strip-symbols='FILENAME] 883 [`--strip-unneeded-symbols='FILENAME] 884 [`--keep-global-symbols='FILENAME] 885 [`--localize-symbols='FILENAME] 886 [`--globalize-symbols='FILENAME] 887 [`--weaken-symbols='FILENAME] 888 [`--alt-machine-code='INDEX] 889 [`--prefix-symbols='STRING] 890 [`--prefix-sections='STRING] 891 [`--prefix-alloc-sections='STRING] 892 [`--add-gnu-debuglink='PATH-TO-FILE] 893 [`--keep-file-symbols'] 894 [`--only-keep-debug'] 895 [`--strip-dwo'] 896 [`--extract-dwo'] 897 [`--extract-symbol'] 898 [`--writable-text'] 899 [`--readonly-text'] 900 [`--pure'] 901 [`--impure'] 902 [`--file-alignment='NUM] 903 [`--heap='SIZE] 904 [`--image-base='ADDRESS] 905 [`--section-alignment='NUM] 906 [`--stack='SIZE] 907 [`--subsystem='WHICH:MAJOR.MINOR] 908 [`--compress-debug-sections'] 909 [`--decompress-debug-sections'] 910 [`--dwarf-depth=N'] 911 [`--dwarf-start=N'] 912 [`-v'|`--verbose'] 913 [`-V'|`--version'] 914 [`--help'] [`--info'] 915 INFILE [OUTFILE] 916 917 The GNU `objcopy' utility copies the contents of an object file to 918 another. `objcopy' uses the GNU BFD Library to read and write the 919 object files. It can write the destination object file in a format 920 different from that of the source object file. The exact behavior of 921 `objcopy' is controlled by command-line options. Note that `objcopy' 922 should be able to copy a fully linked file between any two formats. 923 However, copying a relocatable object file between any two formats may 924 not work as expected. 925 926 `objcopy' creates temporary files to do its translations and deletes 927 them afterward. `objcopy' uses BFD to do all its translation work; it 928 has access to all the formats described in BFD and thus is able to 929 recognize most formats without being told explicitly. *Note BFD: 930 (ld.info)BFD. 931 932 `objcopy' can be used to generate S-records by using an output 933 target of `srec' (e.g., use `-O srec'). 934 935 `objcopy' can be used to generate a raw binary file by using an 936 output target of `binary' (e.g., use `-O binary'). When `objcopy' 937 generates a raw binary file, it will essentially produce a memory dump 938 of the contents of the input object file. All symbols and relocation 939 information will be discarded. The memory dump will start at the load 940 address of the lowest section copied into the output file. 941 942 When generating an S-record or a raw binary file, it may be helpful 943 to use `-S' to remove sections containing debugging information. In 944 some cases `-R' will be useful to remove sections which contain 945 information that is not needed by the binary file. 946 947 Note--`objcopy' is not able to change the endianness of its input 948 files. If the input format has an endianness (some formats do not), 949 `objcopy' can only copy the inputs into file formats that have the same 950 endianness or which have no endianness (e.g., `srec'). (However, see 951 the `--reverse-bytes' option.) 952 953 `INFILE' 954 `OUTFILE' 955 The input and output files, respectively. If you do not specify 956 OUTFILE, `objcopy' creates a temporary file and destructively 957 renames the result with the name of INFILE. 958 959 `-I BFDNAME' 960 `--input-target=BFDNAME' 961 Consider the source file's object format to be BFDNAME, rather than 962 attempting to deduce it. *Note Target Selection::, for more 963 information. 964 965 `-O BFDNAME' 966 `--output-target=BFDNAME' 967 Write the output file using the object format BFDNAME. *Note 968 Target Selection::, for more information. 969 970 `-F BFDNAME' 971 `--target=BFDNAME' 972 Use BFDNAME as the object format for both the input and the output 973 file; i.e., simply transfer data from source to destination with no 974 translation. *Note Target Selection::, for more information. 975 976 `-B BFDARCH' 977 `--binary-architecture=BFDARCH' 978 Useful when transforming a architecture-less input file into an 979 object file. In this case the output architecture can be set to 980 BFDARCH. This option will be ignored if the input file has a 981 known BFDARCH. You can access this binary data inside a program 982 by referencing the special symbols that are created by the 983 conversion process. These symbols are called 984 _binary_OBJFILE_start, _binary_OBJFILE_end and 985 _binary_OBJFILE_size. e.g. you can transform a picture file into 986 an object file and then access it in your code using these symbols. 987 988 `-j SECTIONPATTERN' 989 `--only-section=SECTIONPATTERN' 990 Copy only the indicated sections from the input file to the output 991 file. This option may be given more than once. Note that using 992 this option inappropriately may make the output file unusable. 993 Wildcard characters are accepted in SECTIONPATTERN. 994 995 `-R SECTIONPATTERN' 996 `--remove-section=SECTIONPATTERN' 997 Remove any section matching SECTIONPATTERN from the output file. 998 This option may be given more than once. Note that using this 999 option inappropriately may make the output file unusable. Wildcard 1000 characters are accepted in SECTIONPATTERN. Using both the `-j' 1001 and `-R' options together results in undefined behaviour. 1002 1003 `-S' 1004 `--strip-all' 1005 Do not copy relocation and symbol information from the source file. 1006 1007 `-g' 1008 `--strip-debug' 1009 Do not copy debugging symbols or sections from the source file. 1010 1011 `--strip-unneeded' 1012 Strip all symbols that are not needed for relocation processing. 1013 1014 `-K SYMBOLNAME' 1015 `--keep-symbol=SYMBOLNAME' 1016 When stripping symbols, keep symbol SYMBOLNAME even if it would 1017 normally be stripped. This option may be given more than once. 1018 1019 `-N SYMBOLNAME' 1020 `--strip-symbol=SYMBOLNAME' 1021 Do not copy symbol SYMBOLNAME from the source file. This option 1022 may be given more than once. 1023 1024 `--strip-unneeded-symbol=SYMBOLNAME' 1025 Do not copy symbol SYMBOLNAME from the source file unless it is 1026 needed by a relocation. This option may be given more than once. 1027 1028 `-G SYMBOLNAME' 1029 `--keep-global-symbol=SYMBOLNAME' 1030 Keep only symbol SYMBOLNAME global. Make all other symbols local 1031 to the file, so that they are not visible externally. This option 1032 may be given more than once. 1033 1034 `--localize-hidden' 1035 In an ELF object, mark all symbols that have hidden or internal 1036 visibility as local. This option applies on top of 1037 symbol-specific localization options such as `-L'. 1038 1039 `-L SYMBOLNAME' 1040 `--localize-symbol=SYMBOLNAME' 1041 Make symbol SYMBOLNAME local to the file, so that it is not 1042 visible externally. This option may be given more than once. 1043 1044 `-W SYMBOLNAME' 1045 `--weaken-symbol=SYMBOLNAME' 1046 Make symbol SYMBOLNAME weak. This option may be given more than 1047 once. 1048 1049 `--globalize-symbol=SYMBOLNAME' 1050 Give symbol SYMBOLNAME global scoping so that it is visible 1051 outside of the file in which it is defined. This option may be 1052 given more than once. 1053 1054 `-w' 1055 `--wildcard' 1056 Permit regular expressions in SYMBOLNAMEs used in other command 1057 line options. The question mark (?), asterisk (*), backslash (\) 1058 and square brackets ([]) operators can be used anywhere in the 1059 symbol name. If the first character of the symbol name is the 1060 exclamation point (!) then the sense of the switch is reversed for 1061 that symbol. For example: 1062 1063 -w -W !foo -W fo* 1064 1065 would cause objcopy to weaken all symbols that start with "fo" 1066 except for the symbol "foo". 1067 1068 `-x' 1069 `--discard-all' 1070 Do not copy non-global symbols from the source file. 1071 1072 `-X' 1073 `--discard-locals' 1074 Do not copy compiler-generated local symbols. (These usually 1075 start with `L' or `.'.) 1076 1077 `-b BYTE' 1078 `--byte=BYTE' 1079 If interleaving has been enabled via the `--interleave' option 1080 then start the range of bytes to keep at the BYTEth byte. BYTE 1081 can be in the range from 0 to BREADTH-1, where BREADTH is the 1082 value given by the `--interleave' option. 1083 1084 `-i [BREADTH]' 1085 `--interleave[=BREADTH]' 1086 Only copy a range out of every BREADTH bytes. (Header data is not 1087 affected). Select which byte in the range begins the copy with 1088 the `--byte' option. Select the width of the range with the 1089 `--interleave-width' option. 1090 1091 This option is useful for creating files to program ROM. It is 1092 typically used with an `srec' output target. Note that `objcopy' 1093 will complain if you do not specify the `--byte' option as well. 1094 1095 The default interleave breadth is 4, so with `--byte' set to 0, 1096 `objcopy' would copy the first byte out of every four bytes from 1097 the input to the output. 1098 1099 `--interleave-width=WIDTH' 1100 When used with the `--interleave' option, copy WIDTH bytes at a 1101 time. The start of the range of bytes to be copied is set by the 1102 `--byte' option, and the extent of the range is set with the 1103 `--interleave' option. 1104 1105 The default value for this option is 1. The value of WIDTH plus 1106 the BYTE value set by the `--byte' option must not exceed the 1107 interleave breadth set by the `--interleave' option. 1108 1109 This option can be used to create images for two 16-bit flashes 1110 interleaved in a 32-bit bus by passing `-b 0 -i 4 1111 --interleave-width=2' and `-b 2 -i 4 --interleave-width=2' to two 1112 `objcopy' commands. If the input was '12345678' then the outputs 1113 would be '1256' and '3478' respectively. 1114 1115 `-p' 1116 `--preserve-dates' 1117 Set the access and modification dates of the output file to be the 1118 same as those of the input file. 1119 1120 `-D' 1121 `--enable-deterministic-archives' 1122 Operate in _deterministic_ mode. When copying archive members and 1123 writing the archive index, use zero for UIDs, GIDs, timestamps, 1124 and use consistent file modes for all files. 1125 1126 If `binutils' was configured with 1127 `--enable-deterministic-archives', then this mode is on by default. 1128 It can be disabled with the `-U' option, below. 1129 1130 `-U' 1131 `--disable-deterministic-archives' 1132 Do _not_ operate in _deterministic_ mode. This is the inverse of 1133 the `-D' option, above: when copying archive members and writing 1134 the archive index, use their actual UID, GID, timestamp, and file 1135 mode values. 1136 1137 This is the default unless `binutils' was configured with 1138 `--enable-deterministic-archives'. 1139 1140 `--debugging' 1141 Convert debugging information, if possible. This is not the 1142 default because only certain debugging formats are supported, and 1143 the conversion process can be time consuming. 1144 1145 `--gap-fill VAL' 1146 Fill gaps between sections with VAL. This operation applies to 1147 the _load address_ (LMA) of the sections. It is done by increasing 1148 the size of the section with the lower address, and filling in the 1149 extra space created with VAL. 1150 1151 `--pad-to ADDRESS' 1152 Pad the output file up to the load address ADDRESS. This is done 1153 by increasing the size of the last section. The extra space is 1154 filled in with the value specified by `--gap-fill' (default zero). 1155 1156 `--set-start VAL' 1157 Set the start address of the new file to VAL. Not all object file 1158 formats support setting the start address. 1159 1160 `--change-start INCR' 1161 `--adjust-start INCR' 1162 Change the start address by adding INCR. Not all object file 1163 formats support setting the start address. 1164 1165 `--change-addresses INCR' 1166 `--adjust-vma INCR' 1167 Change the VMA and LMA addresses of all sections, as well as the 1168 start address, by adding INCR. Some object file formats do not 1169 permit section addresses to be changed arbitrarily. Note that 1170 this does not relocate the sections; if the program expects 1171 sections to be loaded at a certain address, and this option is 1172 used to change the sections such that they are loaded at a 1173 different address, the program may fail. 1174 1175 `--change-section-address SECTIONPATTERN{=,+,-}VAL' 1176 `--adjust-section-vma SECTIONPATTERN{=,+,-}VAL' 1177 Set or change both the VMA address and the LMA address of any 1178 section matching SECTIONPATTERN. If `=' is used, the section 1179 address is set to VAL. Otherwise, VAL is added to or subtracted 1180 from the section address. See the comments under 1181 `--change-addresses', above. If SECTIONPATTERN does not match any 1182 sections in the input file, a warning will be issued, unless 1183 `--no-change-warnings' is used. 1184 1185 `--change-section-lma SECTIONPATTERN{=,+,-}VAL' 1186 Set or change the LMA address of any sections matching 1187 SECTIONPATTERN. The LMA address is the address where the section 1188 will be loaded into memory at program load time. Normally this is 1189 the same as the VMA address, which is the address of the section 1190 at program run time, but on some systems, especially those where a 1191 program is held in ROM, the two can be different. If `=' is used, 1192 the section address is set to VAL. Otherwise, VAL is added to or 1193 subtracted from the section address. See the comments under 1194 `--change-addresses', above. If SECTIONPATTERN does not match any 1195 sections in the input file, a warning will be issued, unless 1196 `--no-change-warnings' is used. 1197 1198 `--change-section-vma SECTIONPATTERN{=,+,-}VAL' 1199 Set or change the VMA address of any section matching 1200 SECTIONPATTERN. The VMA address is the address where the section 1201 will be located once the program has started executing. Normally 1202 this is the same as the LMA address, which is the address where 1203 the section will be loaded into memory, but on some systems, 1204 especially those where a program is held in ROM, the two can be 1205 different. If `=' is used, the section address is set to VAL. 1206 Otherwise, VAL is added to or subtracted from the section address. 1207 See the comments under `--change-addresses', above. If 1208 SECTIONPATTERN does not match any sections in the input file, a 1209 warning will be issued, unless `--no-change-warnings' is used. 1210 1211 `--change-warnings' 1212 `--adjust-warnings' 1213 If `--change-section-address' or `--change-section-lma' or 1214 `--change-section-vma' is used, and the section pattern does not 1215 match any sections, issue a warning. This is the default. 1216 1217 `--no-change-warnings' 1218 `--no-adjust-warnings' 1219 Do not issue a warning if `--change-section-address' or 1220 `--adjust-section-lma' or `--adjust-section-vma' is used, even if 1221 the section pattern does not match any sections. 1222 1223 `--set-section-flags SECTIONPATTERN=FLAGS' 1224 Set the flags for any sections matching SECTIONPATTERN. The FLAGS 1225 argument is a comma separated string of flag names. The 1226 recognized names are `alloc', `contents', `load', `noload', 1227 `readonly', `code', `data', `rom', `share', and `debug'. You can 1228 set the `contents' flag for a section which does not have 1229 contents, but it is not meaningful to clear the `contents' flag of 1230 a section which does have contents-just remove the section 1231 instead. Not all flags are meaningful for all object file formats. 1232 1233 `--add-section SECTIONNAME=FILENAME' 1234 Add a new section named SECTIONNAME while copying the file. The 1235 contents of the new section are taken from the file FILENAME. The 1236 size of the section will be the size of the file. This option only 1237 works on file formats which can support sections with arbitrary 1238 names. Note - it may be necessary to use the `--set-section-flags' 1239 option to set the attributes of the newly created section. 1240 1241 `--dump-section SECTIONNAME=FILENAME' 1242 Place the contents of section named SECTIONNAME into the file 1243 FILENAME, overwriting any contents that may have been there 1244 previously. This option is the inverse of `--add-section'. This 1245 option is similar to the `--only-section' option except that it 1246 does not create a formatted file, it just dumps the contents as 1247 raw binary data, without applying any relocations. The option can 1248 be specified more than once. 1249 1250 `--rename-section OLDNAME=NEWNAME[,FLAGS]' 1251 Rename a section from OLDNAME to NEWNAME, optionally changing the 1252 section's flags to FLAGS in the process. This has the advantage 1253 over usng a linker script to perform the rename in that the output 1254 stays as an object file and does not become a linked executable. 1255 1256 This option is particularly helpful when the input format is 1257 binary, since this will always create a section called .data. If 1258 for example, you wanted instead to create a section called .rodata 1259 containing binary data you could use the following command line to 1260 achieve it: 1261 1262 objcopy -I binary -O <output_format> -B <architecture> \ 1263 --rename-section .data=.rodata,alloc,load,readonly,data,contents \ 1264 <input_binary_file> <output_object_file> 1265 1266 `--long-section-names {enable,disable,keep}' 1267 Controls the handling of long section names when processing `COFF' 1268 and `PE-COFF' object formats. The default behaviour, `keep', is 1269 to preserve long section names if any are present in the input 1270 file. The `enable' and `disable' options forcibly enable or 1271 disable the use of long section names in the output object; when 1272 `disable' is in effect, any long section names in the input object 1273 will be truncated. The `enable' option will only emit long 1274 section names if any are present in the inputs; this is mostly the 1275 same as `keep', but it is left undefined whether the `enable' 1276 option might force the creation of an empty string table in the 1277 output file. 1278 1279 `--change-leading-char' 1280 Some object file formats use special characters at the start of 1281 symbols. The most common such character is underscore, which 1282 compilers often add before every symbol. This option tells 1283 `objcopy' to change the leading character of every symbol when it 1284 converts between object file formats. If the object file formats 1285 use the same leading character, this option has no effect. 1286 Otherwise, it will add a character, or remove a character, or 1287 change a character, as appropriate. 1288 1289 `--remove-leading-char' 1290 If the first character of a global symbol is a special symbol 1291 leading character used by the object file format, remove the 1292 character. The most common symbol leading character is 1293 underscore. This option will remove a leading underscore from all 1294 global symbols. This can be useful if you want to link together 1295 objects of different file formats with different conventions for 1296 symbol names. This is different from `--change-leading-char' 1297 because it always changes the symbol name when appropriate, 1298 regardless of the object file format of the output file. 1299 1300 `--reverse-bytes=NUM' 1301 Reverse the bytes in a section with output contents. A section 1302 length must be evenly divisible by the value given in order for 1303 the swap to be able to take place. Reversing takes place before 1304 the interleaving is performed. 1305 1306 This option is used typically in generating ROM images for 1307 problematic target systems. For example, on some target boards, 1308 the 32-bit words fetched from 8-bit ROMs are re-assembled in 1309 little-endian byte order regardless of the CPU byte order. 1310 Depending on the programming model, the endianness of the ROM may 1311 need to be modified. 1312 1313 Consider a simple file with a section containing the following 1314 eight bytes: `12345678'. 1315 1316 Using `--reverse-bytes=2' for the above example, the bytes in the 1317 output file would be ordered `21436587'. 1318 1319 Using `--reverse-bytes=4' for the above example, the bytes in the 1320 output file would be ordered `43218765'. 1321 1322 By using `--reverse-bytes=2' for the above example, followed by 1323 `--reverse-bytes=4' on the output file, the bytes in the second 1324 output file would be ordered `34127856'. 1325 1326 `--srec-len=IVAL' 1327 Meaningful only for srec output. Set the maximum length of the 1328 Srecords being produced to IVAL. This length covers both address, 1329 data and crc fields. 1330 1331 `--srec-forceS3' 1332 Meaningful only for srec output. Avoid generation of S1/S2 1333 records, creating S3-only record format. 1334 1335 `--redefine-sym OLD=NEW' 1336 Change the name of a symbol OLD, to NEW. This can be useful when 1337 one is trying link two things together for which you have no 1338 source, and there are name collisions. 1339 1340 `--redefine-syms=FILENAME' 1341 Apply `--redefine-sym' to each symbol pair "OLD NEW" listed in the 1342 file FILENAME. FILENAME is simply a flat file, with one symbol 1343 pair per line. Line comments may be introduced by the hash 1344 character. This option may be given more than once. 1345 1346 `--weaken' 1347 Change all global symbols in the file to be weak. This can be 1348 useful when building an object which will be linked against other 1349 objects using the `-R' option to the linker. This option is only 1350 effective when using an object file format which supports weak 1351 symbols. 1352 1353 `--keep-symbols=FILENAME' 1354 Apply `--keep-symbol' option to each symbol listed in the file 1355 FILENAME. FILENAME is simply a flat file, with one symbol name 1356 per line. Line comments may be introduced by the hash character. 1357 This option may be given more than once. 1358 1359 `--strip-symbols=FILENAME' 1360 Apply `--strip-symbol' option to each symbol listed in the file 1361 FILENAME. FILENAME is simply a flat file, with one symbol name 1362 per line. Line comments may be introduced by the hash character. 1363 This option may be given more than once. 1364 1365 `--strip-unneeded-symbols=FILENAME' 1366 Apply `--strip-unneeded-symbol' option to each symbol listed in 1367 the file FILENAME. FILENAME is simply a flat file, with one 1368 symbol name per line. Line comments may be introduced by the hash 1369 character. This option may be given more than once. 1370 1371 `--keep-global-symbols=FILENAME' 1372 Apply `--keep-global-symbol' option to each symbol listed in the 1373 file FILENAME. FILENAME is simply a flat file, with one symbol 1374 name per line. Line comments may be introduced by the hash 1375 character. This option may be given more than once. 1376 1377 `--localize-symbols=FILENAME' 1378 Apply `--localize-symbol' option to each symbol listed in the file 1379 FILENAME. FILENAME is simply a flat file, with one symbol name 1380 per line. Line comments may be introduced by the hash character. 1381 This option may be given more than once. 1382 1383 `--globalize-symbols=FILENAME' 1384 Apply `--globalize-symbol' option to each symbol listed in the file 1385 FILENAME. FILENAME is simply a flat file, with one symbol name 1386 per line. Line comments may be introduced by the hash character. 1387 This option may be given more than once. 1388 1389 `--weaken-symbols=FILENAME' 1390 Apply `--weaken-symbol' option to each symbol listed in the file 1391 FILENAME. FILENAME is simply a flat file, with one symbol name 1392 per line. Line comments may be introduced by the hash character. 1393 This option may be given more than once. 1394 1395 `--alt-machine-code=INDEX' 1396 If the output architecture has alternate machine codes, use the 1397 INDEXth code instead of the default one. This is useful in case a 1398 machine is assigned an official code and the tool-chain adopts the 1399 new code, but other applications still depend on the original code 1400 being used. For ELF based architectures if the INDEX alternative 1401 does not exist then the value is treated as an absolute number to 1402 be stored in the e_machine field of the ELF header. 1403 1404 `--writable-text' 1405 Mark the output text as writable. This option isn't meaningful 1406 for all object file formats. 1407 1408 `--readonly-text' 1409 Make the output text write protected. This option isn't 1410 meaningful for all object file formats. 1411 1412 `--pure' 1413 Mark the output file as demand paged. This option isn't 1414 meaningful for all object file formats. 1415 1416 `--impure' 1417 Mark the output file as impure. This option isn't meaningful for 1418 all object file formats. 1419 1420 `--prefix-symbols=STRING' 1421 Prefix all symbols in the output file with STRING. 1422 1423 `--prefix-sections=STRING' 1424 Prefix all section names in the output file with STRING. 1425 1426 `--prefix-alloc-sections=STRING' 1427 Prefix all the names of all allocated sections in the output file 1428 with STRING. 1429 1430 `--add-gnu-debuglink=PATH-TO-FILE' 1431 Creates a .gnu_debuglink section which contains a reference to 1432 PATH-TO-FILE and adds it to the output file. 1433 1434 `--keep-file-symbols' 1435 When stripping a file, perhaps with `--strip-debug' or 1436 `--strip-unneeded', retain any symbols specifying source file 1437 names, which would otherwise get stripped. 1438 1439 `--only-keep-debug' 1440 Strip a file, removing contents of any sections that would not be 1441 stripped by `--strip-debug' and leaving the debugging sections 1442 intact. In ELF files, this preserves all note sections in the 1443 output. 1444 1445 The intention is that this option will be used in conjunction with 1446 `--add-gnu-debuglink' to create a two part executable. One a 1447 stripped binary which will occupy less space in RAM and in a 1448 distribution and the second a debugging information file which is 1449 only needed if debugging abilities are required. The suggested 1450 procedure to create these files is as follows: 1451 1452 1. Link the executable as normal. Assuming that is is called 1453 `foo' then... 1454 1455 2. Run `objcopy --only-keep-debug foo foo.dbg' to create a file 1456 containing the debugging info. 1457 1458 3. Run `objcopy --strip-debug foo' to create a stripped 1459 executable. 1460 1461 4. Run `objcopy --add-gnu-debuglink=foo.dbg foo' to add a link 1462 to the debugging info into the stripped executable. 1463 1464 Note--the choice of `.dbg' as an extension for the debug info file 1465 is arbitrary. Also the `--only-keep-debug' step is optional. You 1466 could instead do this: 1467 1468 1. Link the executable as normal. 1469 1470 2. Copy `foo' to `foo.full' 1471 1472 3. Run `objcopy --strip-debug foo' 1473 1474 4. Run `objcopy --add-gnu-debuglink=foo.full foo' 1475 1476 i.e., the file pointed to by the `--add-gnu-debuglink' can be the 1477 full executable. It does not have to be a file created by the 1478 `--only-keep-debug' switch. 1479 1480 Note--this switch is only intended for use on fully linked files. 1481 It does not make sense to use it on object files where the 1482 debugging information may be incomplete. Besides the 1483 gnu_debuglink feature currently only supports the presence of one 1484 filename containing debugging information, not multiple filenames 1485 on a one-per-object-file basis. 1486 1487 `--strip-dwo' 1488 Remove the contents of all DWARF .dwo sections, leaving the 1489 remaining debugging sections and all symbols intact. This option 1490 is intended for use by the compiler as part of the `-gsplit-dwarf' 1491 option, which splits debug information between the .o file and a 1492 separate .dwo file. The compiler generates all debug information 1493 in the same file, then uses the `--extract-dwo' option to copy the 1494 .dwo sections to the .dwo file, then the `--strip-dwo' option to 1495 remove those sections from the original .o file. 1496 1497 `--extract-dwo' 1498 Extract the contents of all DWARF .dwo sections. See the 1499 `--strip-dwo' option for more information. 1500 1501 `--file-alignment NUM' 1502 Specify the file alignment. Sections in the file will always 1503 begin at file offsets which are multiples of this number. This 1504 defaults to 512. [This option is specific to PE targets.] 1505 1506 `--heap RESERVE' 1507 `--heap RESERVE,COMMIT' 1508 Specify the number of bytes of memory to reserve (and optionally 1509 commit) to be used as heap for this program. [This option is 1510 specific to PE targets.] 1511 1512 `--image-base VALUE' 1513 Use VALUE as the base address of your program or dll. This is the 1514 lowest memory location that will be used when your program or dll 1515 is loaded. To reduce the need to relocate and improve performance 1516 of your dlls, each should have a unique base address and not 1517 overlap any other dlls. The default is 0x400000 for executables, 1518 and 0x10000000 for dlls. [This option is specific to PE targets.] 1519 1520 `--section-alignment NUM' 1521 Sets the section alignment. Sections in memory will always begin 1522 at addresses which are a multiple of this number. Defaults to 1523 0x1000. [This option is specific to PE targets.] 1524 1525 `--stack RESERVE' 1526 `--stack RESERVE,COMMIT' 1527 Specify the number of bytes of memory to reserve (and optionally 1528 commit) to be used as stack for this program. [This option is 1529 specific to PE targets.] 1530 1531 `--subsystem WHICH' 1532 `--subsystem WHICH:MAJOR' 1533 `--subsystem WHICH:MAJOR.MINOR' 1534 Specifies the subsystem under which your program will execute. The 1535 legal values for WHICH are `native', `windows', `console', 1536 `posix', `efi-app', `efi-bsd', `efi-rtd', `sal-rtd', and `xbox'. 1537 You may optionally set the subsystem version also. Numeric values 1538 are also accepted for WHICH. [This option is specific to PE 1539 targets.] 1540 1541 `--extract-symbol' 1542 Keep the file's section flags and symbols but remove all section 1543 data. Specifically, the option: 1544 1545 * removes the contents of all sections; 1546 1547 * sets the size of every section to zero; and 1548 1549 * sets the file's start address to zero. 1550 1551 This option is used to build a `.sym' file for a VxWorks kernel. 1552 It can also be a useful way of reducing the size of a 1553 `--just-symbols' linker input file. 1554 1555 `--compress-debug-sections' 1556 Compress DWARF debug sections using zlib. 1557 1558 `--decompress-debug-sections' 1559 Decompress DWARF debug sections using zlib. 1560 1561 `-V' 1562 `--version' 1563 Show the version number of `objcopy'. 1564 1565 `-v' 1566 `--verbose' 1567 Verbose output: list all object files modified. In the case of 1568 archives, `objcopy -V' lists all members of the archive. 1569 1570 `--help' 1571 Show a summary of the options to `objcopy'. 1572 1573 `--info' 1574 Display a list showing all architectures and object formats 1575 available. 1576 1577 1578 File: binutils.info, Node: objdump, Next: ranlib, Prev: objcopy, Up: Top 1579 1580 4 objdump 1581 ********* 1582 1583 objdump [`-a'|`--archive-headers'] 1584 [`-b' BFDNAME|`--target=BFDNAME'] 1585 [`-C'|`--demangle'[=STYLE] ] 1586 [`-d'|`--disassemble'] 1587 [`-D'|`--disassemble-all'] 1588 [`-z'|`--disassemble-zeroes'] 1589 [`-EB'|`-EL'|`--endian='{big | little }] 1590 [`-f'|`--file-headers'] 1591 [`-F'|`--file-offsets'] 1592 [`--file-start-context'] 1593 [`-g'|`--debugging'] 1594 [`-e'|`--debugging-tags'] 1595 [`-h'|`--section-headers'|`--headers'] 1596 [`-i'|`--info'] 1597 [`-j' SECTION|`--section='SECTION] 1598 [`-l'|`--line-numbers'] 1599 [`-S'|`--source'] 1600 [`-m' MACHINE|`--architecture='MACHINE] 1601 [`-M' OPTIONS|`--disassembler-options='OPTIONS] 1602 [`-p'|`--private-headers'] 1603 [`-P' OPTIONS|`--private='OPTIONS] 1604 [`-r'|`--reloc'] 1605 [`-R'|`--dynamic-reloc'] 1606 [`-s'|`--full-contents'] 1607 [`-W[lLiaprmfFsoRt]'| 1608 `--dwarf'[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]] 1609 [`-G'|`--stabs'] 1610 [`-t'|`--syms'] 1611 [`-T'|`--dynamic-syms'] 1612 [`-x'|`--all-headers'] 1613 [`-w'|`--wide'] 1614 [`--start-address='ADDRESS] 1615 [`--stop-address='ADDRESS] 1616 [`--prefix-addresses'] 1617 [`--[no-]show-raw-insn'] 1618 [`--adjust-vma='OFFSET] 1619 [`--special-syms'] 1620 [`--prefix='PREFIX] 1621 [`--prefix-strip='LEVEL] 1622 [`--insn-width='WIDTH] 1623 [`-V'|`--version'] 1624 [`-H'|`--help'] 1625 OBJFILE... 1626 1627 `objdump' displays information about one or more object files. The 1628 options control what particular information to display. This 1629 information is mostly useful to programmers who are working on the 1630 compilation tools, as opposed to programmers who just want their 1631 program to compile and work. 1632 1633 OBJFILE... are the object files to be examined. When you specify 1634 archives, `objdump' shows information on each of the member object 1635 files. 1636 1637 The long and short forms of options, shown here as alternatives, are 1638 equivalent. At least one option from the list 1639 `-a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x' must be 1640 given. 1641 1642 `-a' 1643 `--archive-header' 1644 If any of the OBJFILE files are archives, display the archive 1645 header information (in a format similar to `ls -l'). Besides the 1646 information you could list with `ar tv', `objdump -a' shows the 1647 object file format of each archive member. 1648 1649 `--adjust-vma=OFFSET' 1650 When dumping information, first add OFFSET to all the section 1651 addresses. This is useful if the section addresses do not 1652 correspond to the symbol table, which can happen when putting 1653 sections at particular addresses when using a format which can not 1654 represent section addresses, such as a.out. 1655 1656 `-b BFDNAME' 1657 `--target=BFDNAME' 1658 Specify that the object-code format for the object files is 1659 BFDNAME. This option may not be necessary; OBJDUMP can 1660 automatically recognize many formats. 1661 1662 For example, 1663 objdump -b oasys -m vax -h fu.o 1664 displays summary information from the section headers (`-h') of 1665 `fu.o', which is explicitly identified (`-m') as a VAX object file 1666 in the format produced by Oasys compilers. You can list the 1667 formats available with the `-i' option. *Note Target Selection::, 1668 for more information. 1669 1670 `-C' 1671 `--demangle[=STYLE]' 1672 Decode ("demangle") low-level symbol names into user-level names. 1673 Besides removing any initial underscore prepended by the system, 1674 this makes C++ function names readable. Different compilers have 1675 different mangling styles. The optional demangling style argument 1676 can be used to choose an appropriate demangling style for your 1677 compiler. *Note c++filt::, for more information on demangling. 1678 1679 `-g' 1680 `--debugging' 1681 Display debugging information. This attempts to parse STABS and 1682 IEEE debugging format information stored in the file and print it 1683 out using a C like syntax. If neither of these formats are found 1684 this option falls back on the `-W' option to print any DWARF 1685 information in the file. 1686 1687 `-e' 1688 `--debugging-tags' 1689 Like `-g', but the information is generated in a format compatible 1690 with ctags tool. 1691 1692 `-d' 1693 `--disassemble' 1694 Display the assembler mnemonics for the machine instructions from 1695 OBJFILE. This option only disassembles those sections which are 1696 expected to contain instructions. 1697 1698 `-D' 1699 `--disassemble-all' 1700 Like `-d', but disassemble the contents of all sections, not just 1701 those expected to contain instructions. 1702 1703 If the target is an ARM architecture this switch also has the 1704 effect of forcing the disassembler to decode pieces of data found 1705 in code sections as if they were instructions. 1706 1707 `--prefix-addresses' 1708 When disassembling, print the complete address on each line. This 1709 is the older disassembly format. 1710 1711 `-EB' 1712 `-EL' 1713 `--endian={big|little}' 1714 Specify the endianness of the object files. This only affects 1715 disassembly. This can be useful when disassembling a file format 1716 which does not describe endianness information, such as S-records. 1717 1718 `-f' 1719 `--file-headers' 1720 Display summary information from the overall header of each of the 1721 OBJFILE files. 1722 1723 `-F' 1724 `--file-offsets' 1725 When disassembling sections, whenever a symbol is displayed, also 1726 display the file offset of the region of data that is about to be 1727 dumped. If zeroes are being skipped, then when disassembly 1728 resumes, tell the user how many zeroes were skipped and the file 1729 offset of the location from where the disassembly resumes. When 1730 dumping sections, display the file offset of the location from 1731 where the dump starts. 1732 1733 `--file-start-context' 1734 Specify that when displaying interlisted source code/disassembly 1735 (assumes `-S') from a file that has not yet been displayed, extend 1736 the context to the start of the file. 1737 1738 `-h' 1739 `--section-headers' 1740 `--headers' 1741 Display summary information from the section headers of the object 1742 file. 1743 1744 File segments may be relocated to nonstandard addresses, for 1745 example by using the `-Ttext', `-Tdata', or `-Tbss' options to 1746 `ld'. However, some object file formats, such as a.out, do not 1747 store the starting address of the file segments. In those 1748 situations, although `ld' relocates the sections correctly, using 1749 `objdump -h' to list the file section headers cannot show the 1750 correct addresses. Instead, it shows the usual addresses, which 1751 are implicit for the target. 1752 1753 `-H' 1754 `--help' 1755 Print a summary of the options to `objdump' and exit. 1756 1757 `-i' 1758 `--info' 1759 Display a list showing all architectures and object formats 1760 available for specification with `-b' or `-m'. 1761 1762 `-j NAME' 1763 `--section=NAME' 1764 Display information only for section NAME. 1765 1766 `-l' 1767 `--line-numbers' 1768 Label the display (using debugging information) with the filename 1769 and source line numbers corresponding to the object code or relocs 1770 shown. Only useful with `-d', `-D', or `-r'. 1771 1772 `-m MACHINE' 1773 `--architecture=MACHINE' 1774 Specify the architecture to use when disassembling object files. 1775 This can be useful when disassembling object files which do not 1776 describe architecture information, such as S-records. You can 1777 list the available architectures with the `-i' option. 1778 1779 If the target is an ARM architecture then this switch has an 1780 additional effect. It restricts the disassembly to only those 1781 instructions supported by the architecture specified by MACHINE. 1782 If it is necessary to use this switch because the input file does 1783 not contain any architecture information, but it is also desired to 1784 disassemble all the instructions use `-marm'. 1785 1786 `-M OPTIONS' 1787 `--disassembler-options=OPTIONS' 1788 Pass target specific information to the disassembler. Only 1789 supported on some targets. If it is necessary to specify more 1790 than one disassembler option then multiple `-M' options can be 1791 used or can be placed together into a comma separated list. 1792 1793 If the target is an ARM architecture then this switch can be used 1794 to select which register name set is used during disassembler. 1795 Specifying `-M reg-names-std' (the default) will select the 1796 register names as used in ARM's instruction set documentation, but 1797 with register 13 called 'sp', register 14 called 'lr' and register 1798 15 called 'pc'. Specifying `-M reg-names-apcs' will select the 1799 name set used by the ARM Procedure Call Standard, whilst 1800 specifying `-M reg-names-raw' will just use `r' followed by the 1801 register number. 1802 1803 There are also two variants on the APCS register naming scheme 1804 enabled by `-M reg-names-atpcs' and `-M reg-names-special-atpcs' 1805 which use the ARM/Thumb Procedure Call Standard naming 1806 conventions. (Either with the normal register names or the 1807 special register names). 1808 1809 This option can also be used for ARM architectures to force the 1810 disassembler to interpret all instructions as Thumb instructions by 1811 using the switch `--disassembler-options=force-thumb'. This can be 1812 useful when attempting to disassemble thumb code produced by other 1813 compilers. 1814 1815 For the x86, some of the options duplicate functions of the `-m' 1816 switch, but allow finer grained control. Multiple selections from 1817 the following may be specified as a comma separated string. 1818 `x86-64', `i386' and `i8086' select disassembly for the given 1819 architecture. `intel' and `att' select between intel syntax mode 1820 and AT&T syntax mode. `intel-mnemonic' and `att-mnemonic' select 1821 between intel mnemonic mode and AT&T mnemonic mode. 1822 `intel-mnemonic' implies `intel' and `att-mnemonic' implies `att'. 1823 `addr64', `addr32', `addr16', `data32' and `data16' specify the 1824 default address size and operand size. These four options will be 1825 overridden if `x86-64', `i386' or `i8086' appear later in the 1826 option string. Lastly, `suffix', when in AT&T mode, instructs the 1827 disassembler to print a mnemonic suffix even when the suffix could 1828 be inferred by the operands. 1829 1830 For PowerPC, `booke' controls the disassembly of BookE 1831 instructions. `32' and `64' select PowerPC and PowerPC64 1832 disassembly, respectively. `e300' selects disassembly for the 1833 e300 family. `440' selects disassembly for the PowerPC 440. 1834 `ppcps' selects disassembly for the paired single instructions of 1835 the PPC750CL. 1836 1837 For MIPS, this option controls the printing of instruction mnemonic 1838 names and register names in disassembled instructions. Multiple 1839 selections from the following may be specified as a comma separated 1840 string, and invalid options are ignored: 1841 1842 `no-aliases' 1843 Print the 'raw' instruction mnemonic instead of some pseudo 1844 instruction mnemonic. I.e., print 'daddu' or 'or' instead of 1845 'move', 'sll' instead of 'nop', etc. 1846 1847 `msa' 1848 Disassemble MSA instructions. 1849 1850 `virt' 1851 Disassemble the virtualization ASE instructions. 1852 1853 `xpa' 1854 Disassemble the eXtended Physical Address (XPA) ASE 1855 instructions. 1856 1857 `gpr-names=ABI' 1858 Print GPR (general-purpose register) names as appropriate for 1859 the specified ABI. By default, GPR names are selected 1860 according to the ABI of the binary being disassembled. 1861 1862 `fpr-names=ABI' 1863 Print FPR (floating-point register) names as appropriate for 1864 the specified ABI. By default, FPR numbers are printed 1865 rather than names. 1866 1867 `cp0-names=ARCH' 1868 Print CP0 (system control coprocessor; coprocessor 0) 1869 register names as appropriate for the CPU or architecture 1870 specified by ARCH. By default, CP0 register names are 1871 selected according to the architecture and CPU of the binary 1872 being disassembled. 1873 1874 `hwr-names=ARCH' 1875 Print HWR (hardware register, used by the `rdhwr' 1876 instruction) names as appropriate for the CPU or architecture 1877 specified by ARCH. By default, HWR names are selected 1878 according to the architecture and CPU of the binary being 1879 disassembled. 1880 1881 `reg-names=ABI' 1882 Print GPR and FPR names as appropriate for the selected ABI. 1883 1884 `reg-names=ARCH' 1885 Print CPU-specific register names (CP0 register and HWR names) 1886 as appropriate for the selected CPU or architecture. 1887 1888 For any of the options listed above, ABI or ARCH may be specified 1889 as `numeric' to have numbers printed rather than names, for the 1890 selected types of registers. You can list the available values of 1891 ABI and ARCH using the `--help' option. 1892 1893 For VAX, you can specify function entry addresses with `-M 1894 entry:0xf00ba'. You can use this multiple times to properly 1895 disassemble VAX binary files that don't contain symbol tables (like 1896 ROM dumps). In these cases, the function entry mask would 1897 otherwise be decoded as VAX instructions, which would probably 1898 lead the rest of the function being wrongly disassembled. 1899 1900 `-p' 1901 `--private-headers' 1902 Print information that is specific to the object file format. The 1903 exact information printed depends upon the object file format. 1904 For some object file formats, no additional information is printed. 1905 1906 `-P OPTIONS' 1907 `--private=OPTIONS' 1908 Print information that is specific to the object file format. The 1909 argument OPTIONS is a comma separated list that depends on the 1910 format (the lists of options is displayed with the help). 1911 1912 For XCOFF, the available options are: `header', `aout', 1913 `sections', `syms', `relocs', `lineno', `loader', `except', 1914 `typchk', `traceback', `toc' and `ldinfo'. 1915 1916 `-r' 1917 `--reloc' 1918 Print the relocation entries of the file. If used with `-d' or 1919 `-D', the relocations are printed interspersed with the 1920 disassembly. 1921 1922 `-R' 1923 `--dynamic-reloc' 1924 Print the dynamic relocation entries of the file. This is only 1925 meaningful for dynamic objects, such as certain types of shared 1926 libraries. As for `-r', if used with `-d' or `-D', the 1927 relocations are printed interspersed with the disassembly. 1928 1929 `-s' 1930 `--full-contents' 1931 Display the full contents of any sections requested. By default 1932 all non-empty sections are displayed. 1933 1934 `-S' 1935 `--source' 1936 Display source code intermixed with disassembly, if possible. 1937 Implies `-d'. 1938 1939 `--prefix=PREFIX' 1940 Specify PREFIX to add to the absolute paths when used with `-S'. 1941 1942 `--prefix-strip=LEVEL' 1943 Indicate how many initial directory names to strip off the 1944 hardwired absolute paths. It has no effect without 1945 `--prefix='PREFIX. 1946 1947 `--show-raw-insn' 1948 When disassembling instructions, print the instruction in hex as 1949 well as in symbolic form. This is the default except when 1950 `--prefix-addresses' is used. 1951 1952 `--no-show-raw-insn' 1953 When disassembling instructions, do not print the instruction 1954 bytes. This is the default when `--prefix-addresses' is used. 1955 1956 `--insn-width=WIDTH' 1957 Display WIDTH bytes on a single line when disassembling 1958 instructions. 1959 1960 `-W[lLiaprmfFsoRt]' 1961 `--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]' 1962 Displays the contents of the debug sections in the file, if any are 1963 present. If one of the optional letters or words follows the 1964 switch then only data found in those specific sections will be 1965 dumped. 1966 1967 Note that there is no single letter option to display the content 1968 of trace sections or .gdb_index. 1969 1970 Note: the output from the `=info' option can also be affected by 1971 the options `--dwarf-depth', the `--dwarf-start' and the 1972 `--dwarf-check'. 1973 1974 `--dwarf-depth=N' 1975 Limit the dump of the `.debug_info' section to N children. This 1976 is only useful with `--dwarf=info'. The default is to print all 1977 DIEs; the special value 0 for N will also have this effect. 1978 1979 With a non-zero value for N, DIEs at or deeper than N levels will 1980 not be printed. The range for N is zero-based. 1981 1982 `--dwarf-start=N' 1983 Print only DIEs beginning with the DIE numbered N. This is only 1984 useful with `--dwarf=info'. 1985 1986 If specified, this option will suppress printing of any header 1987 information and all DIEs before the DIE numbered N. Only siblings 1988 and children of the specified DIE will be printed. 1989 1990 This can be used in conjunction with `--dwarf-depth'. 1991 1992 `--dwarf-check' 1993 Enable additional checks for consistency of Dwarf information. 1994 1995 `-G' 1996 `--stabs' 1997 Display the full contents of any sections requested. Display the 1998 contents of the .stab and .stab.index and .stab.excl sections from 1999 an ELF file. This is only useful on systems (such as Solaris 2.0) 2000 in which `.stab' debugging symbol-table entries are carried in an 2001 ELF section. In most other file formats, debugging symbol-table 2002 entries are interleaved with linkage symbols, and are visible in 2003 the `--syms' output. 2004 2005 `--start-address=ADDRESS' 2006 Start displaying data at the specified address. This affects the 2007 output of the `-d', `-r' and `-s' options. 2008 2009 `--stop-address=ADDRESS' 2010 Stop displaying data at the specified address. This affects the 2011 output of the `-d', `-r' and `-s' options. 2012 2013 `-t' 2014 `--syms' 2015 Print the symbol table entries of the file. This is similar to 2016 the information provided by the `nm' program, although the display 2017 format is different. The format of the output depends upon the 2018 format of the file being dumped, but there are two main types. 2019 One looks like this: 2020 2021 [ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss 2022 [ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred 2023 2024 where the number inside the square brackets is the number of the 2025 entry in the symbol table, the SEC number is the section number, 2026 the FL value are the symbol's flag bits, the TY number is the 2027 symbol's type, the SCL number is the symbol's storage class and 2028 the NX value is the number of auxilary entries associated with the 2029 symbol. The last two fields are the symbol's value and its name. 2030 2031 The other common output format, usually seen with ELF based files, 2032 looks like this: 2033 2034 00000000 l d .bss 00000000 .bss 2035 00000000 g .text 00000000 fred 2036 2037 Here the first number is the symbol's value (sometimes refered to 2038 as its address). The next field is actually a set of characters 2039 and spaces indicating the flag bits that are set on the symbol. 2040 These characters are described below. Next is the section with 2041 which the symbol is associated or _*ABS*_ if the section is 2042 absolute (ie not connected with any section), or _*UND*_ if the 2043 section is referenced in the file being dumped, but not defined 2044 there. 2045 2046 After the section name comes another field, a number, which for 2047 common symbols is the alignment and for other symbol is the size. 2048 Finally the symbol's name is displayed. 2049 2050 The flag characters are divided into 7 groups as follows: 2051 `l' 2052 `g' 2053 `u' 2054 `!' 2055 The symbol is a local (l), global (g), unique global (u), 2056 neither global nor local (a space) or both global and local 2057 (!). A symbol can be neither local or global for a variety 2058 of reasons, e.g., because it is used for debugging, but it is 2059 probably an indication of a bug if it is ever both local and 2060 global. Unique global symbols are a GNU extension to the 2061 standard set of ELF symbol bindings. For such a symbol the 2062 dynamic linker will make sure that in the entire process 2063 there is just one symbol with this name and type in use. 2064 2065 `w' 2066 The symbol is weak (w) or strong (a space). 2067 2068 `C' 2069 The symbol denotes a constructor (C) or an ordinary symbol (a 2070 space). 2071 2072 `W' 2073 The symbol is a warning (W) or a normal symbol (a space). A 2074 warning symbol's name is a message to be displayed if the 2075 symbol following the warning symbol is ever referenced. 2076 2077 `I' 2078 2079 `i' 2080 The symbol is an indirect reference to another symbol (I), a 2081 function to be evaluated during reloc processing (i) or a 2082 normal symbol (a space). 2083 2084 `d' 2085 `D' 2086 The symbol is a debugging symbol (d) or a dynamic symbol (D) 2087 or a normal symbol (a space). 2088 2089 `F' 2090 2091 `f' 2092 2093 `O' 2094 The symbol is the name of a function (F) or a file (f) or an 2095 object (O) or just a normal symbol (a space). 2096 2097 `-T' 2098 `--dynamic-syms' 2099 Print the dynamic symbol table entries of the file. This is only 2100 meaningful for dynamic objects, such as certain types of shared 2101 libraries. This is similar to the information provided by the `nm' 2102 program when given the `-D' (`--dynamic') option. 2103 2104 `--special-syms' 2105 When displaying symbols include those which the target considers 2106 to be special in some way and which would not normally be of 2107 interest to the user. 2108 2109 `-V' 2110 `--version' 2111 Print the version number of `objdump' and exit. 2112 2113 `-x' 2114 `--all-headers' 2115 Display all available header information, including the symbol 2116 table and relocation entries. Using `-x' is equivalent to 2117 specifying all of `-a -f -h -p -r -t'. 2118 2119 `-w' 2120 `--wide' 2121 Format some lines for output devices that have more than 80 2122 columns. Also do not truncate symbol names when they are 2123 displayed. 2124 2125 `-z' 2126 `--disassemble-zeroes' 2127 Normally the disassembly output will skip blocks of zeroes. This 2128 option directs the disassembler to disassemble those blocks, just 2129 like any other data. 2130 2131 2132 File: binutils.info, Node: ranlib, Next: size, Prev: objdump, Up: Top 2133 2134 5 ranlib 2135 ******** 2136 2137 ranlib [`--plugin' NAME] [`-DhHvVt'] ARCHIVE 2138 2139 `ranlib' generates an index to the contents of an archive and stores 2140 it in the archive. The index lists each symbol defined by a member of 2141 an archive that is a relocatable object file. 2142 2143 You may use `nm -s' or `nm --print-armap' to list this index. 2144 2145 An archive with such an index speeds up linking to the library and 2146 allows routines in the library to call each other without regard to 2147 their placement in the archive. 2148 2149 The GNU `ranlib' program is another form of GNU `ar'; running 2150 `ranlib' is completely equivalent to executing `ar -s'. *Note ar::. 2151 2152 `-h' 2153 `-H' 2154 `--help' 2155 Show usage information for `ranlib'. 2156 2157 `-v' 2158 `-V' 2159 `--version' 2160 Show the version number of `ranlib'. 2161 2162 `-D' 2163 Operate in _deterministic_ mode. The symbol map archive member's 2164 header will show zero for the UID, GID, and timestamp. When this 2165 option is used, multiple runs will produce identical output files. 2166 2167 If `binutils' was configured with 2168 `--enable-deterministic-archives', then this mode is on by 2169 default. It can be disabled with the `-U' option, described below. 2170 2171 `-t' 2172 Update the timestamp of the symbol map of an archive. 2173 2174 `-U' 2175 Do _not_ operate in _deterministic_ mode. This is the inverse of 2176 the `-D' option, above: the archive index will get actual UID, 2177 GID, timestamp, and file mode values. 2178 2179 If `binutils' was configured _without_ 2180 `--enable-deterministic-archives', then this mode is on by default. 2181 2182 2183 2184 File: binutils.info, Node: size, Next: strings, Prev: ranlib, Up: Top 2185 2186 6 size 2187 ****** 2188 2189 size [`-A'|`-B'|`--format='COMPATIBILITY] 2190 [`--help'] 2191 [`-d'|`-o'|`-x'|`--radix='NUMBER] 2192 [`--common'] 2193 [`-t'|`--totals'] 2194 [`--target='BFDNAME] [`-V'|`--version'] 2195 [OBJFILE...] 2196 2197 The GNU `size' utility lists the section sizes--and the total 2198 size--for each of the object or archive files OBJFILE in its argument 2199 list. By default, one line of output is generated for each object file 2200 or each module in an archive. 2201 2202 OBJFILE... are the object files to be examined. If none are 2203 specified, the file `a.out' will be used. 2204 2205 The command line options have the following meanings: 2206 2207 `-A' 2208 `-B' 2209 `--format=COMPATIBILITY' 2210 Using one of these options, you can choose whether the output from 2211 GNU `size' resembles output from System V `size' (using `-A', or 2212 `--format=sysv'), or Berkeley `size' (using `-B', or 2213 `--format=berkeley'). The default is the one-line format similar 2214 to Berkeley's. 2215 2216 Here is an example of the Berkeley (default) format of output from 2217 `size': 2218 $ size --format=Berkeley ranlib size 2219 text data bss dec hex filename 2220 294880 81920 11592 388392 5ed28 ranlib 2221 294880 81920 11888 388688 5ee50 size 2222 2223 This is the same data, but displayed closer to System V 2224 conventions: 2225 2226 $ size --format=SysV ranlib size 2227 ranlib : 2228 section size addr 2229 .text 294880 8192 2230 .data 81920 303104 2231 .bss 11592 385024 2232 Total 388392 2233 2234 2235 size : 2236 section size addr 2237 .text 294880 8192 2238 .data 81920 303104 2239 .bss 11888 385024 2240 Total 388688 2241 2242 `--help' 2243 Show a summary of acceptable arguments and options. 2244 2245 `-d' 2246 `-o' 2247 `-x' 2248 `--radix=NUMBER' 2249 Using one of these options, you can control whether the size of 2250 each section is given in decimal (`-d', or `--radix=10'); octal 2251 (`-o', or `--radix=8'); or hexadecimal (`-x', or `--radix=16'). 2252 In `--radix=NUMBER', only the three values (8, 10, 16) are 2253 supported. The total size is always given in two radices; decimal 2254 and hexadecimal for `-d' or `-x' output, or octal and hexadecimal 2255 if you're using `-o'. 2256 2257 `--common' 2258 Print total size of common symbols in each file. When using 2259 Berkeley format these are included in the bss size. 2260 2261 `-t' 2262 `--totals' 2263 Show totals of all objects listed (Berkeley format listing mode 2264 only). 2265 2266 `--target=BFDNAME' 2267 Specify that the object-code format for OBJFILE is BFDNAME. This 2268 option may not be necessary; `size' can automatically recognize 2269 many formats. *Note Target Selection::, for more information. 2270 2271 `-V' 2272 `--version' 2273 Display the version number of `size'. 2274 2275 2276 File: binutils.info, Node: strings, Next: strip, Prev: size, Up: Top 2277 2278 7 strings 2279 ********* 2280 2281 strings [`-afovV'] [`-'MIN-LEN] 2282 [`-n' MIN-LEN] [`--bytes='MIN-LEN] 2283 [`-t' RADIX] [`--radix='RADIX] 2284 [`-e' ENCODING] [`--encoding='ENCODING] 2285 [`-'] [`--all'] [`--print-file-name'] 2286 [`-T' BFDNAME] [`--target='BFDNAME] 2287 [`-w'] [`--include-all-whitespace'] 2288 [`--help'] [`--version'] FILE... 2289 2290 For each FILE given, GNU `strings' prints the printable character 2291 sequences that are at least 4 characters long (or the number given with 2292 the options below) and are followed by an unprintable character. 2293 2294 Depending upon how the strings program was configured it will default 2295 to either displaying all the printable sequences that it can find in 2296 each file, or only those sequences that are in loadable, initialized 2297 data sections. If the file type in unrecognizable, or if strings is 2298 reading from stdin then it will always display all of the printable 2299 sequences that it can find. 2300 2301 For backwards compatibility any file that occurs after a command line 2302 option of just `-' will also be scanned in full, regardless of the 2303 presence of any `-d' option. 2304 2305 `strings' is mainly useful for determining the contents of non-text 2306 files. 2307 2308 `-a' 2309 `--all' 2310 `-' 2311 Scan the whole file, regardless of what sections it contains or 2312 whether those sections are loaded or initialized. Normally this is 2313 the default behaviour, but strings can be configured so that the 2314 `-d' is the default instead. 2315 2316 The `-' option is position dependent and forces strings to perform 2317 full scans of any file that is mentioned after the `-' on the 2318 command line, even if the `-d' option has been specified. 2319 2320 `-d' 2321 `--data' 2322 Only print strings from initialized, loaded data sections in the 2323 file. This may reduce the amount of garbage in the output, but it 2324 also exposes the strings program to any security flaws that may be 2325 present in the BFD library used to scan and load sections. Strings 2326 can be configured so that this option is the default behaviour. In 2327 such cases the `-a' option can be used to avoid using the BFD 2328 library and instead just print all of the strings found in the 2329 file. 2330 2331 `-f' 2332 `--print-file-name' 2333 Print the name of the file before each string. 2334 2335 `--help' 2336 Print a summary of the program usage on the standard output and 2337 exit. 2338 2339 `-MIN-LEN' 2340 `-n MIN-LEN' 2341 `--bytes=MIN-LEN' 2342 Print sequences of characters that are at least MIN-LEN characters 2343 long, instead of the default 4. 2344 2345 `-o' 2346 Like `-t o'. Some other versions of `strings' have `-o' act like 2347 `-t d' instead. Since we can not be compatible with both ways, we 2348 simply chose one. 2349 2350 `-t RADIX' 2351 `--radix=RADIX' 2352 Print the offset within the file before each string. The single 2353 character argument specifies the radix of the offset--`o' for 2354 octal, `x' for hexadecimal, or `d' for decimal. 2355 2356 `-e ENCODING' 2357 `--encoding=ENCODING' 2358 Select the character encoding of the strings that are to be found. 2359 Possible values for ENCODING are: `s' = single-7-bit-byte 2360 characters (ASCII, ISO 8859, etc., default), `S' = 2361 single-8-bit-byte characters, `b' = 16-bit bigendian, `l' = 16-bit 2362 littleendian, `B' = 32-bit bigendian, `L' = 32-bit littleendian. 2363 Useful for finding wide character strings. (`l' and `b' apply to, 2364 for example, Unicode UTF-16/UCS-2 encodings). 2365 2366 `-T BFDNAME' 2367 `--target=BFDNAME' 2368 Specify an object code format other than your system's default 2369 format. *Note Target Selection::, for more information. 2370 2371 `-v' 2372 `-V' 2373 `--version' 2374 Print the program version number on the standard output and exit. 2375 2376 `-w' 2377 `--include-all-whitespace' 2378 By default tab and space characters are included in the strings 2379 that are displayed, but other whitespace characters, such a 2380 newlines and carriage returns, are not. The `-w' option changes 2381 this so that all whitespace characters are considered to be part 2382 of a string. 2383 2384 2385 File: binutils.info, Node: strip, Next: c++filt, Prev: strings, Up: Top 2386 2387 8 strip 2388 ******* 2389 2390 strip [`-F' BFDNAME |`--target='BFDNAME] 2391 [`-I' BFDNAME |`--input-target='BFDNAME] 2392 [`-O' BFDNAME |`--output-target='BFDNAME] 2393 [`-s'|`--strip-all'] 2394 [`-S'|`-g'|`-d'|`--strip-debug'] 2395 [`--strip-dwo'] 2396 [`-K' SYMBOLNAME |`--keep-symbol='SYMBOLNAME] 2397 [`-N' SYMBOLNAME |`--strip-symbol='SYMBOLNAME] 2398 [`-w'|`--wildcard'] 2399 [`-x'|`--discard-all'] [`-X' |`--discard-locals'] 2400 [`-R' SECTIONNAME |`--remove-section='SECTIONNAME] 2401 [`-o' FILE] [`-p'|`--preserve-dates'] 2402 [`-D'|`--enable-deterministic-archives'] 2403 [`-U'|`--disable-deterministic-archives'] 2404 [`--keep-file-symbols'] 2405 [`--only-keep-debug'] 2406 [`-v' |`--verbose'] [`-V'|`--version'] 2407 [`--help'] [`--info'] 2408 OBJFILE... 2409 2410 GNU `strip' discards all symbols from object files OBJFILE. The 2411 list of object files may include archives. At least one object file 2412 must be given. 2413 2414 `strip' modifies the files named in its argument, rather than 2415 writing modified copies under different names. 2416 2417 `-F BFDNAME' 2418 `--target=BFDNAME' 2419 Treat the original OBJFILE as a file with the object code format 2420 BFDNAME, and rewrite it in the same format. *Note Target 2421 Selection::, for more information. 2422 2423 `--help' 2424 Show a summary of the options to `strip' and exit. 2425 2426 `--info' 2427 Display a list showing all architectures and object formats 2428 available. 2429 2430 `-I BFDNAME' 2431 `--input-target=BFDNAME' 2432 Treat the original OBJFILE as a file with the object code format 2433 BFDNAME. *Note Target Selection::, for more information. 2434 2435 `-O BFDNAME' 2436 `--output-target=BFDNAME' 2437 Replace OBJFILE with a file in the output format BFDNAME. *Note 2438 Target Selection::, for more information. 2439 2440 `-R SECTIONNAME' 2441 `--remove-section=SECTIONNAME' 2442 Remove any section named SECTIONNAME from the output file. This 2443 option may be given more than once. Note that using this option 2444 inappropriately may make the output file unusable. The wildcard 2445 character `*' may be given at the end of SECTIONNAME. If so, then 2446 any section starting with SECTIONNAME will be removed. 2447 2448 `-s' 2449 `--strip-all' 2450 Remove all symbols. 2451 2452 `-g' 2453 `-S' 2454 `-d' 2455 `--strip-debug' 2456 Remove debugging symbols only. 2457 2458 `--strip-dwo' 2459 Remove the contents of all DWARF .dwo sections, leaving the 2460 remaining debugging sections and all symbols intact. See the 2461 description of this option in the `objcopy' section for more 2462 information. 2463 2464 `--strip-unneeded' 2465 Remove all symbols that are not needed for relocation processing. 2466 2467 `-K SYMBOLNAME' 2468 `--keep-symbol=SYMBOLNAME' 2469 When stripping symbols, keep symbol SYMBOLNAME even if it would 2470 normally be stripped. This option may be given more than once. 2471 2472 `-N SYMBOLNAME' 2473 `--strip-symbol=SYMBOLNAME' 2474 Remove symbol SYMBOLNAME from the source file. This option may be 2475 given more than once, and may be combined with strip options other 2476 than `-K'. 2477 2478 `-o FILE' 2479 Put the stripped output in FILE, rather than replacing the 2480 existing file. When this argument is used, only one OBJFILE 2481 argument may be specified. 2482 2483 `-p' 2484 `--preserve-dates' 2485 Preserve the access and modification dates of the file. 2486 2487 `-D' 2488 `--enable-deterministic-archives' 2489 Operate in _deterministic_ mode. When copying archive members and 2490 writing the archive index, use zero for UIDs, GIDs, timestamps, 2491 and use consistent file modes for all files. 2492 2493 If `binutils' was configured with 2494 `--enable-deterministic-archives', then this mode is on by default. 2495 It can be disabled with the `-U' option, below. 2496 2497 `-U' 2498 `--disable-deterministic-archives' 2499 Do _not_ operate in _deterministic_ mode. This is the inverse of 2500 the `-D' option, above: when copying archive members and writing 2501 the archive index, use their actual UID, GID, timestamp, and file 2502 mode values. 2503 2504 This is the default unless `binutils' was configured with 2505 `--enable-deterministic-archives'. 2506 2507 `-w' 2508 `--wildcard' 2509 Permit regular expressions in SYMBOLNAMEs used in other command 2510 line options. The question mark (?), asterisk (*), backslash (\) 2511 and square brackets ([]) operators can be used anywhere in the 2512 symbol name. If the first character of the symbol name is the 2513 exclamation point (!) then the sense of the switch is reversed for 2514 that symbol. For example: 2515 2516 -w -K !foo -K fo* 2517 2518 would cause strip to only keep symbols that start with the letters 2519 "fo", but to discard the symbol "foo". 2520 2521 `-x' 2522 `--discard-all' 2523 Remove non-global symbols. 2524 2525 `-X' 2526 `--discard-locals' 2527 Remove compiler-generated local symbols. (These usually start 2528 with `L' or `.'.) 2529 2530 `--keep-file-symbols' 2531 When stripping a file, perhaps with `--strip-debug' or 2532 `--strip-unneeded', retain any symbols specifying source file 2533 names, which would otherwise get stripped. 2534 2535 `--only-keep-debug' 2536 Strip a file, removing contents of any sections that would not be 2537 stripped by `--strip-debug' and leaving the debugging sections 2538 intact. In ELF files, this preserves all note sections in the 2539 output. 2540 2541 The intention is that this option will be used in conjunction with 2542 `--add-gnu-debuglink' to create a two part executable. One a 2543 stripped binary which will occupy less space in RAM and in a 2544 distribution and the second a debugging information file which is 2545 only needed if debugging abilities are required. The suggested 2546 procedure to create these files is as follows: 2547 2548 1. Link the executable as normal. Assuming that is is called 2549 `foo' then... 2550 2551 2. Run `objcopy --only-keep-debug foo foo.dbg' to create a file 2552 containing the debugging info. 2553 2554 3. Run `objcopy --strip-debug foo' to create a stripped 2555 executable. 2556 2557 4. Run `objcopy --add-gnu-debuglink=foo.dbg foo' to add a link 2558 to the debugging info into the stripped executable. 2559 2560 Note--the choice of `.dbg' as an extension for the debug info file 2561 is arbitrary. Also the `--only-keep-debug' step is optional. You 2562 could instead do this: 2563 2564 1. Link the executable as normal. 2565 2566 2. Copy `foo' to `foo.full' 2567 2568 3. Run `strip --strip-debug foo' 2569 2570 4. Run `objcopy --add-gnu-debuglink=foo.full foo' 2571 2572 i.e., the file pointed to by the `--add-gnu-debuglink' can be the 2573 full executable. It does not have to be a file created by the 2574 `--only-keep-debug' switch. 2575 2576 Note--this switch is only intended for use on fully linked files. 2577 It does not make sense to use it on object files where the 2578 debugging information may be incomplete. Besides the 2579 gnu_debuglink feature currently only supports the presence of one 2580 filename containing debugging information, not multiple filenames 2581 on a one-per-object-file basis. 2582 2583 `-V' 2584 `--version' 2585 Show the version number for `strip'. 2586 2587 `-v' 2588 `--verbose' 2589 Verbose output: list all object files modified. In the case of 2590 archives, `strip -v' lists all members of the archive. 2591 2592 2593 File: binutils.info, Node: c++filt, Next: addr2line, Prev: strip, Up: Top 2594 2595 9 c++filt 2596 ********* 2597 2598 c++filt [`-_'|`--strip-underscore'] 2599 [`-n'|`--no-strip-underscore'] 2600 [`-p'|`--no-params'] 2601 [`-t'|`--types'] 2602 [`-i'|`--no-verbose'] 2603 [`-s' FORMAT|`--format='FORMAT] 2604 [`--help'] [`--version'] [SYMBOL...] 2605 2606 The C++ and Java languages provide function overloading, which means 2607 that you can write many functions with the same name, providing that 2608 each function takes parameters of different types. In order to be able 2609 to distinguish these similarly named functions C++ and Java encode them 2610 into a low-level assembler name which uniquely identifies each 2611 different version. This process is known as "mangling". The `c++filt' 2612 (1) program does the inverse mapping: it decodes ("demangles") low-level 2613 names into user-level names so that they can be read. 2614 2615 Every alphanumeric word (consisting of letters, digits, underscores, 2616 dollars, or periods) seen in the input is a potential mangled name. If 2617 the name decodes into a C++ name, the C++ name replaces the low-level 2618 name in the output, otherwise the original word is output. In this way 2619 you can pass an entire assembler source file, containing mangled names, 2620 through `c++filt' and see the same source file containing demangled 2621 names. 2622 2623 You can also use `c++filt' to decipher individual symbols by passing 2624 them on the command line: 2625 2626 c++filt SYMBOL 2627 2628 If no SYMBOL arguments are given, `c++filt' reads symbol names from 2629 the standard input instead. All the results are printed on the 2630 standard output. The difference between reading names from the command 2631 line versus reading names from the standard input is that command line 2632 arguments are expected to be just mangled names and no checking is 2633 performed to separate them from surrounding text. Thus for example: 2634 2635 c++filt -n _Z1fv 2636 2637 will work and demangle the name to "f()" whereas: 2638 2639 c++filt -n _Z1fv, 2640 2641 will not work. (Note the extra comma at the end of the mangled name 2642 which makes it invalid). This command however will work: 2643 2644 echo _Z1fv, | c++filt -n 2645 2646 and will display "f(),", i.e., the demangled name followed by a 2647 trailing comma. This behaviour is because when the names are read from 2648 the standard input it is expected that they might be part of an 2649 assembler source file where there might be extra, extraneous characters 2650 trailing after a mangled name. For example: 2651 2652 .type _Z1fv, @function 2653 2654 `-_' 2655 `--strip-underscore' 2656 On some systems, both the C and C++ compilers put an underscore in 2657 front of every name. For example, the C name `foo' gets the 2658 low-level name `_foo'. This option removes the initial 2659 underscore. Whether `c++filt' removes the underscore by default 2660 is target dependent. 2661 2662 `-n' 2663 `--no-strip-underscore' 2664 Do not remove the initial underscore. 2665 2666 `-p' 2667 `--no-params' 2668 When demangling the name of a function, do not display the types of 2669 the function's parameters. 2670 2671 `-t' 2672 `--types' 2673 Attempt to demangle types as well as function names. This is 2674 disabled by default since mangled types are normally only used 2675 internally in the compiler, and they can be confused with 2676 non-mangled names. For example, a function called "a" treated as 2677 a mangled type name would be demangled to "signed char". 2678 2679 `-i' 2680 `--no-verbose' 2681 Do not include implementation details (if any) in the demangled 2682 output. 2683 2684 `-s FORMAT' 2685 `--format=FORMAT' 2686 `c++filt' can decode various methods of mangling, used by 2687 different compilers. The argument to this option selects which 2688 method it uses: 2689 2690 `auto' 2691 Automatic selection based on executable (the default method) 2692 2693 `gnu' 2694 the one used by the GNU C++ compiler (g++) 2695 2696 `lucid' 2697 the one used by the Lucid compiler (lcc) 2698 2699 `arm' 2700 the one specified by the C++ Annotated Reference Manual 2701 2702 `hp' 2703 the one used by the HP compiler (aCC) 2704 2705 `edg' 2706 the one used by the EDG compiler 2707 2708 `gnu-v3' 2709 the one used by the GNU C++ compiler (g++) with the V3 ABI. 2710 2711 `java' 2712 the one used by the GNU Java compiler (gcj) 2713 2714 `gnat' 2715 the one used by the GNU Ada compiler (GNAT). 2716 2717 `--help' 2718 Print a summary of the options to `c++filt' and exit. 2719 2720 `--version' 2721 Print the version number of `c++filt' and exit. 2722 2723 _Warning:_ `c++filt' is a new utility, and the details of its user 2724 interface are subject to change in future releases. In particular, 2725 a command-line option may be required in the future to decode a 2726 name passed as an argument on the command line; in other words, 2727 2728 c++filt SYMBOL 2729 2730 may in a future release become 2731 2732 c++filt OPTION SYMBOL 2733 2734 ---------- Footnotes ---------- 2735 2736 (1) MS-DOS does not allow `+' characters in file names, so on MS-DOS 2737 this program is named `CXXFILT'. 2738 2739 2740 File: binutils.info, Node: addr2line, Next: nlmconv, Prev: c++filt, Up: Top 2741 2742 10 addr2line 2743 ************ 2744 2745 addr2line [`-a'|`--addresses'] 2746 [`-b' BFDNAME|`--target='BFDNAME] 2747 [`-C'|`--demangle'[=STYLE]] 2748 [`-e' FILENAME|`--exe='FILENAME] 2749 [`-f'|`--functions'] [`-s'|`--basename'] 2750 [`-i'|`--inlines'] 2751 [`-p'|`--pretty-print'] 2752 [`-j'|`--section='NAME] 2753 [`-H'|`--help'] [`-V'|`--version'] 2754 [addr addr ...] 2755 2756 `addr2line' translates addresses into file names and line numbers. 2757 Given an address in an executable or an offset in a section of a 2758 relocatable object, it uses the debugging information to figure out 2759 which file name and line number are associated with it. 2760 2761 The executable or relocatable object to use is specified with the 2762 `-e' option. The default is the file `a.out'. The section in the 2763 relocatable object to use is specified with the `-j' option. 2764 2765 `addr2line' has two modes of operation. 2766 2767 In the first, hexadecimal addresses are specified on the command 2768 line, and `addr2line' displays the file name and line number for each 2769 address. 2770 2771 In the second, `addr2line' reads hexadecimal addresses from standard 2772 input, and prints the file name and line number for each address on 2773 standard output. In this mode, `addr2line' may be used in a pipe to 2774 convert dynamically chosen addresses. 2775 2776 The format of the output is `FILENAME:LINENO'. By default each 2777 input address generates one line of output. 2778 2779 Two options can generate additional lines before each 2780 `FILENAME:LINENO' line (in that order). 2781 2782 If the `-a' option is used then a line with the input address is 2783 displayed. 2784 2785 If the `-f' option is used, then a line with the `FUNCTIONNAME' is 2786 displayed. This is the name of the function containing the address. 2787 2788 One option can generate additional lines after the `FILENAME:LINENO' 2789 line. 2790 2791 If the `-i' option is used and the code at the given address is 2792 present there because of inlining by the compiler then additional lines 2793 are displayed afterwards. One or two extra lines (if the `-f' option 2794 is used) are displayed for each inlined function. 2795 2796 Alternatively if the `-p' option is used then each input address 2797 generates a single, long, output line containing the address, the 2798 function name, the file name and the line number. If the `-i' option 2799 has also been used then any inlined functions will be displayed in the 2800 same manner, but on separate lines, and prefixed by the text `(inlined 2801 by)'. 2802 2803 If the file name or function name can not be determined, `addr2line' 2804 will print two question marks in their place. If the line number can 2805 not be determined, `addr2line' will print 0. 2806 2807 The long and short forms of options, shown here as alternatives, are 2808 equivalent. 2809 2810 `-a' 2811 `--addresses' 2812 Display the address before the function name, file and line number 2813 information. The address is printed with a `0x' prefix to easily 2814 identify it. 2815 2816 `-b BFDNAME' 2817 `--target=BFDNAME' 2818 Specify that the object-code format for the object files is 2819 BFDNAME. 2820 2821 `-C' 2822 `--demangle[=STYLE]' 2823 Decode ("demangle") low-level symbol names into user-level names. 2824 Besides removing any initial underscore prepended by the system, 2825 this makes C++ function names readable. Different compilers have 2826 different mangling styles. The optional demangling style argument 2827 can be used to choose an appropriate demangling style for your 2828 compiler. *Note c++filt::, for more information on demangling. 2829 2830 `-e FILENAME' 2831 `--exe=FILENAME' 2832 Specify the name of the executable for which addresses should be 2833 translated. The default file is `a.out'. 2834 2835 `-f' 2836 `--functions' 2837 Display function names as well as file and line number information. 2838 2839 `-s' 2840 `--basenames' 2841 Display only the base of each file name. 2842 2843 `-i' 2844 `--inlines' 2845 If the address belongs to a function that was inlined, the source 2846 information for all enclosing scopes back to the first non-inlined 2847 function will also be printed. For example, if `main' inlines 2848 `callee1' which inlines `callee2', and address is from `callee2', 2849 the source information for `callee1' and `main' will also be 2850 printed. 2851 2852 `-j' 2853 `--section' 2854 Read offsets relative to the specified section instead of absolute 2855 addresses. 2856 2857 `-p' 2858 `--pretty-print' 2859 Make the output more human friendly: each location are printed on 2860 one line. If option `-i' is specified, lines for all enclosing 2861 scopes are prefixed with `(inlined by)'. 2862 2863 2864 File: binutils.info, Node: nlmconv, Next: windmc, Prev: addr2line, Up: Top 2865 2866 11 nlmconv 2867 ********** 2868 2869 `nlmconv' converts a relocatable object file into a NetWare Loadable 2870 Module. 2871 2872 _Warning:_ `nlmconv' is not always built as part of the binary 2873 utilities, since it is only useful for NLM targets. 2874 2875 nlmconv [`-I' BFDNAME|`--input-target='BFDNAME] 2876 [`-O' BFDNAME|`--output-target='BFDNAME] 2877 [`-T' HEADERFILE|`--header-file='HEADERFILE] 2878 [`-d'|`--debug'] [`-l' LINKER|`--linker='LINKER] 2879 [`-h'|`--help'] [`-V'|`--version'] 2880 INFILE OUTFILE 2881 2882 `nlmconv' converts the relocatable `i386' object file INFILE into 2883 the NetWare Loadable Module OUTFILE, optionally reading HEADERFILE for 2884 NLM header information. For instructions on writing the NLM command 2885 file language used in header files, see the `linkers' section, 2886 `NLMLINK' in particular, of the `NLM Development and Tools Overview', 2887 which is part of the NLM Software Developer's Kit ("NLM SDK"), 2888 available from Novell, Inc. `nlmconv' uses the GNU Binary File 2889 Descriptor library to read INFILE; see *Note BFD: (ld.info)BFD, for 2890 more information. 2891 2892 `nlmconv' can perform a link step. In other words, you can list 2893 more than one object file for input if you list them in the definitions 2894 file (rather than simply specifying one input file on the command line). 2895 In this case, `nlmconv' calls the linker for you. 2896 2897 `-I BFDNAME' 2898 `--input-target=BFDNAME' 2899 Object format of the input file. `nlmconv' can usually determine 2900 the format of a given file (so no default is necessary). *Note 2901 Target Selection::, for more information. 2902 2903 `-O BFDNAME' 2904 `--output-target=BFDNAME' 2905 Object format of the output file. `nlmconv' infers the output 2906 format based on the input format, e.g. for a `i386' input file the 2907 output format is `nlm32-i386'. *Note Target Selection::, for more 2908 information. 2909 2910 `-T HEADERFILE' 2911 `--header-file=HEADERFILE' 2912 Reads HEADERFILE for NLM header information. For instructions on 2913 writing the NLM command file language used in header files, see 2914 see the `linkers' section, of the `NLM Development and Tools 2915 Overview', which is part of the NLM Software Developer's Kit, 2916 available from Novell, Inc. 2917 2918 `-d' 2919 `--debug' 2920 Displays (on standard error) the linker command line used by 2921 `nlmconv'. 2922 2923 `-l LINKER' 2924 `--linker=LINKER' 2925 Use LINKER for any linking. LINKER can be an absolute or a 2926 relative pathname. 2927 2928 `-h' 2929 `--help' 2930 Prints a usage summary. 2931 2932 `-V' 2933 `--version' 2934 Prints the version number for `nlmconv'. 2935 2936 2937 File: binutils.info, Node: windmc, Next: windres, Prev: nlmconv, Up: Top 2938 2939 12 windmc 2940 ********* 2941 2942 `windmc' may be used to generator Windows message resources. 2943 2944 _Warning:_ `windmc' is not always built as part of the binary 2945 utilities, since it is only useful for Windows targets. 2946 2947 windmc [options] input-file 2948 2949 `windmc' reads message definitions from an input file (.mc) and 2950 translate them into a set of output files. The output files may be of 2951 four kinds: 2952 2953 `h' 2954 A C header file containing the message definitions. 2955 2956 `rc' 2957 A resource file compilable by the `windres' tool. 2958 2959 `bin' 2960 One or more binary files containing the resource data for a 2961 specific message language. 2962 2963 `dbg' 2964 A C include file that maps message id's to their symbolic name. 2965 2966 The exact description of these different formats is available in 2967 documentation from Microsoft. 2968 2969 When `windmc' converts from the `mc' format to the `bin' format, 2970 `rc', `h', and optional `dbg' it is acting like the Windows Message 2971 Compiler. 2972 2973 `-a' 2974 `--ascii_in' 2975 Specifies that the input file specified is ASCII. This is the 2976 default behaviour. 2977 2978 `-A' 2979 `--ascii_out' 2980 Specifies that messages in the output `bin' files should be in 2981 ASCII format. 2982 2983 `-b' 2984 `--binprefix' 2985 Specifies that `bin' filenames should have to be prefixed by the 2986 basename of the source file. 2987 2988 `-c' 2989 `--customflag' 2990 Sets the customer bit in all message id's. 2991 2992 `-C CODEPAGE' 2993 `--codepage_in CODEPAGE' 2994 Sets the default codepage to be used to convert input file to 2995 UTF16. The default is ocdepage 1252. 2996 2997 `-d' 2998 `--decimal_values' 2999 Outputs the constants in the header file in decimal. Default is 3000 using hexadecimal output. 3001 3002 `-e EXT' 3003 `--extension EXT' 3004 The extension for the header file. The default is .h extension. 3005 3006 `-F TARGET' 3007 `--target TARGET' 3008 Specify the BFD format to use for a bin file as output. This is a 3009 BFD target name; you can use the `--help' option to see a list of 3010 supported targets. Normally `windmc' will use the default format, 3011 which is the first one listed by the `--help' option. *Note 3012 Target Selection::. 3013 3014 `-h PATH' 3015 `--headerdir PATH' 3016 The target directory of the generated header file. The default is 3017 the current directory. 3018 3019 `-H' 3020 `--help' 3021 Displays a list of command line options and then exits. 3022 3023 `-m CHARACTERS' 3024 `--maxlength CHARACTERS' 3025 Instructs `windmc' to generate a warning if the length of any 3026 message exceeds the number specified. 3027 3028 `-n' 3029 `--nullterminate' 3030 Terminate message text in `bin' files by zero. By default they are 3031 terminated by CR/LF. 3032 3033 `-o' 3034 `--hresult_use' 3035 Not yet implemented. Instructs `windmc' to generate an OLE2 header 3036 file, using HRESULT definitions. Status codes are used if the flag 3037 is not specified. 3038 3039 `-O CODEPAGE' 3040 `--codepage_out CODEPAGE' 3041 Sets the default codepage to be used to output text files. The 3042 default is ocdepage 1252. 3043 3044 `-r PATH' 3045 `--rcdir PATH' 3046 The target directory for the generated `rc' script and the 3047 generated `bin' files that the resource compiler script includes. 3048 The default is the current directory. 3049 3050 `-u' 3051 `--unicode_in' 3052 Specifies that the input file is UTF16. 3053 3054 `-U' 3055 `--unicode_out' 3056 Specifies that messages in the output `bin' file should be in UTF16 3057 format. This is the default behaviour. 3058 3059 `-v' 3060 3061 `--verbose' 3062 Enable verbose mode. 3063 3064 `-V' 3065 3066 `--version' 3067 Prints the version number for `windmc'. 3068 3069 `-x PATH' 3070 `--xdgb PATH' 3071 The path of the `dbg' C include file that maps message id's to the 3072 symbolic name. No such file is generated without specifying the 3073 switch. 3074 3075 3076 File: binutils.info, Node: windres, Next: dlltool, Prev: windmc, Up: Top 3077 3078 13 windres 3079 ********** 3080 3081 `windres' may be used to manipulate Windows resources. 3082 3083 _Warning:_ `windres' is not always built as part of the binary 3084 utilities, since it is only useful for Windows targets. 3085 3086 windres [options] [input-file] [output-file] 3087 3088 `windres' reads resources from an input file and copies them into an 3089 output file. Either file may be in one of three formats: 3090 3091 `rc' 3092 A text format read by the Resource Compiler. 3093 3094 `res' 3095 A binary format generated by the Resource Compiler. 3096 3097 `coff' 3098 A COFF object or executable. 3099 3100 The exact description of these different formats is available in 3101 documentation from Microsoft. 3102 3103 When `windres' converts from the `rc' format to the `res' format, it 3104 is acting like the Windows Resource Compiler. When `windres' converts 3105 from the `res' format to the `coff' format, it is acting like the 3106 Windows `CVTRES' program. 3107 3108 When `windres' generates an `rc' file, the output is similar but not 3109 identical to the format expected for the input. When an input `rc' 3110 file refers to an external filename, an output `rc' file will instead 3111 include the file contents. 3112 3113 If the input or output format is not specified, `windres' will guess 3114 based on the file name, or, for the input file, the file contents. A 3115 file with an extension of `.rc' will be treated as an `rc' file, a file 3116 with an extension of `.res' will be treated as a `res' file, and a file 3117 with an extension of `.o' or `.exe' will be treated as a `coff' file. 3118 3119 If no output file is specified, `windres' will print the resources 3120 in `rc' format to standard output. 3121 3122 The normal use is for you to write an `rc' file, use `windres' to 3123 convert it to a COFF object file, and then link the COFF file into your 3124 application. This will make the resources described in the `rc' file 3125 available to Windows. 3126 3127 `-i FILENAME' 3128 `--input FILENAME' 3129 The name of the input file. If this option is not used, then 3130 `windres' will use the first non-option argument as the input file 3131 name. If there are no non-option arguments, then `windres' will 3132 read from standard input. `windres' can not read a COFF file from 3133 standard input. 3134 3135 `-o FILENAME' 3136 `--output FILENAME' 3137 The name of the output file. If this option is not used, then 3138 `windres' will use the first non-option argument, after any used 3139 for the input file name, as the output file name. If there is no 3140 non-option argument, then `windres' will write to standard output. 3141 `windres' can not write a COFF file to standard output. Note, for 3142 compatibility with `rc' the option `-fo' is also accepted, but its 3143 use is not recommended. 3144 3145 `-J FORMAT' 3146 `--input-format FORMAT' 3147 The input format to read. FORMAT may be `res', `rc', or `coff'. 3148 If no input format is specified, `windres' will guess, as 3149 described above. 3150 3151 `-O FORMAT' 3152 `--output-format FORMAT' 3153 The output format to generate. FORMAT may be `res', `rc', or 3154 `coff'. If no output format is specified, `windres' will guess, 3155 as described above. 3156 3157 `-F TARGET' 3158 `--target TARGET' 3159 Specify the BFD format to use for a COFF file as input or output. 3160 This is a BFD target name; you can use the `--help' option to see 3161 a list of supported targets. Normally `windres' will use the 3162 default format, which is the first one listed by the `--help' 3163 option. *Note Target Selection::. 3164 3165 `--preprocessor PROGRAM' 3166 When `windres' reads an `rc' file, it runs it through the C 3167 preprocessor first. This option may be used to specify the 3168 preprocessor to use, including any leading arguments. The default 3169 preprocessor argument is `gcc -E -xc-header -DRC_INVOKED'. 3170 3171 `--preprocessor-arg OPTION' 3172 When `windres' reads an `rc' file, it runs it through the C 3173 preprocessor first. This option may be used to specify additional 3174 text to be passed to preprocessor on its command line. This 3175 option can be used multiple times to add multiple options to the 3176 preprocessor command line. 3177 3178 `-I DIRECTORY' 3179 `--include-dir DIRECTORY' 3180 Specify an include directory to use when reading an `rc' file. 3181 `windres' will pass this to the preprocessor as an `-I' option. 3182 `windres' will also search this directory when looking for files 3183 named in the `rc' file. If the argument passed to this command 3184 matches any of the supported FORMATS (as described in the `-J' 3185 option), it will issue a deprecation warning, and behave just like 3186 the `-J' option. New programs should not use this behaviour. If a 3187 directory happens to match a FORMAT, simple prefix it with `./' to 3188 disable the backward compatibility. 3189 3190 `-D TARGET' 3191 `--define SYM[=VAL]' 3192 Specify a `-D' option to pass to the preprocessor when reading an 3193 `rc' file. 3194 3195 `-U TARGET' 3196 `--undefine SYM' 3197 Specify a `-U' option to pass to the preprocessor when reading an 3198 `rc' file. 3199 3200 `-r' 3201 Ignored for compatibility with rc. 3202 3203 `-v' 3204 Enable verbose mode. This tells you what the preprocessor is if 3205 you didn't specify one. 3206 3207 `-c VAL' 3208 3209 `--codepage VAL' 3210 Specify the default codepage to use when reading an `rc' file. 3211 VAL should be a hexadecimal prefixed by `0x' or decimal codepage 3212 code. The valid range is from zero up to 0xffff, but the validity 3213 of the codepage is host and configuration dependent. 3214 3215 `-l VAL' 3216 3217 `--language VAL' 3218 Specify the default language to use when reading an `rc' file. 3219 VAL should be a hexadecimal language code. The low eight bits are 3220 the language, and the high eight bits are the sublanguage. 3221 3222 `--use-temp-file' 3223 Use a temporary file to instead of using popen to read the output 3224 of the preprocessor. Use this option if the popen implementation 3225 is buggy on the host (eg., certain non-English language versions 3226 of Windows 95 and Windows 98 are known to have buggy popen where 3227 the output will instead go the console). 3228 3229 `--no-use-temp-file' 3230 Use popen, not a temporary file, to read the output of the 3231 preprocessor. This is the default behaviour. 3232 3233 `-h' 3234 3235 `--help' 3236 Prints a usage summary. 3237 3238 `-V' 3239 3240 `--version' 3241 Prints the version number for `windres'. 3242 3243 `--yydebug' 3244 If `windres' is compiled with `YYDEBUG' defined as `1', this will 3245 turn on parser debugging. 3246 3247 3248 File: binutils.info, Node: dlltool, Next: readelf, Prev: windres, Up: Top 3249 3250 14 dlltool 3251 ********** 3252 3253 `dlltool' is used to create the files needed to create dynamic link 3254 libraries (DLLs) on systems which understand PE format image files such 3255 as Windows. A DLL contains an export table which contains information 3256 that the runtime loader needs to resolve references from a referencing 3257 program. 3258 3259 The export table is generated by this program by reading in a `.def' 3260 file or scanning the `.a' and `.o' files which will be in the DLL. A 3261 `.o' file can contain information in special `.drectve' sections with 3262 export information. 3263 3264 _Note:_ `dlltool' is not always built as part of the binary 3265 utilities, since it is only useful for those targets which support 3266 DLLs. 3267 3268 dlltool [`-d'|`--input-def' DEF-FILE-NAME] 3269 [`-b'|`--base-file' BASE-FILE-NAME] 3270 [`-e'|`--output-exp' EXPORTS-FILE-NAME] 3271 [`-z'|`--output-def' DEF-FILE-NAME] 3272 [`-l'|`--output-lib' LIBRARY-FILE-NAME] 3273 [`-y'|`--output-delaylib' LIBRARY-FILE-NAME] 3274 [`--export-all-symbols'] [`--no-export-all-symbols'] 3275 [`--exclude-symbols' LIST] 3276 [`--no-default-excludes'] 3277 [`-S'|`--as' PATH-TO-ASSEMBLER] [`-f'|`--as-flags' OPTIONS] 3278 [`-D'|`--dllname' NAME] [`-m'|`--machine' MACHINE] 3279 [`-a'|`--add-indirect'] 3280 [`-U'|`--add-underscore'] [`--add-stdcall-underscore'] 3281 [`-k'|`--kill-at'] [`-A'|`--add-stdcall-alias'] 3282 [`-p'|`--ext-prefix-alias' PREFIX] 3283 [`-x'|`--no-idata4'] [`-c'|`--no-idata5'] 3284 [`--use-nul-prefixed-import-tables'] 3285 [`-I'|`--identify' LIBRARY-FILE-NAME] [`--identify-strict'] 3286 [`-i'|`--interwork'] 3287 [`-n'|`--nodelete'] [`-t'|`--temp-prefix' PREFIX] 3288 [`-v'|`--verbose'] 3289 [`-h'|`--help'] [`-V'|`--version'] 3290 [`--no-leading-underscore'] [`--leading-underscore'] 3291 [object-file ...] 3292 3293 `dlltool' reads its inputs, which can come from the `-d' and `-b' 3294 options as well as object files specified on the command line. It then 3295 processes these inputs and if the `-e' option has been specified it 3296 creates a exports file. If the `-l' option has been specified it 3297 creates a library file and if the `-z' option has been specified it 3298 creates a def file. Any or all of the `-e', `-l' and `-z' options can 3299 be present in one invocation of dlltool. 3300 3301 When creating a DLL, along with the source for the DLL, it is 3302 necessary to have three other files. `dlltool' can help with the 3303 creation of these files. 3304 3305 The first file is a `.def' file which specifies which functions are 3306 exported from the DLL, which functions the DLL imports, and so on. This 3307 is a text file and can be created by hand, or `dlltool' can be used to 3308 create it using the `-z' option. In this case `dlltool' will scan the 3309 object files specified on its command line looking for those functions 3310 which have been specially marked as being exported and put entries for 3311 them in the `.def' file it creates. 3312 3313 In order to mark a function as being exported from a DLL, it needs to 3314 have an `-export:<name_of_function>' entry in the `.drectve' section of 3315 the object file. This can be done in C by using the asm() operator: 3316 3317 asm (".section .drectve"); 3318 asm (".ascii \"-export:my_func\""); 3319 3320 int my_func (void) { ... } 3321 3322 The second file needed for DLL creation is an exports file. This 3323 file is linked with the object files that make up the body of the DLL 3324 and it handles the interface between the DLL and the outside world. 3325 This is a binary file and it can be created by giving the `-e' option to 3326 `dlltool' when it is creating or reading in a `.def' file. 3327 3328 The third file needed for DLL creation is the library file that 3329 programs will link with in order to access the functions in the DLL (an 3330 `import library'). This file can be created by giving the `-l' option 3331 to dlltool when it is creating or reading in a `.def' file. 3332 3333 If the `-y' option is specified, dlltool generates a delay-import 3334 library that can be used instead of the normal import library to allow 3335 a program to link to the dll only as soon as an imported function is 3336 called for the first time. The resulting executable will need to be 3337 linked to the static delayimp library containing __delayLoadHelper2(), 3338 which in turn will import LoadLibraryA and GetProcAddress from kernel32. 3339 3340 `dlltool' builds the library file by hand, but it builds the exports 3341 file by creating temporary files containing assembler statements and 3342 then assembling these. The `-S' command line option can be used to 3343 specify the path to the assembler that dlltool will use, and the `-f' 3344 option can be used to pass specific flags to that assembler. The `-n' 3345 can be used to prevent dlltool from deleting these temporary assembler 3346 files when it is done, and if `-n' is specified twice then this will 3347 prevent dlltool from deleting the temporary object files it used to 3348 build the library. 3349 3350 Here is an example of creating a DLL from a source file `dll.c' and 3351 also creating a program (from an object file called `program.o') that 3352 uses that DLL: 3353 3354 gcc -c dll.c 3355 dlltool -e exports.o -l dll.lib dll.o 3356 gcc dll.o exports.o -o dll.dll 3357 gcc program.o dll.lib -o program 3358 3359 `dlltool' may also be used to query an existing import library to 3360 determine the name of the DLL to which it is associated. See the 3361 description of the `-I' or `--identify' option. 3362 3363 The command line options have the following meanings: 3364 3365 `-d FILENAME' 3366 `--input-def FILENAME' 3367 Specifies the name of a `.def' file to be read in and processed. 3368 3369 `-b FILENAME' 3370 `--base-file FILENAME' 3371 Specifies the name of a base file to be read in and processed. The 3372 contents of this file will be added to the relocation section in 3373 the exports file generated by dlltool. 3374 3375 `-e FILENAME' 3376 `--output-exp FILENAME' 3377 Specifies the name of the export file to be created by dlltool. 3378 3379 `-z FILENAME' 3380 `--output-def FILENAME' 3381 Specifies the name of the `.def' file to be created by dlltool. 3382 3383 `-l FILENAME' 3384 `--output-lib FILENAME' 3385 Specifies the name of the library file to be created by dlltool. 3386 3387 `-y FILENAME' 3388 `--output-delaylib FILENAME' 3389 Specifies the name of the delay-import library file to be created 3390 by dlltool. 3391 3392 `--export-all-symbols' 3393 Treat all global and weak defined symbols found in the input object 3394 files as symbols to be exported. There is a small list of symbols 3395 which are not exported by default; see the `--no-default-excludes' 3396 option. You may add to the list of symbols to not export by using 3397 the `--exclude-symbols' option. 3398 3399 `--no-export-all-symbols' 3400 Only export symbols explicitly listed in an input `.def' file or in 3401 `.drectve' sections in the input object files. This is the default 3402 behaviour. The `.drectve' sections are created by `dllexport' 3403 attributes in the source code. 3404 3405 `--exclude-symbols LIST' 3406 Do not export the symbols in LIST. This is a list of symbol names 3407 separated by comma or colon characters. The symbol names should 3408 not contain a leading underscore. This is only meaningful when 3409 `--export-all-symbols' is used. 3410 3411 `--no-default-excludes' 3412 When `--export-all-symbols' is used, it will by default avoid 3413 exporting certain special symbols. The current list of symbols to 3414 avoid exporting is `DllMain@12', `DllEntryPoint@0', `impure_ptr'. 3415 You may use the `--no-default-excludes' option to go ahead and 3416 export these special symbols. This is only meaningful when 3417 `--export-all-symbols' is used. 3418 3419 `-S PATH' 3420 `--as PATH' 3421 Specifies the path, including the filename, of the assembler to be 3422 used to create the exports file. 3423 3424 `-f OPTIONS' 3425 `--as-flags OPTIONS' 3426 Specifies any specific command line options to be passed to the 3427 assembler when building the exports file. This option will work 3428 even if the `-S' option is not used. This option only takes one 3429 argument, and if it occurs more than once on the command line, 3430 then later occurrences will override earlier occurrences. So if 3431 it is necessary to pass multiple options to the assembler they 3432 should be enclosed in double quotes. 3433 3434 `-D NAME' 3435 `--dll-name NAME' 3436 Specifies the name to be stored in the `.def' file as the name of 3437 the DLL when the `-e' option is used. If this option is not 3438 present, then the filename given to the `-e' option will be used 3439 as the name of the DLL. 3440 3441 `-m MACHINE' 3442 `-machine MACHINE' 3443 Specifies the type of machine for which the library file should be 3444 built. `dlltool' has a built in default type, depending upon how 3445 it was created, but this option can be used to override that. 3446 This is normally only useful when creating DLLs for an ARM 3447 processor, when the contents of the DLL are actually encode using 3448 Thumb instructions. 3449 3450 `-a' 3451 `--add-indirect' 3452 Specifies that when `dlltool' is creating the exports file it 3453 should add a section which allows the exported functions to be 3454 referenced without using the import library. Whatever the hell 3455 that means! 3456 3457 `-U' 3458 `--add-underscore' 3459 Specifies that when `dlltool' is creating the exports file it 3460 should prepend an underscore to the names of _all_ exported 3461 symbols. 3462 3463 `--no-leading-underscore' 3464 3465 `--leading-underscore' 3466 Specifies whether standard symbol should be forced to be prefixed, 3467 or not. 3468 3469 `--add-stdcall-underscore' 3470 Specifies that when `dlltool' is creating the exports file it 3471 should prepend an underscore to the names of exported _stdcall_ 3472 functions. Variable names and non-stdcall function names are not 3473 modified. This option is useful when creating GNU-compatible 3474 import libs for third party DLLs that were built with MS-Windows 3475 tools. 3476 3477 `-k' 3478 `--kill-at' 3479 Specifies that when `dlltool' is creating the exports file it 3480 should not append the string `@ <number>'. These numbers are 3481 called ordinal numbers and they represent another way of accessing 3482 the function in a DLL, other than by name. 3483 3484 `-A' 3485 `--add-stdcall-alias' 3486 Specifies that when `dlltool' is creating the exports file it 3487 should add aliases for stdcall symbols without `@ <number>' in 3488 addition to the symbols with `@ <number>'. 3489 3490 `-p' 3491 `--ext-prefix-alias PREFIX' 3492 Causes `dlltool' to create external aliases for all DLL imports 3493 with the specified prefix. The aliases are created for both 3494 external and import symbols with no leading underscore. 3495 3496 `-x' 3497 `--no-idata4' 3498 Specifies that when `dlltool' is creating the exports and library 3499 files it should omit the `.idata4' section. This is for 3500 compatibility with certain operating systems. 3501 3502 `--use-nul-prefixed-import-tables' 3503 Specifies that when `dlltool' is creating the exports and library 3504 files it should prefix the `.idata4' and `.idata5' by zero an 3505 element. This emulates old gnu import library generation of 3506 `dlltool'. By default this option is turned off. 3507 3508 `-c' 3509 `--no-idata5' 3510 Specifies that when `dlltool' is creating the exports and library 3511 files it should omit the `.idata5' section. This is for 3512 compatibility with certain operating systems. 3513 3514 `-I FILENAME' 3515 `--identify FILENAME' 3516 Specifies that `dlltool' should inspect the import library 3517 indicated by FILENAME and report, on `stdout', the name(s) of the 3518 associated DLL(s). This can be performed in addition to any other 3519 operations indicated by the other options and arguments. 3520 `dlltool' fails if the import library does not exist or is not 3521 actually an import library. See also `--identify-strict'. 3522 3523 `--identify-strict' 3524 Modifies the behavior of the `--identify' option, such that an 3525 error is reported if FILENAME is associated with more than one DLL. 3526 3527 `-i' 3528 `--interwork' 3529 Specifies that `dlltool' should mark the objects in the library 3530 file and exports file that it produces as supporting interworking 3531 between ARM and Thumb code. 3532 3533 `-n' 3534 `--nodelete' 3535 Makes `dlltool' preserve the temporary assembler files it used to 3536 create the exports file. If this option is repeated then dlltool 3537 will also preserve the temporary object files it uses to create 3538 the library file. 3539 3540 `-t PREFIX' 3541 `--temp-prefix PREFIX' 3542 Makes `dlltool' use PREFIX when constructing the names of 3543 temporary assembler and object files. By default, the temp file 3544 prefix is generated from the pid. 3545 3546 `-v' 3547 `--verbose' 3548 Make dlltool describe what it is doing. 3549 3550 `-h' 3551 `--help' 3552 Displays a list of command line options and then exits. 3553 3554 `-V' 3555 `--version' 3556 Displays dlltool's version number and then exits. 3557 3558 3559 * Menu: 3560 3561 * def file format:: The format of the dlltool `.def' file 3562 3563 3564 File: binutils.info, Node: def file format, Up: dlltool 3565 3566 14.1 The format of the `dlltool' `.def' file 3567 ============================================ 3568 3569 A `.def' file contains any number of the following commands: 3570 3571 `NAME' NAME `[ ,' BASE `]' 3572 The result is going to be named NAME`.exe'. 3573 3574 `LIBRARY' NAME `[ ,' BASE `]' 3575 The result is going to be named NAME`.dll'. Note: If you want to 3576 use LIBRARY as name then you need to quote. Otherwise this will 3577 fail due a necessary hack for libtool (see PR binutils/13710 for 3578 more details). 3579 3580 `EXPORTS ( ( (' NAME1 `[ = ' NAME2 `] ) | ( ' NAME1 `=' MODULE-NAME `.' EXTERNAL-NAME `) ) [ == ' ITS_NAME `]' 3581 3582 `[' INTEGER `] [ NONAME ] [ CONSTANT ] [ DATA ] [ PRIVATE ] ) *' 3583 Declares NAME1 as an exported symbol from the DLL, with optional 3584 ordinal number INTEGER, or declares NAME1 as an alias (forward) of 3585 the function EXTERNAL-NAME in the DLL. If ITS_NAME is specified, 3586 this name is used as string in export table. MODULE-NAME. Note: 3587 The `EXPORTS' has to be the last command in .def file, as keywords 3588 are treated - beside `LIBRARY' - as simple name-identifiers. If 3589 you want to use LIBRARY as name then you need to quote it. 3590 3591 `IMPORTS ( (' INTERNAL-NAME `=' MODULE-NAME `.' INTEGER `) | [' INTERNAL-NAME `= ]' MODULE-NAME `.' EXTERNAL-NAME `) [ == ) ITS_NAME `]' *' 3592 Declares that EXTERNAL-NAME or the exported function whose ordinal 3593 number is INTEGER is to be imported from the file MODULE-NAME. If 3594 INTERNAL-NAME is specified then this is the name that the imported 3595 function will be referred to in the body of the DLL. If ITS_NAME 3596 is specified, this name is used as string in import table. Note: 3597 The `IMPORTS' has to be the last command in .def file, as keywords 3598 are treated - beside `LIBRARY' - as simple name-identifiers. If 3599 you want to use LIBRARY as name then you need to quote it. 3600 3601 `DESCRIPTION' STRING 3602 Puts STRING into the output `.exp' file in the `.rdata' section. 3603 3604 `STACKSIZE' NUMBER-RESERVE `[, ' NUMBER-COMMIT `]' 3605 3606 `HEAPSIZE' NUMBER-RESERVE `[, ' NUMBER-COMMIT `]' 3607 Generates `--stack' or `--heap' NUMBER-RESERVE,NUMBER-COMMIT in 3608 the output `.drectve' section. The linker will see this and act 3609 upon it. 3610 3611 `CODE' ATTR `+' 3612 3613 `DATA' ATTR `+' 3614 3615 `SECTIONS (' SECTION-NAME ATTR` + ) *' 3616 Generates `--attr' SECTION-NAME ATTR in the output `.drectve' 3617 section, where ATTR is one of `READ', `WRITE', `EXECUTE' or 3618 `SHARED'. The linker will see this and act upon it. 3619 3620 3621 3622 File: binutils.info, Node: readelf, Next: elfedit, Prev: dlltool, Up: Top 3623 3624 15 readelf 3625 ********** 3626 3627 readelf [`-a'|`--all'] 3628 [`-h'|`--file-header'] 3629 [`-l'|`--program-headers'|`--segments'] 3630 [`-S'|`--section-headers'|`--sections'] 3631 [`-g'|`--section-groups'] 3632 [`-t'|`--section-details'] 3633 [`-e'|`--headers'] 3634 [`-s'|`--syms'|`--symbols'] 3635 [`--dyn-syms'] 3636 [`-n'|`--notes'] 3637 [`-r'|`--relocs'] 3638 [`-u'|`--unwind'] 3639 [`-d'|`--dynamic'] 3640 [`-V'|`--version-info'] 3641 [`-A'|`--arch-specific'] 3642 [`-D'|`--use-dynamic'] 3643 [`-x' <number or name>|`--hex-dump='<number or name>] 3644 [`-p' <number or name>|`--string-dump='<number or name>] 3645 [`-R' <number or name>|`--relocated-dump='<number or name>] 3646 [`-c'|`--archive-index'] 3647 [`-w[lLiaprmfFsoRt]'| 3648 `--debug-dump'[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]] 3649 [`--dwarf-depth=N'] 3650 [`--dwarf-start=N'] 3651 [`-I'|`--histogram'] 3652 [`-v'|`--version'] 3653 [`-W'|`--wide'] 3654 [`-H'|`--help'] 3655 ELFFILE... 3656 3657 `readelf' displays information about one or more ELF format object 3658 files. The options control what particular information to display. 3659 3660 ELFFILE... are the object files to be examined. 32-bit and 64-bit 3661 ELF files are supported, as are archives containing ELF files. 3662 3663 This program performs a similar function to `objdump' but it goes 3664 into more detail and it exists independently of the BFD library, so if 3665 there is a bug in BFD then readelf will not be affected. 3666 3667 The long and short forms of options, shown here as alternatives, are 3668 equivalent. At least one option besides `-v' or `-H' must be given. 3669 3670 `-a' 3671 `--all' 3672 Equivalent to specifying `--file-header', `--program-headers', 3673 `--sections', `--symbols', `--relocs', `--dynamic', `--notes' and 3674 `--version-info'. 3675 3676 `-h' 3677 `--file-header' 3678 Displays the information contained in the ELF header at the start 3679 of the file. 3680 3681 `-l' 3682 `--program-headers' 3683 `--segments' 3684 Displays the information contained in the file's segment headers, 3685 if it has any. 3686 3687 `-S' 3688 `--sections' 3689 `--section-headers' 3690 Displays the information contained in the file's section headers, 3691 if it has any. 3692 3693 `-g' 3694 `--section-groups' 3695 Displays the information contained in the file's section groups, 3696 if it has any. 3697 3698 `-t' 3699 `--section-details' 3700 Displays the detailed section information. Implies `-S'. 3701 3702 `-s' 3703 `--symbols' 3704 `--syms' 3705 Displays the entries in symbol table section of the file, if it 3706 has one. 3707 3708 `--dyn-syms' 3709 Displays the entries in dynamic symbol table section of the file, 3710 if it has one. 3711 3712 `-e' 3713 `--headers' 3714 Display all the headers in the file. Equivalent to `-h -l -S'. 3715 3716 `-n' 3717 `--notes' 3718 Displays the contents of the NOTE segments and/or sections, if any. 3719 3720 `-r' 3721 `--relocs' 3722 Displays the contents of the file's relocation section, if it has 3723 one. 3724 3725 `-u' 3726 `--unwind' 3727 Displays the contents of the file's unwind section, if it has one. 3728 Only the unwind sections for IA64 ELF files, as well as ARM 3729 unwind tables (`.ARM.exidx' / `.ARM.extab') are currently 3730 supported. 3731 3732 `-d' 3733 `--dynamic' 3734 Displays the contents of the file's dynamic section, if it has one. 3735 3736 `-V' 3737 `--version-info' 3738 Displays the contents of the version sections in the file, it they 3739 exist. 3740 3741 `-A' 3742 `--arch-specific' 3743 Displays architecture-specific information in the file, if there 3744 is any. 3745 3746 `-D' 3747 `--use-dynamic' 3748 When displaying symbols, this option makes `readelf' use the 3749 symbol hash tables in the file's dynamic section, rather than the 3750 symbol table sections. 3751 3752 `-x <number or name>' 3753 `--hex-dump=<number or name>' 3754 Displays the contents of the indicated section as a hexadecimal 3755 bytes. A number identifies a particular section by index in the 3756 section table; any other string identifies all sections with that 3757 name in the object file. 3758 3759 `-R <number or name>' 3760 `--relocated-dump=<number or name>' 3761 Displays the contents of the indicated section as a hexadecimal 3762 bytes. A number identifies a particular section by index in the 3763 section table; any other string identifies all sections with that 3764 name in the object file. The contents of the section will be 3765 relocated before they are displayed. 3766 3767 `-p <number or name>' 3768 `--string-dump=<number or name>' 3769 Displays the contents of the indicated section as printable 3770 strings. A number identifies a particular section by index in the 3771 section table; any other string identifies all sections with that 3772 name in the object file. 3773 3774 `-c' 3775 `--archive-index' 3776 Displays the file symbol index information contained in the header 3777 part of binary archives. Performs the same function as the `t' 3778 command to `ar', but without using the BFD library. *Note ar::. 3779 3780 `-w[lLiaprmfFsoRt]' 3781 `--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]' 3782 Displays the contents of the debug sections in the file, if any are 3783 present. If one of the optional letters or words follows the 3784 switch then only data found in those specific sections will be 3785 dumped. 3786 3787 Note that there is no single letter option to display the content 3788 of trace sections or .gdb_index. 3789 3790 Note: the `=decodedline' option will display the interpreted 3791 contents of a .debug_line section whereas the `=rawline' option 3792 dumps the contents in a raw format. 3793 3794 Note: the `=frames-interp' option will display the interpreted 3795 contents of a .debug_frame section whereas the `=frames' option 3796 dumps the contents in a raw format. 3797 3798 Note: the output from the `=info' option can also be affected by 3799 the options `--dwarf-depth' and `--dwarf-start'. 3800 3801 `--dwarf-depth=N' 3802 Limit the dump of the `.debug_info' section to N children. This 3803 is only useful with `--debug-dump=info'. The default is to print 3804 all DIEs; the special value 0 for N will also have this effect. 3805 3806 With a non-zero value for N, DIEs at or deeper than N levels will 3807 not be printed. The range for N is zero-based. 3808 3809 `--dwarf-start=N' 3810 Print only DIEs beginning with the DIE numbered N. This is only 3811 useful with `--debug-dump=info'. 3812 3813 If specified, this option will suppress printing of any header 3814 information and all DIEs before the DIE numbered N. Only siblings 3815 and children of the specified DIE will be printed. 3816 3817 This can be used in conjunction with `--dwarf-depth'. 3818 3819 `-I' 3820 `--histogram' 3821 Display a histogram of bucket list lengths when displaying the 3822 contents of the symbol tables. 3823 3824 `-v' 3825 `--version' 3826 Display the version number of readelf. 3827 3828 `-W' 3829 `--wide' 3830 Don't break output lines to fit into 80 columns. By default 3831 `readelf' breaks section header and segment listing lines for 3832 64-bit ELF files, so that they fit into 80 columns. This option 3833 causes `readelf' to print each section header resp. each segment 3834 one a single line, which is far more readable on terminals wider 3835 than 80 columns. 3836 3837 `-H' 3838 `--help' 3839 Display the command line options understood by `readelf'. 3840 3841 3842 3843 File: binutils.info, Node: elfedit, Next: Common Options, Prev: readelf, Up: Top 3844 3845 16 elfedit 3846 ********** 3847 3848 elfedit [`--input-mach='MACHINE] 3849 [`--input-type='TYPE] 3850 [`--input-osabi='OSABI] 3851 `--output-mach='MACHINE 3852 `--output-type='TYPE 3853 `--output-osabi='OSABI 3854 [`-v'|`--version'] 3855 [`-h'|`--help'] 3856 ELFFILE... 3857 3858 `elfedit' updates the ELF header of ELF files which have the 3859 matching ELF machine and file types. The options control how and which 3860 fields in the ELF header should be updated. 3861 3862 ELFFILE... are the ELF files to be updated. 32-bit and 64-bit ELF 3863 files are supported, as are archives containing ELF files. 3864 3865 The long and short forms of options, shown here as alternatives, are 3866 equivalent. At least one of the `--output-mach', `--output-type' and 3867 `--output-osabi' options must be given. 3868 3869 `--input-mach=MACHINE' 3870 Set the matching input ELF machine type to MACHINE. If 3871 `--input-mach' isn't specified, it will match any ELF machine 3872 types. 3873 3874 The supported ELF machine types are, L1OM, K1OM and X86-64. 3875 3876 `--output-mach=MACHINE' 3877 Change the ELF machine type in the ELF header to MACHINE. The 3878 supported ELF machine types are the same as `--input-mach'. 3879 3880 `--input-type=TYPE' 3881 Set the matching input ELF file type to TYPE. If `--input-type' 3882 isn't specified, it will match any ELF file types. 3883 3884 The supported ELF file types are, REL, EXEC and DYN. 3885 3886 `--output-type=TYPE' 3887 Change the ELF file type in the ELF header to TYPE. The supported 3888 ELF types are the same as `--input-type'. 3889 3890 `--input-osabi=OSABI' 3891 Set the matching input ELF file OSABI to OSABI. If 3892 `--input-osabi' isn't specified, it will match any ELF OSABIs. 3893 3894 The supported ELF OSABIs are, NONE, HPUX, NETBSD, GNU, LINUX 3895 (alias for GNU), SOLARIS, AIX, IRIX, FREEBSD, TRU64, MODESTO, 3896 OPENBSD, OPENVMS, NSK, AROS and FENIXOS. 3897 3898 `--output-osabi=OSABI' 3899 Change the ELF OSABI in the ELF header to OSABI. The supported 3900 ELF OSABI are the same as `--input-osabi'. 3901 3902 `-v' 3903 `--version' 3904 Display the version number of `elfedit'. 3905 3906 `-h' 3907 `--help' 3908 Display the command line options understood by `elfedit'. 3909 3910 3911 3912 File: binutils.info, Node: Common Options, Next: Selecting the Target System, Prev: elfedit, Up: Top 3913 3914 17 Common Options 3915 ***************** 3916 3917 The following command-line options are supported by all of the programs 3918 described in this manual. 3919 3920 `@FILE' 3921 Read command-line options from FILE. The options read are 3922 inserted in place of the original @FILE option. If FILE does not 3923 exist, or cannot be read, then the option will be treated 3924 literally, and not removed. 3925 3926 Options in FILE are separated by whitespace. A whitespace 3927 character may be included in an option by surrounding the entire 3928 option in either single or double quotes. Any character 3929 (including a backslash) may be included by prefixing the character 3930 to be included with a backslash. The FILE may itself contain 3931 additional @FILE options; any such options will be processed 3932 recursively. 3933 3934 `--help' 3935 Display the command-line options supported by the program. 3936 3937 `--version' 3938 Display the version number of the program. 3939 3940 3941 3942 File: binutils.info, Node: Selecting the Target System, Next: Reporting Bugs, Prev: Common Options, Up: Top 3943 3944 18 Selecting the Target System 3945 ****************************** 3946 3947 You can specify two aspects of the target system to the GNU binary file 3948 utilities, each in several ways: 3949 3950 * the target 3951 3952 * the architecture 3953 3954 In the following summaries, the lists of ways to specify values are 3955 in order of decreasing precedence. The ways listed first override those 3956 listed later. 3957 3958 The commands to list valid values only list the values for which the 3959 programs you are running were configured. If they were configured with 3960 `--enable-targets=all', the commands list most of the available values, 3961 but a few are left out; not all targets can be configured in at once 3962 because some of them can only be configured "native" (on hosts with the 3963 same type as the target system). 3964 3965 * Menu: 3966 3967 * Target Selection:: 3968 * Architecture Selection:: 3969 3970 3971 File: binutils.info, Node: Target Selection, Next: Architecture Selection, Up: Selecting the Target System 3972 3973 18.1 Target Selection 3974 ===================== 3975 3976 A "target" is an object file format. A given target may be supported 3977 for multiple architectures (*note Architecture Selection::). A target 3978 selection may also have variations for different operating systems or 3979 architectures. 3980 3981 The command to list valid target values is `objdump -i' (the first 3982 column of output contains the relevant information). 3983 3984 Some sample values are: `a.out-hp300bsd', `ecoff-littlemips', 3985 `a.out-sunos-big'. 3986 3987 You can also specify a target using a configuration triplet. This is 3988 the same sort of name that is passed to `configure' to specify a 3989 target. When you use a configuration triplet as an argument, it must be 3990 fully canonicalized. You can see the canonical version of a triplet by 3991 running the shell script `config.sub' which is included with the 3992 sources. 3993 3994 Some sample configuration triplets are: `m68k-hp-bsd', 3995 `mips-dec-ultrix', `sparc-sun-sunos'. 3996 3997 `objdump' Target 3998 ---------------- 3999 4000 Ways to specify: 4001 4002 1. command line option: `-b' or `--target' 4003 4004 2. environment variable `GNUTARGET' 4005 4006 3. deduced from the input file 4007 4008 `objcopy' and `strip' Input Target 4009 ---------------------------------- 4010 4011 Ways to specify: 4012 4013 1. command line options: `-I' or `--input-target', or `-F' or 4014 `--target' 4015 4016 2. environment variable `GNUTARGET' 4017 4018 3. deduced from the input file 4019 4020 `objcopy' and `strip' Output Target 4021 ----------------------------------- 4022 4023 Ways to specify: 4024 4025 1. command line options: `-O' or `--output-target', or `-F' or 4026 `--target' 4027 4028 2. the input target (see "`objcopy' and `strip' Input Target" above) 4029 4030 3. environment variable `GNUTARGET' 4031 4032 4. deduced from the input file 4033 4034 `nm', `size', and `strings' Target 4035 ---------------------------------- 4036 4037 Ways to specify: 4038 4039 1. command line option: `--target' 4040 4041 2. environment variable `GNUTARGET' 4042 4043 3. deduced from the input file 4044 4045 4046 File: binutils.info, Node: Architecture Selection, Prev: Target Selection, Up: Selecting the Target System 4047 4048 18.2 Architecture Selection 4049 =========================== 4050 4051 An "architecture" is a type of CPU on which an object file is to run. 4052 Its name may contain a colon, separating the name of the processor 4053 family from the name of the particular CPU. 4054 4055 The command to list valid architecture values is `objdump -i' (the 4056 second column contains the relevant information). 4057 4058 Sample values: `m68k:68020', `mips:3000', `sparc'. 4059 4060 `objdump' Architecture 4061 ---------------------- 4062 4063 Ways to specify: 4064 4065 1. command line option: `-m' or `--architecture' 4066 4067 2. deduced from the input file 4068 4069 `objcopy', `nm', `size', `strings' Architecture 4070 ----------------------------------------------- 4071 4072 Ways to specify: 4073 4074 1. deduced from the input file 4075 4076 4077 File: binutils.info, Node: Reporting Bugs, Next: GNU Free Documentation License, Prev: Selecting the Target System, Up: Top 4078 4079 19 Reporting Bugs 4080 ***************** 4081 4082 Your bug reports play an essential role in making the binary utilities 4083 reliable. 4084 4085 Reporting a bug may help you by bringing a solution to your problem, 4086 or it may not. But in any case the principal function of a bug report 4087 is to help the entire community by making the next version of the binary 4088 utilities work better. Bug reports are your contribution to their 4089 maintenance. 4090 4091 In order for a bug report to serve its purpose, you must include the 4092 information that enables us to fix the bug. 4093 4094 * Menu: 4095 4096 * Bug Criteria:: Have you found a bug? 4097 * Bug Reporting:: How to report bugs 4098 4099 4100 File: binutils.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs 4101 4102 19.1 Have You Found a Bug? 4103 ========================== 4104 4105 If you are not sure whether you have found a bug, here are some 4106 guidelines: 4107 4108 * If a binary utility gets a fatal signal, for any input whatever, 4109 that is a bug. Reliable utilities never crash. 4110 4111 * If a binary utility produces an error message for valid input, 4112 that is a bug. 4113 4114 * If you are an experienced user of binary utilities, your 4115 suggestions for improvement are welcome in any case. 4116 4117 4118 File: binutils.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs 4119 4120 19.2 How to Report Bugs 4121 ======================= 4122 4123 A number of companies and individuals offer support for GNU products. 4124 If you obtained the binary utilities from a support organization, we 4125 recommend you contact that organization first. 4126 4127 You can find contact information for many support companies and 4128 individuals in the file `etc/SERVICE' in the GNU Emacs distribution. 4129 4130 In any event, we also recommend that you send bug reports for the 4131 binary utilities to `http://www.sourceware.org/bugzilla/'. 4132 4133 The fundamental principle of reporting bugs usefully is this: 4134 *report all the facts*. If you are not sure whether to state a fact or 4135 leave it out, state it! 4136 4137 Often people omit facts because they think they know what causes the 4138 problem and assume that some details do not matter. Thus, you might 4139 assume that the name of a file you use in an example does not matter. 4140 Well, probably it does not, but one cannot be sure. Perhaps the bug is 4141 a stray memory reference which happens to fetch from the location where 4142 that pathname is stored in memory; perhaps, if the pathname were 4143 different, the contents of that location would fool the utility into 4144 doing the right thing despite the bug. Play it safe and give a 4145 specific, complete example. That is the easiest thing for you to do, 4146 and the most helpful. 4147 4148 Keep in mind that the purpose of a bug report is to enable us to fix 4149 the bug if it is new to us. Therefore, always write your bug reports 4150 on the assumption that the bug has not been reported previously. 4151 4152 Sometimes people give a few sketchy facts and ask, "Does this ring a 4153 bell?" This cannot help us fix a bug, so it is basically useless. We 4154 respond by asking for enough details to enable us to investigate. You 4155 might as well expedite matters by sending them to begin with. 4156 4157 To enable us to fix the bug, you should include all these things: 4158 4159 * The version of the utility. Each utility announces it if you 4160 start it with the `--version' argument. 4161 4162 Without this, we will not know whether there is any point in 4163 looking for the bug in the current version of the binary utilities. 4164 4165 * Any patches you may have applied to the source, including any 4166 patches made to the `BFD' library. 4167 4168 * The type of machine you are using, and the operating system name 4169 and version number. 4170 4171 * What compiler (and its version) was used to compile the 4172 utilities--e.g. "`gcc-2.7'". 4173 4174 * The command arguments you gave the utility to observe the bug. To 4175 guarantee you will not omit something important, list them all. A 4176 copy of the Makefile (or the output from make) is sufficient. 4177 4178 If we were to try to guess the arguments, we would probably guess 4179 wrong and then we might not encounter the bug. 4180 4181 * A complete input file, or set of input files, that will reproduce 4182 the bug. If the utility is reading an object file or files, then 4183 it is generally most helpful to send the actual object files. 4184 4185 If the source files were produced exclusively using GNU programs 4186 (e.g., `gcc', `gas', and/or the GNU `ld'), then it may be OK to 4187 send the source files rather than the object files. In this case, 4188 be sure to say exactly what version of `gcc', or whatever, was 4189 used to produce the object files. Also say how `gcc', or 4190 whatever, was configured. 4191 4192 * A description of what behavior you observe that you believe is 4193 incorrect. For example, "It gets a fatal signal." 4194 4195 Of course, if the bug is that the utility gets a fatal signal, 4196 then we will certainly notice it. But if the bug is incorrect 4197 output, we might not notice unless it is glaringly wrong. You 4198 might as well not give us a chance to make a mistake. 4199 4200 Even if the problem you experience is a fatal signal, you should 4201 still say so explicitly. Suppose something strange is going on, 4202 such as your copy of the utility is out of sync, or you have 4203 encountered a bug in the C library on your system. (This has 4204 happened!) Your copy might crash and ours would not. If you told 4205 us to expect a crash, then when ours fails to crash, we would know 4206 that the bug was not happening for us. If you had not told us to 4207 expect a crash, then we would not be able to draw any conclusion 4208 from our observations. 4209 4210 * If you wish to suggest changes to the source, send us context 4211 diffs, as generated by `diff' with the `-u', `-c', or `-p' option. 4212 Always send diffs from the old file to the new file. If you wish 4213 to discuss something in the `ld' source, refer to it by context, 4214 not by line number. 4215 4216 The line numbers in our development sources will not match those 4217 in your sources. Your line numbers would convey no useful 4218 information to us. 4219 4220 Here are some things that are not necessary: 4221 4222 * A description of the envelope of the bug. 4223 4224 Often people who encounter a bug spend a lot of time investigating 4225 which changes to the input file will make the bug go away and which 4226 changes will not affect it. 4227 4228 This is often time consuming and not very useful, because the way 4229 we will find the bug is by running a single example under the 4230 debugger with breakpoints, not by pure deduction from a series of 4231 examples. We recommend that you save your time for something else. 4232 4233 Of course, if you can find a simpler example to report _instead_ 4234 of the original one, that is a convenience for us. Errors in the 4235 output will be easier to spot, running under the debugger will take 4236 less time, and so on. 4237 4238 However, simplification is not vital; if you do not want to do 4239 this, report the bug anyway and send us the entire test case you 4240 used. 4241 4242 * A patch for the bug. 4243 4244 A patch for the bug does help us if it is a good one. But do not 4245 omit the necessary information, such as the test case, on the 4246 assumption that a patch is all we need. We might see problems 4247 with your patch and decide to fix the problem another way, or we 4248 might not understand it at all. 4249 4250 Sometimes with programs as complicated as the binary utilities it 4251 is very hard to construct an example that will make the program 4252 follow a certain path through the code. If you do not send us the 4253 example, we will not be able to construct one, so we will not be 4254 able to verify that the bug is fixed. 4255 4256 And if we cannot understand what bug you are trying to fix, or why 4257 your patch should be an improvement, we will not install it. A 4258 test case will help us to understand. 4259 4260 * A guess about what the bug is or what it depends on. 4261 4262 Such guesses are usually wrong. Even we cannot guess right about 4263 such things without first using the debugger to find the facts. 4264 4265 4266 File: binutils.info, Node: GNU Free Documentation License, Next: Binutils Index, Prev: Reporting Bugs, Up: Top 4267 4268 Appendix A GNU Free Documentation License 4269 ***************************************** 4270 4271 Version 1.3, 3 November 2008 4272 4273 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. 4274 `http://fsf.org/' 4275 4276 Everyone is permitted to copy and distribute verbatim copies 4277 of this license document, but changing it is not allowed. 4278 4279 0. PREAMBLE 4280 4281 The purpose of this License is to make a manual, textbook, or other 4282 functional and useful document "free" in the sense of freedom: to 4283 assure everyone the effective freedom to copy and redistribute it, 4284 with or without modifying it, either commercially or 4285 noncommercially. Secondarily, this License preserves for the 4286 author and publisher a way to get credit for their work, while not 4287 being considered responsible for modifications made by others. 4288 4289 This License is a kind of "copyleft", which means that derivative 4290 works of the document must themselves be free in the same sense. 4291 It complements the GNU General Public License, which is a copyleft 4292 license designed for free software. 4293 4294 We have designed this License in order to use it for manuals for 4295 free software, because free software needs free documentation: a 4296 free program should come with manuals providing the same freedoms 4297 that the software does. But this License is not limited to 4298 software manuals; it can be used for any textual work, regardless 4299 of subject matter or whether it is published as a printed book. 4300 We recommend this License principally for works whose purpose is 4301 instruction or reference. 4302 4303 1. APPLICABILITY AND DEFINITIONS 4304 4305 This License applies to any manual or other work, in any medium, 4306 that contains a notice placed by the copyright holder saying it 4307 can be distributed under the terms of this License. Such a notice 4308 grants a world-wide, royalty-free license, unlimited in duration, 4309 to use that work under the conditions stated herein. The 4310 "Document", below, refers to any such manual or work. Any member 4311 of the public is a licensee, and is addressed as "you". You 4312 accept the license if you copy, modify or distribute the work in a 4313 way requiring permission under copyright law. 4314 4315 A "Modified Version" of the Document means any work containing the 4316 Document or a portion of it, either copied verbatim, or with 4317 modifications and/or translated into another language. 4318 4319 A "Secondary Section" is a named appendix or a front-matter section 4320 of the Document that deals exclusively with the relationship of the 4321 publishers or authors of the Document to the Document's overall 4322 subject (or to related matters) and contains nothing that could 4323 fall directly within that overall subject. (Thus, if the Document 4324 is in part a textbook of mathematics, a Secondary Section may not 4325 explain any mathematics.) The relationship could be a matter of 4326 historical connection with the subject or with related matters, or 4327 of legal, commercial, philosophical, ethical or political position 4328 regarding them. 4329 4330 The "Invariant Sections" are certain Secondary Sections whose 4331 titles are designated, as being those of Invariant Sections, in 4332 the notice that says that the Document is released under this 4333 License. If a section does not fit the above definition of 4334 Secondary then it is not allowed to be designated as Invariant. 4335 The Document may contain zero Invariant Sections. If the Document 4336 does not identify any Invariant Sections then there are none. 4337 4338 The "Cover Texts" are certain short passages of text that are 4339 listed, as Front-Cover Texts or Back-Cover Texts, in the notice 4340 that says that the Document is released under this License. A 4341 Front-Cover Text may be at most 5 words, and a Back-Cover Text may 4342 be at most 25 words. 4343 4344 A "Transparent" copy of the Document means a machine-readable copy, 4345 represented in a format whose specification is available to the 4346 general public, that is suitable for revising the document 4347 straightforwardly with generic text editors or (for images 4348 composed of pixels) generic paint programs or (for drawings) some 4349 widely available drawing editor, and that is suitable for input to 4350 text formatters or for automatic translation to a variety of 4351 formats suitable for input to text formatters. A copy made in an 4352 otherwise Transparent file format whose markup, or absence of 4353 markup, has been arranged to thwart or discourage subsequent 4354 modification by readers is not Transparent. An image format is 4355 not Transparent if used for any substantial amount of text. A 4356 copy that is not "Transparent" is called "Opaque". 4357 4358 Examples of suitable formats for Transparent copies include plain 4359 ASCII without markup, Texinfo input format, LaTeX input format, 4360 SGML or XML using a publicly available DTD, and 4361 standard-conforming simple HTML, PostScript or PDF designed for 4362 human modification. Examples of transparent image formats include 4363 PNG, XCF and JPG. Opaque formats include proprietary formats that 4364 can be read and edited only by proprietary word processors, SGML or 4365 XML for which the DTD and/or processing tools are not generally 4366 available, and the machine-generated HTML, PostScript or PDF 4367 produced by some word processors for output purposes only. 4368 4369 The "Title Page" means, for a printed book, the title page itself, 4370 plus such following pages as are needed to hold, legibly, the 4371 material this License requires to appear in the title page. For 4372 works in formats which do not have any title page as such, "Title 4373 Page" means the text near the most prominent appearance of the 4374 work's title, preceding the beginning of the body of the text. 4375 4376 The "publisher" means any person or entity that distributes copies 4377 of the Document to the public. 4378 4379 A section "Entitled XYZ" means a named subunit of the Document 4380 whose title either is precisely XYZ or contains XYZ in parentheses 4381 following text that translates XYZ in another language. (Here XYZ 4382 stands for a specific section name mentioned below, such as 4383 "Acknowledgements", "Dedications", "Endorsements", or "History".) 4384 To "Preserve the Title" of such a section when you modify the 4385 Document means that it remains a section "Entitled XYZ" according 4386 to this definition. 4387 4388 The Document may include Warranty Disclaimers next to the notice 4389 which states that this License applies to the Document. These 4390 Warranty Disclaimers are considered to be included by reference in 4391 this License, but only as regards disclaiming warranties: any other 4392 implication that these Warranty Disclaimers may have is void and 4393 has no effect on the meaning of this License. 4394 4395 2. VERBATIM COPYING 4396 4397 You may copy and distribute the Document in any medium, either 4398 commercially or noncommercially, provided that this License, the 4399 copyright notices, and the license notice saying this License 4400 applies to the Document are reproduced in all copies, and that you 4401 add no other conditions whatsoever to those of this License. You 4402 may not use technical measures to obstruct or control the reading 4403 or further copying of the copies you make or distribute. However, 4404 you may accept compensation in exchange for copies. If you 4405 distribute a large enough number of copies you must also follow 4406 the conditions in section 3. 4407 4408 You may also lend copies, under the same conditions stated above, 4409 and you may publicly display copies. 4410 4411 3. COPYING IN QUANTITY 4412 4413 If you publish printed copies (or copies in media that commonly 4414 have printed covers) of the Document, numbering more than 100, and 4415 the Document's license notice requires Cover Texts, you must 4416 enclose the copies in covers that carry, clearly and legibly, all 4417 these Cover Texts: Front-Cover Texts on the front cover, and 4418 Back-Cover Texts on the back cover. Both covers must also clearly 4419 and legibly identify you as the publisher of these copies. The 4420 front cover must present the full title with all words of the 4421 title equally prominent and visible. You may add other material 4422 on the covers in addition. Copying with changes limited to the 4423 covers, as long as they preserve the title of the Document and 4424 satisfy these conditions, can be treated as verbatim copying in 4425 other respects. 4426 4427 If the required texts for either cover are too voluminous to fit 4428 legibly, you should put the first ones listed (as many as fit 4429 reasonably) on the actual cover, and continue the rest onto 4430 adjacent pages. 4431 4432 If you publish or distribute Opaque copies of the Document 4433 numbering more than 100, you must either include a 4434 machine-readable Transparent copy along with each Opaque copy, or 4435 state in or with each Opaque copy a computer-network location from 4436 which the general network-using public has access to download 4437 using public-standard network protocols a complete Transparent 4438 copy of the Document, free of added material. If you use the 4439 latter option, you must take reasonably prudent steps, when you 4440 begin distribution of Opaque copies in quantity, to ensure that 4441 this Transparent copy will remain thus accessible at the stated 4442 location until at least one year after the last time you 4443 distribute an Opaque copy (directly or through your agents or 4444 retailers) of that edition to the public. 4445 4446 It is requested, but not required, that you contact the authors of 4447 the Document well before redistributing any large number of 4448 copies, to give them a chance to provide you with an updated 4449 version of the Document. 4450 4451 4. MODIFICATIONS 4452 4453 You may copy and distribute a Modified Version of the Document 4454 under the conditions of sections 2 and 3 above, provided that you 4455 release the Modified Version under precisely this License, with 4456 the Modified Version filling the role of the Document, thus 4457 licensing distribution and modification of the Modified Version to 4458 whoever possesses a copy of it. In addition, you must do these 4459 things in the Modified Version: 4460 4461 A. Use in the Title Page (and on the covers, if any) a title 4462 distinct from that of the Document, and from those of 4463 previous versions (which should, if there were any, be listed 4464 in the History section of the Document). You may use the 4465 same title as a previous version if the original publisher of 4466 that version gives permission. 4467 4468 B. List on the Title Page, as authors, one or more persons or 4469 entities responsible for authorship of the modifications in 4470 the Modified Version, together with at least five of the 4471 principal authors of the Document (all of its principal 4472 authors, if it has fewer than five), unless they release you 4473 from this requirement. 4474 4475 C. State on the Title page the name of the publisher of the 4476 Modified Version, as the publisher. 4477 4478 D. Preserve all the copyright notices of the Document. 4479 4480 E. Add an appropriate copyright notice for your modifications 4481 adjacent to the other copyright notices. 4482 4483 F. Include, immediately after the copyright notices, a license 4484 notice giving the public permission to use the Modified 4485 Version under the terms of this License, in the form shown in 4486 the Addendum below. 4487 4488 G. Preserve in that license notice the full lists of Invariant 4489 Sections and required Cover Texts given in the Document's 4490 license notice. 4491 4492 H. Include an unaltered copy of this License. 4493 4494 I. Preserve the section Entitled "History", Preserve its Title, 4495 and add to it an item stating at least the title, year, new 4496 authors, and publisher of the Modified Version as given on 4497 the Title Page. If there is no section Entitled "History" in 4498 the Document, create one stating the title, year, authors, 4499 and publisher of the Document as given on its Title Page, 4500 then add an item describing the Modified Version as stated in 4501 the previous sentence. 4502 4503 J. Preserve the network location, if any, given in the Document 4504 for public access to a Transparent copy of the Document, and 4505 likewise the network locations given in the Document for 4506 previous versions it was based on. These may be placed in 4507 the "History" section. You may omit a network location for a 4508 work that was published at least four years before the 4509 Document itself, or if the original publisher of the version 4510 it refers to gives permission. 4511 4512 K. For any section Entitled "Acknowledgements" or "Dedications", 4513 Preserve the Title of the section, and preserve in the 4514 section all the substance and tone of each of the contributor 4515 acknowledgements and/or dedications given therein. 4516 4517 L. Preserve all the Invariant Sections of the Document, 4518 unaltered in their text and in their titles. Section numbers 4519 or the equivalent are not considered part of the section 4520 titles. 4521 4522 M. Delete any section Entitled "Endorsements". Such a section 4523 may not be included in the Modified Version. 4524 4525 N. Do not retitle any existing section to be Entitled 4526 "Endorsements" or to conflict in title with any Invariant 4527 Section. 4528 4529 O. Preserve any Warranty Disclaimers. 4530 4531 If the Modified Version includes new front-matter sections or 4532 appendices that qualify as Secondary Sections and contain no 4533 material copied from the Document, you may at your option 4534 designate some or all of these sections as invariant. To do this, 4535 add their titles to the list of Invariant Sections in the Modified 4536 Version's license notice. These titles must be distinct from any 4537 other section titles. 4538 4539 You may add a section Entitled "Endorsements", provided it contains 4540 nothing but endorsements of your Modified Version by various 4541 parties--for example, statements of peer review or that the text 4542 has been approved by an organization as the authoritative 4543 definition of a standard. 4544 4545 You may add a passage of up to five words as a Front-Cover Text, 4546 and a passage of up to 25 words as a Back-Cover Text, to the end 4547 of the list of Cover Texts in the Modified Version. Only one 4548 passage of Front-Cover Text and one of Back-Cover Text may be 4549 added by (or through arrangements made by) any one entity. If the 4550 Document already includes a cover text for the same cover, 4551 previously added by you or by arrangement made by the same entity 4552 you are acting on behalf of, you may not add another; but you may 4553 replace the old one, on explicit permission from the previous 4554 publisher that added the old one. 4555 4556 The author(s) and publisher(s) of the Document do not by this 4557 License give permission to use their names for publicity for or to 4558 assert or imply endorsement of any Modified Version. 4559 4560 5. COMBINING DOCUMENTS 4561 4562 You may combine the Document with other documents released under 4563 this License, under the terms defined in section 4 above for 4564 modified versions, provided that you include in the combination 4565 all of the Invariant Sections of all of the original documents, 4566 unmodified, and list them all as Invariant Sections of your 4567 combined work in its license notice, and that you preserve all 4568 their Warranty Disclaimers. 4569 4570 The combined work need only contain one copy of this License, and 4571 multiple identical Invariant Sections may be replaced with a single 4572 copy. If there are multiple Invariant Sections with the same name 4573 but different contents, make the title of each such section unique 4574 by adding at the end of it, in parentheses, the name of the 4575 original author or publisher of that section if known, or else a 4576 unique number. Make the same adjustment to the section titles in 4577 the list of Invariant Sections in the license notice of the 4578 combined work. 4579 4580 In the combination, you must combine any sections Entitled 4581 "History" in the various original documents, forming one section 4582 Entitled "History"; likewise combine any sections Entitled 4583 "Acknowledgements", and any sections Entitled "Dedications". You 4584 must delete all sections Entitled "Endorsements." 4585 4586 6. COLLECTIONS OF DOCUMENTS 4587 4588 You may make a collection consisting of the Document and other 4589 documents released under this License, and replace the individual 4590 copies of this License in the various documents with a single copy 4591 that is included in the collection, provided that you follow the 4592 rules of this License for verbatim copying of each of the 4593 documents in all other respects. 4594 4595 You may extract a single document from such a collection, and 4596 distribute it individually under this License, provided you insert 4597 a copy of this License into the extracted document, and follow 4598 this License in all other respects regarding verbatim copying of 4599 that document. 4600 4601 7. AGGREGATION WITH INDEPENDENT WORKS 4602 4603 A compilation of the Document or its derivatives with other 4604 separate and independent documents or works, in or on a volume of 4605 a storage or distribution medium, is called an "aggregate" if the 4606 copyright resulting from the compilation is not used to limit the 4607 legal rights of the compilation's users beyond what the individual 4608 works permit. When the Document is included in an aggregate, this 4609 License does not apply to the other works in the aggregate which 4610 are not themselves derivative works of the Document. 4611 4612 If the Cover Text requirement of section 3 is applicable to these 4613 copies of the Document, then if the Document is less than one half 4614 of the entire aggregate, the Document's Cover Texts may be placed 4615 on covers that bracket the Document within the aggregate, or the 4616 electronic equivalent of covers if the Document is in electronic 4617 form. Otherwise they must appear on printed covers that bracket 4618 the whole aggregate. 4619 4620 8. TRANSLATION 4621 4622 Translation is considered a kind of modification, so you may 4623 distribute translations of the Document under the terms of section 4624 4. Replacing Invariant Sections with translations requires special 4625 permission from their copyright holders, but you may include 4626 translations of some or all Invariant Sections in addition to the 4627 original versions of these Invariant Sections. You may include a 4628 translation of this License, and all the license notices in the 4629 Document, and any Warranty Disclaimers, provided that you also 4630 include the original English version of this License and the 4631 original versions of those notices and disclaimers. In case of a 4632 disagreement between the translation and the original version of 4633 this License or a notice or disclaimer, the original version will 4634 prevail. 4635 4636 If a section in the Document is Entitled "Acknowledgements", 4637 "Dedications", or "History", the requirement (section 4) to 4638 Preserve its Title (section 1) will typically require changing the 4639 actual title. 4640 4641 9. TERMINATION 4642 4643 You may not copy, modify, sublicense, or distribute the Document 4644 except as expressly provided under this License. Any attempt 4645 otherwise to copy, modify, sublicense, or distribute it is void, 4646 and will automatically terminate your rights under this License. 4647 4648 However, if you cease all violation of this License, then your 4649 license from a particular copyright holder is reinstated (a) 4650 provisionally, unless and until the copyright holder explicitly 4651 and finally terminates your license, and (b) permanently, if the 4652 copyright holder fails to notify you of the violation by some 4653 reasonable means prior to 60 days after the cessation. 4654 4655 Moreover, your license from a particular copyright holder is 4656 reinstated permanently if the copyright holder notifies you of the 4657 violation by some reasonable means, this is the first time you have 4658 received notice of violation of this License (for any work) from 4659 that copyright holder, and you cure the violation prior to 30 days 4660 after your receipt of the notice. 4661 4662 Termination of your rights under this section does not terminate 4663 the licenses of parties who have received copies or rights from 4664 you under this License. If your rights have been terminated and 4665 not permanently reinstated, receipt of a copy of some or all of 4666 the same material does not give you any rights to use it. 4667 4668 10. FUTURE REVISIONS OF THIS LICENSE 4669 4670 The Free Software Foundation may publish new, revised versions of 4671 the GNU Free Documentation License from time to time. Such new 4672 versions will be similar in spirit to the present version, but may 4673 differ in detail to address new problems or concerns. See 4674 `http://www.gnu.org/copyleft/'. 4675 4676 Each version of the License is given a distinguishing version 4677 number. If the Document specifies that a particular numbered 4678 version of this License "or any later version" applies to it, you 4679 have the option of following the terms and conditions either of 4680 that specified version or of any later version that has been 4681 published (not as a draft) by the Free Software Foundation. If 4682 the Document does not specify a version number of this License, 4683 you may choose any version ever published (not as a draft) by the 4684 Free Software Foundation. If the Document specifies that a proxy 4685 can decide which future versions of this License can be used, that 4686 proxy's public statement of acceptance of a version permanently 4687 authorizes you to choose that version for the Document. 4688 4689 11. RELICENSING 4690 4691 "Massive Multiauthor Collaboration Site" (or "MMC Site") means any 4692 World Wide Web server that publishes copyrightable works and also 4693 provides prominent facilities for anybody to edit those works. A 4694 public wiki that anybody can edit is an example of such a server. 4695 A "Massive Multiauthor Collaboration" (or "MMC") contained in the 4696 site means any set of copyrightable works thus published on the MMC 4697 site. 4698 4699 "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 4700 license published by Creative Commons Corporation, a not-for-profit 4701 corporation with a principal place of business in San Francisco, 4702 California, as well as future copyleft versions of that license 4703 published by that same organization. 4704 4705 "Incorporate" means to publish or republish a Document, in whole or 4706 in part, as part of another Document. 4707 4708 An MMC is "eligible for relicensing" if it is licensed under this 4709 License, and if all works that were first published under this 4710 License somewhere other than this MMC, and subsequently 4711 incorporated in whole or in part into the MMC, (1) had no cover 4712 texts or invariant sections, and (2) were thus incorporated prior 4713 to November 1, 2008. 4714 4715 The operator of an MMC Site may republish an MMC contained in the 4716 site under CC-BY-SA on the same site at any time before August 1, 4717 2009, provided the MMC is eligible for relicensing. 4718 4719 4720 ADDENDUM: How to use this License for your documents 4721 ==================================================== 4722 4723 To use this License in a document you have written, include a copy of 4724 the License in the document and put the following copyright and license 4725 notices just after the title page: 4726 4727 Copyright (C) YEAR YOUR NAME. 4728 Permission is granted to copy, distribute and/or modify this document 4729 under the terms of the GNU Free Documentation License, Version 1.3 4730 or any later version published by the Free Software Foundation; 4731 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover 4732 Texts. A copy of the license is included in the section entitled ``GNU 4733 Free Documentation License''. 4734 4735 If you have Invariant Sections, Front-Cover Texts and Back-Cover 4736 Texts, replace the "with...Texts." line with this: 4737 4738 with the Invariant Sections being LIST THEIR TITLES, with 4739 the Front-Cover Texts being LIST, and with the Back-Cover Texts 4740 being LIST. 4741 4742 If you have Invariant Sections without Cover Texts, or some other 4743 combination of the three, merge those two alternatives to suit the 4744 situation. 4745 4746 If your document contains nontrivial examples of program code, we 4747 recommend releasing these examples in parallel under your choice of 4748 free software license, such as the GNU General Public License, to 4749 permit their use in free software. 4750 4751 4752 File: binutils.info, Node: Binutils Index, Prev: GNU Free Documentation License, Up: Top 4753 4754 Binutils Index 4755 ************** 4756 4757 [index] 4758 * Menu: 4759 4760 * --enable-deterministic-archives <1>: objcopy. (line 303) 4761 * --enable-deterministic-archives <2>: ranlib. (line 44) 4762 * --enable-deterministic-archives <3>: ar cmdline. (line 151) 4763 * --enable-deterministic-archives <4>: strip. (line 115) 4764 * --enable-deterministic-archives <5>: ar cmdline. (line 224) 4765 * --enable-deterministic-archives: objcopy. (line 293) 4766 * .stab: objdump. (line 420) 4767 * Add prefix to absolute paths: objdump. (line 363) 4768 * addr2line: addr2line. (line 6) 4769 * address to file name and line number: addr2line. (line 6) 4770 * all header information, object file: objdump. (line 538) 4771 * ar: ar. (line 6) 4772 * ar compatibility: ar. (line 61) 4773 * architecture: objdump. (line 197) 4774 * architectures available: objdump. (line 182) 4775 * archive contents: ranlib. (line 6) 4776 * Archive file symbol index information: readelf. (line 155) 4777 * archive headers: objdump. (line 67) 4778 * archives: ar. (line 6) 4779 * base files: dlltool. (line 124) 4780 * bug criteria: Bug Criteria. (line 6) 4781 * bug reports: Bug Reporting. (line 6) 4782 * bugs: Reporting Bugs. (line 6) 4783 * bugs, reporting: Bug Reporting. (line 6) 4784 * c++filt: c++filt. (line 6) 4785 * changing object addresses: objcopy. (line 338) 4786 * changing section address: objcopy. (line 348) 4787 * changing section LMA: objcopy. (line 357) 4788 * changing section VMA: objcopy. (line 370) 4789 * changing start address: objcopy. (line 333) 4790 * collections of files: ar. (line 6) 4791 * compatibility, ar: ar. (line 61) 4792 * contents of archive: ar cmdline. (line 97) 4793 * crash: Bug Criteria. (line 9) 4794 * creating archives: ar cmdline. (line 145) 4795 * creating thin archive: ar cmdline. (line 210) 4796 * cxxfilt: c++filt. (line 14) 4797 * dates in archive: ar cmdline. (line 184) 4798 * debug symbols: objdump. (line 420) 4799 * debugging symbols: nm. (line 147) 4800 * deleting from archive: ar cmdline. (line 26) 4801 * demangling C++ symbols: c++filt. (line 6) 4802 * demangling in nm: nm. (line 155) 4803 * demangling in objdump <1>: objdump. (line 95) 4804 * demangling in objdump: addr2line. (line 84) 4805 * deterministic archives <1>: ranlib. (line 32) 4806 * deterministic archives <2>: objcopy. (line 293) 4807 * deterministic archives <3>: ar cmdline. (line 224) 4808 * deterministic archives <4>: strip. (line 105) 4809 * deterministic archives <5>: ar cmdline. (line 151) 4810 * deterministic archives <6>: ranlib. (line 44) 4811 * deterministic archives: objcopy. (line 303) 4812 * disassembling object code: objdump. (line 117) 4813 * disassembly architecture: objdump. (line 197) 4814 * disassembly endianness: objdump. (line 137) 4815 * disassembly, with source: objdump. (line 359) 4816 * discarding symbols: strip. (line 6) 4817 * DLL: dlltool. (line 6) 4818 * dlltool: dlltool. (line 6) 4819 * DWARF: objdump. (line 385) 4820 * dynamic relocation entries, in object file: objdump. (line 347) 4821 * dynamic symbol table entries, printing: objdump. (line 522) 4822 * dynamic symbols: nm. (line 167) 4823 * ELF dynamic section information: readelf. (line 113) 4824 * ELF dynamic symbol table information: readelf. (line 88) 4825 * ELF file header information: readelf. (line 57) 4826 * ELF file information: readelf. (line 6) 4827 * ELF notes: readelf. (line 97) 4828 * ELF object file format: objdump. (line 420) 4829 * ELF program header information: readelf. (line 63) 4830 * ELF reloc information: readelf. (line 101) 4831 * ELF section group information: readelf. (line 74) 4832 * ELF section information: readelf. (line 79) 4833 * ELF segment information: readelf. (line 63) 4834 * ELF symbol table information: readelf. (line 84) 4835 * ELF version sections information: readelf. (line 117) 4836 * elfedit: elfedit. (line 6) 4837 * endianness: objdump. (line 137) 4838 * error on valid input: Bug Criteria. (line 12) 4839 * external symbols: nm. (line 179) 4840 * extract from archive: ar cmdline. (line 112) 4841 * fatal signal: Bug Criteria. (line 9) 4842 * file name: nm. (line 141) 4843 * header information, all: objdump. (line 538) 4844 * input .def file: dlltool. (line 120) 4845 * input file name: nm. (line 141) 4846 * Instruction width: objdump. (line 380) 4847 * libraries: ar. (line 25) 4848 * listings strings: strings. (line 6) 4849 * load plugin: nm. (line 252) 4850 * machine instructions: objdump. (line 117) 4851 * moving in archive: ar cmdline. (line 34) 4852 * MRI compatibility, ar: ar scripts. (line 8) 4853 * name duplication in archive: ar cmdline. (line 106) 4854 * name length: ar. (line 18) 4855 * nm: nm. (line 6) 4856 * nm compatibility: nm. (line 173) 4857 * nm format: nm. (line 173) 4858 * not writing archive index: ar cmdline. (line 203) 4859 * objdump: objdump. (line 6) 4860 * object code format <1>: strings. (line 93) 4861 * object code format <2>: nm. (line 278) 4862 * object code format <3>: addr2line. (line 79) 4863 * object code format <4>: objdump. (line 81) 4864 * object code format: size. (line 84) 4865 * object file header: objdump. (line 143) 4866 * object file information: objdump. (line 6) 4867 * object file offsets: objdump. (line 148) 4868 * object file sections: objdump. (line 354) 4869 * object formats available: objdump. (line 182) 4870 * operations on archive: ar cmdline. (line 22) 4871 * printing from archive: ar cmdline. (line 46) 4872 * printing strings: strings. (line 6) 4873 * quick append to archive: ar cmdline. (line 54) 4874 * radix for section sizes: size. (line 66) 4875 * ranlib <1>: ranlib. (line 6) 4876 * ranlib: ar cmdline. (line 91) 4877 * readelf: readelf. (line 6) 4878 * relative placement in archive: ar cmdline. (line 133) 4879 * relocation entries, in object file: objdump. (line 341) 4880 * removing symbols: strip. (line 6) 4881 * repeated names in archive: ar cmdline. (line 106) 4882 * replacement in archive: ar cmdline. (line 73) 4883 * reporting bugs: Reporting Bugs. (line 6) 4884 * scripts, ar: ar scripts. (line 8) 4885 * section addresses in objdump: objdump. (line 73) 4886 * section headers: objdump. (line 164) 4887 * section information: objdump. (line 187) 4888 * section sizes: size. (line 6) 4889 * sections, full contents: objdump. (line 354) 4890 * size: size. (line 6) 4891 * size display format: size. (line 27) 4892 * size number format: size. (line 66) 4893 * sorting symbols: nm. (line 202) 4894 * source code context: objdump. (line 157) 4895 * source disassembly: objdump. (line 359) 4896 * source file name: nm. (line 141) 4897 * source filenames for object files: objdump. (line 191) 4898 * stab: objdump. (line 420) 4899 * start-address: objdump. (line 429) 4900 * stop-address: objdump. (line 433) 4901 * strings: strings. (line 6) 4902 * strings, printing: strings. (line 6) 4903 * strip: strip. (line 6) 4904 * Strip absolute paths: objdump. (line 366) 4905 * symbol index <1>: ar. (line 28) 4906 * symbol index: ranlib. (line 6) 4907 * symbol index, listing: nm. (line 224) 4908 * symbol line numbers: nm. (line 187) 4909 * symbol table entries, printing: objdump. (line 438) 4910 * symbols: nm. (line 6) 4911 * symbols, discarding: strip. (line 6) 4912 * thin archives: ar. (line 40) 4913 * undefined symbols: nm. (line 235) 4914 * Unix compatibility, ar: ar cmdline. (line 8) 4915 * unwind information: readelf. (line 106) 4916 * Update ELF header: elfedit. (line 6) 4917 * updating an archive: ar cmdline. (line 215) 4918 * version: Top. (line 6) 4919 * VMA in objdump: objdump. (line 73) 4920 * wide output, printing: objdump. (line 544) 4921 * writing archive index: ar cmdline. (line 197) 4922 4923 4924 4925 Tag Table: 4926 Node: Top1896 4927 Node: ar3606 4928 Node: ar cmdline6832 4929 Node: ar scripts17174 4930 Node: nm22862 4931 Node: objcopy32756 4932 Node: objdump65189 4933 Node: ranlib87468 4934 Node: size89073 4935 Node: strings92077 4936 Node: strip96157 4937 Node: c++filt103389 4938 Ref: c++filt-Footnote-1108230 4939 Node: addr2line108336 4940 Node: nlmconv112907 4941 Node: windmc115512 4942 Node: windres119161 4943 Node: dlltool125522 4944 Node: def file format138402 4945 Node: readelf140941 4946 Node: elfedit148496 4947 Node: Common Options150750 4948 Node: Selecting the Target System151790 4949 Node: Target Selection152722 4950 Node: Architecture Selection154704 4951 Node: Reporting Bugs155532 4952 Node: Bug Criteria156311 4953 Node: Bug Reporting156864 4954 Node: GNU Free Documentation License163734 4955 Node: Binutils Index188913 4956 4957 End Tag Table 4958