Annotation of coherent/a/usr/man/MULTI/ld, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: ld                           Command                           ld
                      4: 
                      5: 
                      6: 
                      7: 
                      8: Link relocatable object files
                      9: 
                     10: lldd [_o_p_t_i_o_n ...] _f_i_l_e ...
                     11: 
                     12: A compiler  translates a file  of source code  into a relocatable
                     13: object.  This  relocatable object  cannot be executed  by itself,
                     14: for  calls to  routines  stored in  libraries have  not yet  been
                     15: resolved.  ld  combines, or links, relocatable  object files with
                     16: routines stored in libraries  produced by the archiver ar to con-
                     17: struct  an executable  file.  For  this  reason, ld  is sometimes
                     18: called a linker, a link editor, or a loader.
                     19: 
                     20: ld scans  its arguments  in order  and interprets each  option as
                     21: described below.   Each non-option argument is  either a relocat-
                     22: able object file, produced by cc, as, or ld, or a library archive
                     23: produced  by ar.   It rejects  all other  arguments and  prints a
                     24: diagnostic message.
                     25: 
                     26: Each relocatable  file argument is bound into  the output file if
                     27: its machine  type matches the  machine type of the  first file so
                     28: bound; if it does not,  ld prints a diagnostic message.  The sym-
                     29: bol table of the file is  merged into the output symbol table and
                     30: the list of  defined and undefined symbols updated appropriately.
                     31: If  the  file redefines  a  symbol defined  in  an earlier  bound
                     32: module, the redefinition is reported and the link continues.  The
                     33: last such redefinition  determines the value that the symbol will
                     34: have in the output file,  which may be acceptable but is probably
                     35: an error.
                     36: 
                     37: Each  library archive  argument is searched  only to  resolve un-
                     38: defined references, i.e.,  if there are no undefined symbols, the
                     39: linker  goes to  the next argument  immediately.  The  library is
                     40: searched from  first module to last and  any module that resolves
                     41: one or more undefined symbols is bound into the output exactly as
                     42: an explicitly  named relocatable file  is bound.  The  library is
                     43: searched repeatedly until an  entire scan adds nothing to the ex-
                     44: ecutable file.
                     45: 
                     46: The order  of modules in a library is  important in two respects:
                     47: it will  affect the time required to search  the library, and, if
                     48: more than  one module resolves an undefined  symbol, it can alter
                     49: the set of library modules bound into the output.
                     50: 
                     51: A library will link faster  if the undefined symbols in any given
                     52: library module are resolved  by a library module that comes later
                     53: in the library.   Thus, the low-level library modules, those with
                     54: no  undefined symbols,  should come  at the  end of  the library,
                     55: whereas the higher-level  modules, those with many undefined sym-
                     56: bols,  should come  at the  beginning.   The library  module ran-
                     57: lib.sym, which  is maintained by  the ar s  modifier, provides ld
                     58: with a  compressed index to  the symbols defined  in the library.
                     59: But even with the index, the library will link much faster if the
                     60: modules occur in top-down rather than bottom-up order.
                     61: 
                     62: 
                     63: 
                     64: COHERENT Lexicon                                           Page 1
                     65: 
                     66: 
                     67: 
                     68: 
                     69: ld                           Command                           ld
                     70: 
                     71: 
                     72: 
                     73: A library can be constructed to provide a type of ``conditional''
                     74: linking  if alternate  resolutions of  undefined symbols  are ar-
                     75: chived in  a carefully  thought-out order.  For  instance, libc.a
                     76: contains the modules
                     77: 
                     78: 
                     79:              finit.o
                     80:              exit.o
                     81:              _finish.o
                     82: 
                     83: 
                     84: in precisely  the order given, though some  other modules may in-
                     85: tervene.   finit.o contains  most of the  internals of  the STDIO
                     86: library, exit.o contains  the exit() function, and _finish.o con-
                     87: tains  an empty  version of _finish(),  the function  that exit()
                     88: calls to  close STDIO streams  before process termination.   If a
                     89: program uses  any STDIO routines,  macros, or data,  then finit.o
                     90: will be bound into the output with its version of finish().  If a
                     91: program uses no STDIO, then the ``dummy'' _finish.o will be bound
                     92: into  the output  because  it is  the first  module that  defines
                     93: _finish() that  the linker encounters  after exit.o adds  the un-
                     94: defined reference.  This saves approximately 3,000 bytes.  To set
                     95: the order of routines within a library, use the archiver ar.
                     96: 
                     97: The available options are as follows:
                     98: 
                     99: -dd    Define common  regions  even if  relocation information  is
                    100:      retained.  By  default, ld leaves common  areas undefined if
                    101:      there  are  undefined   symbols  or  if  the  -r  option  is
                    102:      specified.
                    103: 
                    104: -ee _e_n_t_r_y
                    105:      Specify the  entry point of  the output module,  either as a
                    106:      symbol or as an absolute octal address.
                    107: 
                    108: -kk[_s_y_s_t_e_m]
                    109:      Bind the output as a kernel process or linkable driver.  The
                    110:      starting address depends on the target machine, and ld scans
                    111:      the system link file  symbol table for symbols that are cur-
                    112:      rently undefined.  system defaults to /coherent.
                    113: 
                    114: -ll _n_a_m_e
                    115:      An   abbreviation   for   the  library   /lliibb/lliibb_n_a_m_e.aa   or
                    116:      /uussrr/lliibb/lliibb_n_a_m_e.aa if the first is not found.
                    117: 
                    118: -mm   This option tells  ld to perform in-memory load if possible.
                    119:      This requires more memory, but is faster than using a buffer
                    120:      file.
                    121: 
                    122: -nn   Bind  the output with separate  shared and private segments,
                    123:      and with  each starting on  a hardware segment  boundary, so
                    124:      that several  processes can use a single  copy of the shared
                    125:      segment simultaneously.
                    126: 
                    127: 
                    128: 
                    129: 
                    130: COHERENT Lexicon                                           Page 2
                    131: 
                    132: 
                    133: 
                    134: 
                    135: ld                           Command                           ld
                    136: 
                    137: 
                    138: 
                    139: -oo _f_i_l_e
                    140:      Write output to file (default, ll.oouutt.)
                    141: 
                    142: -RR _v_a_l_u_e
                    143:      Relocation  base option.  By  default, ld  links executeable
                    144:      files to  run at the user-base for  the computer.  In almost
                    145:      all cases, the user-base is zero.  If the -R option is used,
                    146:      ld will  link the executeable to run at  value instead of at
                    147:      zero.  value  can be  set to any  C-style constant, or  to a
                    148:      symbol name  that ld  can find in  the object files  and ar-
                    149:      chives  being linked;  remember that  a  C-accessible symbol
                    150:      must end  with an underscore character  `_'.  This option is
                    151:      used primarily  to produce output  files that can  be burned
                    152:      into ROM.  These programs must make their own provisions for
                    153:      relocating initialized data and other tasks.
                    154: 
                    155: -rr   Retain  relocation information in  the output, and  issue no
                    156:      diagnostic  message for  undefined symbols.   By  default ld
                    157:      discards relocation information from the output if there are
                    158:      no undefined symbols.
                    159: 
                    160: -ss   Strip the symbol table from the output.  The same effect may
                    161:      be obtained  by using the command strip.  The  -s and -r op-
                    162:      tions are mutually exclusive.
                    163: 
                    164: -uu _s_y_m_b_o_l
                    165:      Add symbol  to the symbol table as  a global reference, usu-
                    166:      ally to force the linking of a particular library module.
                    167: 
                    168: -XX   Discard local compiler-generated symbols of the form `LL...'.
                    169: 
                    170: -xx   Discard all local symbols.
                    171: 
                    172: ***** Files *****
                    173: 
                    174: ll.oouutt -- Default output
                    175: /ccoohheerreenntt for -kk option
                    176: /lliibb/lliibb*.aa -- Libraries
                    177: /uussrr/lliibb/lliibb*.aa -- More libraries
                    178: 
                    179: ***** See Also *****
                    180: 
                    181: ar, ar.h, as, cc, commands, l.out.h, strip
                    182: 
                    183: ***** Notes *****
                    184: 
                    185: By  default,  COHERENT  allocates two  kilobytes  of  stack to  a
                    186: process.  This  is sufficient for most  processes.  To change the
                    187: amount of stack used by  a given executable program, use the com-
                    188: mand fixstack.   See its Lexicon  entry for details.   If you are
                    189: linking a program by hand (that is, running ld independently from
                    190: the  cc command),  be sure  to  include the  appropriate run-time
                    191: start-up routine with the ld command line; otherwise, the program
                    192: will not link correctly.
                    193: 
                    194: 
                    195: 
                    196: COHERENT Lexicon                                           Page 3
                    197: 
                    198: 

unix.superglobalmegacorp.com

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