X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=binutils%2Fdoc%2Fbinutils.texi;h=5174625a517cbd486ea803c495cd966b71481e73;hb=74f5402d08b857d60499b27851c204954ce6c42c;hp=d63c04ca6c089b6dc2952aaff382e2382cf1f65b;hpb=acf1419f9c52d06ee70169b85c5f8980c7359f8f;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi index d63c04ca6c..5174625a51 100644 --- a/binutils/doc/binutils.texi +++ b/binutils/doc/binutils.texi @@ -10,7 +10,7 @@ @copying @c man begin COPYRIGHT -Copyright @copyright{} 1991-2015 Free Software Foundation, Inc. +Copyright @copyright{} 1991-2016 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 @@ -234,8 +234,7 @@ a normal archive. Instead the elements of the first archive are added individually to the second archive. The paths to the elements of the archive are stored relative to the -archive itself. For security reasons absolute paths and paths with a -@code{/../} component are not allowed. +archive itself. @cindex compatibility, @command{ar} @cindex @command{ar} compatibility @@ -1013,11 +1012,12 @@ types. This option is only available if the toolchain has been built with plugin support enabled. @item --size-sort -Sort symbols by size. The size is computed as the difference between -the value of the symbol and the value of the symbol with the next higher -value. If the @code{bsd} output format is used the size of the symbol -is printed, rather than the value, and @samp{-S} must be used in order -both size and value to be printed. +Sort symbols by size. For ELF objects symbol sizes are read from the +ELF, for other object types the symbol sizes are computed as the +difference between the value of the symbol and the value of the symbol +with the next higher value. If the @code{bsd} output format is used +the size of the symbol is printed, rather than the value, and +@samp{-S} must be used in order both size and value to be printed. @item --special-syms Display symbols which have a target-specific special meaning. These @@ -1075,6 +1075,7 @@ objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}] [@option{--interleave-width=}@var{width}] [@option{-j} @var{sectionpattern}|@option{--only-section=}@var{sectionpattern}] [@option{-R} @var{sectionpattern}|@option{--remove-section=}@var{sectionpattern}] + [@option{--remove-relocations=}@var{sectionpattern}] [@option{-p}|@option{--preserve-dates}] [@option{-D}|@option{--enable-deterministic-archives}] [@option{-U}|@option{--disable-deterministic-archives}] @@ -1107,6 +1108,7 @@ objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}] [@option{--localize-symbols=}@var{filename}] [@option{--globalize-symbols=}@var{filename}] [@option{--weaken-symbols=}@var{filename}] + [@option{--add-symbol} @var{name}=[@var{section}:]@var{value}[,@var{flags}] [@option{--alt-machine-code=}@var{index}] [@option{--prefix-symbols=}@var{string}] [@option{--prefix-sections=}@var{string}] @@ -1129,8 +1131,7 @@ objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}] [@option{--subsystem=}@var{which}:@var{major}.@var{minor}] [@option{--compress-debug-sections}] [@option{--decompress-debug-sections}] - [@option{--dwarf-depth=@var{n}}] - [@option{--dwarf-start=@var{n}}] + [@option{--elf-stt-common=@var{val}}] [@option{-v}|@option{--verbose}] [@option{-V}|@option{--version}] [@option{--help}] [@option{--info}] @@ -1221,6 +1222,18 @@ This option may be given more than once. Note that using this option inappropriately may make the output file unusable. Wildcard characters are accepted in @var{sectionpattern}. +If the first character of @var{sectionpattern} is the exclamation +point (!) then matching sections will not be copied, even if earlier +use of @option{--only-section} on the same command line would +otherwise copy it. For example: + +@smallexample + --only-section=.text.* --only-section=!.text.foo +@end smallexample + +will copy all sectinos maching '.text.*' but not the section +'.text.foo'. + @item -R @var{sectionpattern} @itemx --remove-section=@var{sectionpattern} Remove any section matching @var{sectionpattern} from the output file. @@ -1230,6 +1243,46 @@ characters are accepted in @var{sectionpattern}. Using both the @option{-j} and @option{-R} options together results in undefined behaviour. +If the first character of @var{sectionpattern} is the exclamation +point (!) then matching sections will not be removed even if an +earlier use of @option{--remove-section} on the same command line +would otherwise remove it. For example: + +@smallexample + --remove-section=.text.* --remove-section=!.text.foo +@end smallexample + +will remove all sections matching the pattern '.text.*', but will not +remove the section '.text.foo'. + +@item --remove-relocations=@var{sectionpattern} +Remove relocations from the output file for any section matching +@var{sectionpattern}. This option may be given more than once. Note +that using this option inappropriately may make the output file +unusable. Wildcard characters are accepted in @var{sectionpattern}. +For example: + +@smallexample + --remove-relocations=.text.* +@end smallexample + +will remove the relocations for all sections matching the patter +'.text.*'. + +If the first character of @var{sectionpattern} is the exclamation +point (!) then matching sections will not have their relocation +removed even if an earlier use of @option{--remove-relocations} on the +same command line would otherwise cause the relocations to be removed. +For example: + +@smallexample + --remove-relocations=.text.* --remove-relocations=!.text.foo +@end smallexample + +will remove all relocations for sections matching the pattern +'.text.*', but will not remove relocations for the section +'.text.foo'. + @item -S @itemx --strip-all Do not copy relocation and symbol information from the source file. @@ -1268,8 +1321,9 @@ such as @option{-L}. @item -L @var{symbolname} @itemx --localize-symbol=@var{symbolname} -Make symbol @var{symbolname} local to the file, so that it is not -visible externally. This option may be given more than once. +Convert a global or weak symbol called @var{symbolname} into a local +symbol, so that it is not visible externally. This option may be +given more than once. Note - unique symbols are not converted. @item -W @var{symbolname} @itemx --weaken-symbol=@var{symbolname} @@ -1505,6 +1559,18 @@ command line. In this case, pass the original section name to @option{--update-section}, and the original and new section names to @option{--rename-section}. +@item --add-symbol @var{name}=[@var{section}:]@var{value}[,@var{flags}] +Add a new symbol named @var{name} while copying the file. This option may be +specified multiple times. If the @var{section} is given, the symbol will be +associated with and relative to that section, otherwise it will be an ABS +symbol. Specifying an undefined section will result in a fatal error. There +is no check for the value, it will be taken as specified. Symbol flags can +be specified and not all flags will be meaningful for all object file +formats. By default, the symbol will be global. The special flag +'before=@var{othersym}' will insert the new symbol in front of the specified +@var{othersym}, otherwise the symbol(s) will be added at the end of the +symbol table in the order they appear. + @item --rename-section @var{oldname}=@var{newname}[,@var{flags}] Rename a section from @var{oldname} to @var{newname}, optionally changing the section's flags to @var{flags} in the process. This has @@ -1684,8 +1750,42 @@ Prefix all the names of all allocated sections in the output file with @var{string}. @item --add-gnu-debuglink=@var{path-to-file} -Creates a .gnu_debuglink section which contains a reference to @var{path-to-file} -and adds it to the output file. +Creates a .gnu_debuglink section which contains a reference to +@var{path-to-file} and adds it to the output file. Note: the file at +@var{path-to-file} must exist. Part of the process of adding the +.gnu_debuglink section involves embedding a checksum of the contents +of the debug info file into the section. + +If the debug info file is built in one location but it is going to be +installed at a later time into a different location then do not use +the path to the installed location. The @option{--add-gnu-debuglink} +option will fail because the installed file does not exist yet. +Instead put the debug info file in the current directory and use the +@option{--add-gnu-debuglink} option without any directory components, +like this: + +@smallexample + objcopy --add-gnu-debuglink=foo.debug +@end smallexample + +At debug time the debugger will attempt to look for the separate debug +info file in a set of known locations. The exact set of these +locations varies depending upon the distribution being used, but it +typically includes: + +@table @code + +@item * The same directory as the executable. + +@item * A sub-directory of the directory containing the executable +called .debug + +@item * A global debug directory such as /usr/lib/debug. +@end table + +As long as the debug info file has been installed into one of these +locations before the debugger is run everything should work +correctly. @item --keep-file-symbols When stripping a file, perhaps with @option{--strip-debug} or @@ -1697,6 +1797,12 @@ Strip a file, removing contents of any sections that would not be stripped by @option{--strip-debug} and leaving the debugging sections intact. In ELF files, this preserves all note sections in the output. +Note - the section headers of the stripped sections are preserved, +including their sizes, but the contents of the section are discarded. +The section headers are preserved so that other tools can match up the +debuginfo file with the real executable, even if that executable has +been relocated to a different address space. + The intention is that this option will be used in conjunction with @option{--add-gnu-debuglink} to create a two part executable. One a stripped binary which will occupy less space in RAM and in a @@ -1810,10 +1916,37 @@ It can also be a useful way of reducing the size of a @option{--just-symbols} linker input file. @item --compress-debug-sections -Compress DWARF debug sections using zlib. +Compress DWARF debug sections using zlib with SHF_COMPRESSED from the +ELF ABI. Note - if compression would actually make a section +@emph{larger}, then it is not compressed. + +@item --compress-debug-sections=none +@itemx --compress-debug-sections=zlib +@itemx --compress-debug-sections=zlib-gnu +@itemx --compress-debug-sections=zlib-gabi +For ELF files, these options control how DWARF debug sections are +compressed. @option{--compress-debug-sections=none} is equivalent +to @option{--decompress-debug-sections}. +@option{--compress-debug-sections=zlib} and +@option{--compress-debug-sections=zlib-gabi} are equivalent to +@option{--compress-debug-sections}. +@option{--compress-debug-sections=zlib-gnu} compresses DWARF debug +sections using zlib. The debug sections are renamed to begin with +@samp{.zdebug} instead of @samp{.debug}. Note - if compression would +actually make a section @emph{larger}, then it is not compressed nor +renamed. @item --decompress-debug-sections -Decompress DWARF debug sections using zlib. +Decompress DWARF debug sections using zlib. The original section +names of the compressed sections are restored. + +@item --elf-stt-common=yes +@itemx --elf-stt-common=no +For ELF files, these options control whether common symbols should be +converted to the @code{STT_COMMON} or @code{STT_OBJECT} type. +@option{--elf-stt-common=yes} converts common symbol type to +@code{STT_COMMON}. @option{--elf-stt-common=no} converts common symbol +type to @code{STT_OBJECT}. @item -V @itemx --version @@ -1888,6 +2021,8 @@ objdump [@option{-a}|@option{--archive-headers}] [@option{--prefix-addresses}] [@option{--[no-]show-raw-insn}] [@option{--adjust-vma=}@var{offset}] + [@option{--dwarf-depth=@var{n}}] + [@option{--dwarf-start=@var{n}}] [@option{--special-syms}] [@option{--prefix=}@var{prefix}] [@option{--prefix-strip=}@var{level}] @@ -1990,6 +2125,15 @@ expected to contain instructions. Like @option{-d}, but disassemble the contents of all sections, not just those expected to contain instructions. +This option also has a subtle effect on the disassembly of +instructions in code sections. When option @option{-d} is in effect +objdump will assume that any symbols present in a code section occur +on the boundary between instructions and it will refuse to disassemble +across such a boundary. When option @option{-D} is in effect however +this assumption is supressed. This means that it is possible for the +output of @option{-d} and @option{-D} to differ if, for example, data +is stored in code sections. + If the target is an ARM architecture this switch also has the effect of forcing the disassembler to decode pieces of data found in code sections as if they were instructions. @@ -2045,6 +2189,11 @@ although @command{ld} relocates the sections correctly, using @samp{objdump Instead, it shows the usual addresses, which are implicit for the target. +Note, in some cases it is possible for a section to have both the +READONLY and the NOREAD attributes set. In such cases the NOREAD +attribute takes precedence, but @command{objdump} will report both +since the exact setting of the flag bits might be important. + @item -H @itemx --help Print a summary of the options to @command{objdump} and exit. @@ -2091,6 +2240,15 @@ some targets. If it is necessary to specify more than one disassembler option then multiple @option{-M} options can be used or can be placed together into a comma separated list. +For ARC, @option{dsp} controls the printing of DSP instructions, +@option{spfp} selects the printing of FPX single precision FP +instructions, @option{dpfp} selects the printing of FPX double +precision FP instructions, @option{quarkse_em} selects the printing of +special QuarkSE-EM instructions, @option{fpuda} selects the printing +of double precision assist instructions, @option{fpus} selects the +printing of FPU single precision FP instructions, while @option{fpud} +selects the printing of FPU souble precision FP instructions. + If the target is an ARM architecture then this switch can be used to select which register name set is used during disassembler. Specifying @option{-M reg-names-std} (the default) will select the register names as @@ -2124,6 +2282,10 @@ Select disassembly for the given architecture. @itemx att Select between intel syntax mode and AT&T syntax mode. +@item amd64 +@itemx intel64 +Select between AMD64 ISA and Intel64 ISA. + @item intel-mnemonic @itemx att-mnemonic Select between intel mnemonic mode and AT&T mnemonic mode. @@ -2719,6 +2881,7 @@ strings [@option{-afovV}] [@option{-}@var{min-len}] [@option{-}] [@option{--all}] [@option{--print-file-name}] [@option{-T} @var{bfdname}] [@option{--target=}@var{bfdname}] [@option{-w}] [@option{--include-all-whitespace}] + [@option{-s}] [@option{--output-separator}@var{sep_string}] [@option{--help}] [@option{--version}] @var{file}@dots{} @c man end @end smallexample @@ -2823,6 +2986,13 @@ By default tab and space characters are included in the strings that are displayed, but other whitespace characters, such a newlines and carriage returns, are not. The @option{-w} option changes this so that all whitespace characters are considered to be part of a string. + +@item -s +@itemx --output-separator +By default, output strings are delimited by a new-line. This option +allows you to supply any string to be used as the output record +separator. Useful with --include-all-whitespace where strings +may contain new-lines internally. @end table @c man end @@ -2857,6 +3027,7 @@ strip [@option{-F} @var{bfdname} |@option{--target=}@var{bfdname}] [@option{-w}|@option{--wildcard}] [@option{-x}|@option{--discard-all}] [@option{-X} |@option{--discard-locals}] [@option{-R} @var{sectionname} |@option{--remove-section=}@var{sectionname}] + [@option{--remove-relocations=}@var{sectionpattern}] [@option{-o} @var{file}] [@option{-p}|@option{--preserve-dates}] [@option{-D}|@option{--enable-deterministic-archives}] [@option{-U}|@option{--disable-deterministic-archives}] @@ -2914,6 +3085,46 @@ inappropriately may make the output file unusable. The wildcard character @samp{*} may be given at the end of @var{sectionname}. If so, then any section starting with @var{sectionname} will be removed. +If the first character of @var{sectionpattern} is the exclamation +point (!) then matching sections will not be removed even if an +earlier use of @option{--remove-section} on the same command line +would otherwise remove it. For example: + +@smallexample + --remove-section=.text.* --remove-section=!.text.foo +@end smallexample + +will remove all sections matching the pattern '.text.*', but will not +remove the section '.text.foo'. + +@item --remove-relocations=@var{sectionpattern} +Remove relocations from the output file for any section matching +@var{sectionpattern}. This option may be given more than once. Note +that using this option inappropriately may make the output file +unusable. Wildcard characters are accepted in @var{sectionpattern}. +For example: + +@smallexample + --remove-relocations=.text.* +@end smallexample + +will remove the relocations for all sections matching the patter +'.text.*'. + +If the first character of @var{sectionpattern} is the exclamation +point (!) then matching sections will not have their relocation +removed even if an earlier use of @option{--remove-relocations} on the +same command line would otherwise cause the relocations to be removed. +For example: + +@smallexample + --remove-relocations=.text.* --remove-relocations=!.text.foo +@end smallexample + +will remove all relocations for sections matching the pattern +'.text.*', but will not remove relocations for the section +'.text.foo'. + @item -s @itemx --strip-all Remove all symbols. @@ -3008,9 +3219,16 @@ When stripping a file, perhaps with @option{--strip-debug} or which would otherwise get stripped. @item --only-keep-debug -Strip a file, removing contents of any sections that would not be +Strip a file, emptying the contents of any sections that would not be stripped by @option{--strip-debug} and leaving the debugging sections -intact. In ELF files, this preserves all note sections in the output. +intact. In ELF files, this preserves all the note sections in the +output as well. + +Note - the section headers of the stripped sections are preserved, +including their sizes, but the contents of the section are discarded. +The section headers are preserved so that other tools can match up the +debuginfo file with the real executable, even if that executable has +been relocated to a different address space. The intention is that this option will be used in conjunction with @option{--add-gnu-debuglink} to create a two part executable. One a @@ -4293,6 +4511,7 @@ readelf [@option{-a}|@option{--all}] [@option{-x} |@option{--hex-dump=}] [@option{-p} |@option{--string-dump=}] [@option{-R} |@option{--relocated-dump=}] + [@option{-z}|@option{--decompress}] [@option{-c}|@option{--archive-index}] [@option{-w[lLiaprmfFsoRt]}| @option{--debug-dump}[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]] @@ -4441,6 +4660,12 @@ Displays the contents of the indicated section as printable strings. A number identifies a particular section by index in the section table; any other string identifies all sections with that name in the object file. +@item -z +@itemx --decompress +Requests that the section(s) being dumped by @option{x}, @option{R} or +@option{p} options are decompressed before being displayed. If the +section(s) are not compressed then they are displayed as is. + @item -c @itemx --archive-index @cindex Archive file symbol index information @@ -4563,8 +4788,8 @@ Set the matching input ELF machine type to @var{machine}. If @option{--input-mach} isn't specified, it will match any ELF machine types. -The supported ELF machine types are, @var{L1OM}, @var{K1OM} and -@var{x86-64}. +The supported ELF machine types are, @var{i386}, @var{IAMCU}, @var{L1OM}, +@var{K1OM} and @var{x86-64}. @item --output-mach=@var{machine} Change the ELF machine type in the ELF header to @var{machine}. The