|
|
1.1 ! root 1: .\" @(#) ld.1: 2.3 11/17/83 ! 2: .ds ZZ DEVELOPMENT PACKAGE ! 3: .TH MC68LD 1 "630 MTG" ! 4: .SH NAME ! 5: mc68ld \- link editor for MC68000 object files ! 6: .SH SYNOPSIS ! 7: \f3mc68ld [\f1 options \f3]\f1 file-names ! 8: .SH DESCRIPTION ! 9: The ! 10: .I mc68ld ! 11: command ! 12: combines several ! 13: object files into one, ! 14: performs relocation, ! 15: resolves external symbols, ! 16: and supports symbol table information ! 17: for symbolic debugging. ! 18: In the simplest case, the names of several object ! 19: programs are given, and ! 20: .I mc68ld ! 21: combines them, producing ! 22: an object module that can either be executed or ! 23: used as input for a subsequent ! 24: .I mc68ld ! 25: run. ! 26: The output of ! 27: .I mc68ld ! 28: is left in ! 29: .BR mc68a.out . ! 30: This file is executable ! 31: if no errors occurred during the load. ! 32: If any input file, ! 33: .IR file-name , ! 34: is not an object file, ! 35: .I mc68ld ! 36: assumes it is either a text file containing link editor directives ! 37: or an archive library. ! 38: (See ! 39: the \f2Link Editor\f1 in the \f2UNIX System V Support Tools ! 40: Guide\f1 for a discussion of input directives.) ! 41: .PP ! 42: If any argument is a library, it is searched exactly once ! 43: at the point it is encountered in the argument list. ! 44: Only those routines defining an unresolved external ! 45: reference are loaded. ! 46: The order of library members is unimportant because ! 47: \fImc68ld\fR passes through each library's (archive) symbol ! 48: table as many times as necessary until no new ! 49: external symbols are resolved and no new references are generated. ! 50: .PP ! 51: The following options are recognized by ! 52: .IR mc68ld . ! 53: .TP \w'\fB\-u\fP\ symname\ \ 'u ! 54: .if !'mc68'' \{\ ! 55: .B \-a ! 56: Produces an absolute file; gives warnings for undefined references. ! 57: Relocation information is stripped from the output object file ! 58: unless the ! 59: .B \-r ! 60: option is given. The ! 61: .B \-r ! 62: option is needed only when an absolute file should retain its ! 63: relocation information (the normal case for the 630 MTG ! 64: downloaded programs). ! 65: If neither ! 66: .BR \-a " nor " \-r ! 67: is given, ! 68: .B \-a ! 69: is assumed. ! 70: \} ! 71: .TP ! 72: .BR \-e " epsym" ! 73: Sets the default entry point address for the output file to be that of ! 74: the symbol ! 75: .IR epsym . ! 76: .if \nF \{\ ! 77: This option forces the ! 78: .B \-X ! 79: option to be set. \} ! 80: .TP ! 81: .BR \-f " fill" ! 82: Sets the default fill pattern for ``holes'' within ! 83: an output section as well as initialized bss sections. ! 84: The argument \fIfill\fP is a two-byte constant. ! 85: .if 'mc68'b16' \{\ ! 86: .TP ! 87: .B \-i ! 88: This option specifies that separate ``I'' and ``D'' space are to be ! 89: generated. ! 90: .B \-i ! 91: has no effect if ! 92: .B \-tv ! 93: is given. ! 94: This allows 64K of instructions and 64K of data. ! 95: 'br \} ! 96: .if 'mc68'x86' \{\ ! 97: .TP ! 98: .B \-i ! 99: This option specifies that separate ``I'' and ``D'' space is to be ! 100: generated. ! 101: The option ! 102: .B \-i ! 103: has no effect if ! 104: .B \-tv ! 105: is given. ! 106: This allows up to 1 MB of text and 1 MB of data. ! 107: 'br \} ! 108: .ie \nD \{\ ! 109: .TP ! 110: .BR \-l "x" ! 111: Searchs a library ! 112: .BI lib x .a, ! 113: where \fIx\fR is up to seven characters. ! 114: A library is searched when its name is encountered, ! 115: so the placement of a \fB\-l\fR ! 116: is significant. ! 117: By default, libraries are located in ! 118: .ie 'mc68'' ! 119: .BR /lib. ! 120: .el $DMD/lib. ! 121: 'br \} ! 122: .el \{\ ! 123: .TP ! 124: .BI \-l x ! 125: Searches a library ! 126: .BI lib x .a, ! 127: where \fIx\fR is up to seven characters. ! 128: A library is searched when its name is encountered, ! 129: so the placement of a \fB\-l\fR ! 130: is significant. ! 131: By default, libraries are located in ! 132: .ie 'mc68'' /lib and /usr/lib. ! 133: .el $DMD/lib . ! 134: 'br \} ! 135: .TP ! 136: .B \-m ! 137: Produces a map or listing of the input/output sections ! 138: on the standard output. ! 139: .TP ! 140: .BR \-o " outfile" ! 141: Produces an output object file by the name ! 142: .IR outfile . ! 143: The name of the default object file is ! 144: .BR mc68a.out . ! 145: .TP ! 146: .B \-r ! 147: Retains relocation entries in ! 148: the output object file. ! 149: Relocation entries must be saved if the ! 150: output file is to become an input file in a ! 151: subsequent ! 152: .I mc68ld ! 153: run. ! 154: .ie 'mc68'' The ! 155: .el \{\ ! 156: Unless ! 157: .B \-a ! 158: is also given, the ! 159: \} ! 160: link editor will not complain about ! 161: unresolved references. ! 162: .TP ! 163: .B \-s ! 164: Strips line number entries and ! 165: symbol table information ! 166: from the output object file. ! 167: .if \nG \{\ ! 168: .TP ! 169: .B \-t ! 170: Turns off the warning about multiply defined symbols that are ! 171: not the same size. ! 172: 'br \} ! 173: .if \nC \{\ ! 174: .TP ! 175: .B \-tv ! 176: Transfer vector object files are expected. ! 177: When libraries are searched with this option, ! 178: component object modules with the wrong magic ! 179: number are ignored (as are transfer vector modules ! 180: when ! 181: .B \-tv ! 182: is not given). ! 183: The default is ! 184: .I no ! 185: transfer vectors. ! 186: 'br \} ! 187: .TP ! 188: .BR \-u " symname" ! 189: Enters \fIsymname\fP as an undefined symbol ! 190: in the symbol table. ! 191: This is useful ! 192: for loading entirely from a library, since initially the symbol ! 193: table is empty and an unresolved reference is needed ! 194: to force the loading of the first routine. ! 195: .\" .if \nG \{\ ! 196: .\" .TP ! 197: .\" .B \-x ! 198: .\" Do not preserve local (non-.globl) symbols in the output symbol ! 199: .\" table; enter external and static symbols only. This option saves ! 200: .\" some space in the output file. ! 201: .\" 'br \} ! 202: .if \nH \{\ ! 203: .TP ! 204: .B \-z ! 205: Do not bind anything to address zero. This option will catch null ! 206: pointers. ! 207: .TP ! 208: .B \-F ! 209: Allows the object module to be paged. ! 210: 'br \} ! 211: .TP ! 212: .BR \-L " dir" ! 213: Changes the algorithm of searching for ! 214: .BI lib x .a ! 215: to look in ! 216: .IR dir ! 217: before looking in $DMD/lib. ! 218: This option is effective only if it precedes the ! 219: .B \-l ! 220: option on the command line. ! 221: .if \nG \{\ ! 222: .TP ! 223: .B \-M ! 224: Outputs a message for each multiply defined external definition. ! 225: 'br \} ! 226: .TP ! 227: .B \-N ! 228: Puts the data section immediately following the text in the output file. ! 229: .TP ! 230: .B \-V ! 231: Outputs a message giving information about the version of mc68ld ! 232: being used. ! 233: .TP ! 234: .BR \-VS " num" ! 235: Uses ! 236: \f2num\f1 ! 237: as a decimal version stamp ! 238: identifying the ! 239: .BR mc68a.out ! 240: file that is produced. The version ! 241: stamp is stored in the optional header. ! 242: .if \nF \{\ ! 243: .TP ! 244: .B \-X ! 245: Generates a standard UNIX file header within the ``optional header'' ! 246: field in the output file. ! 247: 'br \} ! 248: .DT ! 249: .br ! 250: .DT ! 251: .SH FILES ! 252: .PD 0 ! 253: .TP 25 ! 254: .ie 'mc68'' /lib/lib\fI?\fR.a ! 255: .el $DMD/lib/lib\fI?\fR.a ! 256: libraries ! 257: .if 'mc68'' \{\ ! 258: .TP 25 ! 259: /usr/lib/lib?.a ! 260: libraries ! 261: \} ! 262: .TP 25 ! 263: mc68a.out ! 264: output file ! 265: .PD ! 266: .SH "SEE ALSO" ! 267: dmdcc(1), mc68as(1). ! 268: .br ! 269: a.out(4), ar(4) in the \f2UNIX System V Programmer's ! 270: Reference Manual\f1. ! 271: .bp ! 272: .SH WARNINGS ! 273: Through its options and input directives, the Motorola 68000 link editor gives ! 274: users great flexibility; ! 275: however, those who use the input directives must assume ! 276: some added responsibilities. ! 277: Input directives and options should insure the following properties ! 278: for programs: ! 279: .if 'mc68'b16' \{\ ! 280: .IP \- 5 ! 281: C programs must have data ! 282: .RB ( .data "), bss (" .bss ), ! 283: and stack space in one 64K byte region. ! 284: Stack space ! 285: .I must ! 286: be provided. ! 287: 'br \} ! 288: .IP \- 5 ! 289: C defines a zero pointer as null. ! 290: A pointer to which zero has been assigned must ! 291: not point to any object. ! 292: To satisfy this, users must not place any object ! 293: at virtual address zero in the data space. ! 294: .tr ~ ! 295: .IP \- 5 ! 296: When the link editor is called through ! 297: .IR dmdcc (1), ! 298: a startup routine is linked with the user's program. This ! 299: routine usually calls exit(~) [see ! 300: .IR exit (3R)] ! 301: after execution of the main program. If the user ! 302: calls the link editor directly, then the user must insure that ! 303: the program always calls exit(~) rather than falling through the ! 304: end of the entry routine. ! 305: .if 'mc68'b16' \{\ ! 306: .IP \- 5 ! 307: Without a transfer vector, all text (code) ! 308: must reside within a single 64K-byte area. ! 309: Transfer vector function linkage removes this ! 310: restriction. ! 311: .PP ! 312: By default, the link editor takes care of these ! 313: things. ! 314: Specifying regions or defining sections with names other ! 315: than ! 316: .BR .bss ", " .data ", " .text ", or" ! 317: .B .tv ! 318: can decrease the link editor's ability to do these ! 319: automatically. ! 320: In general, users should not specify regions when the ! 321: program uses a transfer vector. ! 322: 'br \} ! 323: .if \nC \{\ ! 324: .SH BUGS ! 325: .I mc68ld ! 326: can not currently create transfer vector symbols. ! 327: Thus no symbols created through assignment in an ! 328: input directive will be given an entry in the transfer vector. ! 329: In particular, this means the entry point of a program ! 330: can not be redefined by assignment to ! 331: .BR main . ! 332: Unsuspecting users who create such a symbol and expect it ! 333: to be in the transfer vector receive an obscure error ! 334: message about an invalid transfer vector relocation reference. ! 335: 'br \} ! 336: .PP ! 337: The ! 338: \f3\-VS\f1 \f2num\f1 ! 339: option has an effect only when the ! 340: .B "\-X" ! 341: option is also selected.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.