ld(1) DG/UX 4.30 ld(1)
NAME
ld - link editor for common object files
SYNOPSIS
ld [ options ] filename... [ indirect-file... ]
DESCRIPTION
The ld command combines several object files into one,
performs relocation, resolves external symbols, and supports
symbol table information for symbolic debugging.
When given several object files, ld combines them, producing
an executable object module. If you include the -r option
on the command line, ld produces a linkable file (suitable
for linking by another ld command) instead of an executable
one. The output of ld is left in a.out by default. This
file is executable if no errors occurred during the load.
If any input file is not an object file, ld assumes it is
either an archive library or an indirect file, a text file
containing link editor directives. In an indirect file, one
option letter, filename, or symbol assignment is put on each
line. (See Using DG/UX System Programming Tools for a
discussion of input directives.)
If any argument is a library, the library is opened once,
searched as many times as required, and then closed. Only
those routines defining an unresolved external reference are
loaded. Thus, library members can be in any order.
Options are:
-ansi On absolute links, do not produce the symbols
etext, edata, or end, as these symbols are in
the ansi namespace. The symbols etext,
edata, and end are still defined by the
linker.
-e symbol Set the default entry point address for the
output file to be that of the symbol symbol.
-f fill Set the default fill pattern for "holes"
within an output section as well as
initialized bss sections. The argument fill
is a two-byte constant.
-F magic Give the program the magic number magic, in
the conventional format for octal, decimal, or
hexadecimal numbers. Octal numbers have a 0
prefix, hexadecimal numbers have an 0x prefix.
Two magic numbers are valid for DG/UX: 0541
for DG/UX programs, 0555 for BCS compliant
programs. The default magic number is 0541.
Licensed material--property of copyright holder(s) Page 1
ld(1) DG/UX 4.30 ld(1)
-lname Search for library libname.a (name may be up
to 9 characters in length). Ld searches in
LIBDIR (usually /lib) and LLIBDIR (usually
/usr/lib) by default. See -L. Note the
format of the library name that ld searches
for. This option must be specified on the
command line after the object file names that
contain references to a module in libname.a.
-L dir Search for libraries in dir before searching
LIBDIR and LLIBDIR. For this option to have
any effect, you must also include the -l
option. The -L option must precede the -l
option on the command line.
-m Produce a link map.
-M Warn about multiply defined external
definitions.
-N Put the text section at the beginning of the
text segment rather than after all header
information, and put the data section
immediately following text in the core image.
-n Do not make contributions to output sections
that are not made by input files on the
command line. Use of this option may cause
the link to fail if dg/ux libraries or start
up code are used. It will also prevent the
linker from producing correct low level
debugging information with input .tdesc
sections. (See Using DG/UX System Programming
Tools for a discussion of ld handling of
special sections.)
-o file Executable module is called file instead of
a.out.
-r Retain relocation entries in the output object
file. Relocation entries must be saved if the
output file is to become an input file in a
subsequent ld run. The link editor will not
complain about unresolved references, and the
output file will not be executable.
-a Create an absolute file. This is the default
if the -r option is not used. Used with the
-r option, -a allocates memory for common
symbols.
-s Strip line number entries and symbol table
Licensed material--property of copyright holder(s) Page 2
ld(1) DG/UX 4.30 ld(1)
information from the output object file.
-t Turn off the warning about multiply-defined
symbols that are not the same size.
-u name Add name as an undefined symbol in the symbol
table. This is useful for loading entirely
from a library, since initially the symbol
table is empty and an unresolved reference is
needed to force the loading of the first
routine. The placement of this option on the
ld command line is significant; it must be
placed before the library which will define
the symbol.
-V Print the revision number of ld.
-x Strip local symbols from the outputleave
external and static symbols only. This option
saves space in the output file.
-z Do not bind anything to address zero. This
option will allow runtime detection of null
pointers.
-Y [LU],dir Change the default directory used for finding
libraries. If L is specified, the first
default directory that ld searches, LIBDIR, is
replaced by dir. If U is specified, the
second default directory that ld searches,
LLIBDIR, is replaced by dir. If ld was built
with only one default directory but you
specify U anyway, ld prints a warning and
ignores the option.
FILES
LIBDIR/libx.a libraries
LLIBDIR/libx.a libraries
a.out output file
LIBDIR the first default search directory
for libraries, usually /lib.
LLIBDIR the second default search directory
for libraries, usually /usr/lib.
SEE ALSO
as(1), cc(1).
att_dump(1), nm(1), size(1).
exit(2), end(3c), a.out(4), ar(4).
Using DG/UX System Programming Tools
CAVEATS
Through its options and input directives, the common link
Licensed material--property of copyright holder(s) Page 3
ld(1) DG/UX 4.30 ld(1)
editor gives users great flexibility; however, those who use
the input directives must assume some added
responsibilities. Input directives and options should
ensure the following properties for programs:
- C defines a zero pointer as null. A pointer to which
zero has been assigned must not point to any object.
To satisfy this, users must not place any object at
virtual address zero in the program's address space.
- When the link editor is called through cc(1), a startup
routine is linked with the user's program. This
routine calls exit(2) after execution of the main
program. If the user calls the link editor directly,
the user must insure that the program always calls exit
rather than falling through the end of the entry
routine.
The symbols etext, edata, and end [see end(3c)] are reserved
and are defined by the link editor. It is incorrect for a
user program to redefine them.
If the link editor does not recognize an input file as an
object file or an archive file, it will assume that it
contains link editor directives and will attempt to parse
it. This will occasionally produce an error message
compaining about "syntax errors."
Arithmetic expressions may have only one forward-referenced
symbol per expression.
Licensed material--property of copyright holder(s) Page 4