Annotation of 43BSDTahoe/man/man1/ld.1, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1980 Regents of the University of California.
        !             2: .\" All rights reserved.  The Berkeley software License Agreement
        !             3: .\" specifies the terms and conditions for redistribution.
        !             4: .\"
        !             5: .\"    @(#)ld.1        6.2 (Berkeley) 5/8/86
        !             6: .\"
        !             7: .TH LD 1 "May 8, 1986"
        !             8: .UC 4
        !             9: .SH NAME
        !            10: ld \- link editor
        !            11: .SH SYNOPSIS
        !            12: .B ld
        !            13: [ option ] ... file ...
        !            14: .SH DESCRIPTION
        !            15: .I Ld
        !            16: combines several
        !            17: object programs into one, resolves external
        !            18: references, and searches libraries.
        !            19: In the simplest case several object
        !            20: .I files
        !            21: are given, and
        !            22: .I ld
        !            23: combines them, producing
        !            24: an object module which can be either executed or
        !            25: become the input for a further
        !            26: .I ld
        !            27: run.
        !            28: (In the latter case, the
        !            29: .B \-r
        !            30: option must be given
        !            31: to preserve the relocation bits.)\ 
        !            32: The output of
        !            33: .I ld
        !            34: is left on
        !            35: .BR a.out .
        !            36: This file is made executable
        !            37: only if no errors occurred during the load.
        !            38: .PP
        !            39: The argument routines are concatenated in the order
        !            40: specified.  The entry point of the output is the
        !            41: beginning of the first routine (unless the \fB\-e\fP option is specified).
        !            42: .PP
        !            43: If any argument is a library, it is searched exactly once
        !            44: at the point it is encountered in the argument list.
        !            45: Only those routines defining an unresolved external
        !            46: reference are loaded.
        !            47: If a routine from a library
        !            48: references another routine in the library,
        !            49: and the library has not been processed by
        !            50: .IR ranlib (1),
        !            51: the referenced routine must appear after the
        !            52: referencing routine in the library.
        !            53: Thus the order of programs within libraries
        !            54: may be important.
        !            55: The first member of a library
        !            56: should be a file named `\_\^\_.SYMDEF',
        !            57: which is understood to be a dictionary for the library as produced by
        !            58: .IR ranlib (1);
        !            59: the dictionary is searched iteratively to satisfy as many references as
        !            60: possible.
        !            61: .PP
        !            62: The symbols `\_etext', `\_edata' and `\_end'
        !            63: (`etext', `edata' and `end' in C)
        !            64: are reserved, and if referred to,
        !            65: are set to the first location above the program,
        !            66: the first location above initialized data,
        !            67: and the first location above all data respectively.
        !            68: It is erroneous to define these symbols.
        !            69: .PP
        !            70: .I Ld
        !            71: understands several options.
        !            72: Except for
        !            73: .BR \-l ,
        !            74: they should appear before the file names.
        !            75: .TP
        !            76: .B \-A
        !            77: This option specifies incremental loading, i.e.
        !            78: linking is to be done in a manner so that the resulting object
        !            79: may be read into an already executing program.
        !            80: The next argument is the name of a file whose symbol table will be
        !            81: taken as a basis on which to define additional symbols.
        !            82: Only newly linked material will be entered into the text and
        !            83: data portions of 
        !            84: .BR a.out,
        !            85: but the new symbol table will reflect
        !            86: every symbol defined before and after the incremental load.
        !            87: This argument must appear before any other object file in the argument list.
        !            88: The
        !            89: .B \-T
        !            90: option may be used as well, and will be taken to mean that the
        !            91: newly linked segment will commence at the corresponding address
        !            92: (which must be a multiple of 1024).
        !            93: The default value is the old value of _end.
        !            94: .TP
        !            95: .B \-D
        !            96: Take the next argument as a hexadecimal number and pad the data segment
        !            97: with zero bytes to the indicated length.
        !            98: .TP 
        !            99: .B  \-d
        !           100: Force definition of common storage
        !           101: even if the
        !           102: .B \-r
        !           103: flag is present.
        !           104: .TP
        !           105: .B \-e
        !           106: The following argument is taken to be the
        !           107: name of the entry point of the loaded
        !           108: program; location 0 is the default.
        !           109: .TP
        !           110: .BI \-L dir
        !           111: Add
        !           112: .I dir
        !           113: to the list of directories in which libraries are searched for.
        !           114: Directories specified with 
        !           115: .B \-L
        !           116: are searched before the standard directories.
        !           117: .TP 
        !           118: .BI \-l x
        !           119: This
        !           120: option is an abbreviation for the library name
        !           121: .RI `lib x .a',
        !           122: where
        !           123: .I x
        !           124: is a string.
        !           125: .I Ld
        !           126: searches for libraries first in any directories
        !           127: specified with
        !           128: .B \-L
        !           129: options, then in the standard directories `/lib', `/usr/lib', and
        !           130: `/usr/local/lib'.
        !           131: A library is searched when its name is encountered,
        !           132: so the placement of a
        !           133: .B  \-l
        !           134: is significant.
        !           135: .TP
        !           136: .B \-M
        !           137: produce a primitive load map, listing the names of the files
        !           138: which will be loaded.
        !           139: .TP
        !           140: .B \-N
        !           141: Do not make the text portion read only or sharable.  (Use "magic number" 0407.)
        !           142: .TP 
        !           143: .B  \-n
        !           144: Arrange (by giving the output file a 0410 "magic number") that
        !           145: when the output file is executed,
        !           146: the text portion will be read-only and shared
        !           147: among all users executing the file.
        !           148: This involves moving the data areas up to the first
        !           149: possible 1024 byte boundary following the
        !           150: end of the text.
        !           151: .TP 
        !           152: .B  \-o
        !           153: The
        !           154: .I name
        !           155: argument after
        !           156: .B \-o
        !           157: is used as the name of the
        !           158: .I ld
        !           159: output file, instead of
        !           160: .BR a.out .
        !           161: .TP 
        !           162: .B  \-r
        !           163: Generate relocation bits in the output file
        !           164: so that it can be the subject of another
        !           165: .I ld
        !           166: run.
        !           167: This flag also prevents final definitions from being
        !           168: given to common symbols,
        !           169: and suppresses the `undefined symbol' diagnostics.
        !           170: .TP
        !           171: .B \-S
        !           172: `Strip' the output by removing all symbols except locals and globals.
        !           173: .TP 
        !           174: .B  \-s
        !           175: `Strip' the output, that is, remove the symbol table
        !           176: and relocation bits to save space (but impair the
        !           177: usefulness of the debuggers).
        !           178: This information can also be removed by
        !           179: .IR  strip (1).
        !           180: .TP
        !           181: .B \-T
        !           182: The next argument is a hexadecimal number which sets the text segment origin.
        !           183: The default origin is 0.
        !           184: .TP
        !           185: .B \-t
        !           186: ("trace")  Print the name of each file as it is processed.
        !           187: .TP 
        !           188: .B  \-u
        !           189: Take the following argument as a symbol and enter
        !           190: it as undefined in the symbol table.  This is useful
        !           191: for loading wholly from a library, since initially the symbol
        !           192: table is empty and an unresolved reference is needed
        !           193: to force the loading of the first routine.
        !           194: .TP 
        !           195: .B  \-X
        !           196: Save local symbols
        !           197: except for those whose names begin with `L'.
        !           198: This option is used by
        !           199: .IR cc (1)
        !           200: to discard internally-generated labels while
        !           201: retaining symbols local to routines.
        !           202: .TP 
        !           203: .B  \-x
        !           204: Do not preserve local
        !           205: (non-.globl) symbols in the output symbol table; only enter
        !           206: external symbols.
        !           207: This option saves some space in the output file.
        !           208: .TP
        !           209: \fB\-y\fIsym\fR
        !           210: Indicate each file in which
        !           211: .I sym
        !           212: appears, its type and whether the file defines or references it.
        !           213: Many such options may be given to trace many symbols.
        !           214: (It is usually necessary to begin
        !           215: .I sym
        !           216: with an `_', as external C, FORTRAN and Pascal variables begin
        !           217: with underscores.)
        !           218: .TP
        !           219: .B \-z
        !           220: Arrange for the process to be loaded on
        !           221: demand from the resulting executable file (413 format)
        !           222: rather than preloaded.
        !           223: This is the default.
        !           224: Results in a 1024 byte header on the output file followed by
        !           225: a text and data segment each of which have size a multiple of 1024 bytes
        !           226: (being padded out with nulls in the file if necessary).
        !           227: With this format the first few BSS segment symbols may actually appear
        !           228: (from the output of
        !           229: .IR size (1))
        !           230: to live in the data segment;
        !           231: this to avoid wasting the space resulting from data segment size roundup.
        !           232: .SH FILES
        !           233: .ta \w'/usr/local/lib/lib*.a\ \ 'u
        !           234: /lib/lib*.a    libraries
        !           235: .br
        !           236: /usr/lib/lib*.a        more libraries
        !           237: .br
        !           238: /usr/local/lib/lib*.a  still more libraries
        !           239: .br
        !           240: a.out  output file
        !           241: .SH "SEE ALSO"
        !           242: as(1), ar(1), cc(1), ranlib(1)
        !           243: .SH BUGS
        !           244: There is no way to force data to be page aligned.
        !           245: .I Ld
        !           246: pads images which are to be demand loaded from
        !           247: the file system to the next
        !           248: page boundary to avoid a bug in the system.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.