You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
381 lines
16 KiB
HTML
381 lines
16 KiB
HTML
4 years ago
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
|
<html>
|
||
|
<!-- Copyright (C) 1991-2019 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
|
||
|
or any later version published by the Free Software Foundation;
|
||
|
with no Invariant Sections, with no Front-Cover Texts, and with no
|
||
|
Back-Cover Texts. A copy of the license is included in the
|
||
|
section entitled "GNU Free Documentation License".
|
||
|
-->
|
||
|
<!-- Created by GNU Texinfo 6.4, http://www.gnu.org/software/texinfo/ -->
|
||
|
<head>
|
||
|
<title>strip (GNU Binary Utilities)</title>
|
||
|
|
||
|
<meta name="description" content="strip (GNU Binary Utilities)">
|
||
|
<meta name="keywords" content="strip (GNU Binary Utilities)">
|
||
|
<meta name="resource-type" content="document">
|
||
|
<meta name="distribution" content="global">
|
||
|
<meta name="Generator" content="makeinfo">
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
|
<link href="index.html#Top" rel="start" title="Top">
|
||
|
<link href="Binutils-Index.html#Binutils-Index" rel="index" title="Binutils Index">
|
||
|
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
|
||
|
<link href="index.html#Top" rel="up" title="Top">
|
||
|
<link href="c_002b_002bfilt.html#c_002b_002bfilt" rel="next" title="c++filt">
|
||
|
<link href="strings.html#strings" rel="prev" title="strings">
|
||
|
<style type="text/css">
|
||
|
<!--
|
||
|
a.summary-letter {text-decoration: none}
|
||
|
blockquote.indentedblock {margin-right: 0em}
|
||
|
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
|
||
|
blockquote.smallquotation {font-size: smaller}
|
||
|
div.display {margin-left: 3.2em}
|
||
|
div.example {margin-left: 3.2em}
|
||
|
div.lisp {margin-left: 3.2em}
|
||
|
div.smalldisplay {margin-left: 3.2em}
|
||
|
div.smallexample {margin-left: 3.2em}
|
||
|
div.smalllisp {margin-left: 3.2em}
|
||
|
kbd {font-style: oblique}
|
||
|
pre.display {font-family: inherit}
|
||
|
pre.format {font-family: inherit}
|
||
|
pre.menu-comment {font-family: serif}
|
||
|
pre.menu-preformatted {font-family: serif}
|
||
|
pre.smalldisplay {font-family: inherit; font-size: smaller}
|
||
|
pre.smallexample {font-size: smaller}
|
||
|
pre.smallformat {font-family: inherit; font-size: smaller}
|
||
|
pre.smalllisp {font-size: smaller}
|
||
|
span.nolinebreak {white-space: nowrap}
|
||
|
span.roman {font-family: initial; font-weight: normal}
|
||
|
span.sansserif {font-family: sans-serif; font-weight: normal}
|
||
|
ul.no-bullet {list-style: none}
|
||
|
-->
|
||
|
</style>
|
||
|
|
||
|
|
||
|
</head>
|
||
|
|
||
|
<body lang="en">
|
||
|
<a name="strip"></a>
|
||
|
<div class="header">
|
||
|
<p>
|
||
|
Next: <a href="c_002b_002bfilt.html#c_002b_002bfilt" accesskey="n" rel="next">c++filt</a>, Previous: <a href="strings.html#strings" accesskey="p" rel="prev">strings</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Binutils-Index.html#Binutils-Index" title="Index" rel="index">Index</a>]</p>
|
||
|
</div>
|
||
|
<hr>
|
||
|
<a name="strip-1"></a>
|
||
|
<h2 class="chapter">8 strip</h2>
|
||
|
|
||
|
<a name="index-strip"></a>
|
||
|
<a name="index-removing-symbols"></a>
|
||
|
<a name="index-discarding-symbols"></a>
|
||
|
<a name="index-symbols_002c-discarding"></a>
|
||
|
|
||
|
|
||
|
<div class="smallexample">
|
||
|
<pre class="smallexample">strip [<samp>-F</samp> <var>bfdname</var> |<samp>--target=</samp><var>bfdname</var>]
|
||
|
[<samp>-I</samp> <var>bfdname</var> |<samp>--input-target=</samp><var>bfdname</var>]
|
||
|
[<samp>-O</samp> <var>bfdname</var> |<samp>--output-target=</samp><var>bfdname</var>]
|
||
|
[<samp>-s</samp>|<samp>--strip-all</samp>]
|
||
|
[<samp>-S</samp>|<samp>-g</samp>|<samp>-d</samp>|<samp>--strip-debug</samp>]
|
||
|
[<samp>--strip-dwo</samp>]
|
||
|
[<samp>-K</samp> <var>symbolname</var>|<samp>--keep-symbol=</samp><var>symbolname</var>]
|
||
|
[<samp>-M</samp>|<samp>--merge-notes</samp>][<samp>--no-merge-notes</samp>]
|
||
|
[<samp>-N</samp> <var>symbolname</var> |<samp>--strip-symbol=</samp><var>symbolname</var>]
|
||
|
[<samp>-w</samp>|<samp>--wildcard</samp>]
|
||
|
[<samp>-x</samp>|<samp>--discard-all</samp>] [<samp>-X</samp> |<samp>--discard-locals</samp>]
|
||
|
[<samp>-R</samp> <var>sectionname</var> |<samp>--remove-section=</samp><var>sectionname</var>]
|
||
|
[<samp>--remove-relocations=</samp><var>sectionpattern</var>]
|
||
|
[<samp>-o</samp> <var>file</var>] [<samp>-p</samp>|<samp>--preserve-dates</samp>]
|
||
|
[<samp>-D</samp>|<samp>--enable-deterministic-archives</samp>]
|
||
|
[<samp>-U</samp>|<samp>--disable-deterministic-archives</samp>]
|
||
|
[<samp>--keep-file-symbols</samp>]
|
||
|
[<samp>--only-keep-debug</samp>]
|
||
|
[<samp>-v</samp> |<samp>--verbose</samp>] [<samp>-V</samp>|<samp>--version</samp>]
|
||
|
[<samp>--help</samp>] [<samp>--info</samp>]
|
||
|
<var>objfile</var>…
|
||
|
</pre></div>
|
||
|
|
||
|
|
||
|
<p><small>GNU</small> <code>strip</code> discards all symbols from object files
|
||
|
<var>objfile</var>. The list of object files may include archives.
|
||
|
At least one object file must be given.
|
||
|
</p>
|
||
|
<p><code>strip</code> modifies the files named in its argument,
|
||
|
rather than writing modified copies under different names.
|
||
|
</p>
|
||
|
|
||
|
|
||
|
<dl compact="compact">
|
||
|
<dt><code>-F <var>bfdname</var></code></dt>
|
||
|
<dt><code>--target=<var>bfdname</var></code></dt>
|
||
|
<dd><p>Treat the original <var>objfile</var> as a file with the object
|
||
|
code format <var>bfdname</var>, and rewrite it in the same format.
|
||
|
See <a href="Target-Selection.html#Target-Selection">Target Selection</a>, for more information.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>--help</code></dt>
|
||
|
<dd><p>Show a summary of the options to <code>strip</code> and exit.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>--info</code></dt>
|
||
|
<dd><p>Display a list showing all architectures and object formats available.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-I <var>bfdname</var></code></dt>
|
||
|
<dt><code>--input-target=<var>bfdname</var></code></dt>
|
||
|
<dd><p>Treat the original <var>objfile</var> as a file with the object
|
||
|
code format <var>bfdname</var>.
|
||
|
See <a href="Target-Selection.html#Target-Selection">Target Selection</a>, for more information.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-O <var>bfdname</var></code></dt>
|
||
|
<dt><code>--output-target=<var>bfdname</var></code></dt>
|
||
|
<dd><p>Replace <var>objfile</var> with a file in the output format <var>bfdname</var>.
|
||
|
See <a href="Target-Selection.html#Target-Selection">Target Selection</a>, for more information.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-R <var>sectionname</var></code></dt>
|
||
|
<dt><code>--remove-section=<var>sectionname</var></code></dt>
|
||
|
<dd><p>Remove any section named <var>sectionname</var> from the output file, in
|
||
|
addition to whatever sections would otherwise be removed. This
|
||
|
option may be given more than once. Note that using this option
|
||
|
inappropriately may make the output file unusable. The wildcard
|
||
|
character ‘<samp>*</samp>’ may be given at the end of <var>sectionname</var>. If
|
||
|
so, then any section starting with <var>sectionname</var> will be removed.
|
||
|
</p>
|
||
|
<p>If the first character of <var>sectionpattern</var> is the exclamation
|
||
|
point (!) then matching sections will not be removed even if an
|
||
|
earlier use of <samp>--remove-section</samp> on the same command line
|
||
|
would otherwise remove it. For example:
|
||
|
</p>
|
||
|
<div class="smallexample">
|
||
|
<pre class="smallexample"> --remove-section=.text.* --remove-section=!.text.foo
|
||
|
</pre></div>
|
||
|
|
||
|
<p>will remove all sections matching the pattern ’.text.*’, but will not
|
||
|
remove the section ’.text.foo’.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>--remove-relocations=<var>sectionpattern</var></code></dt>
|
||
|
<dd><p>Remove relocations from the output file for any section matching
|
||
|
<var>sectionpattern</var>. 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</var>.
|
||
|
For example:
|
||
|
</p>
|
||
|
<div class="smallexample">
|
||
|
<pre class="smallexample"> --remove-relocations=.text.*
|
||
|
</pre></div>
|
||
|
|
||
|
<p>will remove the relocations for all sections matching the patter
|
||
|
’.text.*’.
|
||
|
</p>
|
||
|
<p>If the first character of <var>sectionpattern</var> is the exclamation
|
||
|
point (!) then matching sections will not have their relocation
|
||
|
removed even if an earlier use of <samp>--remove-relocations</samp> on the
|
||
|
same command line would otherwise cause the relocations to be removed.
|
||
|
For example:
|
||
|
</p>
|
||
|
<div class="smallexample">
|
||
|
<pre class="smallexample"> --remove-relocations=.text.* --remove-relocations=!.text.foo
|
||
|
</pre></div>
|
||
|
|
||
|
<p>will remove all relocations for sections matching the pattern
|
||
|
’.text.*’, but will not remove relocations for the section
|
||
|
’.text.foo’.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-s</code></dt>
|
||
|
<dt><code>--strip-all</code></dt>
|
||
|
<dd><p>Remove all symbols.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-g</code></dt>
|
||
|
<dt><code>-S</code></dt>
|
||
|
<dt><code>-d</code></dt>
|
||
|
<dt><code>--strip-debug</code></dt>
|
||
|
<dd><p>Remove debugging symbols only.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>--strip-dwo</code></dt>
|
||
|
<dd><p>Remove the contents of all DWARF .dwo sections, leaving the
|
||
|
remaining debugging sections and all symbols intact.
|
||
|
See the description of this option in the <code>objcopy</code> section
|
||
|
for more information.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>--strip-unneeded</code></dt>
|
||
|
<dd><p>Remove all symbols that are not needed for relocation processing.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-K <var>symbolname</var></code></dt>
|
||
|
<dt><code>--keep-symbol=<var>symbolname</var></code></dt>
|
||
|
<dd><p>When stripping symbols, keep symbol <var>symbolname</var> even if it would
|
||
|
normally be stripped. This option may be given more than once.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-M</code></dt>
|
||
|
<dt><code>--merge-notes</code></dt>
|
||
|
<dt><code>--no-merge-notes</code></dt>
|
||
|
<dd><p>For ELF files, attempt (or do not attempt) to reduce the size of any
|
||
|
SHT_NOTE type sections by removing duplicate notes. The default is to
|
||
|
attempt this reduction.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-N <var>symbolname</var></code></dt>
|
||
|
<dt><code>--strip-symbol=<var>symbolname</var></code></dt>
|
||
|
<dd><p>Remove symbol <var>symbolname</var> from the source file. This option may be
|
||
|
given more than once, and may be combined with strip options other than
|
||
|
<samp>-K</samp>.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-o <var>file</var></code></dt>
|
||
|
<dd><p>Put the stripped output in <var>file</var>, rather than replacing the
|
||
|
existing file. When this argument is used, only one <var>objfile</var>
|
||
|
argument may be specified.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-p</code></dt>
|
||
|
<dt><code>--preserve-dates</code></dt>
|
||
|
<dd><p>Preserve the access and modification dates of the file.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-D</code></dt>
|
||
|
<dt><code>--enable-deterministic-archives</code></dt>
|
||
|
<dd><a name="index-deterministic-archives-6"></a>
|
||
|
<a name="index-_002d_002denable_002ddeterministic_002darchives-6"></a>
|
||
|
<p>Operate in <em>deterministic</em> mode. When copying archive members
|
||
|
and writing the archive index, use zero for UIDs, GIDs, timestamps,
|
||
|
and use consistent file modes for all files.
|
||
|
</p>
|
||
|
<p>If <samp>binutils</samp> was configured with
|
||
|
<samp>--enable-deterministic-archives</samp>, then this mode is on by default.
|
||
|
It can be disabled with the ‘<samp>-U</samp>’ option, below.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-U</code></dt>
|
||
|
<dt><code>--disable-deterministic-archives</code></dt>
|
||
|
<dd><a name="index-deterministic-archives-7"></a>
|
||
|
<a name="index-_002d_002denable_002ddeterministic_002darchives-7"></a>
|
||
|
<p>Do <em>not</em> operate in <em>deterministic</em> mode. This is the
|
||
|
inverse of the <samp>-D</samp> option, above: when copying archive members
|
||
|
and writing the archive index, use their actual UID, GID, timestamp,
|
||
|
and file mode values.
|
||
|
</p>
|
||
|
<p>This is the default unless <samp>binutils</samp> was configured with
|
||
|
<samp>--enable-deterministic-archives</samp>.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-w</code></dt>
|
||
|
<dt><code>--wildcard</code></dt>
|
||
|
<dd><p>Permit regular expressions in <var>symbolname</var>s used in other command
|
||
|
line options. The question mark (?), asterisk (*), backslash (\) and
|
||
|
square brackets ([]) operators can be used anywhere in the symbol
|
||
|
name. If the first character of the symbol name is the exclamation
|
||
|
point (!) then the sense of the switch is reversed for that symbol.
|
||
|
For example:
|
||
|
</p>
|
||
|
<div class="smallexample">
|
||
|
<pre class="smallexample"> -w -K !foo -K fo*
|
||
|
</pre></div>
|
||
|
|
||
|
<p>would cause strip to only keep symbols that start with the letters
|
||
|
“fo”, but to discard the symbol “foo”.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-x</code></dt>
|
||
|
<dt><code>--discard-all</code></dt>
|
||
|
<dd><p>Remove non-global symbols.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-X</code></dt>
|
||
|
<dt><code>--discard-locals</code></dt>
|
||
|
<dd><p>Remove compiler-generated local symbols.
|
||
|
(These usually start with ‘<samp>L</samp>’ or ‘<samp>.</samp>’.)
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>--keep-file-symbols</code></dt>
|
||
|
<dd><p>When stripping a file, perhaps with <samp>--strip-debug</samp> or
|
||
|
<samp>--strip-unneeded</samp>, retain any symbols specifying source file names,
|
||
|
which would otherwise get stripped.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>--only-keep-debug</code></dt>
|
||
|
<dd><p>Strip a file, emptying the contents of any sections that would not be
|
||
|
stripped by <samp>--strip-debug</samp> and leaving the debugging sections
|
||
|
intact. In ELF files, this preserves all the note sections in the
|
||
|
output as well.
|
||
|
</p>
|
||
|
<p>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.
|
||
|
</p>
|
||
|
<p>The intention is that this option will be used in conjunction with
|
||
|
<samp>--add-gnu-debuglink</samp> to create a two part executable. One a
|
||
|
stripped binary which will occupy less space in RAM and in a
|
||
|
distribution and the second a debugging information file which is only
|
||
|
needed if debugging abilities are required. The suggested procedure
|
||
|
to create these files is as follows:
|
||
|
</p>
|
||
|
<ol>
|
||
|
<li> Link the executable as normal. Assuming that it is called
|
||
|
<code>foo</code> then...
|
||
|
</li><li> Run <code>objcopy --only-keep-debug foo foo.dbg</code> to
|
||
|
create a file containing the debugging info.
|
||
|
</li><li> Run <code>objcopy --strip-debug foo</code> to create a
|
||
|
stripped executable.
|
||
|
</li><li> Run <code>objcopy --add-gnu-debuglink=foo.dbg foo</code>
|
||
|
to add a link to the debugging info into the stripped executable.
|
||
|
</li></ol>
|
||
|
|
||
|
<p>Note—the choice of <code>.dbg</code> as an extension for the debug info
|
||
|
file is arbitrary. Also the <code>--only-keep-debug</code> step is
|
||
|
optional. You could instead do this:
|
||
|
</p>
|
||
|
<ol>
|
||
|
<li> Link the executable as normal.
|
||
|
</li><li> Copy <code>foo</code> to <code>foo.full</code>
|
||
|
</li><li> Run <code>strip --strip-debug foo</code>
|
||
|
</li><li> Run <code>objcopy --add-gnu-debuglink=foo.full foo</code>
|
||
|
</li></ol>
|
||
|
|
||
|
<p>i.e., the file pointed to by the <samp>--add-gnu-debuglink</samp> can be the
|
||
|
full executable. It does not have to be a file created by the
|
||
|
<samp>--only-keep-debug</samp> switch.
|
||
|
</p>
|
||
|
<p>Note—this switch is only intended for use on fully linked files. It
|
||
|
does not make sense to use it on object files where the debugging
|
||
|
information may be incomplete. Besides the gnu_debuglink feature
|
||
|
currently only supports the presence of one filename containing
|
||
|
debugging information, not multiple filenames on a one-per-object-file
|
||
|
basis.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-V</code></dt>
|
||
|
<dt><code>--version</code></dt>
|
||
|
<dd><p>Show the version number for <code>strip</code>.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><code>-v</code></dt>
|
||
|
<dt><code>--verbose</code></dt>
|
||
|
<dd><p>Verbose output: list all object files modified. In the case of
|
||
|
archives, ‘<samp>strip -v</samp>’ lists all members of the archive.
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
|
||
|
|
||
|
<hr>
|
||
|
<div class="header">
|
||
|
<p>
|
||
|
Next: <a href="c_002b_002bfilt.html#c_002b_002bfilt" accesskey="n" rel="next">c++filt</a>, Previous: <a href="strings.html#strings" accesskey="p" rel="prev">strings</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Binutils-Index.html#Binutils-Index" title="Index" rel="index">Index</a>]</p>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
</body>
|
||
|
</html>
|