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