X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=binutils%2Fdoc%2Fbinutils.texi;h=22d54bebfede058bf0021e6df30f9a625d65867e;hb=4fd77a3d12291cd9351e1f776a5ade11f99a28ac;hp=a5bfd4c0b44eb8368852d9ccdae127ec273a04dc;hpb=c1724c7fd39d85ccc1f94a0cd7bc25b19aa43ffd;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi index a5bfd4c0b4..22d54bebfe 100644 --- a/binutils/doc/binutils.texi +++ b/binutils/doc/binutils.texi @@ -1091,6 +1091,7 @@ objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}] [@option{--set-section-flags} @var{sectionpattern}=@var{flags}] [@option{--add-section} @var{sectionname}=@var{filename}] [@option{--dump-section} @var{sectionname}=@var{filename}] + [@option{--update-section} @var{sectionname}=@var{filename}] [@option{--rename-section} @var{oldname}=@var{newname}[,@var{flags}]] [@option{--long-section-names} @{enable,disable,keep@}] [@option{--change-leading-char}] [@option{--remove-leading-char}] @@ -1489,6 +1490,21 @@ that it does not create a formatted file, it just dumps the contents as raw binary data, without applying any relocations. The option can be specified more than once. +@item --update-section @var{sectionname}=@var{filename} +Replace the existing contents of a section named @var{sectionname} +with the contents of file @var{filename}. The size of the section +will be adjusted to the size of the file. The section flags for +@var{sectionname} will be unchanged. For ELF format files the section +to segment mapping will also remain unchanged, something which is not +possible using @option{--remove-section} followed by +@option{--add-section}. The option can be specified more than once. + +Note - it is possible to use @option{--rename-section} and +@option{--update-section} to both update and rename a section from one +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 --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 @@ -1668,8 +1684,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