|
|
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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.