| 1 |
205 |
julius |
.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
|
| 2 |
|
|
.\"
|
| 3 |
|
|
.\" Standard preamble:
|
| 4 |
|
|
.\" ========================================================================
|
| 5 |
|
|
.de Sh \" Subsection heading
|
| 6 |
|
|
.br
|
| 7 |
|
|
.if t .Sp
|
| 8 |
|
|
.ne 5
|
| 9 |
|
|
.PP
|
| 10 |
|
|
\fB\\$1\fR
|
| 11 |
|
|
.PP
|
| 12 |
|
|
..
|
| 13 |
|
|
.de Sp \" Vertical space (when we can't use .PP)
|
| 14 |
|
|
.if t .sp .5v
|
| 15 |
|
|
.if n .sp
|
| 16 |
|
|
..
|
| 17 |
|
|
.de Vb \" Begin verbatim text
|
| 18 |
|
|
.ft CW
|
| 19 |
|
|
.nf
|
| 20 |
|
|
.ne \\$1
|
| 21 |
|
|
..
|
| 22 |
|
|
.de Ve \" End verbatim text
|
| 23 |
|
|
.ft R
|
| 24 |
|
|
.fi
|
| 25 |
|
|
..
|
| 26 |
|
|
.\" Set up some character translations and predefined strings. \*(-- will
|
| 27 |
|
|
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
|
| 28 |
|
|
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
|
| 29 |
|
|
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
|
| 30 |
|
|
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
|
| 31 |
|
|
.\" nothing in troff, for use with C<>.
|
| 32 |
|
|
.tr \(*W-
|
| 33 |
|
|
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
|
| 34 |
|
|
.ie n \{\
|
| 35 |
|
|
. ds -- \(*W-
|
| 36 |
|
|
. ds PI pi
|
| 37 |
|
|
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
|
| 38 |
|
|
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
| 39 |
|
|
. ds L" ""
|
| 40 |
|
|
. ds R" ""
|
| 41 |
|
|
. ds C` ""
|
| 42 |
|
|
. ds C' ""
|
| 43 |
|
|
'br\}
|
| 44 |
|
|
.el\{\
|
| 45 |
|
|
. ds -- \|\(em\|
|
| 46 |
|
|
. ds PI \(*p
|
| 47 |
|
|
. ds L" ``
|
| 48 |
|
|
. ds R" ''
|
| 49 |
|
|
'br\}
|
| 50 |
|
|
.\"
|
| 51 |
|
|
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
| 52 |
|
|
.ie \n(.g .ds Aq \(aq
|
| 53 |
|
|
.el .ds Aq '
|
| 54 |
|
|
.\"
|
| 55 |
|
|
.\" If the F register is turned on, we'll generate index entries on stderr for
|
| 56 |
|
|
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
|
| 57 |
|
|
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
| 58 |
|
|
.\" output yourself in some meaningful fashion.
|
| 59 |
|
|
.ie \nF \{\
|
| 60 |
|
|
. de IX
|
| 61 |
|
|
. tm Index:\\$1\t\\n%\t"\\$2"
|
| 62 |
|
|
..
|
| 63 |
|
|
. nr % 0
|
| 64 |
|
|
. rr F
|
| 65 |
|
|
.\}
|
| 66 |
|
|
.el \{\
|
| 67 |
|
|
. de IX
|
| 68 |
|
|
..
|
| 69 |
|
|
.\}
|
| 70 |
|
|
.\"
|
| 71 |
|
|
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
| 72 |
|
|
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
| 73 |
|
|
. \" fudge factors for nroff and troff
|
| 74 |
|
|
.if n \{\
|
| 75 |
|
|
. ds #H 0
|
| 76 |
|
|
. ds #V .8m
|
| 77 |
|
|
. ds #F .3m
|
| 78 |
|
|
. ds #[ \f1
|
| 79 |
|
|
. ds #] \fP
|
| 80 |
|
|
.\}
|
| 81 |
|
|
.if t \{\
|
| 82 |
|
|
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
|
| 83 |
|
|
. ds #V .6m
|
| 84 |
|
|
. ds #F 0
|
| 85 |
|
|
. ds #[ \&
|
| 86 |
|
|
. ds #] \&
|
| 87 |
|
|
.\}
|
| 88 |
|
|
. \" simple accents for nroff and troff
|
| 89 |
|
|
.if n \{\
|
| 90 |
|
|
. ds ' \&
|
| 91 |
|
|
. ds ` \&
|
| 92 |
|
|
. ds ^ \&
|
| 93 |
|
|
. ds , \&
|
| 94 |
|
|
. ds ~ ~
|
| 95 |
|
|
. ds /
|
| 96 |
|
|
.\}
|
| 97 |
|
|
.if t \{\
|
| 98 |
|
|
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
|
| 99 |
|
|
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
|
| 100 |
|
|
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
|
| 101 |
|
|
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
|
| 102 |
|
|
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
|
| 103 |
|
|
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
|
| 104 |
|
|
.\}
|
| 105 |
|
|
. \" troff and (daisy-wheel) nroff accents
|
| 106 |
|
|
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
|
| 107 |
|
|
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
|
| 108 |
|
|
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
|
| 109 |
|
|
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
|
| 110 |
|
|
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
|
| 111 |
|
|
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
|
| 112 |
|
|
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
|
| 113 |
|
|
.ds ae a\h'-(\w'a'u*4/10)'e
|
| 114 |
|
|
.ds Ae A\h'-(\w'A'u*4/10)'E
|
| 115 |
|
|
. \" corrections for vroff
|
| 116 |
|
|
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
|
| 117 |
|
|
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
|
| 118 |
|
|
. \" for low resolution devices (crt and lpr)
|
| 119 |
|
|
.if \n(.H>23 .if \n(.V>19 \
|
| 120 |
|
|
\{\
|
| 121 |
|
|
. ds : e
|
| 122 |
|
|
. ds 8 ss
|
| 123 |
|
|
. ds o a
|
| 124 |
|
|
. ds d- d\h'-1'\(ga
|
| 125 |
|
|
. ds D- D\h'-1'\(hy
|
| 126 |
|
|
. ds th \o'bp'
|
| 127 |
|
|
. ds Th \o'LP'
|
| 128 |
|
|
. ds ae ae
|
| 129 |
|
|
. ds Ae AE
|
| 130 |
|
|
.\}
|
| 131 |
|
|
.rm #[ #] #H #V #F C
|
| 132 |
|
|
.\" ========================================================================
|
| 133 |
|
|
.\"
|
| 134 |
|
|
.IX Title "LD 1"
|
| 135 |
|
|
.TH LD 1 "2009-10-16" "binutils-2.20" "GNU Development Tools"
|
| 136 |
|
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
| 137 |
|
|
.\" way too many mistakes in technical documents.
|
| 138 |
|
|
.if n .ad l
|
| 139 |
|
|
.nh
|
| 140 |
|
|
.SH "NAME"
|
| 141 |
|
|
ld \- The GNU linker
|
| 142 |
|
|
.SH "SYNOPSIS"
|
| 143 |
|
|
.IX Header "SYNOPSIS"
|
| 144 |
|
|
ld [\fBoptions\fR] \fIobjfile\fR ...
|
| 145 |
|
|
.SH "DESCRIPTION"
|
| 146 |
|
|
.IX Header "DESCRIPTION"
|
| 147 |
|
|
\&\fBld\fR combines a number of object and archive files, relocates
|
| 148 |
|
|
their data and ties up symbol references. Usually the last step in
|
| 149 |
|
|
compiling a program is to run \fBld\fR.
|
| 150 |
|
|
.PP
|
| 151 |
|
|
\&\fBld\fR accepts Linker Command Language files written in
|
| 152 |
|
|
a superset of \s-1AT&T\s0's Link Editor Command Language syntax,
|
| 153 |
|
|
to provide explicit and total control over the linking process.
|
| 154 |
|
|
.PP
|
| 155 |
|
|
This man page does not describe the command language; see the
|
| 156 |
|
|
\&\fBld\fR entry in \f(CW\*(C`info\*(C'\fR for full details on the command
|
| 157 |
|
|
language and on other aspects of the \s-1GNU\s0 linker.
|
| 158 |
|
|
.PP
|
| 159 |
|
|
This version of \fBld\fR uses the general purpose \s-1BFD\s0 libraries
|
| 160 |
|
|
to operate on object files. This allows \fBld\fR to read, combine, and
|
| 161 |
|
|
write object files in many different formats\-\-\-for example, \s-1COFF\s0 or
|
| 162 |
|
|
\&\f(CW\*(C`a.out\*(C'\fR. Different formats may be linked together to produce any
|
| 163 |
|
|
available kind of object file.
|
| 164 |
|
|
.PP
|
| 165 |
|
|
Aside from its flexibility, the \s-1GNU\s0 linker is more helpful than other
|
| 166 |
|
|
linkers in providing diagnostic information. Many linkers abandon
|
| 167 |
|
|
execution immediately upon encountering an error; whenever possible,
|
| 168 |
|
|
\&\fBld\fR continues executing, allowing you to identify other errors
|
| 169 |
|
|
(or, in some cases, to get an output file in spite of the error).
|
| 170 |
|
|
.PP
|
| 171 |
|
|
The \s-1GNU\s0 linker \fBld\fR is meant to cover a broad range of situations,
|
| 172 |
|
|
and to be as compatible as possible with other linkers. As a result,
|
| 173 |
|
|
you have many choices to control its behavior.
|
| 174 |
|
|
.SH "OPTIONS"
|
| 175 |
|
|
.IX Header "OPTIONS"
|
| 176 |
|
|
The linker supports a plethora of command-line options, but in actual
|
| 177 |
|
|
practice few of them are used in any particular context.
|
| 178 |
|
|
For instance, a frequent use of \fBld\fR is to link standard Unix
|
| 179 |
|
|
object files on a standard, supported Unix system. On such a system, to
|
| 180 |
|
|
link a file \f(CW\*(C`hello.o\*(C'\fR:
|
| 181 |
|
|
.PP
|
| 182 |
|
|
.Vb 1
|
| 183 |
|
|
\& ld \-o
|
| 184 |
|
|
.Ve
|
| 185 |
|
|
.PP
|
| 186 |
|
|
This tells \fBld\fR to produce a file called \fIoutput\fR as the
|
| 187 |
|
|
result of linking the file \f(CW\*(C`/lib/crt0.o\*(C'\fR with \f(CW\*(C`hello.o\*(C'\fR and
|
| 188 |
|
|
the library \f(CW\*(C`libc.a\*(C'\fR, which will come from the standard search
|
| 189 |
|
|
directories. (See the discussion of the \fB\-l\fR option below.)
|
| 190 |
|
|
.PP
|
| 191 |
|
|
Some of the command-line options to \fBld\fR may be specified at any
|
| 192 |
|
|
point in the command line. However, options which refer to files, such
|
| 193 |
|
|
as \fB\-l\fR or \fB\-T\fR, cause the file to be read at the point at
|
| 194 |
|
|
which the option appears in the command line, relative to the object
|
| 195 |
|
|
files and other file options. Repeating non-file options with a
|
| 196 |
|
|
different argument will either have no further effect, or override prior
|
| 197 |
|
|
occurrences (those further to the left on the command line) of that
|
| 198 |
|
|
option. Options which may be meaningfully specified more than once are
|
| 199 |
|
|
noted in the descriptions below.
|
| 200 |
|
|
.PP
|
| 201 |
|
|
Non-option arguments are object files or archives which are to be linked
|
| 202 |
|
|
together. They may follow, precede, or be mixed in with command-line
|
| 203 |
|
|
options, except that an object file argument may not be placed between
|
| 204 |
|
|
an option and its argument.
|
| 205 |
|
|
.PP
|
| 206 |
|
|
Usually the linker is invoked with at least one object file, but you can
|
| 207 |
|
|
specify other forms of binary input files using \fB\-l\fR, \fB\-R\fR,
|
| 208 |
|
|
and the script command language. If \fIno\fR binary input files at all
|
| 209 |
|
|
are specified, the linker does not produce any output, and issues the
|
| 210 |
|
|
message \fBNo input files\fR.
|
| 211 |
|
|
.PP
|
| 212 |
|
|
If the linker cannot recognize the format of an object file, it will
|
| 213 |
|
|
assume that it is a linker script. A script specified in this way
|
| 214 |
|
|
augments the main linker script used for the link (either the default
|
| 215 |
|
|
linker script or the one specified by using \fB\-T\fR). This feature
|
| 216 |
|
|
permits the linker to link against a file which appears to be an object
|
| 217 |
|
|
or an archive, but actually merely defines some symbol values, or uses
|
| 218 |
|
|
\&\f(CW\*(C`INPUT\*(C'\fR or \f(CW\*(C`GROUP\*(C'\fR to load other objects. Specifying a
|
| 219 |
|
|
script in this way merely augments the main linker script, with the
|
| 220 |
|
|
extra commands placed after the main script; use the \fB\-T\fR option
|
| 221 |
|
|
to replace the default linker script entirely, but note the effect of
|
| 222 |
|
|
the \f(CW\*(C`INSERT\*(C'\fR command.
|
| 223 |
|
|
.PP
|
| 224 |
|
|
For options whose names are a single letter,
|
| 225 |
|
|
option arguments must either follow the option letter without intervening
|
| 226 |
|
|
whitespace, or be given as separate arguments immediately following the
|
| 227 |
|
|
option that requires them.
|
| 228 |
|
|
.PP
|
| 229 |
|
|
For options whose names are multiple letters, either one dash or two can
|
| 230 |
|
|
precede the option name; for example, \fB\-trace\-symbol\fR and
|
| 231 |
|
|
\&\fB\-\-trace\-symbol\fR are equivalent. Note\-\-\-there is one exception to
|
| 232 |
|
|
this rule. Multiple letter options that start with a lower case 'o' can
|
| 233 |
|
|
only be preceded by two dashes. This is to reduce confusion with the
|
| 234 |
|
|
\&\fB\-o\fR option. So for example \fB\-omagic\fR sets the output file
|
| 235 |
|
|
name to \fBmagic\fR whereas \fB\-\-omagic\fR sets the \s-1NMAGIC\s0 flag on the
|
| 236 |
|
|
output.
|
| 237 |
|
|
.PP
|
| 238 |
|
|
Arguments to multiple-letter options must either be separated from the
|
| 239 |
|
|
option name by an equals sign, or be given as separate arguments
|
| 240 |
|
|
immediately following the option that requires them. For example,
|
| 241 |
|
|
\&\fB\-\-trace\-symbol foo\fR and \fB\-\-trace\-symbol=foo\fR are equivalent.
|
| 242 |
|
|
Unique abbreviations of the names of multiple-letter options are
|
| 243 |
|
|
accepted.
|
| 244 |
|
|
.PP
|
| 245 |
|
|
Note\-\-\-if the linker is being invoked indirectly, via a compiler driver
|
| 246 |
|
|
(e.g. \fBgcc\fR) then all the linker command line options should be
|
| 247 |
|
|
prefixed by \fB\-Wl,\fR (or whatever is appropriate for the particular
|
| 248 |
|
|
compiler driver) like this:
|
| 249 |
|
|
.PP
|
| 250 |
|
|
.Vb 1
|
| 251 |
|
|
\& gcc \-Wl,\-\-start\-group foo.o bar.o \-Wl,\-\-end\-group
|
| 252 |
|
|
.Ve
|
| 253 |
|
|
.PP
|
| 254 |
|
|
This is important, because otherwise the compiler driver program may
|
| 255 |
|
|
silently drop the linker options, resulting in a bad link. Confusion
|
| 256 |
|
|
may also arise when passing options that require values through a
|
| 257 |
|
|
driver, as the use of a space between option and argument acts as
|
| 258 |
|
|
a separator, and causes the driver to pass only the option to the linker
|
| 259 |
|
|
and the argument to the compiler. In this case, it is simplest to use
|
| 260 |
|
|
the joined forms of both single\- and multiple-letter options, such as:
|
| 261 |
|
|
.PP
|
| 262 |
|
|
.Vb 1
|
| 263 |
|
|
\& gcc foo.o bar.o \-Wl,\-eENTRY \-Wl,\-Map=a.map
|
| 264 |
|
|
.Ve
|
| 265 |
|
|
.PP
|
| 266 |
|
|
Here is a table of the generic command line switches accepted by the \s-1GNU\s0
|
| 267 |
|
|
linker:
|
| 268 |
|
|
.IP "\fB@\fR\fIfile\fR" 4
|
| 269 |
|
|
.IX Item "@file"
|
| 270 |
|
|
Read command-line options from \fIfile\fR. The options read are
|
| 271 |
|
|
inserted in place of the original @\fIfile\fR option. If \fIfile\fR
|
| 272 |
|
|
does not exist, or cannot be read, then the option will be treated
|
| 273 |
|
|
literally, and not removed.
|
| 274 |
|
|
.Sp
|
| 275 |
|
|
Options in \fIfile\fR are separated by whitespace. A whitespace
|
| 276 |
|
|
character may be included in an option by surrounding the entire
|
| 277 |
|
|
option in either single or double quotes. Any character (including a
|
| 278 |
|
|
backslash) may be included by prefixing the character to be included
|
| 279 |
|
|
with a backslash. The \fIfile\fR may itself contain additional
|
| 280 |
|
|
@\fIfile\fR options; any such options will be processed recursively.
|
| 281 |
|
|
.IP "\fB\-a\fR \fIkeyword\fR" 4
|
| 282 |
|
|
.IX Item "-a keyword"
|
| 283 |
|
|
This option is supported for \s-1HP/UX\s0 compatibility. The \fIkeyword\fR
|
| 284 |
|
|
argument must be one of the strings \fBarchive\fR, \fBshared\fR, or
|
| 285 |
|
|
\&\fBdefault\fR. \fB\-aarchive\fR is functionally equivalent to
|
| 286 |
|
|
\&\fB\-Bstatic\fR, and the other two keywords are functionally equivalent
|
| 287 |
|
|
to \fB\-Bdynamic\fR. This option may be used any number of times.
|
| 288 |
|
|
.IP "\fB\-A\fR \fIarchitecture\fR" 4
|
| 289 |
|
|
.IX Item "-A architecture"
|
| 290 |
|
|
.PD 0
|
| 291 |
|
|
.IP "\fB\-\-architecture=\fR\fIarchitecture\fR" 4
|
| 292 |
|
|
.IX Item "--architecture=architecture"
|
| 293 |
|
|
.PD
|
| 294 |
|
|
In the current release of \fBld\fR, this option is useful only for the
|
| 295 |
|
|
Intel 960 family of architectures. In that \fBld\fR configuration, the
|
| 296 |
|
|
\&\fIarchitecture\fR argument identifies the particular architecture in
|
| 297 |
|
|
the 960 family, enabling some safeguards and modifying the
|
| 298 |
|
|
archive-library search path.
|
| 299 |
|
|
.Sp
|
| 300 |
|
|
Future releases of \fBld\fR may support similar functionality for
|
| 301 |
|
|
other architecture families.
|
| 302 |
|
|
.IP "\fB\-b\fR \fIinput-format\fR" 4
|
| 303 |
|
|
.IX Item "-b input-format"
|
| 304 |
|
|
.PD 0
|
| 305 |
|
|
.IP "\fB\-\-format=\fR\fIinput-format\fR" 4
|
| 306 |
|
|
.IX Item "--format=input-format"
|
| 307 |
|
|
.PD
|
| 308 |
|
|
\&\fBld\fR may be configured to support more than one kind of object
|
| 309 |
|
|
file. If your \fBld\fR is configured this way, you can use the
|
| 310 |
|
|
\&\fB\-b\fR option to specify the binary format for input object files
|
| 311 |
|
|
that follow this option on the command line. Even when \fBld\fR is
|
| 312 |
|
|
configured to support alternative object formats, you don't usually need
|
| 313 |
|
|
to specify this, as \fBld\fR should be configured to expect as a
|
| 314 |
|
|
default input format the most usual format on each machine.
|
| 315 |
|
|
\&\fIinput-format\fR is a text string, the name of a particular format
|
| 316 |
|
|
supported by the \s-1BFD\s0 libraries. (You can list the available binary
|
| 317 |
|
|
formats with \fBobjdump \-i\fR.)
|
| 318 |
|
|
.Sp
|
| 319 |
|
|
You may want to use this option if you are linking files with an unusual
|
| 320 |
|
|
binary format. You can also use \fB\-b\fR to switch formats explicitly (when
|
| 321 |
|
|
linking object files of different formats), by including
|
| 322 |
|
|
\&\fB\-b\fR \fIinput-format\fR before each group of object files in a
|
| 323 |
|
|
particular format.
|
| 324 |
|
|
.Sp
|
| 325 |
|
|
The default format is taken from the environment variable
|
| 326 |
|
|
\&\f(CW\*(C`GNUTARGET\*(C'\fR.
|
| 327 |
|
|
.Sp
|
| 328 |
|
|
You can also define the input format from a script, using the command
|
| 329 |
|
|
\&\f(CW\*(C`TARGET\*(C'\fR;
|
| 330 |
|
|
.IP "\fB\-c\fR \fIMRI-commandfile\fR" 4
|
| 331 |
|
|
.IX Item "-c MRI-commandfile"
|
| 332 |
|
|
.PD 0
|
| 333 |
|
|
.IP "\fB\-\-mri\-script=\fR\fIMRI-commandfile\fR" 4
|
| 334 |
|
|
.IX Item "--mri-script=MRI-commandfile"
|
| 335 |
|
|
.PD
|
| 336 |
|
|
For compatibility with linkers produced by \s-1MRI\s0, \fBld\fR accepts script
|
| 337 |
|
|
files written in an alternate, restricted command language, described in
|
| 338 |
|
|
the \s-1MRI\s0 Compatible Script Files section of \s-1GNU\s0 ld documentation.
|
| 339 |
|
|
Introduce \s-1MRI\s0 script files with
|
| 340 |
|
|
the option \fB\-c\fR; use the \fB\-T\fR option to run linker
|
| 341 |
|
|
scripts written in the general-purpose \fBld\fR scripting language.
|
| 342 |
|
|
If \fIMRI-cmdfile\fR does not exist, \fBld\fR looks for it in the directories
|
| 343 |
|
|
specified by any \fB\-L\fR options.
|
| 344 |
|
|
.IP "\fB\-d\fR" 4
|
| 345 |
|
|
.IX Item "-d"
|
| 346 |
|
|
.PD 0
|
| 347 |
|
|
.IP "\fB\-dc\fR" 4
|
| 348 |
|
|
.IX Item "-dc"
|
| 349 |
|
|
.IP "\fB\-dp\fR" 4
|
| 350 |
|
|
.IX Item "-dp"
|
| 351 |
|
|
.PD
|
| 352 |
|
|
These three options are equivalent; multiple forms are supported for
|
| 353 |
|
|
compatibility with other linkers. They assign space to common symbols
|
| 354 |
|
|
even if a relocatable output file is specified (with \fB\-r\fR). The
|
| 355 |
|
|
script command \f(CW\*(C`FORCE_COMMON_ALLOCATION\*(C'\fR has the same effect.
|
| 356 |
|
|
.IP "\fB\-e\fR \fIentry\fR" 4
|
| 357 |
|
|
.IX Item "-e entry"
|
| 358 |
|
|
.PD 0
|
| 359 |
|
|
.IP "\fB\-\-entry=\fR\fIentry\fR" 4
|
| 360 |
|
|
.IX Item "--entry=entry"
|
| 361 |
|
|
.PD
|
| 362 |
|
|
Use \fIentry\fR as the explicit symbol for beginning execution of your
|
| 363 |
|
|
program, rather than the default entry point. If there is no symbol
|
| 364 |
|
|
named \fIentry\fR, the linker will try to parse \fIentry\fR as a number,
|
| 365 |
|
|
and use that as the entry address (the number will be interpreted in
|
| 366 |
|
|
base 10; you may use a leading \fB0x\fR for base 16, or a leading
|
| 367 |
|
|
\&\fB0\fR for base 8).
|
| 368 |
|
|
.IP "\fB\-\-exclude\-libs\fR \fIlib\fR\fB,\fR\fIlib\fR\fB,...\fR" 4
|
| 369 |
|
|
.IX Item "--exclude-libs lib,lib,..."
|
| 370 |
|
|
Specifies a list of archive libraries from which symbols should not be automatically
|
| 371 |
|
|
exported. The library names may be delimited by commas or colons. Specifying
|
| 372 |
|
|
\&\f(CW\*(C`\-\-exclude\-libs ALL\*(C'\fR excludes symbols in all archive libraries from
|
| 373 |
|
|
automatic export. This option is available only for the i386 \s-1PE\s0 targeted
|
| 374 |
|
|
port of the linker and for \s-1ELF\s0 targeted ports. For i386 \s-1PE\s0, symbols
|
| 375 |
|
|
explicitly listed in a .def file are still exported, regardless of this
|
| 376 |
|
|
option. For \s-1ELF\s0 targeted ports, symbols affected by this option will
|
| 377 |
|
|
be treated as hidden.
|
| 378 |
|
|
.IP "\fB\-\-exclude\-modules\-for\-implib\fR \fImodule\fR\fB,\fR\fImodule\fR\fB,...\fR" 4
|
| 379 |
|
|
.IX Item "--exclude-modules-for-implib module,module,..."
|
| 380 |
|
|
Specifies a list of object files or archive members, from which symbols
|
| 381 |
|
|
should not be automatically exported, but which should be copied wholesale
|
| 382 |
|
|
into the import library being generated during the link. The module names
|
| 383 |
|
|
may be delimited by commas or colons, and must match exactly the filenames
|
| 384 |
|
|
used by \fBld\fR to open the files; for archive members, this is simply
|
| 385 |
|
|
the member name, but for object files the name listed must include and
|
| 386 |
|
|
match precisely any path used to specify the input file on the linker's
|
| 387 |
|
|
command-line. This option is available only for the i386 \s-1PE\s0 targeted port
|
| 388 |
|
|
of the linker. Symbols explicitly listed in a .def file are still exported,
|
| 389 |
|
|
regardless of this option.
|
| 390 |
|
|
.IP "\fB\-E\fR" 4
|
| 391 |
|
|
.IX Item "-E"
|
| 392 |
|
|
.PD 0
|
| 393 |
|
|
.IP "\fB\-\-export\-dynamic\fR" 4
|
| 394 |
|
|
.IX Item "--export-dynamic"
|
| 395 |
|
|
.IP "\fB\-\-no\-export\-dynamic\fR" 4
|
| 396 |
|
|
.IX Item "--no-export-dynamic"
|
| 397 |
|
|
.PD
|
| 398 |
|
|
When creating a dynamically linked executable, using the \fB\-E\fR
|
| 399 |
|
|
option or the \fB\-\-export\-dynamic\fR option causes the linker to add
|
| 400 |
|
|
all symbols to the dynamic symbol table. The dynamic symbol table is the
|
| 401 |
|
|
set of symbols which are visible from dynamic objects at run time.
|
| 402 |
|
|
.Sp
|
| 403 |
|
|
If you do not use either of these options (or use the
|
| 404 |
|
|
\&\fB\-\-no\-export\-dynamic\fR option to restore the default behavior), the
|
| 405 |
|
|
dynamic symbol table will normally contain only those symbols which are
|
| 406 |
|
|
referenced by some dynamic object mentioned in the link.
|
| 407 |
|
|
.Sp
|
| 408 |
|
|
If you use \f(CW\*(C`dlopen\*(C'\fR to load a dynamic object which needs to refer
|
| 409 |
|
|
back to the symbols defined by the program, rather than some other
|
| 410 |
|
|
dynamic object, then you will probably need to use this option when
|
| 411 |
|
|
linking the program itself.
|
| 412 |
|
|
.Sp
|
| 413 |
|
|
You can also use the dynamic list to control what symbols should
|
| 414 |
|
|
be added to the dynamic symbol table if the output format supports it.
|
| 415 |
|
|
See the description of \fB\-\-dynamic\-list\fR.
|
| 416 |
|
|
.Sp
|
| 417 |
|
|
Note that this option is specific to \s-1ELF\s0 targeted ports. \s-1PE\s0 targets
|
| 418 |
|
|
support a similar function to export all symbols from a \s-1DLL\s0 or \s-1EXE\s0; see
|
| 419 |
|
|
the description of \fB\-\-export\-all\-symbols\fR below.
|
| 420 |
|
|
.IP "\fB\-EB\fR" 4
|
| 421 |
|
|
.IX Item "-EB"
|
| 422 |
|
|
Link big-endian objects. This affects the default output format.
|
| 423 |
|
|
.IP "\fB\-EL\fR" 4
|
| 424 |
|
|
.IX Item "-EL"
|
| 425 |
|
|
Link little-endian objects. This affects the default output format.
|
| 426 |
|
|
.IP "\fB\-f\fR \fIname\fR" 4
|
| 427 |
|
|
.IX Item "-f name"
|
| 428 |
|
|
.PD 0
|
| 429 |
|
|
.IP "\fB\-\-auxiliary=\fR\fIname\fR" 4
|
| 430 |
|
|
.IX Item "--auxiliary=name"
|
| 431 |
|
|
.PD
|
| 432 |
|
|
When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_AUXILIARY\s0 field
|
| 433 |
|
|
to the specified name. This tells the dynamic linker that the symbol
|
| 434 |
|
|
table of the shared object should be used as an auxiliary filter on the
|
| 435 |
|
|
symbol table of the shared object \fIname\fR.
|
| 436 |
|
|
.Sp
|
| 437 |
|
|
If you later link a program against this filter object, then, when you
|
| 438 |
|
|
run the program, the dynamic linker will see the \s-1DT_AUXILIARY\s0 field. If
|
| 439 |
|
|
the dynamic linker resolves any symbols from the filter object, it will
|
| 440 |
|
|
first check whether there is a definition in the shared object
|
| 441 |
|
|
\&\fIname\fR. If there is one, it will be used instead of the definition
|
| 442 |
|
|
in the filter object. The shared object \fIname\fR need not exist.
|
| 443 |
|
|
Thus the shared object \fIname\fR may be used to provide an alternative
|
| 444 |
|
|
implementation of certain functions, perhaps for debugging or for
|
| 445 |
|
|
machine specific performance.
|
| 446 |
|
|
.Sp
|
| 447 |
|
|
This option may be specified more than once. The \s-1DT_AUXILIARY\s0 entries
|
| 448 |
|
|
will be created in the order in which they appear on the command line.
|
| 449 |
|
|
.IP "\fB\-F\fR \fIname\fR" 4
|
| 450 |
|
|
.IX Item "-F name"
|
| 451 |
|
|
.PD 0
|
| 452 |
|
|
.IP "\fB\-\-filter=\fR\fIname\fR" 4
|
| 453 |
|
|
.IX Item "--filter=name"
|
| 454 |
|
|
.PD
|
| 455 |
|
|
When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_FILTER\s0 field to
|
| 456 |
|
|
the specified name. This tells the dynamic linker that the symbol table
|
| 457 |
|
|
of the shared object which is being created should be used as a filter
|
| 458 |
|
|
on the symbol table of the shared object \fIname\fR.
|
| 459 |
|
|
.Sp
|
| 460 |
|
|
If you later link a program against this filter object, then, when you
|
| 461 |
|
|
run the program, the dynamic linker will see the \s-1DT_FILTER\s0 field. The
|
| 462 |
|
|
dynamic linker will resolve symbols according to the symbol table of the
|
| 463 |
|
|
filter object as usual, but it will actually link to the definitions
|
| 464 |
|
|
found in the shared object \fIname\fR. Thus the filter object can be
|
| 465 |
|
|
used to select a subset of the symbols provided by the object
|
| 466 |
|
|
\&\fIname\fR.
|
| 467 |
|
|
.Sp
|
| 468 |
|
|
Some older linkers used the \fB\-F\fR option throughout a compilation
|
| 469 |
|
|
toolchain for specifying object-file format for both input and output
|
| 470 |
|
|
object files.
|
| 471 |
|
|
The \s-1GNU\s0 linker uses other mechanisms for this purpose: the
|
| 472 |
|
|
\&\fB\-b\fR, \fB\-\-format\fR, \fB\-\-oformat\fR options, the
|
| 473 |
|
|
\&\f(CW\*(C`TARGET\*(C'\fR command in linker scripts, and the \f(CW\*(C`GNUTARGET\*(C'\fR
|
| 474 |
|
|
environment variable.
|
| 475 |
|
|
The \s-1GNU\s0 linker will ignore the \fB\-F\fR option when not
|
| 476 |
|
|
creating an \s-1ELF\s0 shared object.
|
| 477 |
|
|
.IP "\fB\-fini=\fR\fIname\fR" 4
|
| 478 |
|
|
.IX Item "-fini=name"
|
| 479 |
|
|
When creating an \s-1ELF\s0 executable or shared object, call \s-1NAME\s0 when the
|
| 480 |
|
|
executable or shared object is unloaded, by setting \s-1DT_FINI\s0 to the
|
| 481 |
|
|
address of the function. By default, the linker uses \f(CW\*(C`_fini\*(C'\fR as
|
| 482 |
|
|
the function to call.
|
| 483 |
|
|
.IP "\fB\-g\fR" 4
|
| 484 |
|
|
.IX Item "-g"
|
| 485 |
|
|
Ignored. Provided for compatibility with other tools.
|
| 486 |
|
|
.IP "\fB\-G\fR \fIvalue\fR" 4
|
| 487 |
|
|
.IX Item "-G value"
|
| 488 |
|
|
.PD 0
|
| 489 |
|
|
.IP "\fB\-\-gpsize=\fR\fIvalue\fR" 4
|
| 490 |
|
|
.IX Item "--gpsize=value"
|
| 491 |
|
|
.PD
|
| 492 |
|
|
Set the maximum size of objects to be optimized using the \s-1GP\s0 register to
|
| 493 |
|
|
\&\fIsize\fR. This is only meaningful for object file formats such as
|
| 494 |
|
|
\&\s-1MIPS\s0 \s-1ECOFF\s0 which supports putting large and small objects into different
|
| 495 |
|
|
sections. This is ignored for other object file formats.
|
| 496 |
|
|
.IP "\fB\-h\fR \fIname\fR" 4
|
| 497 |
|
|
.IX Item "-h name"
|
| 498 |
|
|
.PD 0
|
| 499 |
|
|
.IP "\fB\-soname=\fR\fIname\fR" 4
|
| 500 |
|
|
.IX Item "-soname=name"
|
| 501 |
|
|
.PD
|
| 502 |
|
|
When creating an \s-1ELF\s0 shared object, set the internal \s-1DT_SONAME\s0 field to
|
| 503 |
|
|
the specified name. When an executable is linked with a shared object
|
| 504 |
|
|
which has a \s-1DT_SONAME\s0 field, then when the executable is run the dynamic
|
| 505 |
|
|
linker will attempt to load the shared object specified by the \s-1DT_SONAME\s0
|
| 506 |
|
|
field rather than the using the file name given to the linker.
|
| 507 |
|
|
.IP "\fB\-i\fR" 4
|
| 508 |
|
|
.IX Item "-i"
|
| 509 |
|
|
Perform an incremental link (same as option \fB\-r\fR).
|
| 510 |
|
|
.IP "\fB\-init=\fR\fIname\fR" 4
|
| 511 |
|
|
.IX Item "-init=name"
|
| 512 |
|
|
When creating an \s-1ELF\s0 executable or shared object, call \s-1NAME\s0 when the
|
| 513 |
|
|
executable or shared object is loaded, by setting \s-1DT_INIT\s0 to the address
|
| 514 |
|
|
of the function. By default, the linker uses \f(CW\*(C`_init\*(C'\fR as the
|
| 515 |
|
|
function to call.
|
| 516 |
|
|
.IP "\fB\-l\fR \fInamespec\fR" 4
|
| 517 |
|
|
.IX Item "-l namespec"
|
| 518 |
|
|
.PD 0
|
| 519 |
|
|
.IP "\fB\-\-library=\fR\fInamespec\fR" 4
|
| 520 |
|
|
.IX Item "--library=namespec"
|
| 521 |
|
|
.PD
|
| 522 |
|
|
Add the archive or object file specified by \fInamespec\fR to the
|
| 523 |
|
|
list of files to link. This option may be used any number of times.
|
| 524 |
|
|
If \fInamespec\fR is of the form \fI:\fIfilename\fI\fR, \fBld\fR
|
| 525 |
|
|
will search the library path for a file called \fIfilename\fR, otherwise it
|
| 526 |
|
|
will search the library path for a file called \fIlib\fInamespec\fI.a\fR.
|
| 527 |
|
|
.Sp
|
| 528 |
|
|
On systems which support shared libraries, \fBld\fR may also search for
|
| 529 |
|
|
files other than \fIlib\fInamespec\fI.a\fR. Specifically, on \s-1ELF\s0
|
| 530 |
|
|
and SunOS systems, \fBld\fR will search a directory for a library
|
| 531 |
|
|
called \fIlib\fInamespec\fI.so\fR before searching for one called
|
| 532 |
|
|
\&\fIlib\fInamespec\fI.a\fR. (By convention, a \f(CW\*(C`.so\*(C'\fR extension
|
| 533 |
|
|
indicates a shared library.) Note that this behavior does not apply
|
| 534 |
|
|
to \fI:\fIfilename\fI\fR, which always specifies a file called
|
| 535 |
|
|
\&\fIfilename\fR.
|
| 536 |
|
|
.Sp
|
| 537 |
|
|
The linker will search an archive only once, at the location where it is
|
| 538 |
|
|
specified on the command line. If the archive defines a symbol which
|
| 539 |
|
|
was undefined in some object which appeared before the archive on the
|
| 540 |
|
|
command line, the linker will include the appropriate file(s) from the
|
| 541 |
|
|
archive. However, an undefined symbol in an object appearing later on
|
| 542 |
|
|
the command line will not cause the linker to search the archive again.
|
| 543 |
|
|
.Sp
|
| 544 |
|
|
See the \fB\-(\fR option for a way to force the linker to search
|
| 545 |
|
|
archives multiple times.
|
| 546 |
|
|
.Sp
|
| 547 |
|
|
You may list the same archive multiple times on the command line.
|
| 548 |
|
|
.Sp
|
| 549 |
|
|
This type of archive searching is standard for Unix linkers. However,
|
| 550 |
|
|
if you are using \fBld\fR on \s-1AIX\s0, note that it is different from the
|
| 551 |
|
|
behaviour of the \s-1AIX\s0 linker.
|
| 552 |
|
|
.IP "\fB\-L\fR \fIsearchdir\fR" 4
|
| 553 |
|
|
.IX Item "-L searchdir"
|
| 554 |
|
|
.PD 0
|
| 555 |
|
|
.IP "\fB\-\-library\-path=\fR\fIsearchdir\fR" 4
|
| 556 |
|
|
.IX Item "--library-path=searchdir"
|
| 557 |
|
|
.PD
|
| 558 |
|
|
Add path \fIsearchdir\fR to the list of paths that \fBld\fR will search
|
| 559 |
|
|
for archive libraries and \fBld\fR control scripts. You may use this
|
| 560 |
|
|
option any number of times. The directories are searched in the order
|
| 561 |
|
|
in which they are specified on the command line. Directories specified
|
| 562 |
|
|
on the command line are searched before the default directories. All
|
| 563 |
|
|
\&\fB\-L\fR options apply to all \fB\-l\fR options, regardless of the
|
| 564 |
|
|
order in which the options appear. \fB\-L\fR options do not affect
|
| 565 |
|
|
how \fBld\fR searches for a linker script unless \fB\-T\fR
|
| 566 |
|
|
option is specified.
|
| 567 |
|
|
.Sp
|
| 568 |
|
|
If \fIsearchdir\fR begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replaced
|
| 569 |
|
|
by the \fIsysroot prefix\fR, a path specified when the linker is configured.
|
| 570 |
|
|
.Sp
|
| 571 |
|
|
The default set of paths searched (without being specified with
|
| 572 |
|
|
\&\fB\-L\fR) depends on which emulation mode \fBld\fR is using, and in
|
| 573 |
|
|
some cases also on how it was configured.
|
| 574 |
|
|
.Sp
|
| 575 |
|
|
The paths can also be specified in a link script with the
|
| 576 |
|
|
\&\f(CW\*(C`SEARCH_DIR\*(C'\fR command. Directories specified this way are searched
|
| 577 |
|
|
at the point in which the linker script appears in the command line.
|
| 578 |
|
|
.IP "\fB\-m\fR \fIemulation\fR" 4
|
| 579 |
|
|
.IX Item "-m emulation"
|
| 580 |
|
|
Emulate the \fIemulation\fR linker. You can list the available
|
| 581 |
|
|
emulations with the \fB\-\-verbose\fR or \fB\-V\fR options.
|
| 582 |
|
|
.Sp
|
| 583 |
|
|
If the \fB\-m\fR option is not used, the emulation is taken from the
|
| 584 |
|
|
\&\f(CW\*(C`LDEMULATION\*(C'\fR environment variable, if that is defined.
|
| 585 |
|
|
.Sp
|
| 586 |
|
|
Otherwise, the default emulation depends upon how the linker was
|
| 587 |
|
|
configured.
|
| 588 |
|
|
.IP "\fB\-M\fR" 4
|
| 589 |
|
|
.IX Item "-M"
|
| 590 |
|
|
.PD 0
|
| 591 |
|
|
.IP "\fB\-\-print\-map\fR" 4
|
| 592 |
|
|
.IX Item "--print-map"
|
| 593 |
|
|
.PD
|
| 594 |
|
|
Print a link map to the standard output. A link map provides
|
| 595 |
|
|
information about the link, including the following:
|
| 596 |
|
|
.RS 4
|
| 597 |
|
|
.IP "\(bu" 4
|
| 598 |
|
|
Where object files are mapped into memory.
|
| 599 |
|
|
.IP "\(bu" 4
|
| 600 |
|
|
How common symbols are allocated.
|
| 601 |
|
|
.IP "\(bu" 4
|
| 602 |
|
|
All archive members included in the link, with a mention of the symbol
|
| 603 |
|
|
which caused the archive member to be brought in.
|
| 604 |
|
|
.IP "\(bu" 4
|
| 605 |
|
|
The values assigned to symbols.
|
| 606 |
|
|
.Sp
|
| 607 |
|
|
Note \- symbols whose values are computed by an expression which
|
| 608 |
|
|
involves a reference to a previous value of the same symbol may not
|
| 609 |
|
|
have correct result displayed in the link map. This is because the
|
| 610 |
|
|
linker discards intermediate results and only retains the final value
|
| 611 |
|
|
of an expression. Under such circumstances the linker will display
|
| 612 |
|
|
the final value enclosed by square brackets. Thus for example a
|
| 613 |
|
|
linker script containing:
|
| 614 |
|
|
.Sp
|
| 615 |
|
|
.Vb 3
|
| 616 |
|
|
\& foo = 1
|
| 617 |
|
|
\& foo = foo * 4
|
| 618 |
|
|
\& foo = foo + 8
|
| 619 |
|
|
.Ve
|
| 620 |
|
|
.Sp
|
| 621 |
|
|
will produce the following output in the link map if the \fB\-M\fR
|
| 622 |
|
|
option is used:
|
| 623 |
|
|
.Sp
|
| 624 |
|
|
.Vb 3
|
| 625 |
|
|
\& 0x00000001 foo = 0x1
|
| 626 |
|
|
\& [0x0000000c] foo = (foo * 0x4)
|
| 627 |
|
|
\& [0x0000000c] foo = (foo + 0x8)
|
| 628 |
|
|
.Ve
|
| 629 |
|
|
.Sp
|
| 630 |
|
|
See \fBExpressions\fR for more information about expressions in linker
|
| 631 |
|
|
scripts.
|
| 632 |
|
|
.RE
|
| 633 |
|
|
.RS 4
|
| 634 |
|
|
.RE
|
| 635 |
|
|
.IP "\fB\-n\fR" 4
|
| 636 |
|
|
.IX Item "-n"
|
| 637 |
|
|
.PD 0
|
| 638 |
|
|
.IP "\fB\-\-nmagic\fR" 4
|
| 639 |
|
|
.IX Item "--nmagic"
|
| 640 |
|
|
.PD
|
| 641 |
|
|
Turn off page alignment of sections, and mark the output as
|
| 642 |
|
|
\&\f(CW\*(C`NMAGIC\*(C'\fR if possible.
|
| 643 |
|
|
.IP "\fB\-N\fR" 4
|
| 644 |
|
|
.IX Item "-N"
|
| 645 |
|
|
.PD 0
|
| 646 |
|
|
.IP "\fB\-\-omagic\fR" 4
|
| 647 |
|
|
.IX Item "--omagic"
|
| 648 |
|
|
.PD
|
| 649 |
|
|
Set the text and data sections to be readable and writable. Also, do
|
| 650 |
|
|
not page-align the data segment, and disable linking against shared
|
| 651 |
|
|
libraries. If the output format supports Unix style magic numbers,
|
| 652 |
|
|
mark the output as \f(CW\*(C`OMAGIC\*(C'\fR. Note: Although a writable text section
|
| 653 |
|
|
is allowed for PE-COFF targets, it does not conform to the format
|
| 654 |
|
|
specification published by Microsoft.
|
| 655 |
|
|
.IP "\fB\-\-no\-omagic\fR" 4
|
| 656 |
|
|
.IX Item "--no-omagic"
|
| 657 |
|
|
This option negates most of the effects of the \fB\-N\fR option. It
|
| 658 |
|
|
sets the text section to be read-only, and forces the data segment to
|
| 659 |
|
|
be page-aligned. Note \- this option does not enable linking against
|
| 660 |
|
|
shared libraries. Use \fB\-Bdynamic\fR for this.
|
| 661 |
|
|
.IP "\fB\-o\fR \fIoutput\fR" 4
|
| 662 |
|
|
.IX Item "-o output"
|
| 663 |
|
|
.PD 0
|
| 664 |
|
|
.IP "\fB\-\-output=\fR\fIoutput\fR" 4
|
| 665 |
|
|
.IX Item "--output=output"
|
| 666 |
|
|
.PD
|
| 667 |
|
|
Use \fIoutput\fR as the name for the program produced by \fBld\fR; if this
|
| 668 |
|
|
option is not specified, the name \fIa.out\fR is used by default. The
|
| 669 |
|
|
script command \f(CW\*(C`OUTPUT\*(C'\fR can also specify the output file name.
|
| 670 |
|
|
.IP "\fB\-O\fR \fIlevel\fR" 4
|
| 671 |
|
|
.IX Item "-O level"
|
| 672 |
|
|
If \fIlevel\fR is a numeric values greater than zero \fBld\fR optimizes
|
| 673 |
|
|
the output. This might take significantly longer and therefore probably
|
| 674 |
|
|
should only be enabled for the final binary. At the moment this
|
| 675 |
|
|
option only affects \s-1ELF\s0 shared library generation. Future releases of
|
| 676 |
|
|
the linker may make more use of this option. Also currently there is
|
| 677 |
|
|
no difference in the linker's behaviour for different non-zero values
|
| 678 |
|
|
of this option. Again this may change with future releases.
|
| 679 |
|
|
.IP "\fB\-q\fR" 4
|
| 680 |
|
|
.IX Item "-q"
|
| 681 |
|
|
.PD 0
|
| 682 |
|
|
.IP "\fB\-\-emit\-relocs\fR" 4
|
| 683 |
|
|
.IX Item "--emit-relocs"
|
| 684 |
|
|
.PD
|
| 685 |
|
|
Leave relocation sections and contents in fully linked executables.
|
| 686 |
|
|
Post link analysis and optimization tools may need this information in
|
| 687 |
|
|
order to perform correct modifications of executables. This results
|
| 688 |
|
|
in larger executables.
|
| 689 |
|
|
.Sp
|
| 690 |
|
|
This option is currently only supported on \s-1ELF\s0 platforms.
|
| 691 |
|
|
.IP "\fB\-\-force\-dynamic\fR" 4
|
| 692 |
|
|
.IX Item "--force-dynamic"
|
| 693 |
|
|
Force the output file to have dynamic sections. This option is specific
|
| 694 |
|
|
to VxWorks targets.
|
| 695 |
|
|
.IP "\fB\-r\fR" 4
|
| 696 |
|
|
.IX Item "-r"
|
| 697 |
|
|
.PD 0
|
| 698 |
|
|
.IP "\fB\-\-relocatable\fR" 4
|
| 699 |
|
|
.IX Item "--relocatable"
|
| 700 |
|
|
.PD
|
| 701 |
|
|
Generate relocatable output\-\-\-i.e., generate an output file that can in
|
| 702 |
|
|
turn serve as input to \fBld\fR. This is often called \fIpartial
|
| 703 |
|
|
linking\fR. As a side effect, in environments that support standard Unix
|
| 704 |
|
|
magic numbers, this option also sets the output file's magic number to
|
| 705 |
|
|
\&\f(CW\*(C`OMAGIC\*(C'\fR.
|
| 706 |
|
|
If this option is not specified, an absolute file is produced. When
|
| 707 |
|
|
linking \*(C+ programs, this option \fIwill not\fR resolve references to
|
| 708 |
|
|
constructors; to do that, use \fB\-Ur\fR.
|
| 709 |
|
|
.Sp
|
| 710 |
|
|
When an input file does not have the same format as the output file,
|
| 711 |
|
|
partial linking is only supported if that input file does not contain any
|
| 712 |
|
|
relocations. Different output formats can have further restrictions; for
|
| 713 |
|
|
example some \f(CW\*(C`a.out\*(C'\fR\-based formats do not support partial linking
|
| 714 |
|
|
with input files in other formats at all.
|
| 715 |
|
|
.Sp
|
| 716 |
|
|
This option does the same thing as \fB\-i\fR.
|
| 717 |
|
|
.IP "\fB\-R\fR \fIfilename\fR" 4
|
| 718 |
|
|
.IX Item "-R filename"
|
| 719 |
|
|
.PD 0
|
| 720 |
|
|
.IP "\fB\-\-just\-symbols=\fR\fIfilename\fR" 4
|
| 721 |
|
|
.IX Item "--just-symbols=filename"
|
| 722 |
|
|
.PD
|
| 723 |
|
|
Read symbol names and their addresses from \fIfilename\fR, but do not
|
| 724 |
|
|
relocate it or include it in the output. This allows your output file
|
| 725 |
|
|
to refer symbolically to absolute locations of memory defined in other
|
| 726 |
|
|
programs. You may use this option more than once.
|
| 727 |
|
|
.Sp
|
| 728 |
|
|
For compatibility with other \s-1ELF\s0 linkers, if the \fB\-R\fR option is
|
| 729 |
|
|
followed by a directory name, rather than a file name, it is treated as
|
| 730 |
|
|
the \fB\-rpath\fR option.
|
| 731 |
|
|
.IP "\fB\-s\fR" 4
|
| 732 |
|
|
.IX Item "-s"
|
| 733 |
|
|
.PD 0
|
| 734 |
|
|
.IP "\fB\-\-strip\-all\fR" 4
|
| 735 |
|
|
.IX Item "--strip-all"
|
| 736 |
|
|
.PD
|
| 737 |
|
|
Omit all symbol information from the output file.
|
| 738 |
|
|
.IP "\fB\-S\fR" 4
|
| 739 |
|
|
.IX Item "-S"
|
| 740 |
|
|
.PD 0
|
| 741 |
|
|
.IP "\fB\-\-strip\-debug\fR" 4
|
| 742 |
|
|
.IX Item "--strip-debug"
|
| 743 |
|
|
.PD
|
| 744 |
|
|
Omit debugger symbol information (but not all symbols) from the output file.
|
| 745 |
|
|
.IP "\fB\-t\fR" 4
|
| 746 |
|
|
.IX Item "-t"
|
| 747 |
|
|
.PD 0
|
| 748 |
|
|
.IP "\fB\-\-trace\fR" 4
|
| 749 |
|
|
.IX Item "--trace"
|
| 750 |
|
|
.PD
|
| 751 |
|
|
Print the names of the input files as \fBld\fR processes them.
|
| 752 |
|
|
.IP "\fB\-T\fR \fIscriptfile\fR" 4
|
| 753 |
|
|
.IX Item "-T scriptfile"
|
| 754 |
|
|
.PD 0
|
| 755 |
|
|
.IP "\fB\-\-script=\fR\fIscriptfile\fR" 4
|
| 756 |
|
|
.IX Item "--script=scriptfile"
|
| 757 |
|
|
.PD
|
| 758 |
|
|
Use \fIscriptfile\fR as the linker script. This script replaces
|
| 759 |
|
|
\&\fBld\fR's default linker script (rather than adding to it), so
|
| 760 |
|
|
\&\fIcommandfile\fR must specify everything necessary to describe the
|
| 761 |
|
|
output file. If \fIscriptfile\fR does not exist in
|
| 762 |
|
|
the current directory, \f(CW\*(C`ld\*(C'\fR looks for it in the directories
|
| 763 |
|
|
specified by any preceding \fB\-L\fR options. Multiple \fB\-T\fR
|
| 764 |
|
|
options accumulate.
|
| 765 |
|
|
.IP "\fB\-dT\fR \fIscriptfile\fR" 4
|
| 766 |
|
|
.IX Item "-dT scriptfile"
|
| 767 |
|
|
.PD 0
|
| 768 |
|
|
.IP "\fB\-\-default\-script=\fR\fIscriptfile\fR" 4
|
| 769 |
|
|
.IX Item "--default-script=scriptfile"
|
| 770 |
|
|
.PD
|
| 771 |
|
|
Use \fIscriptfile\fR as the default linker script.
|
| 772 |
|
|
.Sp
|
| 773 |
|
|
This option is similar to the \fB\-\-script\fR option except that
|
| 774 |
|
|
processing of the script is delayed until after the rest of the
|
| 775 |
|
|
command line has been processed. This allows options placed after the
|
| 776 |
|
|
\&\fB\-\-default\-script\fR option on the command line to affect the
|
| 777 |
|
|
behaviour of the linker script, which can be important when the linker
|
| 778 |
|
|
command line cannot be directly controlled by the user. (eg because
|
| 779 |
|
|
the command line is being constructed by another tool, such as
|
| 780 |
|
|
\&\fBgcc\fR).
|
| 781 |
|
|
.IP "\fB\-u\fR \fIsymbol\fR" 4
|
| 782 |
|
|
.IX Item "-u symbol"
|
| 783 |
|
|
.PD 0
|
| 784 |
|
|
.IP "\fB\-\-undefined=\fR\fIsymbol\fR" 4
|
| 785 |
|
|
.IX Item "--undefined=symbol"
|
| 786 |
|
|
.PD
|
| 787 |
|
|
Force \fIsymbol\fR to be entered in the output file as an undefined
|
| 788 |
|
|
symbol. Doing this may, for example, trigger linking of additional
|
| 789 |
|
|
modules from standard libraries. \fB\-u\fR may be repeated with
|
| 790 |
|
|
different option arguments to enter additional undefined symbols. This
|
| 791 |
|
|
option is equivalent to the \f(CW\*(C`EXTERN\*(C'\fR linker script command.
|
| 792 |
|
|
.IP "\fB\-Ur\fR" 4
|
| 793 |
|
|
.IX Item "-Ur"
|
| 794 |
|
|
For anything other than \*(C+ programs, this option is equivalent to
|
| 795 |
|
|
\&\fB\-r\fR: it generates relocatable output\-\-\-i.e., an output file that can in
|
| 796 |
|
|
turn serve as input to \fBld\fR. When linking \*(C+ programs, \fB\-Ur\fR
|
| 797 |
|
|
\&\fIdoes\fR resolve references to constructors, unlike \fB\-r\fR.
|
| 798 |
|
|
It does not work to use \fB\-Ur\fR on files that were themselves linked
|
| 799 |
|
|
with \fB\-Ur\fR; once the constructor table has been built, it cannot
|
| 800 |
|
|
be added to. Use \fB\-Ur\fR only for the last partial link, and
|
| 801 |
|
|
\&\fB\-r\fR for the others.
|
| 802 |
|
|
.IP "\fB\-\-unique[=\fR\fI\s-1SECTION\s0\fR\fB]\fR" 4
|
| 803 |
|
|
.IX Item "--unique[=SECTION]"
|
| 804 |
|
|
Creates a separate output section for every input section matching
|
| 805 |
|
|
\&\fI\s-1SECTION\s0\fR, or if the optional wildcard \fI\s-1SECTION\s0\fR argument is
|
| 806 |
|
|
missing, for every orphan input section. An orphan section is one not
|
| 807 |
|
|
specifically mentioned in a linker script. You may use this option
|
| 808 |
|
|
multiple times on the command line; It prevents the normal merging of
|
| 809 |
|
|
input sections with the same name, overriding output section assignments
|
| 810 |
|
|
in a linker script.
|
| 811 |
|
|
.IP "\fB\-v\fR" 4
|
| 812 |
|
|
.IX Item "-v"
|
| 813 |
|
|
.PD 0
|
| 814 |
|
|
.IP "\fB\-\-version\fR" 4
|
| 815 |
|
|
.IX Item "--version"
|
| 816 |
|
|
.IP "\fB\-V\fR" 4
|
| 817 |
|
|
.IX Item "-V"
|
| 818 |
|
|
.PD
|
| 819 |
|
|
Display the version number for \fBld\fR. The \fB\-V\fR option also
|
| 820 |
|
|
lists the supported emulations.
|
| 821 |
|
|
.IP "\fB\-x\fR" 4
|
| 822 |
|
|
.IX Item "-x"
|
| 823 |
|
|
.PD 0
|
| 824 |
|
|
.IP "\fB\-\-discard\-all\fR" 4
|
| 825 |
|
|
.IX Item "--discard-all"
|
| 826 |
|
|
.PD
|
| 827 |
|
|
Delete all local symbols.
|
| 828 |
|
|
.IP "\fB\-X\fR" 4
|
| 829 |
|
|
.IX Item "-X"
|
| 830 |
|
|
.PD 0
|
| 831 |
|
|
.IP "\fB\-\-discard\-locals\fR" 4
|
| 832 |
|
|
.IX Item "--discard-locals"
|
| 833 |
|
|
.PD
|
| 834 |
|
|
Delete all temporary local symbols. (These symbols start with
|
| 835 |
|
|
system-specific local label prefixes, typically \fB.L\fR for \s-1ELF\s0 systems
|
| 836 |
|
|
or \fBL\fR for traditional a.out systems.)
|
| 837 |
|
|
.IP "\fB\-y\fR \fIsymbol\fR" 4
|
| 838 |
|
|
.IX Item "-y symbol"
|
| 839 |
|
|
.PD 0
|
| 840 |
|
|
.IP "\fB\-\-trace\-symbol=\fR\fIsymbol\fR" 4
|
| 841 |
|
|
.IX Item "--trace-symbol=symbol"
|
| 842 |
|
|
.PD
|
| 843 |
|
|
Print the name of each linked file in which \fIsymbol\fR appears. This
|
| 844 |
|
|
option may be given any number of times. On many systems it is necessary
|
| 845 |
|
|
to prepend an underscore.
|
| 846 |
|
|
.Sp
|
| 847 |
|
|
This option is useful when you have an undefined symbol in your link but
|
| 848 |
|
|
don't know where the reference is coming from.
|
| 849 |
|
|
.IP "\fB\-Y\fR \fIpath\fR" 4
|
| 850 |
|
|
.IX Item "-Y path"
|
| 851 |
|
|
Add \fIpath\fR to the default library search path. This option exists
|
| 852 |
|
|
for Solaris compatibility.
|
| 853 |
|
|
.IP "\fB\-z\fR \fIkeyword\fR" 4
|
| 854 |
|
|
.IX Item "-z keyword"
|
| 855 |
|
|
The recognized keywords are:
|
| 856 |
|
|
.RS 4
|
| 857 |
|
|
.IP "\fBcombreloc\fR" 4
|
| 858 |
|
|
.IX Item "combreloc"
|
| 859 |
|
|
Combines multiple reloc sections and sorts them to make dynamic symbol
|
| 860 |
|
|
lookup caching possible.
|
| 861 |
|
|
.IP "\fBdefs\fR" 4
|
| 862 |
|
|
.IX Item "defs"
|
| 863 |
|
|
Disallows undefined symbols in object files. Undefined symbols in
|
| 864 |
|
|
shared libraries are still allowed.
|
| 865 |
|
|
.IP "\fBexecstack\fR" 4
|
| 866 |
|
|
.IX Item "execstack"
|
| 867 |
|
|
Marks the object as requiring executable stack.
|
| 868 |
|
|
.IP "\fBinitfirst\fR" 4
|
| 869 |
|
|
.IX Item "initfirst"
|
| 870 |
|
|
This option is only meaningful when building a shared object.
|
| 871 |
|
|
It marks the object so that its runtime initialization will occur
|
| 872 |
|
|
before the runtime initialization of any other objects brought into
|
| 873 |
|
|
the process at the same time. Similarly the runtime finalization of
|
| 874 |
|
|
the object will occur after the runtime finalization of any other
|
| 875 |
|
|
objects.
|
| 876 |
|
|
.IP "\fBinterpose\fR" 4
|
| 877 |
|
|
.IX Item "interpose"
|
| 878 |
|
|
Marks the object that its symbol table interposes before all symbols
|
| 879 |
|
|
but the primary executable.
|
| 880 |
|
|
.IP "\fBlazy\fR" 4
|
| 881 |
|
|
.IX Item "lazy"
|
| 882 |
|
|
When generating an executable or shared library, mark it to tell the
|
| 883 |
|
|
dynamic linker to defer function call resolution to the point when
|
| 884 |
|
|
the function is called (lazy binding), rather than at load time.
|
| 885 |
|
|
Lazy binding is the default.
|
| 886 |
|
|
.IP "\fBloadfltr\fR" 4
|
| 887 |
|
|
.IX Item "loadfltr"
|
| 888 |
|
|
Marks the object that its filters be processed immediately at
|
| 889 |
|
|
runtime.
|
| 890 |
|
|
.IP "\fBmuldefs\fR" 4
|
| 891 |
|
|
.IX Item "muldefs"
|
| 892 |
|
|
Allows multiple definitions.
|
| 893 |
|
|
.IP "\fBnocombreloc\fR" 4
|
| 894 |
|
|
.IX Item "nocombreloc"
|
| 895 |
|
|
Disables multiple reloc sections combining.
|
| 896 |
|
|
.IP "\fBnocopyreloc\fR" 4
|
| 897 |
|
|
.IX Item "nocopyreloc"
|
| 898 |
|
|
Disables production of copy relocs.
|
| 899 |
|
|
.IP "\fBnodefaultlib\fR" 4
|
| 900 |
|
|
.IX Item "nodefaultlib"
|
| 901 |
|
|
Marks the object that the search for dependencies of this object will
|
| 902 |
|
|
ignore any default library search paths.
|
| 903 |
|
|
.IP "\fBnodelete\fR" 4
|
| 904 |
|
|
.IX Item "nodelete"
|
| 905 |
|
|
Marks the object shouldn't be unloaded at runtime.
|
| 906 |
|
|
.IP "\fBnodlopen\fR" 4
|
| 907 |
|
|
.IX Item "nodlopen"
|
| 908 |
|
|
Marks the object not available to \f(CW\*(C`dlopen\*(C'\fR.
|
| 909 |
|
|
.IP "\fBnodump\fR" 4
|
| 910 |
|
|
.IX Item "nodump"
|
| 911 |
|
|
Marks the object can not be dumped by \f(CW\*(C`dldump\*(C'\fR.
|
| 912 |
|
|
.IP "\fBnoexecstack\fR" 4
|
| 913 |
|
|
.IX Item "noexecstack"
|
| 914 |
|
|
Marks the object as not requiring executable stack.
|
| 915 |
|
|
.IP "\fBnorelro\fR" 4
|
| 916 |
|
|
.IX Item "norelro"
|
| 917 |
|
|
Don't create an \s-1ELF\s0 \f(CW\*(C`PT_GNU_RELRO\*(C'\fR segment header in the object.
|
| 918 |
|
|
.IP "\fBnow\fR" 4
|
| 919 |
|
|
.IX Item "now"
|
| 920 |
|
|
When generating an executable or shared library, mark it to tell the
|
| 921 |
|
|
dynamic linker to resolve all symbols when the program is started, or
|
| 922 |
|
|
when the shared library is linked to using dlopen, instead of
|
| 923 |
|
|
deferring function call resolution to the point when the function is
|
| 924 |
|
|
first called.
|
| 925 |
|
|
.IP "\fBorigin\fR" 4
|
| 926 |
|
|
.IX Item "origin"
|
| 927 |
|
|
Marks the object may contain \f(CW$ORIGIN\fR.
|
| 928 |
|
|
.IP "\fBrelro\fR" 4
|
| 929 |
|
|
.IX Item "relro"
|
| 930 |
|
|
Create an \s-1ELF\s0 \f(CW\*(C`PT_GNU_RELRO\*(C'\fR segment header in the object.
|
| 931 |
|
|
.IP "\fBmax\-page\-size=\fR\fIvalue\fR" 4
|
| 932 |
|
|
.IX Item "max-page-size=value"
|
| 933 |
|
|
Set the emulation maximum page size to \fIvalue\fR.
|
| 934 |
|
|
.IP "\fBcommon\-page\-size=\fR\fIvalue\fR" 4
|
| 935 |
|
|
.IX Item "common-page-size=value"
|
| 936 |
|
|
Set the emulation common page size to \fIvalue\fR.
|
| 937 |
|
|
.RE
|
| 938 |
|
|
.RS 4
|
| 939 |
|
|
.Sp
|
| 940 |
|
|
Other keywords are ignored for Solaris compatibility.
|
| 941 |
|
|
.RE
|
| 942 |
|
|
.IP "\fB\-(\fR \fIarchives\fR \fB\-)\fR" 4
|
| 943 |
|
|
.IX Item "-( archives -)"
|
| 944 |
|
|
.PD 0
|
| 945 |
|
|
.IP "\fB\-\-start\-group\fR \fIarchives\fR \fB\-\-end\-group\fR" 4
|
| 946 |
|
|
.IX Item "--start-group archives --end-group"
|
| 947 |
|
|
.PD
|
| 948 |
|
|
The \fIarchives\fR should be a list of archive files. They may be
|
| 949 |
|
|
either explicit file names, or \fB\-l\fR options.
|
| 950 |
|
|
.Sp
|
| 951 |
|
|
The specified archives are searched repeatedly until no new undefined
|
| 952 |
|
|
references are created. Normally, an archive is searched only once in
|
| 953 |
|
|
the order that it is specified on the command line. If a symbol in that
|
| 954 |
|
|
archive is needed to resolve an undefined symbol referred to by an
|
| 955 |
|
|
object in an archive that appears later on the command line, the linker
|
| 956 |
|
|
would not be able to resolve that reference. By grouping the archives,
|
| 957 |
|
|
they all be searched repeatedly until all possible references are
|
| 958 |
|
|
resolved.
|
| 959 |
|
|
.Sp
|
| 960 |
|
|
Using this option has a significant performance cost. It is best to use
|
| 961 |
|
|
it only when there are unavoidable circular references between two or
|
| 962 |
|
|
more archives.
|
| 963 |
|
|
.IP "\fB\-\-accept\-unknown\-input\-arch\fR" 4
|
| 964 |
|
|
.IX Item "--accept-unknown-input-arch"
|
| 965 |
|
|
.PD 0
|
| 966 |
|
|
.IP "\fB\-\-no\-accept\-unknown\-input\-arch\fR" 4
|
| 967 |
|
|
.IX Item "--no-accept-unknown-input-arch"
|
| 968 |
|
|
.PD
|
| 969 |
|
|
Tells the linker to accept input files whose architecture cannot be
|
| 970 |
|
|
recognised. The assumption is that the user knows what they are doing
|
| 971 |
|
|
and deliberately wants to link in these unknown input files. This was
|
| 972 |
|
|
the default behaviour of the linker, before release 2.14. The default
|
| 973 |
|
|
behaviour from release 2.14 onwards is to reject such input files, and
|
| 974 |
|
|
so the \fB\-\-accept\-unknown\-input\-arch\fR option has been added to
|
| 975 |
|
|
restore the old behaviour.
|
| 976 |
|
|
.IP "\fB\-\-as\-needed\fR" 4
|
| 977 |
|
|
.IX Item "--as-needed"
|
| 978 |
|
|
.PD 0
|
| 979 |
|
|
.IP "\fB\-\-no\-as\-needed\fR" 4
|
| 980 |
|
|
.IX Item "--no-as-needed"
|
| 981 |
|
|
.PD
|
| 982 |
|
|
This option affects \s-1ELF\s0 \s-1DT_NEEDED\s0 tags for dynamic libraries mentioned
|
| 983 |
|
|
on the command line after the \fB\-\-as\-needed\fR option. Normally,
|
| 984 |
|
|
the linker will add a \s-1DT_NEEDED\s0 tag for each dynamic library mentioned
|
| 985 |
|
|
on the command line, regardless of whether the library is actually
|
| 986 |
|
|
needed. \fB\-\-as\-needed\fR causes a \s-1DT_NEEDED\s0 tag to only be emitted
|
| 987 |
|
|
for a library that satisfies a symbol reference from regular objects
|
| 988 |
|
|
which is undefined at the point that the library was linked, or, if
|
| 989 |
|
|
the library is not found in the \s-1DT_NEEDED\s0 lists of other libraries
|
| 990 |
|
|
linked up to that point, a reference from another dynamic library.
|
| 991 |
|
|
\&\fB\-\-no\-as\-needed\fR restores the default behaviour.
|
| 992 |
|
|
.IP "\fB\-\-add\-needed\fR" 4
|
| 993 |
|
|
.IX Item "--add-needed"
|
| 994 |
|
|
.PD 0
|
| 995 |
|
|
.IP "\fB\-\-no\-add\-needed\fR" 4
|
| 996 |
|
|
.IX Item "--no-add-needed"
|
| 997 |
|
|
.PD
|
| 998 |
|
|
This option affects the treatment of dynamic libraries from \s-1ELF\s0
|
| 999 |
|
|
\&\s-1DT_NEEDED\s0 tags in dynamic libraries mentioned on the command line after
|
| 1000 |
|
|
the \fB\-\-no\-add\-needed\fR option. Normally, the linker will add
|
| 1001 |
|
|
a \s-1DT_NEEDED\s0 tag for each dynamic library from \s-1DT_NEEDED\s0 tags.
|
| 1002 |
|
|
\&\fB\-\-no\-add\-needed\fR causes \s-1DT_NEEDED\s0 tags will never be emitted
|
| 1003 |
|
|
for those libraries from \s-1DT_NEEDED\s0 tags. \fB\-\-add\-needed\fR restores
|
| 1004 |
|
|
the default behaviour.
|
| 1005 |
|
|
.IP "\fB\-assert\fR \fIkeyword\fR" 4
|
| 1006 |
|
|
.IX Item "-assert keyword"
|
| 1007 |
|
|
This option is ignored for SunOS compatibility.
|
| 1008 |
|
|
.IP "\fB\-Bdynamic\fR" 4
|
| 1009 |
|
|
.IX Item "-Bdynamic"
|
| 1010 |
|
|
.PD 0
|
| 1011 |
|
|
.IP "\fB\-dy\fR" 4
|
| 1012 |
|
|
.IX Item "-dy"
|
| 1013 |
|
|
.IP "\fB\-call_shared\fR" 4
|
| 1014 |
|
|
.IX Item "-call_shared"
|
| 1015 |
|
|
.PD
|
| 1016 |
|
|
Link against dynamic libraries. This is only meaningful on platforms
|
| 1017 |
|
|
for which shared libraries are supported. This option is normally the
|
| 1018 |
|
|
default on such platforms. The different variants of this option are
|
| 1019 |
|
|
for compatibility with various systems. You may use this option
|
| 1020 |
|
|
multiple times on the command line: it affects library searching for
|
| 1021 |
|
|
\&\fB\-l\fR options which follow it.
|
| 1022 |
|
|
.IP "\fB\-Bgroup\fR" 4
|
| 1023 |
|
|
.IX Item "-Bgroup"
|
| 1024 |
|
|
Set the \f(CW\*(C`DF_1_GROUP\*(C'\fR flag in the \f(CW\*(C`DT_FLAGS_1\*(C'\fR entry in the dynamic
|
| 1025 |
|
|
section. This causes the runtime linker to handle lookups in this
|
| 1026 |
|
|
object and its dependencies to be performed only inside the group.
|
| 1027 |
|
|
\&\fB\-\-unresolved\-symbols=report\-all\fR is implied. This option is
|
| 1028 |
|
|
only meaningful on \s-1ELF\s0 platforms which support shared libraries.
|
| 1029 |
|
|
.IP "\fB\-Bstatic\fR" 4
|
| 1030 |
|
|
.IX Item "-Bstatic"
|
| 1031 |
|
|
.PD 0
|
| 1032 |
|
|
.IP "\fB\-dn\fR" 4
|
| 1033 |
|
|
.IX Item "-dn"
|
| 1034 |
|
|
.IP "\fB\-non_shared\fR" 4
|
| 1035 |
|
|
.IX Item "-non_shared"
|
| 1036 |
|
|
.IP "\fB\-static\fR" 4
|
| 1037 |
|
|
.IX Item "-static"
|
| 1038 |
|
|
.PD
|
| 1039 |
|
|
Do not link against shared libraries. This is only meaningful on
|
| 1040 |
|
|
platforms for which shared libraries are supported. The different
|
| 1041 |
|
|
variants of this option are for compatibility with various systems. You
|
| 1042 |
|
|
may use this option multiple times on the command line: it affects
|
| 1043 |
|
|
library searching for \fB\-l\fR options which follow it. This
|
| 1044 |
|
|
option also implies \fB\-\-unresolved\-symbols=report\-all\fR. This
|
| 1045 |
|
|
option can be used with \fB\-shared\fR. Doing so means that a
|
| 1046 |
|
|
shared library is being created but that all of the library's external
|
| 1047 |
|
|
references must be resolved by pulling in entries from static
|
| 1048 |
|
|
libraries.
|
| 1049 |
|
|
.IP "\fB\-Bsymbolic\fR" 4
|
| 1050 |
|
|
.IX Item "-Bsymbolic"
|
| 1051 |
|
|
When creating a shared library, bind references to global symbols to the
|
| 1052 |
|
|
definition within the shared library, if any. Normally, it is possible
|
| 1053 |
|
|
for a program linked against a shared library to override the definition
|
| 1054 |
|
|
within the shared library. This option is only meaningful on \s-1ELF\s0
|
| 1055 |
|
|
platforms which support shared libraries.
|
| 1056 |
|
|
.IP "\fB\-Bsymbolic\-functions\fR" 4
|
| 1057 |
|
|
.IX Item "-Bsymbolic-functions"
|
| 1058 |
|
|
When creating a shared library, bind references to global function
|
| 1059 |
|
|
symbols to the definition within the shared library, if any.
|
| 1060 |
|
|
This option is only meaningful on \s-1ELF\s0 platforms which support shared
|
| 1061 |
|
|
libraries.
|
| 1062 |
|
|
.IP "\fB\-\-dynamic\-list=\fR\fIdynamic-list-file\fR" 4
|
| 1063 |
|
|
.IX Item "--dynamic-list=dynamic-list-file"
|
| 1064 |
|
|
Specify the name of a dynamic list file to the linker. This is
|
| 1065 |
|
|
typically used when creating shared libraries to specify a list of
|
| 1066 |
|
|
global symbols whose references shouldn't be bound to the definition
|
| 1067 |
|
|
within the shared library, or creating dynamically linked executables
|
| 1068 |
|
|
to specify a list of symbols which should be added to the symbol table
|
| 1069 |
|
|
in the executable. This option is only meaningful on \s-1ELF\s0 platforms
|
| 1070 |
|
|
which support shared libraries.
|
| 1071 |
|
|
.Sp
|
| 1072 |
|
|
The format of the dynamic list is the same as the version node without
|
| 1073 |
|
|
scope and node name. See \fB\s-1VERSION\s0\fR for more information.
|
| 1074 |
|
|
.IP "\fB\-\-dynamic\-list\-data\fR" 4
|
| 1075 |
|
|
.IX Item "--dynamic-list-data"
|
| 1076 |
|
|
Include all global data symbols to the dynamic list.
|
| 1077 |
|
|
.IP "\fB\-\-dynamic\-list\-cpp\-new\fR" 4
|
| 1078 |
|
|
.IX Item "--dynamic-list-cpp-new"
|
| 1079 |
|
|
Provide the builtin dynamic list for \*(C+ operator new and delete. It
|
| 1080 |
|
|
is mainly useful for building shared libstdc++.
|
| 1081 |
|
|
.IP "\fB\-\-dynamic\-list\-cpp\-typeinfo\fR" 4
|
| 1082 |
|
|
.IX Item "--dynamic-list-cpp-typeinfo"
|
| 1083 |
|
|
Provide the builtin dynamic list for \*(C+ runtime type identification.
|
| 1084 |
|
|
.IP "\fB\-\-check\-sections\fR" 4
|
| 1085 |
|
|
.IX Item "--check-sections"
|
| 1086 |
|
|
.PD 0
|
| 1087 |
|
|
.IP "\fB\-\-no\-check\-sections\fR" 4
|
| 1088 |
|
|
.IX Item "--no-check-sections"
|
| 1089 |
|
|
.PD
|
| 1090 |
|
|
Asks the linker \fInot\fR to check section addresses after they have
|
| 1091 |
|
|
been assigned to see if there are any overlaps. Normally the linker will
|
| 1092 |
|
|
perform this check, and if it finds any overlaps it will produce
|
| 1093 |
|
|
suitable error messages. The linker does know about, and does make
|
| 1094 |
|
|
allowances for sections in overlays. The default behaviour can be
|
| 1095 |
|
|
restored by using the command line switch \fB\-\-check\-sections\fR.
|
| 1096 |
|
|
Section overlap is not usually checked for relocatable links. You can
|
| 1097 |
|
|
force checking in that case by using the \fB\-\-check\-sections\fR
|
| 1098 |
|
|
option.
|
| 1099 |
|
|
.IP "\fB\-\-cref\fR" 4
|
| 1100 |
|
|
.IX Item "--cref"
|
| 1101 |
|
|
Output a cross reference table. If a linker map file is being
|
| 1102 |
|
|
generated, the cross reference table is printed to the map file.
|
| 1103 |
|
|
Otherwise, it is printed on the standard output.
|
| 1104 |
|
|
.Sp
|
| 1105 |
|
|
The format of the table is intentionally simple, so that it may be
|
| 1106 |
|
|
easily processed by a script if necessary. The symbols are printed out,
|
| 1107 |
|
|
sorted by name. For each symbol, a list of file names is given. If the
|
| 1108 |
|
|
symbol is defined, the first file listed is the location of the
|
| 1109 |
|
|
definition. The remaining files contain references to the symbol.
|
| 1110 |
|
|
.IP "\fB\-\-no\-define\-common\fR" 4
|
| 1111 |
|
|
.IX Item "--no-define-common"
|
| 1112 |
|
|
This option inhibits the assignment of addresses to common symbols.
|
| 1113 |
|
|
The script command \f(CW\*(C`INHIBIT_COMMON_ALLOCATION\*(C'\fR has the same effect.
|
| 1114 |
|
|
.Sp
|
| 1115 |
|
|
The \fB\-\-no\-define\-common\fR option allows decoupling
|
| 1116 |
|
|
the decision to assign addresses to Common symbols from the choice
|
| 1117 |
|
|
of the output file type; otherwise a non-Relocatable output type
|
| 1118 |
|
|
forces assigning addresses to Common symbols.
|
| 1119 |
|
|
Using \fB\-\-no\-define\-common\fR allows Common symbols that are referenced
|
| 1120 |
|
|
from a shared library to be assigned addresses only in the main program.
|
| 1121 |
|
|
This eliminates the unused duplicate space in the shared library,
|
| 1122 |
|
|
and also prevents any possible confusion over resolving to the wrong
|
| 1123 |
|
|
duplicate when there are many dynamic modules with specialized search
|
| 1124 |
|
|
paths for runtime symbol resolution.
|
| 1125 |
|
|
.IP "\fB\-\-defsym=\fR\fIsymbol\fR\fB=\fR\fIexpression\fR" 4
|
| 1126 |
|
|
.IX Item "--defsym=symbol=expression"
|
| 1127 |
|
|
Create a global symbol in the output file, containing the absolute
|
| 1128 |
|
|
address given by \fIexpression\fR. You may use this option as many
|
| 1129 |
|
|
times as necessary to define multiple symbols in the command line. A
|
| 1130 |
|
|
limited form of arithmetic is supported for the \fIexpression\fR in this
|
| 1131 |
|
|
context: you may give a hexadecimal constant or the name of an existing
|
| 1132 |
|
|
symbol, or use \f(CW\*(C`+\*(C'\fR and \f(CW\*(C`\-\*(C'\fR to add or subtract hexadecimal
|
| 1133 |
|
|
constants or symbols. If you need more elaborate expressions, consider
|
| 1134 |
|
|
using the linker command language from a script. \fINote:\fR there should be no white
|
| 1135 |
|
|
space between \fIsymbol\fR, the equals sign ("\fB=\fR"), and
|
| 1136 |
|
|
\&\fIexpression\fR.
|
| 1137 |
|
|
.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4
|
| 1138 |
|
|
.IX Item "--demangle[=style]"
|
| 1139 |
|
|
.PD 0
|
| 1140 |
|
|
.IP "\fB\-\-no\-demangle\fR" 4
|
| 1141 |
|
|
.IX Item "--no-demangle"
|
| 1142 |
|
|
.PD
|
| 1143 |
|
|
These options control whether to demangle symbol names in error messages
|
| 1144 |
|
|
and other output. When the linker is told to demangle, it tries to
|
| 1145 |
|
|
present symbol names in a readable fashion: it strips leading
|
| 1146 |
|
|
underscores if they are used by the object file format, and converts \*(C+
|
| 1147 |
|
|
mangled symbol names into user readable names. Different compilers have
|
| 1148 |
|
|
different mangling styles. The optional demangling style argument can be used
|
| 1149 |
|
|
to choose an appropriate demangling style for your compiler. The linker will
|
| 1150 |
|
|
demangle by default unless the environment variable \fB\s-1COLLECT_NO_DEMANGLE\s0\fR
|
| 1151 |
|
|
is set. These options may be used to override the default.
|
| 1152 |
|
|
.IP "\fB\-I\fR\fIfile\fR" 4
|
| 1153 |
|
|
.IX Item "-Ifile"
|
| 1154 |
|
|
.PD 0
|
| 1155 |
|
|
.IP "\fB\-\-dynamic\-linker=\fR\fIfile\fR" 4
|
| 1156 |
|
|
.IX Item "--dynamic-linker=file"
|
| 1157 |
|
|
.PD
|
| 1158 |
|
|
Set the name of the dynamic linker. This is only meaningful when
|
| 1159 |
|
|
generating dynamically linked \s-1ELF\s0 executables. The default dynamic
|
| 1160 |
|
|
linker is normally correct; don't use this unless you know what you are
|
| 1161 |
|
|
doing.
|
| 1162 |
|
|
.IP "\fB\-\-fatal\-warnings\fR" 4
|
| 1163 |
|
|
.IX Item "--fatal-warnings"
|
| 1164 |
|
|
.PD 0
|
| 1165 |
|
|
.IP "\fB\-\-no\-fatal\-warnings\fR" 4
|
| 1166 |
|
|
.IX Item "--no-fatal-warnings"
|
| 1167 |
|
|
.PD
|
| 1168 |
|
|
Treat all warnings as errors. The default behaviour can be restored
|
| 1169 |
|
|
with the option \fB\-\-no\-fatal\-warnings\fR.
|
| 1170 |
|
|
.IP "\fB\-\-force\-exe\-suffix\fR" 4
|
| 1171 |
|
|
.IX Item "--force-exe-suffix"
|
| 1172 |
|
|
Make sure that an output file has a .exe suffix.
|
| 1173 |
|
|
.Sp
|
| 1174 |
|
|
If a successfully built fully linked output file does not have a
|
| 1175 |
|
|
\&\f(CW\*(C`.exe\*(C'\fR or \f(CW\*(C`.dll\*(C'\fR suffix, this option forces the linker to copy
|
| 1176 |
|
|
the output file to one of the same name with a \f(CW\*(C`.exe\*(C'\fR suffix. This
|
| 1177 |
|
|
option is useful when using unmodified Unix makefiles on a Microsoft
|
| 1178 |
|
|
Windows host, since some versions of Windows won't run an image unless
|
| 1179 |
|
|
it ends in a \f(CW\*(C`.exe\*(C'\fR suffix.
|
| 1180 |
|
|
.IP "\fB\-\-gc\-sections\fR" 4
|
| 1181 |
|
|
.IX Item "--gc-sections"
|
| 1182 |
|
|
.PD 0
|
| 1183 |
|
|
.IP "\fB\-\-no\-gc\-sections\fR" 4
|
| 1184 |
|
|
.IX Item "--no-gc-sections"
|
| 1185 |
|
|
.PD
|
| 1186 |
|
|
Enable garbage collection of unused input sections. It is ignored on
|
| 1187 |
|
|
targets that do not support this option. The default behaviour (of not
|
| 1188 |
|
|
performing this garbage collection) can be restored by specifying
|
| 1189 |
|
|
\&\fB\-\-no\-gc\-sections\fR on the command line.
|
| 1190 |
|
|
.Sp
|
| 1191 |
|
|
\&\fB\-\-gc\-sections\fR decides which input sections are used by
|
| 1192 |
|
|
examining symbols and relocations. The section containing the entry
|
| 1193 |
|
|
symbol and all sections containing symbols undefined on the
|
| 1194 |
|
|
command-line will be kept, as will sections containing symbols
|
| 1195 |
|
|
referenced by dynamic objects. Note that when building shared
|
| 1196 |
|
|
libraries, the linker must assume that any visible symbol is
|
| 1197 |
|
|
referenced. Once this initial set of sections has been determined,
|
| 1198 |
|
|
the linker recursively marks as used any section referenced by their
|
| 1199 |
|
|
relocations. See \fB\-\-entry\fR and \fB\-\-undefined\fR.
|
| 1200 |
|
|
.Sp
|
| 1201 |
|
|
This option can be set when doing a partial link (enabled with option
|
| 1202 |
|
|
\&\fB\-r\fR). In this case the root of symbols kept must be explicitely
|
| 1203 |
|
|
specified either by an \fB\-\-entry\fR or \fB\-\-undefined\fR option or by
|
| 1204 |
|
|
a \f(CW\*(C`ENTRY\*(C'\fR command in the linker script.
|
| 1205 |
|
|
.IP "\fB\-\-print\-gc\-sections\fR" 4
|
| 1206 |
|
|
.IX Item "--print-gc-sections"
|
| 1207 |
|
|
.PD 0
|
| 1208 |
|
|
.IP "\fB\-\-no\-print\-gc\-sections\fR" 4
|
| 1209 |
|
|
.IX Item "--no-print-gc-sections"
|
| 1210 |
|
|
.PD
|
| 1211 |
|
|
List all sections removed by garbage collection. The listing is
|
| 1212 |
|
|
printed on stderr. This option is only effective if garbage
|
| 1213 |
|
|
collection has been enabled via the \fB\-\-gc\-sections\fR) option. The
|
| 1214 |
|
|
default behaviour (of not listing the sections that are removed) can
|
| 1215 |
|
|
be restored by specifying \fB\-\-no\-print\-gc\-sections\fR on the command
|
| 1216 |
|
|
line.
|
| 1217 |
|
|
.IP "\fB\-\-help\fR" 4
|
| 1218 |
|
|
.IX Item "--help"
|
| 1219 |
|
|
Print a summary of the command-line options on the standard output and exit.
|
| 1220 |
|
|
.IP "\fB\-\-target\-help\fR" 4
|
| 1221 |
|
|
.IX Item "--target-help"
|
| 1222 |
|
|
Print a summary of all target specific options on the standard output and exit.
|
| 1223 |
|
|
.IP "\fB\-Map=\fR\fImapfile\fR" 4
|
| 1224 |
|
|
.IX Item "-Map=mapfile"
|
| 1225 |
|
|
Print a link map to the file \fImapfile\fR. See the description of the
|
| 1226 |
|
|
\&\fB\-M\fR option, above.
|
| 1227 |
|
|
.IP "\fB\-\-no\-keep\-memory\fR" 4
|
| 1228 |
|
|
.IX Item "--no-keep-memory"
|
| 1229 |
|
|
\&\fBld\fR normally optimizes for speed over memory usage by caching the
|
| 1230 |
|
|
symbol tables of input files in memory. This option tells \fBld\fR to
|
| 1231 |
|
|
instead optimize for memory usage, by rereading the symbol tables as
|
| 1232 |
|
|
necessary. This may be required if \fBld\fR runs out of memory space
|
| 1233 |
|
|
while linking a large executable.
|
| 1234 |
|
|
.IP "\fB\-\-no\-undefined\fR" 4
|
| 1235 |
|
|
.IX Item "--no-undefined"
|
| 1236 |
|
|
.PD 0
|
| 1237 |
|
|
.IP "\fB\-z defs\fR" 4
|
| 1238 |
|
|
.IX Item "-z defs"
|
| 1239 |
|
|
.PD
|
| 1240 |
|
|
Report unresolved symbol references from regular object files. This
|
| 1241 |
|
|
is done even if the linker is creating a non-symbolic shared library.
|
| 1242 |
|
|
The switch \fB\-\-[no\-]allow\-shlib\-undefined\fR controls the
|
| 1243 |
|
|
behaviour for reporting unresolved references found in shared
|
| 1244 |
|
|
libraries being linked in.
|
| 1245 |
|
|
.IP "\fB\-\-allow\-multiple\-definition\fR" 4
|
| 1246 |
|
|
.IX Item "--allow-multiple-definition"
|
| 1247 |
|
|
.PD 0
|
| 1248 |
|
|
.IP "\fB\-z muldefs\fR" 4
|
| 1249 |
|
|
.IX Item "-z muldefs"
|
| 1250 |
|
|
.PD
|
| 1251 |
|
|
Normally when a symbol is defined multiple times, the linker will
|
| 1252 |
|
|
report a fatal error. These options allow multiple definitions and the
|
| 1253 |
|
|
first definition will be used.
|
| 1254 |
|
|
.IP "\fB\-\-allow\-shlib\-undefined\fR" 4
|
| 1255 |
|
|
.IX Item "--allow-shlib-undefined"
|
| 1256 |
|
|
.PD 0
|
| 1257 |
|
|
.IP "\fB\-\-no\-allow\-shlib\-undefined\fR" 4
|
| 1258 |
|
|
.IX Item "--no-allow-shlib-undefined"
|
| 1259 |
|
|
.PD
|
| 1260 |
|
|
Allows or disallows undefined symbols in shared libraries.
|
| 1261 |
|
|
This switch is similar to \fB\-\-no\-undefined\fR except that it
|
| 1262 |
|
|
determines the behaviour when the undefined symbols are in a
|
| 1263 |
|
|
shared library rather than a regular object file. It does not affect
|
| 1264 |
|
|
how undefined symbols in regular object files are handled.
|
| 1265 |
|
|
.Sp
|
| 1266 |
|
|
The default behaviour is to report errors for any undefined symbols
|
| 1267 |
|
|
referenced in shared libraries if the linker is being used to create
|
| 1268 |
|
|
an executable, but to allow them if the linker is being used to create
|
| 1269 |
|
|
a shared library.
|
| 1270 |
|
|
.Sp
|
| 1271 |
|
|
The reasons for allowing undefined symbol references in shared
|
| 1272 |
|
|
libraries specified at link time are that:
|
| 1273 |
|
|
.RS 4
|
| 1274 |
|
|
.IP "\(bu" 4
|
| 1275 |
|
|
A shared library specified at link time may not be the same as the one
|
| 1276 |
|
|
that is available at load time, so the symbol might actually be
|
| 1277 |
|
|
resolvable at load time.
|
| 1278 |
|
|
.IP "\(bu" 4
|
| 1279 |
|
|
There are some operating systems, eg BeOS and \s-1HPPA\s0, where undefined
|
| 1280 |
|
|
symbols in shared libraries are normal.
|
| 1281 |
|
|
.Sp
|
| 1282 |
|
|
The BeOS kernel for example patches shared libraries at load time to
|
| 1283 |
|
|
select whichever function is most appropriate for the current
|
| 1284 |
|
|
architecture. This is used, for example, to dynamically select an
|
| 1285 |
|
|
appropriate memset function.
|
| 1286 |
|
|
.RE
|
| 1287 |
|
|
.RS 4
|
| 1288 |
|
|
.RE
|
| 1289 |
|
|
.IP "\fB\-\-no\-undefined\-version\fR" 4
|
| 1290 |
|
|
.IX Item "--no-undefined-version"
|
| 1291 |
|
|
Normally when a symbol has an undefined version, the linker will ignore
|
| 1292 |
|
|
it. This option disallows symbols with undefined version and a fatal error
|
| 1293 |
|
|
will be issued instead.
|
| 1294 |
|
|
.IP "\fB\-\-default\-symver\fR" 4
|
| 1295 |
|
|
.IX Item "--default-symver"
|
| 1296 |
|
|
Create and use a default symbol version (the soname) for unversioned
|
| 1297 |
|
|
exported symbols.
|
| 1298 |
|
|
.IP "\fB\-\-default\-imported\-symver\fR" 4
|
| 1299 |
|
|
.IX Item "--default-imported-symver"
|
| 1300 |
|
|
Create and use a default symbol version (the soname) for unversioned
|
| 1301 |
|
|
imported symbols.
|
| 1302 |
|
|
.IP "\fB\-\-no\-warn\-mismatch\fR" 4
|
| 1303 |
|
|
.IX Item "--no-warn-mismatch"
|
| 1304 |
|
|
Normally \fBld\fR will give an error if you try to link together input
|
| 1305 |
|
|
files that are mismatched for some reason, perhaps because they have
|
| 1306 |
|
|
been compiled for different processors or for different endiannesses.
|
| 1307 |
|
|
This option tells \fBld\fR that it should silently permit such possible
|
| 1308 |
|
|
errors. This option should only be used with care, in cases when you
|
| 1309 |
|
|
have taken some special action that ensures that the linker errors are
|
| 1310 |
|
|
inappropriate.
|
| 1311 |
|
|
.IP "\fB\-\-no\-warn\-search\-mismatch\fR" 4
|
| 1312 |
|
|
.IX Item "--no-warn-search-mismatch"
|
| 1313 |
|
|
Normally \fBld\fR will give a warning if it finds an incompatible
|
| 1314 |
|
|
library during a library search. This option silences the warning.
|
| 1315 |
|
|
.IP "\fB\-\-no\-whole\-archive\fR" 4
|
| 1316 |
|
|
.IX Item "--no-whole-archive"
|
| 1317 |
|
|
Turn off the effect of the \fB\-\-whole\-archive\fR option for subsequent
|
| 1318 |
|
|
archive files.
|
| 1319 |
|
|
.IP "\fB\-\-noinhibit\-exec\fR" 4
|
| 1320 |
|
|
.IX Item "--noinhibit-exec"
|
| 1321 |
|
|
Retain the executable output file whenever it is still usable.
|
| 1322 |
|
|
Normally, the linker will not produce an output file if it encounters
|
| 1323 |
|
|
errors during the link process; it exits without writing an output file
|
| 1324 |
|
|
when it issues any error whatsoever.
|
| 1325 |
|
|
.IP "\fB\-nostdlib\fR" 4
|
| 1326 |
|
|
.IX Item "-nostdlib"
|
| 1327 |
|
|
Only search library directories explicitly specified on the
|
| 1328 |
|
|
command line. Library directories specified in linker scripts
|
| 1329 |
|
|
(including linker scripts specified on the command line) are ignored.
|
| 1330 |
|
|
.IP "\fB\-\-oformat=\fR\fIoutput-format\fR" 4
|
| 1331 |
|
|
.IX Item "--oformat=output-format"
|
| 1332 |
|
|
\&\fBld\fR may be configured to support more than one kind of object
|
| 1333 |
|
|
file. If your \fBld\fR is configured this way, you can use the
|
| 1334 |
|
|
\&\fB\-\-oformat\fR option to specify the binary format for the output
|
| 1335 |
|
|
object file. Even when \fBld\fR is configured to support alternative
|
| 1336 |
|
|
object formats, you don't usually need to specify this, as \fBld\fR
|
| 1337 |
|
|
should be configured to produce as a default output format the most
|
| 1338 |
|
|
usual format on each machine. \fIoutput-format\fR is a text string, the
|
| 1339 |
|
|
name of a particular format supported by the \s-1BFD\s0 libraries. (You can
|
| 1340 |
|
|
list the available binary formats with \fBobjdump \-i\fR.) The script
|
| 1341 |
|
|
command \f(CW\*(C`OUTPUT_FORMAT\*(C'\fR can also specify the output format, but
|
| 1342 |
|
|
this option overrides it.
|
| 1343 |
|
|
.IP "\fB\-pie\fR" 4
|
| 1344 |
|
|
.IX Item "-pie"
|
| 1345 |
|
|
.PD 0
|
| 1346 |
|
|
.IP "\fB\-\-pic\-executable\fR" 4
|
| 1347 |
|
|
.IX Item "--pic-executable"
|
| 1348 |
|
|
.PD
|
| 1349 |
|
|
Create a position independent executable. This is currently only supported on
|
| 1350 |
|
|
\&\s-1ELF\s0 platforms. Position independent executables are similar to shared
|
| 1351 |
|
|
libraries in that they are relocated by the dynamic linker to the virtual
|
| 1352 |
|
|
address the \s-1OS\s0 chooses for them (which can vary between invocations). Like
|
| 1353 |
|
|
normal dynamically linked executables they can be executed and symbols
|
| 1354 |
|
|
defined in the executable cannot be overridden by shared libraries.
|
| 1355 |
|
|
.IP "\fB\-qmagic\fR" 4
|
| 1356 |
|
|
.IX Item "-qmagic"
|
| 1357 |
|
|
This option is ignored for Linux compatibility.
|
| 1358 |
|
|
.IP "\fB\-Qy\fR" 4
|
| 1359 |
|
|
.IX Item "-Qy"
|
| 1360 |
|
|
This option is ignored for \s-1SVR4\s0 compatibility.
|
| 1361 |
|
|
.IP "\fB\-\-relax\fR" 4
|
| 1362 |
|
|
.IX Item "--relax"
|
| 1363 |
|
|
An option with machine dependent effects.
|
| 1364 |
|
|
This option is only supported on a few targets.
|
| 1365 |
|
|
.Sp
|
| 1366 |
|
|
On some platforms, the \fB\-\-relax\fR option performs global
|
| 1367 |
|
|
optimizations that become possible when the linker resolves addressing
|
| 1368 |
|
|
in the program, such as relaxing address modes and synthesizing new
|
| 1369 |
|
|
instructions in the output object file.
|
| 1370 |
|
|
.Sp
|
| 1371 |
|
|
On some platforms these link time global optimizations may make symbolic
|
| 1372 |
|
|
debugging of the resulting executable impossible.
|
| 1373 |
|
|
This is known to be
|
| 1374 |
|
|
the case for the Matsushita \s-1MN10200\s0 and \s-1MN10300\s0 family of processors.
|
| 1375 |
|
|
.Sp
|
| 1376 |
|
|
On platforms where this is not supported, \fB\-\-relax\fR is accepted,
|
| 1377 |
|
|
but ignored.
|
| 1378 |
|
|
.IP "\fB\-\-retain\-symbols\-file=\fR\fIfilename\fR" 4
|
| 1379 |
|
|
.IX Item "--retain-symbols-file=filename"
|
| 1380 |
|
|
Retain \fIonly\fR the symbols listed in the file \fIfilename\fR,
|
| 1381 |
|
|
discarding all others. \fIfilename\fR is simply a flat file, with one
|
| 1382 |
|
|
symbol name per line. This option is especially useful in environments
|
| 1383 |
|
|
(such as VxWorks)
|
| 1384 |
|
|
where a large global symbol table is accumulated gradually, to conserve
|
| 1385 |
|
|
run-time memory.
|
| 1386 |
|
|
.Sp
|
| 1387 |
|
|
\&\fB\-\-retain\-symbols\-file\fR does \fInot\fR discard undefined symbols,
|
| 1388 |
|
|
or symbols needed for relocations.
|
| 1389 |
|
|
.Sp
|
| 1390 |
|
|
You may only specify \fB\-\-retain\-symbols\-file\fR once in the command
|
| 1391 |
|
|
line. It overrides \fB\-s\fR and \fB\-S\fR.
|
| 1392 |
|
|
.IP "\fB\-rpath=\fR\fIdir\fR" 4
|
| 1393 |
|
|
.IX Item "-rpath=dir"
|
| 1394 |
|
|
Add a directory to the runtime library search path. This is used when
|
| 1395 |
|
|
linking an \s-1ELF\s0 executable with shared objects. All \fB\-rpath\fR
|
| 1396 |
|
|
arguments are concatenated and passed to the runtime linker, which uses
|
| 1397 |
|
|
them to locate shared objects at runtime. The \fB\-rpath\fR option is
|
| 1398 |
|
|
also used when locating shared objects which are needed by shared
|
| 1399 |
|
|
objects explicitly included in the link; see the description of the
|
| 1400 |
|
|
\&\fB\-rpath\-link\fR option. If \fB\-rpath\fR is not used when linking an
|
| 1401 |
|
|
\&\s-1ELF\s0 executable, the contents of the environment variable
|
| 1402 |
|
|
\&\f(CW\*(C`LD_RUN_PATH\*(C'\fR will be used if it is defined.
|
| 1403 |
|
|
.Sp
|
| 1404 |
|
|
The \fB\-rpath\fR option may also be used on SunOS. By default, on
|
| 1405 |
|
|
SunOS, the linker will form a runtime search patch out of all the
|
| 1406 |
|
|
\&\fB\-L\fR options it is given. If a \fB\-rpath\fR option is used, the
|
| 1407 |
|
|
runtime search path will be formed exclusively using the \fB\-rpath\fR
|
| 1408 |
|
|
options, ignoring the \fB\-L\fR options. This can be useful when using
|
| 1409 |
|
|
gcc, which adds many \fB\-L\fR options which may be on \s-1NFS\s0 mounted
|
| 1410 |
|
|
file systems.
|
| 1411 |
|
|
.Sp
|
| 1412 |
|
|
For compatibility with other \s-1ELF\s0 linkers, if the \fB\-R\fR option is
|
| 1413 |
|
|
followed by a directory name, rather than a file name, it is treated as
|
| 1414 |
|
|
the \fB\-rpath\fR option.
|
| 1415 |
|
|
.IP "\fB\-rpath\-link=\fR\fIdir\fR" 4
|
| 1416 |
|
|
.IX Item "-rpath-link=dir"
|
| 1417 |
|
|
When using \s-1ELF\s0 or SunOS, one shared library may require another. This
|
| 1418 |
|
|
happens when an \f(CW\*(C`ld \-shared\*(C'\fR link includes a shared library as one
|
| 1419 |
|
|
of the input files.
|
| 1420 |
|
|
.Sp
|
| 1421 |
|
|
When the linker encounters such a dependency when doing a non-shared,
|
| 1422 |
|
|
non-relocatable link, it will automatically try to locate the required
|
| 1423 |
|
|
shared library and include it in the link, if it is not included
|
| 1424 |
|
|
explicitly. In such a case, the \fB\-rpath\-link\fR option
|
| 1425 |
|
|
specifies the first set of directories to search. The
|
| 1426 |
|
|
\&\fB\-rpath\-link\fR option may specify a sequence of directory names
|
| 1427 |
|
|
either by specifying a list of names separated by colons, or by
|
| 1428 |
|
|
appearing multiple times.
|
| 1429 |
|
|
.Sp
|
| 1430 |
|
|
This option should be used with caution as it overrides the search path
|
| 1431 |
|
|
that may have been hard compiled into a shared library. In such a case it
|
| 1432 |
|
|
is possible to use unintentionally a different search path than the
|
| 1433 |
|
|
runtime linker would do.
|
| 1434 |
|
|
.Sp
|
| 1435 |
|
|
The linker uses the following search paths to locate required shared
|
| 1436 |
|
|
libraries:
|
| 1437 |
|
|
.RS 4
|
| 1438 |
|
|
.IP "1." 4
|
| 1439 |
|
|
Any directories specified by \fB\-rpath\-link\fR options.
|
| 1440 |
|
|
.IP "2." 4
|
| 1441 |
|
|
Any directories specified by \fB\-rpath\fR options. The difference
|
| 1442 |
|
|
between \fB\-rpath\fR and \fB\-rpath\-link\fR is that directories
|
| 1443 |
|
|
specified by \fB\-rpath\fR options are included in the executable and
|
| 1444 |
|
|
used at runtime, whereas the \fB\-rpath\-link\fR option is only effective
|
| 1445 |
|
|
at link time. Searching \fB\-rpath\fR in this way is only supported
|
| 1446 |
|
|
by native linkers and cross linkers which have been configured with
|
| 1447 |
|
|
the \fB\-\-with\-sysroot\fR option.
|
| 1448 |
|
|
.IP "3." 4
|
| 1449 |
|
|
On an \s-1ELF\s0 system, for native linkers, if the \fB\-rpath\fR and
|
| 1450 |
|
|
\&\fB\-rpath\-link\fR options were not used, search the contents of the
|
| 1451 |
|
|
environment variable \f(CW\*(C`LD_RUN_PATH\*(C'\fR.
|
| 1452 |
|
|
.IP "4." 4
|
| 1453 |
|
|
On SunOS, if the \fB\-rpath\fR option was not used, search any
|
| 1454 |
|
|
directories specified using \fB\-L\fR options.
|
| 1455 |
|
|
.IP "5." 4
|
| 1456 |
|
|
For a native linker, the search the contents of the environment
|
| 1457 |
|
|
variable \f(CW\*(C`LD_LIBRARY_PATH\*(C'\fR.
|
| 1458 |
|
|
.IP "6." 4
|
| 1459 |
|
|
For a native \s-1ELF\s0 linker, the directories in \f(CW\*(C`DT_RUNPATH\*(C'\fR or
|
| 1460 |
|
|
\&\f(CW\*(C`DT_RPATH\*(C'\fR of a shared library are searched for shared
|
| 1461 |
|
|
libraries needed by it. The \f(CW\*(C`DT_RPATH\*(C'\fR entries are ignored if
|
| 1462 |
|
|
\&\f(CW\*(C`DT_RUNPATH\*(C'\fR entries exist.
|
| 1463 |
|
|
.IP "7." 4
|
| 1464 |
|
|
The default directories, normally \fI/lib\fR and \fI/usr/lib\fR.
|
| 1465 |
|
|
.IP "8." 4
|
| 1466 |
|
|
For a native linker on an \s-1ELF\s0 system, if the file \fI/etc/ld.so.conf\fR
|
| 1467 |
|
|
exists, the list of directories found in that file.
|
| 1468 |
|
|
.RE
|
| 1469 |
|
|
.RS 4
|
| 1470 |
|
|
.Sp
|
| 1471 |
|
|
If the required shared library is not found, the linker will issue a
|
| 1472 |
|
|
warning and continue with the link.
|
| 1473 |
|
|
.RE
|
| 1474 |
|
|
.IP "\fB\-shared\fR" 4
|
| 1475 |
|
|
.IX Item "-shared"
|
| 1476 |
|
|
.PD 0
|
| 1477 |
|
|
.IP "\fB\-Bshareable\fR" 4
|
| 1478 |
|
|
.IX Item "-Bshareable"
|
| 1479 |
|
|
.PD
|
| 1480 |
|
|
Create a shared library. This is currently only supported on \s-1ELF\s0, \s-1XCOFF\s0
|
| 1481 |
|
|
and SunOS platforms. On SunOS, the linker will automatically create a
|
| 1482 |
|
|
shared library if the \fB\-e\fR option is not used and there are
|
| 1483 |
|
|
undefined symbols in the link.
|
| 1484 |
|
|
.IP "\fB\-\-sort\-common\fR" 4
|
| 1485 |
|
|
.IX Item "--sort-common"
|
| 1486 |
|
|
.PD 0
|
| 1487 |
|
|
.IP "\fB\-\-sort\-common=ascending\fR" 4
|
| 1488 |
|
|
.IX Item "--sort-common=ascending"
|
| 1489 |
|
|
.IP "\fB\-\-sort\-common=descending\fR" 4
|
| 1490 |
|
|
.IX Item "--sort-common=descending"
|
| 1491 |
|
|
.PD
|
| 1492 |
|
|
This option tells \fBld\fR to sort the common symbols by alignment in
|
| 1493 |
|
|
ascending or descending order when it places them in the appropriate output
|
| 1494 |
|
|
sections. The symbol alignments considered are sixteen-byte or larger,
|
| 1495 |
|
|
eight-byte, four-byte, two-byte, and one-byte. This is to prevent gaps
|
| 1496 |
|
|
between symbols due to alignment constraints. If no sorting order is
|
| 1497 |
|
|
specified, then descending order is assumed.
|
| 1498 |
|
|
.IP "\fB\-\-sort\-section=name\fR" 4
|
| 1499 |
|
|
.IX Item "--sort-section=name"
|
| 1500 |
|
|
This option will apply \f(CW\*(C`SORT_BY_NAME\*(C'\fR to all wildcard section
|
| 1501 |
|
|
patterns in the linker script.
|
| 1502 |
|
|
.IP "\fB\-\-sort\-section=alignment\fR" 4
|
| 1503 |
|
|
.IX Item "--sort-section=alignment"
|
| 1504 |
|
|
This option will apply \f(CW\*(C`SORT_BY_ALIGNMENT\*(C'\fR to all wildcard section
|
| 1505 |
|
|
patterns in the linker script.
|
| 1506 |
|
|
.IP "\fB\-\-split\-by\-file[=\fR\fIsize\fR\fB]\fR" 4
|
| 1507 |
|
|
.IX Item "--split-by-file[=size]"
|
| 1508 |
|
|
Similar to \fB\-\-split\-by\-reloc\fR but creates a new output section for
|
| 1509 |
|
|
each input file when \fIsize\fR is reached. \fIsize\fR defaults to a
|
| 1510 |
|
|
size of 1 if not given.
|
| 1511 |
|
|
.IP "\fB\-\-split\-by\-reloc[=\fR\fIcount\fR\fB]\fR" 4
|
| 1512 |
|
|
.IX Item "--split-by-reloc[=count]"
|
| 1513 |
|
|
Tries to creates extra sections in the output file so that no single
|
| 1514 |
|
|
output section in the file contains more than \fIcount\fR relocations.
|
| 1515 |
|
|
This is useful when generating huge relocatable files for downloading into
|
| 1516 |
|
|
certain real time kernels with the \s-1COFF\s0 object file format; since \s-1COFF\s0
|
| 1517 |
|
|
cannot represent more than 65535 relocations in a single section. Note
|
| 1518 |
|
|
that this will fail to work with object file formats which do not
|
| 1519 |
|
|
support arbitrary sections. The linker will not split up individual
|
| 1520 |
|
|
input sections for redistribution, so if a single input section contains
|
| 1521 |
|
|
more than \fIcount\fR relocations one output section will contain that
|
| 1522 |
|
|
many relocations. \fIcount\fR defaults to a value of 32768.
|
| 1523 |
|
|
.IP "\fB\-\-stats\fR" 4
|
| 1524 |
|
|
.IX Item "--stats"
|
| 1525 |
|
|
Compute and display statistics about the operation of the linker, such
|
| 1526 |
|
|
as execution time and memory usage.
|
| 1527 |
|
|
.IP "\fB\-\-sysroot=\fR\fIdirectory\fR" 4
|
| 1528 |
|
|
.IX Item "--sysroot=directory"
|
| 1529 |
|
|
Use \fIdirectory\fR as the location of the sysroot, overriding the
|
| 1530 |
|
|
configure-time default. This option is only supported by linkers
|
| 1531 |
|
|
that were configured using \fB\-\-with\-sysroot\fR.
|
| 1532 |
|
|
.IP "\fB\-\-traditional\-format\fR" 4
|
| 1533 |
|
|
.IX Item "--traditional-format"
|
| 1534 |
|
|
For some targets, the output of \fBld\fR is different in some ways from
|
| 1535 |
|
|
the output of some existing linker. This switch requests \fBld\fR to
|
| 1536 |
|
|
use the traditional format instead.
|
| 1537 |
|
|
.Sp
|
| 1538 |
|
|
For example, on SunOS, \fBld\fR combines duplicate entries in the
|
| 1539 |
|
|
symbol string table. This can reduce the size of an output file with
|
| 1540 |
|
|
full debugging information by over 30 percent. Unfortunately, the SunOS
|
| 1541 |
|
|
\&\f(CW\*(C`dbx\*(C'\fR program can not read the resulting program (\f(CW\*(C`gdb\*(C'\fR has no
|
| 1542 |
|
|
trouble). The \fB\-\-traditional\-format\fR switch tells \fBld\fR to not
|
| 1543 |
|
|
combine duplicate entries.
|
| 1544 |
|
|
.IP "\fB\-\-section\-start=\fR\fIsectionname\fR\fB=\fR\fIorg\fR" 4
|
| 1545 |
|
|
.IX Item "--section-start=sectionname=org"
|
| 1546 |
|
|
Locate a section in the output file at the absolute
|
| 1547 |
|
|
address given by \fIorg\fR. You may use this option as many
|
| 1548 |
|
|
times as necessary to locate multiple sections in the command
|
| 1549 |
|
|
line.
|
| 1550 |
|
|
\&\fIorg\fR must be a single hexadecimal integer;
|
| 1551 |
|
|
for compatibility with other linkers, you may omit the leading
|
| 1552 |
|
|
\&\fB0x\fR usually associated with hexadecimal values. \fINote:\fR there
|
| 1553 |
|
|
should be no white space between \fIsectionname\fR, the equals
|
| 1554 |
|
|
sign ("\fB=\fR"), and \fIorg\fR.
|
| 1555 |
|
|
.IP "\fB\-Tbss=\fR\fIorg\fR" 4
|
| 1556 |
|
|
.IX Item "-Tbss=org"
|
| 1557 |
|
|
.PD 0
|
| 1558 |
|
|
.IP "\fB\-Tdata=\fR\fIorg\fR" 4
|
| 1559 |
|
|
.IX Item "-Tdata=org"
|
| 1560 |
|
|
.IP "\fB\-Ttext=\fR\fIorg\fR" 4
|
| 1561 |
|
|
.IX Item "-Ttext=org"
|
| 1562 |
|
|
.PD
|
| 1563 |
|
|
Same as \fB\-\-section\-start\fR, with \f(CW\*(C`.bss\*(C'\fR, \f(CW\*(C`.data\*(C'\fR or
|
| 1564 |
|
|
\&\f(CW\*(C`.text\*(C'\fR as the \fIsectionname\fR.
|
| 1565 |
|
|
.IP "\fB\-Ttext\-segment=\fR\fIorg\fR" 4
|
| 1566 |
|
|
.IX Item "-Ttext-segment=org"
|
| 1567 |
|
|
When creating an \s-1ELF\s0 executable or shared object, it will set the address
|
| 1568 |
|
|
of the first byte of the text segment.
|
| 1569 |
|
|
.IP "\fB\-\-unresolved\-symbols=\fR\fImethod\fR" 4
|
| 1570 |
|
|
.IX Item "--unresolved-symbols=method"
|
| 1571 |
|
|
Determine how to handle unresolved symbols. There are four possible
|
| 1572 |
|
|
values for \fBmethod\fR:
|
| 1573 |
|
|
.RS 4
|
| 1574 |
|
|
.IP "\fBignore-all\fR" 4
|
| 1575 |
|
|
.IX Item "ignore-all"
|
| 1576 |
|
|
Do not report any unresolved symbols.
|
| 1577 |
|
|
.IP "\fBreport-all\fR" 4
|
| 1578 |
|
|
.IX Item "report-all"
|
| 1579 |
|
|
Report all unresolved symbols. This is the default.
|
| 1580 |
|
|
.IP "\fBignore-in-object-files\fR" 4
|
| 1581 |
|
|
.IX Item "ignore-in-object-files"
|
| 1582 |
|
|
Report unresolved symbols that are contained in shared libraries, but
|
| 1583 |
|
|
ignore them if they come from regular object files.
|
| 1584 |
|
|
.IP "\fBignore-in-shared-libs\fR" 4
|
| 1585 |
|
|
.IX Item "ignore-in-shared-libs"
|
| 1586 |
|
|
Report unresolved symbols that come from regular object files, but
|
| 1587 |
|
|
ignore them if they come from shared libraries. This can be useful
|
| 1588 |
|
|
when creating a dynamic binary and it is known that all the shared
|
| 1589 |
|
|
libraries that it should be referencing are included on the linker's
|
| 1590 |
|
|
command line.
|
| 1591 |
|
|
.RE
|
| 1592 |
|
|
.RS 4
|
| 1593 |
|
|
.Sp
|
| 1594 |
|
|
The behaviour for shared libraries on their own can also be controlled
|
| 1595 |
|
|
by the \fB\-\-[no\-]allow\-shlib\-undefined\fR option.
|
| 1596 |
|
|
.Sp
|
| 1597 |
|
|
Normally the linker will generate an error message for each reported
|
| 1598 |
|
|
unresolved symbol but the option \fB\-\-warn\-unresolved\-symbols\fR
|
| 1599 |
|
|
can change this to a warning.
|
| 1600 |
|
|
.RE
|
| 1601 |
|
|
.IP "\fB\-\-dll\-verbose\fR" 4
|
| 1602 |
|
|
.IX Item "--dll-verbose"
|
| 1603 |
|
|
.PD 0
|
| 1604 |
|
|
.IP "\fB\-\-verbose\fR" 4
|
| 1605 |
|
|
.IX Item "--verbose"
|
| 1606 |
|
|
.PD
|
| 1607 |
|
|
Display the version number for \fBld\fR and list the linker emulations
|
| 1608 |
|
|
supported. Display which input files can and cannot be opened. Display
|
| 1609 |
|
|
the linker script being used by the linker.
|
| 1610 |
|
|
.IP "\fB\-\-version\-script=\fR\fIversion-scriptfile\fR" 4
|
| 1611 |
|
|
.IX Item "--version-script=version-scriptfile"
|
| 1612 |
|
|
Specify the name of a version script to the linker. This is typically
|
| 1613 |
|
|
used when creating shared libraries to specify additional information
|
| 1614 |
|
|
about the version hierarchy for the library being created. This option
|
| 1615 |
|
|
is only fully supported on \s-1ELF\s0 platforms which support shared libraries;
|
| 1616 |
|
|
see \fB\s-1VERSION\s0\fR. It is partially supported on \s-1PE\s0 platforms, which can
|
| 1617 |
|
|
use version scripts to filter symbol visibility in auto-export mode: any
|
| 1618 |
|
|
symbols marked \fBlocal\fR in the version script will not be exported.
|
| 1619 |
|
|
.IP "\fB\-\-warn\-common\fR" 4
|
| 1620 |
|
|
.IX Item "--warn-common"
|
| 1621 |
|
|
Warn when a common symbol is combined with another common symbol or with
|
| 1622 |
|
|
a symbol definition. Unix linkers allow this somewhat sloppy practise,
|
| 1623 |
|
|
but linkers on some other operating systems do not. This option allows
|
| 1624 |
|
|
you to find potential problems from combining global symbols.
|
| 1625 |
|
|
Unfortunately, some C libraries use this practise, so you may get some
|
| 1626 |
|
|
warnings about symbols in the libraries as well as in your programs.
|
| 1627 |
|
|
.Sp
|
| 1628 |
|
|
There are three kinds of global symbols, illustrated here by C examples:
|
| 1629 |
|
|
.RS 4
|
| 1630 |
|
|
.IP "\fBint i = 1;\fR" 4
|
| 1631 |
|
|
.IX Item "int i = 1;"
|
| 1632 |
|
|
A definition, which goes in the initialized data section of the output
|
| 1633 |
|
|
file.
|
| 1634 |
|
|
.IP "\fBextern int i;\fR" 4
|
| 1635 |
|
|
.IX Item "extern int i;"
|
| 1636 |
|
|
An undefined reference, which does not allocate space.
|
| 1637 |
|
|
There must be either a definition or a common symbol for the
|
| 1638 |
|
|
variable somewhere.
|
| 1639 |
|
|
.IP "\fBint i;\fR" 4
|
| 1640 |
|
|
.IX Item "int i;"
|
| 1641 |
|
|
A common symbol. If there are only (one or more) common symbols for a
|
| 1642 |
|
|
variable, it goes in the uninitialized data area of the output file.
|
| 1643 |
|
|
The linker merges multiple common symbols for the same variable into a
|
| 1644 |
|
|
single symbol. If they are of different sizes, it picks the largest
|
| 1645 |
|
|
size. The linker turns a common symbol into a declaration, if there is
|
| 1646 |
|
|
a definition of the same variable.
|
| 1647 |
|
|
.RE
|
| 1648 |
|
|
.RS 4
|
| 1649 |
|
|
.Sp
|
| 1650 |
|
|
The \fB\-\-warn\-common\fR option can produce five kinds of warnings.
|
| 1651 |
|
|
Each warning consists of a pair of lines: the first describes the symbol
|
| 1652 |
|
|
just encountered, and the second describes the previous symbol
|
| 1653 |
|
|
encountered with the same name. One or both of the two symbols will be
|
| 1654 |
|
|
a common symbol.
|
| 1655 |
|
|
.IP "1." 4
|
| 1656 |
|
|
Turning a common symbol into a reference, because there is already a
|
| 1657 |
|
|
definition for the symbol.
|
| 1658 |
|
|
.Sp
|
| 1659 |
|
|
.Vb 3
|
| 1660 |
|
|
\& (): warning: common of \`\*(Aq
|
| 1661 |
|
|
\& overridden by definition
|
| 1662 |
|
|
\& (
|
| 1663 |
|
|
.Ve
|
| 1664 |
|
|
.IP "2." 4
|
| 1665 |
|
|
Turning a common symbol into a reference, because a later definition for
|
| 1666 |
|
|
the symbol is encountered. This is the same as the previous case,
|
| 1667 |
|
|
except that the symbols are encountered in a different order.
|
| 1668 |
|
|
.Sp
|
| 1669 |
|
|
.Vb 3
|
| 1670 |
|
|
\& (): warning: definition of \`\*(Aq
|
| 1671 |
|
|
\& overriding common
|
| 1672 |
|
|
\& (): warning: common is here
|
| 1673 |
|
|
.Ve
|
| 1674 |
|
|
.IP "3." 4
|
| 1675 |
|
|
Merging a common symbol with a previous same-sized common symbol.
|
| 1676 |
|
|
.Sp
|
| 1677 |
|
|
.Vb 3
|
| 1678 |
|
|
\& (): warning: multiple common
|
| 1679 |
|
|
\& of \`\*(Aq
|
| 1680 |
|
|
\& (): warning: previous common is here
|
| 1681 |
|
|
.Ve
|
| 1682 |
|
|
.IP "4." 4
|
| 1683 |
|
|
Merging a common symbol with a previous larger common symbol.
|
| 1684 |
|
|
.Sp
|
| 1685 |
|
|
.Vb 3
|
| 1686 |
|
|
\& (): warning: common of \`\*(Aq
|
| 1687 |
|
|
\& overridden by larger common
|
| 1688 |
|
|
\& (): warning: larger common is here
|
| 1689 |
|
|
.Ve
|
| 1690 |
|
|
.IP "5." 4
|
| 1691 |
|
|
Merging a common symbol with a previous smaller common symbol. This is
|
| 1692 |
|
|
the same as the previous case, except that the symbols are
|
| 1693 |
|
|
encountered in a different order.
|
| 1694 |
|
|
.Sp
|
| 1695 |
|
|
.Vb 3
|
| 1696 |
|
|
\& (): warning: common of \`\*(Aq
|
| 1697 |
|
|
\& overriding smaller common
|
| 1698 |
|
|
\& (): warning: smaller common is here
|
| 1699 |
|
|
.Ve
|
| 1700 |
|
|
.RE
|
| 1701 |
|
|
.RS 4
|
| 1702 |
|
|
.RE
|
| 1703 |
|
|
.IP "\fB\-\-warn\-constructors\fR" 4
|
| 1704 |
|
|
.IX Item "--warn-constructors"
|
| 1705 |
|
|
Warn if any global constructors are used. This is only useful for a few
|
| 1706 |
|
|
object file formats. For formats like \s-1COFF\s0 or \s-1ELF\s0, the linker can not
|
| 1707 |
|
|
detect the use of global constructors.
|
| 1708 |
|
|
.IP "\fB\-\-warn\-multiple\-gp\fR" 4
|
| 1709 |
|
|
.IX Item "--warn-multiple-gp"
|
| 1710 |
|
|
Warn if multiple global pointer values are required in the output file.
|
| 1711 |
|
|
This is only meaningful for certain processors, such as the Alpha.
|
| 1712 |
|
|
Specifically, some processors put large-valued constants in a special
|
| 1713 |
|
|
section. A special register (the global pointer) points into the middle
|
| 1714 |
|
|
of this section, so that constants can be loaded efficiently via a
|
| 1715 |
|
|
base-register relative addressing mode. Since the offset in
|
| 1716 |
|
|
base-register relative mode is fixed and relatively small (e.g., 16
|
| 1717 |
|
|
bits), this limits the maximum size of the constant pool. Thus, in
|
| 1718 |
|
|
large programs, it is often necessary to use multiple global pointer
|
| 1719 |
|
|
values in order to be able to address all possible constants. This
|
| 1720 |
|
|
option causes a warning to be issued whenever this case occurs.
|
| 1721 |
|
|
.IP "\fB\-\-warn\-once\fR" 4
|
| 1722 |
|
|
.IX Item "--warn-once"
|
| 1723 |
|
|
Only warn once for each undefined symbol, rather than once per module
|
| 1724 |
|
|
which refers to it.
|
| 1725 |
|
|
.IP "\fB\-\-warn\-section\-align\fR" 4
|
| 1726 |
|
|
.IX Item "--warn-section-align"
|
| 1727 |
|
|
Warn if the address of an output section is changed because of
|
| 1728 |
|
|
alignment. Typically, the alignment will be set by an input section.
|
| 1729 |
|
|
The address will only be changed if it not explicitly specified; that
|
| 1730 |
|
|
is, if the \f(CW\*(C`SECTIONS\*(C'\fR command does not specify a start address for
|
| 1731 |
|
|
the section.
|
| 1732 |
|
|
.IP "\fB\-\-warn\-shared\-textrel\fR" 4
|
| 1733 |
|
|
.IX Item "--warn-shared-textrel"
|
| 1734 |
|
|
Warn if the linker adds a \s-1DT_TEXTREL\s0 to a shared object.
|
| 1735 |
|
|
.IP "\fB\-\-warn\-alternate\-em\fR" 4
|
| 1736 |
|
|
.IX Item "--warn-alternate-em"
|
| 1737 |
|
|
Warn if an object has alternate \s-1ELF\s0 machine code.
|
| 1738 |
|
|
.IP "\fB\-\-warn\-unresolved\-symbols\fR" 4
|
| 1739 |
|
|
.IX Item "--warn-unresolved-symbols"
|
| 1740 |
|
|
If the linker is going to report an unresolved symbol (see the option
|
| 1741 |
|
|
\&\fB\-\-unresolved\-symbols\fR) it will normally generate an error.
|
| 1742 |
|
|
This option makes it generate a warning instead.
|
| 1743 |
|
|
.IP "\fB\-\-error\-unresolved\-symbols\fR" 4
|
| 1744 |
|
|
.IX Item "--error-unresolved-symbols"
|
| 1745 |
|
|
This restores the linker's default behaviour of generating errors when
|
| 1746 |
|
|
it is reporting unresolved symbols.
|
| 1747 |
|
|
.IP "\fB\-\-whole\-archive\fR" 4
|
| 1748 |
|
|
.IX Item "--whole-archive"
|
| 1749 |
|
|
For each archive mentioned on the command line after the
|
| 1750 |
|
|
\&\fB\-\-whole\-archive\fR option, include every object file in the archive
|
| 1751 |
|
|
in the link, rather than searching the archive for the required object
|
| 1752 |
|
|
files. This is normally used to turn an archive file into a shared
|
| 1753 |
|
|
library, forcing every object to be included in the resulting shared
|
| 1754 |
|
|
library. This option may be used more than once.
|
| 1755 |
|
|
.Sp
|
| 1756 |
|
|
Two notes when using this option from gcc: First, gcc doesn't know
|
| 1757 |
|
|
about this option, so you have to use \fB\-Wl,\-whole\-archive\fR.
|
| 1758 |
|
|
Second, don't forget to use \fB\-Wl,\-no\-whole\-archive\fR after your
|
| 1759 |
|
|
list of archives, because gcc will add its own list of archives to
|
| 1760 |
|
|
your link and you may not want this flag to affect those as well.
|
| 1761 |
|
|
.IP "\fB\-\-wrap=\fR\fIsymbol\fR" 4
|
| 1762 |
|
|
.IX Item "--wrap=symbol"
|
| 1763 |
|
|
Use a wrapper function for \fIsymbol\fR. Any undefined reference to
|
| 1764 |
|
|
\&\fIsymbol\fR will be resolved to \f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR. Any
|
| 1765 |
|
|
undefined reference to \f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR will be resolved to
|
| 1766 |
|
|
\&\fIsymbol\fR.
|
| 1767 |
|
|
.Sp
|
| 1768 |
|
|
This can be used to provide a wrapper for a system function. The
|
| 1769 |
|
|
wrapper function should be called \f(CW\*(C`_\|_wrap_\f(CIsymbol\f(CW\*(C'\fR. If it
|
| 1770 |
|
|
wishes to call the system function, it should call
|
| 1771 |
|
|
\&\f(CW\*(C`_\|_real_\f(CIsymbol\f(CW\*(C'\fR.
|
| 1772 |
|
|
.Sp
|
| 1773 |
|
|
Here is a trivial example:
|
| 1774 |
|
|
.Sp
|
| 1775 |
|
|
.Vb 6
|
| 1776 |
|
|
\& void *
|
| 1777 |
|
|
\& _\|_wrap_malloc (size_t c)
|
| 1778 |
|
|
\& {
|
| 1779 |
|
|
\& printf ("malloc called with %zu\en", c);
|
| 1780 |
|
|
\& return _\|_real_malloc (c);
|
| 1781 |
|
|
\& }
|
| 1782 |
|
|
.Ve
|
| 1783 |
|
|
.Sp
|
| 1784 |
|
|
If you link other code with this file using \fB\-\-wrap malloc\fR, then
|
| 1785 |
|
|
all calls to \f(CW\*(C`malloc\*(C'\fR will call the function \f(CW\*(C`_\|_wrap_malloc\*(C'\fR
|
| 1786 |
|
|
instead. The call to \f(CW\*(C`_\|_real_malloc\*(C'\fR in \f(CW\*(C`_\|_wrap_malloc\*(C'\fR will
|
| 1787 |
|
|
call the real \f(CW\*(C`malloc\*(C'\fR function.
|
| 1788 |
|
|
.Sp
|
| 1789 |
|
|
You may wish to provide a \f(CW\*(C`_\|_real_malloc\*(C'\fR function as well, so that
|
| 1790 |
|
|
links without the \fB\-\-wrap\fR option will succeed. If you do this,
|
| 1791 |
|
|
you should not put the definition of \f(CW\*(C`_\|_real_malloc\*(C'\fR in the same
|
| 1792 |
|
|
file as \f(CW\*(C`_\|_wrap_malloc\*(C'\fR; if you do, the assembler may resolve the
|
| 1793 |
|
|
call before the linker has a chance to wrap it to \f(CW\*(C`malloc\*(C'\fR.
|
| 1794 |
|
|
.IP "\fB\-\-eh\-frame\-hdr\fR" 4
|
| 1795 |
|
|
.IX Item "--eh-frame-hdr"
|
| 1796 |
|
|
Request creation of \f(CW\*(C`.eh_frame_hdr\*(C'\fR section and \s-1ELF\s0
|
| 1797 |
|
|
\&\f(CW\*(C`PT_GNU_EH_FRAME\*(C'\fR segment header.
|
| 1798 |
|
|
.IP "\fB\-\-enable\-new\-dtags\fR" 4
|
| 1799 |
|
|
.IX Item "--enable-new-dtags"
|
| 1800 |
|
|
.PD 0
|
| 1801 |
|
|
.IP "\fB\-\-disable\-new\-dtags\fR" 4
|
| 1802 |
|
|
.IX Item "--disable-new-dtags"
|
| 1803 |
|
|
.PD
|
| 1804 |
|
|
This linker can create the new dynamic tags in \s-1ELF\s0. But the older \s-1ELF\s0
|
| 1805 |
|
|
systems may not understand them. If you specify
|
| 1806 |
|
|
\&\fB\-\-enable\-new\-dtags\fR, the dynamic tags will be created as needed.
|
| 1807 |
|
|
If you specify \fB\-\-disable\-new\-dtags\fR, no new dynamic tags will be
|
| 1808 |
|
|
created. By default, the new dynamic tags are not created. Note that
|
| 1809 |
|
|
those options are only available for \s-1ELF\s0 systems.
|
| 1810 |
|
|
.IP "\fB\-\-hash\-size=\fR\fInumber\fR" 4
|
| 1811 |
|
|
.IX Item "--hash-size=number"
|
| 1812 |
|
|
Set the default size of the linker's hash tables to a prime number
|
| 1813 |
|
|
close to \fInumber\fR. Increasing this value can reduce the length of
|
| 1814 |
|
|
time it takes the linker to perform its tasks, at the expense of
|
| 1815 |
|
|
increasing the linker's memory requirements. Similarly reducing this
|
| 1816 |
|
|
value can reduce the memory requirements at the expense of speed.
|
| 1817 |
|
|
.IP "\fB\-\-hash\-style=\fR\fIstyle\fR" 4
|
| 1818 |
|
|
.IX Item "--hash-style=style"
|
| 1819 |
|
|
Set the type of linker's hash table(s). \fIstyle\fR can be either
|
| 1820 |
|
|
\&\f(CW\*(C`sysv\*(C'\fR for classic \s-1ELF\s0 \f(CW\*(C`.hash\*(C'\fR section, \f(CW\*(C`gnu\*(C'\fR for
|
| 1821 |
|
|
new style \s-1GNU\s0 \f(CW\*(C`.gnu.hash\*(C'\fR section or \f(CW\*(C`both\*(C'\fR for both
|
| 1822 |
|
|
the classic \s-1ELF\s0 \f(CW\*(C`.hash\*(C'\fR and new style \s-1GNU\s0 \f(CW\*(C`.gnu.hash\*(C'\fR
|
| 1823 |
|
|
hash tables. The default is \f(CW\*(C`sysv\*(C'\fR.
|
| 1824 |
|
|
.IP "\fB\-\-reduce\-memory\-overheads\fR" 4
|
| 1825 |
|
|
.IX Item "--reduce-memory-overheads"
|
| 1826 |
|
|
This option reduces memory requirements at ld runtime, at the expense of
|
| 1827 |
|
|
linking speed. This was introduced to select the old O(n^2) algorithm
|
| 1828 |
|
|
for link map file generation, rather than the new O(n) algorithm which uses
|
| 1829 |
|
|
about 40% more memory for symbol storage.
|
| 1830 |
|
|
.Sp
|
| 1831 |
|
|
Another effect of the switch is to set the default hash table size to
|
| 1832 |
|
|
1021, which again saves memory at the cost of lengthening the linker's
|
| 1833 |
|
|
run time. This is not done however if the \fB\-\-hash\-size\fR switch
|
| 1834 |
|
|
has been used.
|
| 1835 |
|
|
.Sp
|
| 1836 |
|
|
The \fB\-\-reduce\-memory\-overheads\fR switch may be also be used to
|
| 1837 |
|
|
enable other tradeoffs in future versions of the linker.
|
| 1838 |
|
|
.IP "\fB\-\-build\-id\fR" 4
|
| 1839 |
|
|
.IX Item "--build-id"
|
| 1840 |
|
|
.PD 0
|
| 1841 |
|
|
.IP "\fB\-\-build\-id=\fR\fIstyle\fR" 4
|
| 1842 |
|
|
.IX Item "--build-id=style"
|
| 1843 |
|
|
.PD
|
| 1844 |
|
|
Request creation of \f(CW\*(C`.note.gnu.build\-id\*(C'\fR \s-1ELF\s0 note section.
|
| 1845 |
|
|
The contents of the note are unique bits identifying this linked
|
| 1846 |
|
|
file. \fIstyle\fR can be \f(CW\*(C`uuid\*(C'\fR to use 128 random bits,
|
| 1847 |
|
|
\&\f(CW\*(C`sha1\*(C'\fR to use a 160\-bit \s-1SHA1\s0 hash on the normative
|
| 1848 |
|
|
parts of the output contents, \f(CW\*(C`md5\*(C'\fR to use a 128\-bit
|
| 1849 |
|
|
\&\s-1MD5\s0 hash on the normative parts of the output contents, or
|
| 1850 |
|
|
\&\f(CW\*(C`0x\f(CIhexstring\f(CW\*(C'\fR to use a chosen bit string specified as
|
| 1851 |
|
|
an even number of hexadecimal digits (\f(CW\*(C`\-\*(C'\fR and \f(CW\*(C`:\*(C'\fR
|
| 1852 |
|
|
characters between digit pairs are ignored). If \fIstyle\fR is
|
| 1853 |
|
|
omitted, \f(CW\*(C`sha1\*(C'\fR is used.
|
| 1854 |
|
|
.Sp
|
| 1855 |
|
|
The \f(CW\*(C`md5\*(C'\fR and \f(CW\*(C`sha1\*(C'\fR styles produces an identifier
|
| 1856 |
|
|
that is always the same in an identical output file, but will be
|
| 1857 |
|
|
unique among all nonidentical output files. It is not intended
|
| 1858 |
|
|
to be compared as a checksum for the file's contents. A linked
|
| 1859 |
|
|
file may be changed later by other tools, but the build \s-1ID\s0 bit
|
| 1860 |
|
|
string identifying the original linked file does not change.
|
| 1861 |
|
|
.Sp
|
| 1862 |
|
|
Passing \f(CW\*(C`none\*(C'\fR for \fIstyle\fR disables the setting from any
|
| 1863 |
|
|
\&\f(CW\*(C`\-\-build\-id\*(C'\fR options earlier on the command line.
|
| 1864 |
|
|
.PP
|
| 1865 |
|
|
The i386 \s-1PE\s0 linker supports the \fB\-shared\fR option, which causes
|
| 1866 |
|
|
the output to be a dynamically linked library (\s-1DLL\s0) instead of a
|
| 1867 |
|
|
normal executable. You should name the output \f(CW\*(C`*.dll\*(C'\fR when you
|
| 1868 |
|
|
use this option. In addition, the linker fully supports the standard
|
| 1869 |
|
|
\&\f(CW\*(C`*.def\*(C'\fR files, which may be specified on the linker command line
|
| 1870 |
|
|
like an object file (in fact, it should precede archives it exports
|
| 1871 |
|
|
symbols from, to ensure that they get linked in, just like a normal
|
| 1872 |
|
|
object file).
|
| 1873 |
|
|
.PP
|
| 1874 |
|
|
In addition to the options common to all targets, the i386 \s-1PE\s0 linker
|
| 1875 |
|
|
support additional command line options that are specific to the i386
|
| 1876 |
|
|
\&\s-1PE\s0 target. Options that take values may be separated from their
|
| 1877 |
|
|
values by either a space or an equals sign.
|
| 1878 |
|
|
.IP "\fB\-\-add\-stdcall\-alias\fR" 4
|
| 1879 |
|
|
.IX Item "--add-stdcall-alias"
|
| 1880 |
|
|
If given, symbols with a stdcall suffix (@\fInn\fR) will be exported
|
| 1881 |
|
|
as-is and also with the suffix stripped.
|
| 1882 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 1883 |
|
|
.IP "\fB\-\-base\-file\fR \fIfile\fR" 4
|
| 1884 |
|
|
.IX Item "--base-file file"
|
| 1885 |
|
|
Use \fIfile\fR as the name of a file in which to save the base
|
| 1886 |
|
|
addresses of all the relocations needed for generating DLLs with
|
| 1887 |
|
|
\&\fIdlltool\fR.
|
| 1888 |
|
|
[This is an i386 \s-1PE\s0 specific option]
|
| 1889 |
|
|
.IP "\fB\-\-dll\fR" 4
|
| 1890 |
|
|
.IX Item "--dll"
|
| 1891 |
|
|
Create a \s-1DLL\s0 instead of a regular executable. You may also use
|
| 1892 |
|
|
\&\fB\-shared\fR or specify a \f(CW\*(C`LIBRARY\*(C'\fR in a given \f(CW\*(C`.def\*(C'\fR
|
| 1893 |
|
|
file.
|
| 1894 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 1895 |
|
|
.IP "\fB\-\-enable\-long\-section\-names\fR" 4
|
| 1896 |
|
|
.IX Item "--enable-long-section-names"
|
| 1897 |
|
|
.PD 0
|
| 1898 |
|
|
.IP "\fB\-\-disable\-long\-section\-names\fR" 4
|
| 1899 |
|
|
.IX Item "--disable-long-section-names"
|
| 1900 |
|
|
.PD
|
| 1901 |
|
|
The \s-1PE\s0 variants of the Coff object format add an extension that permits
|
| 1902 |
|
|
the use of section names longer than eight characters, the normal limit
|
| 1903 |
|
|
for Coff. By default, these names are only allowed in object files, as
|
| 1904 |
|
|
fully-linked executable images do not carry the Coff string table required
|
| 1905 |
|
|
to support the longer names. As a \s-1GNU\s0 extension, it is possible to
|
| 1906 |
|
|
allow their use in executable images as well, or to (probably pointlessly!)
|
| 1907 |
|
|
disallow it in object files, by using these two options. Executable images
|
| 1908 |
|
|
generated with these long section names are slightly non-standard, carrying
|
| 1909 |
|
|
as they do a string table, and may generate confusing output when examined
|
| 1910 |
|
|
with non-GNU PE-aware tools, such as file viewers and dumpers. However,
|
| 1911 |
|
|
\&\s-1GDB\s0 relies on the use of \s-1PE\s0 long section names to find Dwarf\-2 debug
|
| 1912 |
|
|
information sections in an executable image at runtime, and so if neither
|
| 1913 |
|
|
option is specified on the command-line, \fBld\fR will enable long
|
| 1914 |
|
|
section names, overriding the default and technically correct behaviour,
|
| 1915 |
|
|
when it finds the presence of debug information while linking an executable
|
| 1916 |
|
|
image and not stripping symbols.
|
| 1917 |
|
|
[This option is valid for all \s-1PE\s0 targeted ports of the linker]
|
| 1918 |
|
|
.IP "\fB\-\-enable\-stdcall\-fixup\fR" 4
|
| 1919 |
|
|
.IX Item "--enable-stdcall-fixup"
|
| 1920 |
|
|
.PD 0
|
| 1921 |
|
|
.IP "\fB\-\-disable\-stdcall\-fixup\fR" 4
|
| 1922 |
|
|
.IX Item "--disable-stdcall-fixup"
|
| 1923 |
|
|
.PD
|
| 1924 |
|
|
If the link finds a symbol that it cannot resolve, it will attempt to
|
| 1925 |
|
|
do \*(L"fuzzy linking\*(R" by looking for another defined symbol that differs
|
| 1926 |
|
|
only in the format of the symbol name (cdecl vs stdcall) and will
|
| 1927 |
|
|
resolve that symbol by linking to the match. For example, the
|
| 1928 |
|
|
undefined symbol \f(CW\*(C`_foo\*(C'\fR might be linked to the function
|
| 1929 |
|
|
\&\f(CW\*(C`_foo@12\*(C'\fR, or the undefined symbol \f(CW\*(C`_bar@16\*(C'\fR might be linked
|
| 1930 |
|
|
to the function \f(CW\*(C`_bar\*(C'\fR. When the linker does this, it prints a
|
| 1931 |
|
|
warning, since it normally should have failed to link, but sometimes
|
| 1932 |
|
|
import libraries generated from third-party dlls may need this feature
|
| 1933 |
|
|
to be usable. If you specify \fB\-\-enable\-stdcall\-fixup\fR, this
|
| 1934 |
|
|
feature is fully enabled and warnings are not printed. If you specify
|
| 1935 |
|
|
\&\fB\-\-disable\-stdcall\-fixup\fR, this feature is disabled and such
|
| 1936 |
|
|
mismatches are considered to be errors.
|
| 1937 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 1938 |
|
|
.IP "\fB\-\-export\-all\-symbols\fR" 4
|
| 1939 |
|
|
.IX Item "--export-all-symbols"
|
| 1940 |
|
|
If given, all global symbols in the objects used to build a \s-1DLL\s0 will
|
| 1941 |
|
|
be exported by the \s-1DLL\s0. Note that this is the default if there
|
| 1942 |
|
|
otherwise wouldn't be any exported symbols. When symbols are
|
| 1943 |
|
|
explicitly exported via \s-1DEF\s0 files or implicitly exported via function
|
| 1944 |
|
|
attributes, the default is to not export anything else unless this
|
| 1945 |
|
|
option is given. Note that the symbols \f(CW\*(C`DllMain@12\*(C'\fR,
|
| 1946 |
|
|
\&\f(CW\*(C`DllEntryPoint@0\*(C'\fR, \f(CW\*(C`DllMainCRTStartup@12\*(C'\fR, and
|
| 1947 |
|
|
\&\f(CW\*(C`impure_ptr\*(C'\fR will not be automatically
|
| 1948 |
|
|
exported. Also, symbols imported from other DLLs will not be
|
| 1949 |
|
|
re-exported, nor will symbols specifying the \s-1DLL\s0's internal layout
|
| 1950 |
|
|
such as those beginning with \f(CW\*(C`_head_\*(C'\fR or ending with
|
| 1951 |
|
|
\&\f(CW\*(C`_iname\*(C'\fR. In addition, no symbols from \f(CW\*(C`libgcc\*(C'\fR,
|
| 1952 |
|
|
\&\f(CW\*(C`libstd++\*(C'\fR, \f(CW\*(C`libmingw32\*(C'\fR, or \f(CW\*(C`crtX.o\*(C'\fR will be exported.
|
| 1953 |
|
|
Symbols whose names begin with \f(CW\*(C`_\|_rtti_\*(C'\fR or \f(CW\*(C`_\|_builtin_\*(C'\fR will
|
| 1954 |
|
|
not be exported, to help with \*(C+ DLLs. Finally, there is an
|
| 1955 |
|
|
extensive list of cygwin-private symbols that are not exported
|
| 1956 |
|
|
(obviously, this applies on when building DLLs for cygwin targets).
|
| 1957 |
|
|
These cygwin-excludes are: \f(CW\*(C`_cygwin_dll_entry@12\*(C'\fR,
|
| 1958 |
|
|
\&\f(CW\*(C`_cygwin_crt0_common@8\*(C'\fR, \f(CW\*(C`_cygwin_noncygwin_dll_entry@12\*(C'\fR,
|
| 1959 |
|
|
\&\f(CW\*(C`_fmode\*(C'\fR, \f(CW\*(C`_impure_ptr\*(C'\fR, \f(CW\*(C`cygwin_attach_dll\*(C'\fR,
|
| 1960 |
|
|
\&\f(CW\*(C`cygwin_premain0\*(C'\fR, \f(CW\*(C`cygwin_premain1\*(C'\fR, \f(CW\*(C`cygwin_premain2\*(C'\fR,
|
| 1961 |
|
|
\&\f(CW\*(C`cygwin_premain3\*(C'\fR, and \f(CW\*(C`environ\*(C'\fR.
|
| 1962 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 1963 |
|
|
.IP "\fB\-\-exclude\-symbols\fR \fIsymbol\fR\fB,\fR\fIsymbol\fR\fB,...\fR" 4
|
| 1964 |
|
|
.IX Item "--exclude-symbols symbol,symbol,..."
|
| 1965 |
|
|
Specifies a list of symbols which should not be automatically
|
| 1966 |
|
|
exported. The symbol names may be delimited by commas or colons.
|
| 1967 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 1968 |
|
|
.IP "\fB\-\-file\-alignment\fR" 4
|
| 1969 |
|
|
.IX Item "--file-alignment"
|
| 1970 |
|
|
Specify the file alignment. Sections in the file will always begin at
|
| 1971 |
|
|
file offsets which are multiples of this number. This defaults to
|
| 1972 |
|
|
512.
|
| 1973 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 1974 |
|
|
.IP "\fB\-\-heap\fR \fIreserve\fR" 4
|
| 1975 |
|
|
.IX Item "--heap reserve"
|
| 1976 |
|
|
.PD 0
|
| 1977 |
|
|
.IP "\fB\-\-heap\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4
|
| 1978 |
|
|
.IX Item "--heap reserve,commit"
|
| 1979 |
|
|
.PD
|
| 1980 |
|
|
Specify the number of bytes of memory to reserve (and optionally commit)
|
| 1981 |
|
|
to be used as heap for this program. The default is 1Mb reserved, 4K
|
| 1982 |
|
|
committed.
|
| 1983 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 1984 |
|
|
.IP "\fB\-\-image\-base\fR \fIvalue\fR" 4
|
| 1985 |
|
|
.IX Item "--image-base value"
|
| 1986 |
|
|
Use \fIvalue\fR as the base address of your program or dll. This is
|
| 1987 |
|
|
the lowest memory location that will be used when your program or dll
|
| 1988 |
|
|
is loaded. To reduce the need to relocate and improve performance of
|
| 1989 |
|
|
your dlls, each should have a unique base address and not overlap any
|
| 1990 |
|
|
other dlls. The default is 0x400000 for executables, and 0x10000000
|
| 1991 |
|
|
for dlls.
|
| 1992 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 1993 |
|
|
.IP "\fB\-\-kill\-at\fR" 4
|
| 1994 |
|
|
.IX Item "--kill-at"
|
| 1995 |
|
|
If given, the stdcall suffixes (@\fInn\fR) will be stripped from
|
| 1996 |
|
|
symbols before they are exported.
|
| 1997 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 1998 |
|
|
.IP "\fB\-\-large\-address\-aware\fR" 4
|
| 1999 |
|
|
.IX Item "--large-address-aware"
|
| 2000 |
|
|
If given, the appropriate bit in the \*(L"Characteristics\*(R" field of the \s-1COFF\s0
|
| 2001 |
|
|
header is set to indicate that this executable supports virtual addresses
|
| 2002 |
|
|
greater than 2 gigabytes. This should be used in conjunction with the /3GB
|
| 2003 |
|
|
or /USERVA=\fIvalue\fR megabytes switch in the \*(L"[operating systems]\*(R"
|
| 2004 |
|
|
section of the \s-1BOOT\s0.INI. Otherwise, this bit has no effect.
|
| 2005 |
|
|
[This option is specific to \s-1PE\s0 targeted ports of the linker]
|
| 2006 |
|
|
.IP "\fB\-\-major\-image\-version\fR \fIvalue\fR" 4
|
| 2007 |
|
|
.IX Item "--major-image-version value"
|
| 2008 |
|
|
Sets the major number of the \*(L"image version\*(R". Defaults to 1.
|
| 2009 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2010 |
|
|
.IP "\fB\-\-major\-os\-version\fR \fIvalue\fR" 4
|
| 2011 |
|
|
.IX Item "--major-os-version value"
|
| 2012 |
|
|
Sets the major number of the \*(L"os version\*(R". Defaults to 4.
|
| 2013 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2014 |
|
|
.IP "\fB\-\-major\-subsystem\-version\fR \fIvalue\fR" 4
|
| 2015 |
|
|
.IX Item "--major-subsystem-version value"
|
| 2016 |
|
|
Sets the major number of the \*(L"subsystem version\*(R". Defaults to 4.
|
| 2017 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2018 |
|
|
.IP "\fB\-\-minor\-image\-version\fR \fIvalue\fR" 4
|
| 2019 |
|
|
.IX Item "--minor-image-version value"
|
| 2020 |
|
|
Sets the minor number of the \*(L"image version\*(R". Defaults to 0.
|
| 2021 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2022 |
|
|
.IP "\fB\-\-minor\-os\-version\fR \fIvalue\fR" 4
|
| 2023 |
|
|
.IX Item "--minor-os-version value"
|
| 2024 |
|
|
Sets the minor number of the \*(L"os version\*(R". Defaults to 0.
|
| 2025 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2026 |
|
|
.IP "\fB\-\-minor\-subsystem\-version\fR \fIvalue\fR" 4
|
| 2027 |
|
|
.IX Item "--minor-subsystem-version value"
|
| 2028 |
|
|
Sets the minor number of the \*(L"subsystem version\*(R". Defaults to 0.
|
| 2029 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2030 |
|
|
.IP "\fB\-\-output\-def\fR \fIfile\fR" 4
|
| 2031 |
|
|
.IX Item "--output-def file"
|
| 2032 |
|
|
The linker will create the file \fIfile\fR which will contain a \s-1DEF\s0
|
| 2033 |
|
|
file corresponding to the \s-1DLL\s0 the linker is generating. This \s-1DEF\s0 file
|
| 2034 |
|
|
(which should be called \f(CW\*(C`*.def\*(C'\fR) may be used to create an import
|
| 2035 |
|
|
library with \f(CW\*(C`dlltool\*(C'\fR or may be used as a reference to
|
| 2036 |
|
|
automatically or implicitly exported symbols.
|
| 2037 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2038 |
|
|
.IP "\fB\-\-out\-implib\fR \fIfile\fR" 4
|
| 2039 |
|
|
.IX Item "--out-implib file"
|
| 2040 |
|
|
The linker will create the file \fIfile\fR which will contain an
|
| 2041 |
|
|
import lib corresponding to the \s-1DLL\s0 the linker is generating. This
|
| 2042 |
|
|
import lib (which should be called \f(CW\*(C`*.dll.a\*(C'\fR or \f(CW\*(C`*.a\*(C'\fR
|
| 2043 |
|
|
may be used to link clients against the generated \s-1DLL\s0; this behaviour
|
| 2044 |
|
|
makes it possible to skip a separate \f(CW\*(C`dlltool\*(C'\fR import library
|
| 2045 |
|
|
creation step.
|
| 2046 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2047 |
|
|
.IP "\fB\-\-enable\-auto\-image\-base\fR" 4
|
| 2048 |
|
|
.IX Item "--enable-auto-image-base"
|
| 2049 |
|
|
Automatically choose the image base for DLLs, unless one is specified
|
| 2050 |
|
|
using the \f(CW\*(C`\-\-image\-base\*(C'\fR argument. By using a hash generated
|
| 2051 |
|
|
from the dllname to create unique image bases for each \s-1DLL\s0, in-memory
|
| 2052 |
|
|
collisions and relocations which can delay program execution are
|
| 2053 |
|
|
avoided.
|
| 2054 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2055 |
|
|
.IP "\fB\-\-disable\-auto\-image\-base\fR" 4
|
| 2056 |
|
|
.IX Item "--disable-auto-image-base"
|
| 2057 |
|
|
Do not automatically generate a unique image base. If there is no
|
| 2058 |
|
|
user-specified image base (\f(CW\*(C`\-\-image\-base\*(C'\fR) then use the platform
|
| 2059 |
|
|
default.
|
| 2060 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2061 |
|
|
.IP "\fB\-\-dll\-search\-prefix\fR \fIstring\fR" 4
|
| 2062 |
|
|
.IX Item "--dll-search-prefix string"
|
| 2063 |
|
|
When linking dynamically to a dll without an import library,
|
| 2064 |
|
|
search for \f(CW\*(C`.dll\*(C'\fR in preference to
|
| 2065 |
|
|
\&\f(CW\*(C`lib.dll\*(C'\fR. This behaviour allows easy distinction
|
| 2066 |
|
|
between DLLs built for the various \*(L"subplatforms\*(R": native, cygwin,
|
| 2067 |
|
|
uwin, pw, etc. For instance, cygwin DLLs typically use
|
| 2068 |
|
|
\&\f(CW\*(C`\-\-dll\-search\-prefix=cyg\*(C'\fR.
|
| 2069 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2070 |
|
|
.IP "\fB\-\-enable\-auto\-import\fR" 4
|
| 2071 |
|
|
.IX Item "--enable-auto-import"
|
| 2072 |
|
|
Do sophisticated linking of \f(CW\*(C`_symbol\*(C'\fR to \f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR for
|
| 2073 |
|
|
\&\s-1DATA\s0 imports from DLLs, and create the necessary thunking symbols when
|
| 2074 |
|
|
building the import libraries with those \s-1DATA\s0 exports. Note: Use of the
|
| 2075 |
|
|
\&'auto\-import' extension will cause the text section of the image file
|
| 2076 |
|
|
to be made writable. This does not conform to the PE-COFF format
|
| 2077 |
|
|
specification published by Microsoft.
|
| 2078 |
|
|
.Sp
|
| 2079 |
|
|
Note \- use of the 'auto\-import' extension will also cause read only
|
| 2080 |
|
|
data which would normally be placed into the .rdata section to be
|
| 2081 |
|
|
placed into the .data section instead. This is in order to work
|
| 2082 |
|
|
around a problem with consts that is described here:
|
| 2083 |
|
|
http://www.cygwin.com/ml/cygwin/2004\-09/msg01101.html
|
| 2084 |
|
|
.Sp
|
| 2085 |
|
|
Using 'auto\-import' generally will 'just work' \*(-- but sometimes you may
|
| 2086 |
|
|
see this message:
|
| 2087 |
|
|
.Sp
|
| 2088 |
|
|
"variable '' can't be auto-imported. Please read the
|
| 2089 |
|
|
documentation for ld's \f(CW\*(C`\-\-enable\-auto\-import\*(C'\fR for details."
|
| 2090 |
|
|
.Sp
|
| 2091 |
|
|
This message occurs when some (sub)expression accesses an address
|
| 2092 |
|
|
ultimately given by the sum of two constants (Win32 import tables only
|
| 2093 |
|
|
allow one). Instances where this may occur include accesses to member
|
| 2094 |
|
|
fields of struct variables imported from a \s-1DLL\s0, as well as using a
|
| 2095 |
|
|
constant index into an array variable imported from a \s-1DLL\s0. Any
|
| 2096 |
|
|
multiword variable (arrays, structs, long long, etc) may trigger
|
| 2097 |
|
|
this error condition. However, regardless of the exact data type
|
| 2098 |
|
|
of the offending exported variable, ld will always detect it, issue
|
| 2099 |
|
|
the warning, and exit.
|
| 2100 |
|
|
.Sp
|
| 2101 |
|
|
There are several ways to address this difficulty, regardless of the
|
| 2102 |
|
|
data type of the exported variable:
|
| 2103 |
|
|
.Sp
|
| 2104 |
|
|
One way is to use \-\-enable\-runtime\-pseudo\-reloc switch. This leaves the task
|
| 2105 |
|
|
of adjusting references in your client code for runtime environment, so
|
| 2106 |
|
|
this method works only when runtime environment supports this feature.
|
| 2107 |
|
|
.Sp
|
| 2108 |
|
|
A second solution is to force one of the 'constants' to be a variable \*(--
|
| 2109 |
|
|
that is, unknown and un-optimizable at compile time. For arrays,
|
| 2110 |
|
|
there are two possibilities: a) make the indexee (the array's address)
|
| 2111 |
|
|
a variable, or b) make the 'constant' index a variable. Thus:
|
| 2112 |
|
|
.Sp
|
| 2113 |
|
|
.Vb 3
|
| 2114 |
|
|
\& extern type extern_array[];
|
| 2115 |
|
|
\& extern_array[1] \-\->
|
| 2116 |
|
|
\& { volatile type *t=extern_array; t[1] }
|
| 2117 |
|
|
.Ve
|
| 2118 |
|
|
.Sp
|
| 2119 |
|
|
or
|
| 2120 |
|
|
.Sp
|
| 2121 |
|
|
.Vb 3
|
| 2122 |
|
|
\& extern type extern_array[];
|
| 2123 |
|
|
\& extern_array[1] \-\->
|
| 2124 |
|
|
\& { volatile int t=1; extern_array[t] }
|
| 2125 |
|
|
.Ve
|
| 2126 |
|
|
.Sp
|
| 2127 |
|
|
For structs (and most other multiword data types) the only option
|
| 2128 |
|
|
is to make the struct itself (or the long long, or the ...) variable:
|
| 2129 |
|
|
.Sp
|
| 2130 |
|
|
.Vb 3
|
| 2131 |
|
|
\& extern struct s extern_struct;
|
| 2132 |
|
|
\& extern_struct.field \-\->
|
| 2133 |
|
|
\& { volatile struct s *t=&extern_struct; t\->field }
|
| 2134 |
|
|
.Ve
|
| 2135 |
|
|
.Sp
|
| 2136 |
|
|
or
|
| 2137 |
|
|
.Sp
|
| 2138 |
|
|
.Vb 3
|
| 2139 |
|
|
\& extern long long extern_ll;
|
| 2140 |
|
|
\& extern_ll \-\->
|
| 2141 |
|
|
\& { volatile long long * local_ll=&extern_ll; *local_ll }
|
| 2142 |
|
|
.Ve
|
| 2143 |
|
|
.Sp
|
| 2144 |
|
|
A third method of dealing with this difficulty is to abandon
|
| 2145 |
|
|
\&'auto\-import' for the offending symbol and mark it with
|
| 2146 |
|
|
\&\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fR. However, in practise that
|
| 2147 |
|
|
requires using compile-time #defines to indicate whether you are
|
| 2148 |
|
|
building a \s-1DLL\s0, building client code that will link to the \s-1DLL\s0, or
|
| 2149 |
|
|
merely building/linking to a static library. In making the choice
|
| 2150 |
|
|
between the various methods of resolving the 'direct address with
|
| 2151 |
|
|
constant offset' problem, you should consider typical real-world usage:
|
| 2152 |
|
|
.Sp
|
| 2153 |
|
|
Original:
|
| 2154 |
|
|
.Sp
|
| 2155 |
|
|
.Vb 7
|
| 2156 |
|
|
\& \-\-foo.h
|
| 2157 |
|
|
\& extern int arr[];
|
| 2158 |
|
|
\& \-\-foo.c
|
| 2159 |
|
|
\& #include "foo.h"
|
| 2160 |
|
|
\& void main(int argc, char **argv){
|
| 2161 |
|
|
\& printf("%d\en",arr[1]);
|
| 2162 |
|
|
\& }
|
| 2163 |
|
|
.Ve
|
| 2164 |
|
|
.Sp
|
| 2165 |
|
|
Solution 1:
|
| 2166 |
|
|
.Sp
|
| 2167 |
|
|
.Vb 9
|
| 2168 |
|
|
\& \-\-foo.h
|
| 2169 |
|
|
\& extern int arr[];
|
| 2170 |
|
|
\& \-\-foo.c
|
| 2171 |
|
|
\& #include "foo.h"
|
| 2172 |
|
|
\& void main(int argc, char **argv){
|
| 2173 |
|
|
\& /* This workaround is for win32 and cygwin; do not "optimize" */
|
| 2174 |
|
|
\& volatile int *parr = arr;
|
| 2175 |
|
|
\& printf("%d\en",parr[1]);
|
| 2176 |
|
|
\& }
|
| 2177 |
|
|
.Ve
|
| 2178 |
|
|
.Sp
|
| 2179 |
|
|
Solution 2:
|
| 2180 |
|
|
.Sp
|
| 2181 |
|
|
.Vb 10
|
| 2182 |
|
|
\& \-\-foo.h
|
| 2183 |
|
|
\& /* Note: auto\-export is assumed (no _\|_declspec(dllexport)) */
|
| 2184 |
|
|
\& #if (defined(_WIN32) || defined(_\|_CYGWIN_\|_)) && \e
|
| 2185 |
|
|
\& !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
|
| 2186 |
|
|
\& #define FOO_IMPORT _\|_declspec(dllimport)
|
| 2187 |
|
|
\& #else
|
| 2188 |
|
|
\& #define FOO_IMPORT
|
| 2189 |
|
|
\& #endif
|
| 2190 |
|
|
\& extern FOO_IMPORT int arr[];
|
| 2191 |
|
|
\& \-\-foo.c
|
| 2192 |
|
|
\& #include "foo.h"
|
| 2193 |
|
|
\& void main(int argc, char **argv){
|
| 2194 |
|
|
\& printf("%d\en",arr[1]);
|
| 2195 |
|
|
\& }
|
| 2196 |
|
|
.Ve
|
| 2197 |
|
|
.Sp
|
| 2198 |
|
|
A fourth way to avoid this problem is to re-code your
|
| 2199 |
|
|
library to use a functional interface rather than a data interface
|
| 2200 |
|
|
for the offending variables (e.g. \fIset_foo()\fR and \fIget_foo()\fR accessor
|
| 2201 |
|
|
functions).
|
| 2202 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2203 |
|
|
.IP "\fB\-\-disable\-auto\-import\fR" 4
|
| 2204 |
|
|
.IX Item "--disable-auto-import"
|
| 2205 |
|
|
Do not attempt to do sophisticated linking of \f(CW\*(C`_symbol\*(C'\fR to
|
| 2206 |
|
|
\&\f(CW\*(C`_\|_imp_\|_symbol\*(C'\fR for \s-1DATA\s0 imports from DLLs.
|
| 2207 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2208 |
|
|
.IP "\fB\-\-enable\-runtime\-pseudo\-reloc\fR" 4
|
| 2209 |
|
|
.IX Item "--enable-runtime-pseudo-reloc"
|
| 2210 |
|
|
If your code contains expressions described in \-\-enable\-auto\-import section,
|
| 2211 |
|
|
that is, \s-1DATA\s0 imports from \s-1DLL\s0 with non-zero offset, this switch will create
|
| 2212 |
|
|
a vector of 'runtime pseudo relocations' which can be used by runtime
|
| 2213 |
|
|
environment to adjust references to such data in your client code.
|
| 2214 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2215 |
|
|
.IP "\fB\-\-disable\-runtime\-pseudo\-reloc\fR" 4
|
| 2216 |
|
|
.IX Item "--disable-runtime-pseudo-reloc"
|
| 2217 |
|
|
Do not create pseudo relocations for non-zero offset \s-1DATA\s0 imports from
|
| 2218 |
|
|
DLLs. This is the default.
|
| 2219 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2220 |
|
|
.IP "\fB\-\-enable\-extra\-pe\-debug\fR" 4
|
| 2221 |
|
|
.IX Item "--enable-extra-pe-debug"
|
| 2222 |
|
|
Show additional debug info related to auto-import symbol thunking.
|
| 2223 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2224 |
|
|
.IP "\fB\-\-section\-alignment\fR" 4
|
| 2225 |
|
|
.IX Item "--section-alignment"
|
| 2226 |
|
|
Sets the section alignment. Sections in memory will always begin at
|
| 2227 |
|
|
addresses which are a multiple of this number. Defaults to 0x1000.
|
| 2228 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2229 |
|
|
.IP "\fB\-\-stack\fR \fIreserve\fR" 4
|
| 2230 |
|
|
.IX Item "--stack reserve"
|
| 2231 |
|
|
.PD 0
|
| 2232 |
|
|
.IP "\fB\-\-stack\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4
|
| 2233 |
|
|
.IX Item "--stack reserve,commit"
|
| 2234 |
|
|
.PD
|
| 2235 |
|
|
Specify the number of bytes of memory to reserve (and optionally commit)
|
| 2236 |
|
|
to be used as stack for this program. The default is 2Mb reserved, 4K
|
| 2237 |
|
|
committed.
|
| 2238 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2239 |
|
|
.IP "\fB\-\-subsystem\fR \fIwhich\fR" 4
|
| 2240 |
|
|
.IX Item "--subsystem which"
|
| 2241 |
|
|
.PD 0
|
| 2242 |
|
|
.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR" 4
|
| 2243 |
|
|
.IX Item "--subsystem which:major"
|
| 2244 |
|
|
.IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR\fB.\fR\fIminor\fR" 4
|
| 2245 |
|
|
.IX Item "--subsystem which:major.minor"
|
| 2246 |
|
|
.PD
|
| 2247 |
|
|
Specifies the subsystem under which your program will execute. The
|
| 2248 |
|
|
legal values for \fIwhich\fR are \f(CW\*(C`native\*(C'\fR, \f(CW\*(C`windows\*(C'\fR,
|
| 2249 |
|
|
\&\f(CW\*(C`console\*(C'\fR, \f(CW\*(C`posix\*(C'\fR, and \f(CW\*(C`xbox\*(C'\fR. You may optionally set
|
| 2250 |
|
|
the subsystem version also. Numeric values are also accepted for
|
| 2251 |
|
|
\&\fIwhich\fR.
|
| 2252 |
|
|
[This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
|
| 2253 |
|
|
.Sp
|
| 2254 |
|
|
The following options set flags in the \f(CW\*(C`DllCharacteristics\*(C'\fR field
|
| 2255 |
|
|
of the \s-1PE\s0 file header:
|
| 2256 |
|
|
[These options are specific to \s-1PE\s0 targeted ports of the linker]
|
| 2257 |
|
|
.IP "\fB\-\-dynamicbase\fR" 4
|
| 2258 |
|
|
.IX Item "--dynamicbase"
|
| 2259 |
|
|
The image base address may be relocated using address space layout
|
| 2260 |
|
|
randomization (\s-1ASLR\s0). This feature was introduced with \s-1MS\s0 Windows
|
| 2261 |
|
|
Vista for i386 \s-1PE\s0 targets.
|
| 2262 |
|
|
.IP "\fB\-\-forceinteg\fR" 4
|
| 2263 |
|
|
.IX Item "--forceinteg"
|
| 2264 |
|
|
Code integrity checks are enforced.
|
| 2265 |
|
|
.IP "\fB\-\-nxcompat\fR" 4
|
| 2266 |
|
|
.IX Item "--nxcompat"
|
| 2267 |
|
|
The image is compatible with the Data Execution Prevention.
|
| 2268 |
|
|
This feature was introduced with \s-1MS\s0 Windows \s-1XP\s0 \s-1SP2\s0 for i386 \s-1PE\s0 targets.
|
| 2269 |
|
|
.IP "\fB\-\-no\-isolation\fR" 4
|
| 2270 |
|
|
.IX Item "--no-isolation"
|
| 2271 |
|
|
Although the image understands isolation, do not isolate the image.
|
| 2272 |
|
|
.IP "\fB\-\-no\-seh\fR" 4
|
| 2273 |
|
|
.IX Item "--no-seh"
|
| 2274 |
|
|
The image does not use \s-1SEH\s0. No \s-1SE\s0 handler may be called from
|
| 2275 |
|
|
this image.
|
| 2276 |
|
|
.IP "\fB\-\-no\-bind\fR" 4
|
| 2277 |
|
|
.IX Item "--no-bind"
|
| 2278 |
|
|
Do not bind this image.
|
| 2279 |
|
|
.IP "\fB\-\-wdmdriver\fR" 4
|
| 2280 |
|
|
.IX Item "--wdmdriver"
|
| 2281 |
|
|
The driver uses the \s-1MS\s0 Windows Driver Model.
|
| 2282 |
|
|
.IP "\fB\-\-tsaware\fR" 4
|
| 2283 |
|
|
.IX Item "--tsaware"
|
| 2284 |
|
|
The image is Terminal Server aware.
|
| 2285 |
|
|
.PP
|
| 2286 |
|
|
The 68HC11 and 68HC12 linkers support specific options to control the
|
| 2287 |
|
|
memory bank switching mapping and trampoline code generation.
|
| 2288 |
|
|
.IP "\fB\-\-no\-trampoline\fR" 4
|
| 2289 |
|
|
.IX Item "--no-trampoline"
|
| 2290 |
|
|
This option disables the generation of trampoline. By default a trampoline
|
| 2291 |
|
|
is generated for each far function which is called using a \f(CW\*(C`jsr\*(C'\fR
|
| 2292 |
|
|
instruction (this happens when a pointer to a far function is taken).
|
| 2293 |
|
|
.IP "\fB\-\-bank\-window\fR \fIname\fR" 4
|
| 2294 |
|
|
.IX Item "--bank-window name"
|
| 2295 |
|
|
This option indicates to the linker the name of the memory region in
|
| 2296 |
|
|
the \fB\s-1MEMORY\s0\fR specification that describes the memory bank window.
|
| 2297 |
|
|
The definition of such region is then used by the linker to compute
|
| 2298 |
|
|
paging and addresses within the memory window.
|
| 2299 |
|
|
.PP
|
| 2300 |
|
|
The following options are supported to control handling of \s-1GOT\s0 generation
|
| 2301 |
|
|
when linking for 68K targets.
|
| 2302 |
|
|
.IP "\fB\-\-got=\fR\fItype\fR" 4
|
| 2303 |
|
|
.IX Item "--got=type"
|
| 2304 |
|
|
This option tells the linker which \s-1GOT\s0 generation scheme to use.
|
| 2305 |
|
|
\&\fItype\fR should be one of \fBsingle\fR, \fBnegative\fR,
|
| 2306 |
|
|
\&\fBmultigot\fR or \fBtarget\fR. For more information refer to the
|
| 2307 |
|
|
Info entry for \fIld\fR.
|
| 2308 |
|
|
.SH "ENVIRONMENT"
|
| 2309 |
|
|
.IX Header "ENVIRONMENT"
|
| 2310 |
|
|
You can change the behaviour of \fBld\fR with the environment variables
|
| 2311 |
|
|
\&\f(CW\*(C`GNUTARGET\*(C'\fR,
|
| 2312 |
|
|
\&\f(CW\*(C`LDEMULATION\*(C'\fR and \f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR.
|
| 2313 |
|
|
.PP
|
| 2314 |
|
|
\&\f(CW\*(C`GNUTARGET\*(C'\fR determines the input-file object format if you don't
|
| 2315 |
|
|
use \fB\-b\fR (or its synonym \fB\-\-format\fR). Its value should be one
|
| 2316 |
|
|
of the \s-1BFD\s0 names for an input format. If there is no
|
| 2317 |
|
|
\&\f(CW\*(C`GNUTARGET\*(C'\fR in the environment, \fBld\fR uses the natural format
|
| 2318 |
|
|
of the target. If \f(CW\*(C`GNUTARGET\*(C'\fR is set to \f(CW\*(C`default\*(C'\fR then \s-1BFD\s0
|
| 2319 |
|
|
attempts to discover the input format by examining binary input files;
|
| 2320 |
|
|
this method often succeeds, but there are potential ambiguities, since
|
| 2321 |
|
|
there is no method of ensuring that the magic number used to specify
|
| 2322 |
|
|
object-file formats is unique. However, the configuration procedure for
|
| 2323 |
|
|
\&\s-1BFD\s0 on each system places the conventional format for that system first
|
| 2324 |
|
|
in the search-list, so ambiguities are resolved in favor of convention.
|
| 2325 |
|
|
.PP
|
| 2326 |
|
|
\&\f(CW\*(C`LDEMULATION\*(C'\fR determines the default emulation if you don't use the
|
| 2327 |
|
|
\&\fB\-m\fR option. The emulation can affect various aspects of linker
|
| 2328 |
|
|
behaviour, particularly the default linker script. You can list the
|
| 2329 |
|
|
available emulations with the \fB\-\-verbose\fR or \fB\-V\fR options. If
|
| 2330 |
|
|
the \fB\-m\fR option is not used, and the \f(CW\*(C`LDEMULATION\*(C'\fR environment
|
| 2331 |
|
|
variable is not defined, the default emulation depends upon how the
|
| 2332 |
|
|
linker was configured.
|
| 2333 |
|
|
.PP
|
| 2334 |
|
|
Normally, the linker will default to demangling symbols. However, if
|
| 2335 |
|
|
\&\f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fR is set in the environment, then it will
|
| 2336 |
|
|
default to not demangling symbols. This environment variable is used in
|
| 2337 |
|
|
a similar fashion by the \f(CW\*(C`gcc\*(C'\fR linker wrapper program. The default
|
| 2338 |
|
|
may be overridden by the \fB\-\-demangle\fR and \fB\-\-no\-demangle\fR
|
| 2339 |
|
|
options.
|
| 2340 |
|
|
.SH "SEE ALSO"
|
| 2341 |
|
|
.IX Header "SEE ALSO"
|
| 2342 |
|
|
\&\fIar\fR\|(1), \fInm\fR\|(1), \fIobjcopy\fR\|(1), \fIobjdump\fR\|(1), \fIreadelf\fR\|(1) and
|
| 2343 |
|
|
the Info entries for \fIbinutils\fR and
|
| 2344 |
|
|
\&\fIld\fR.
|
| 2345 |
|
|
.SH "COPYRIGHT"
|
| 2346 |
|
|
.IX Header "COPYRIGHT"
|
| 2347 |
|
|
Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001,
|
| 2348 |
|
|
2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
| 2349 |
|
|
.PP
|
| 2350 |
|
|
Permission is granted to copy, distribute and/or modify this document
|
| 2351 |
|
|
under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
|
| 2352 |
|
|
or any later version published by the Free Software Foundation;
|
| 2353 |
|
|
with no Invariant Sections, with no Front-Cover Texts, and with no
|
| 2354 |
|
|
Back-Cover Texts. A copy of the license is included in the
|
| 2355 |
|
|
section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R".
|