Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

     Name
          ld - Invokes the link editor.

     Syntax
          ld [ options ] filename...

     Description
          ld is the XENIX link editor.  It creates an executable
          program by combining one or more object files and copying
          the executable result to the file a.out.  The filename must
          name an object or library file. By convention these names
          have the ``.o'' (for object) or ``.a'' (for archive library)
          extensions. If more than one name is given,  the names must
          be separated by one or more spaces.  If errors occur while
          linking, ld displays an error message; the resulting a.out
          file is unexecutable.

          ld concatenates the contents of the given object files in
          the order given in the command line.  Library files in the
          command line are examined only if there are unresolved
          external references encountered from previous object files.
          Library files must be in ranlib(CP) format, that is, the
          first member must be named __.SYMDEF, which is a dictionary
          for the library.  ld ignores the modification dates of the
          library and the __.SYMDEF entry, so if object files have
          been added to the library since __.SYMDEF was created, the
          link may result in an ``invalid object module.''

          The library is searched iteratively to satisfy as many
          references as possible and only those routines that define
          unresolved external references are concatenated.  Object and
          library files are processed at the point they are
          encountered in the argument list, so the order of files in
          the command line is important.  In general, all object files
          should be given before library files.  ld sets the entry
          point of the resulting program to the beginning of the first
          routine.

          ld should be invoked using the cc(CP) command instead of
          invoking it directly.  cc invokes ld as the last step of
          compilation, providing all the necessary C-language support
          routines.  Invoking ld directly is not recommended since
          failure to give command line arguments in the correct order
          can result in errors.

          There are the following options:

          -A num
               Creates a standalone program whose expected load
               address (in hexadecimal) is num.  This option sets the
               absolute flag in the header of the a.out file.  Such
               program files can only be executed as standalone
               programs.  Options -A and -F are mutually exclusive.

          -B num
               Sets the text selector bias to the specified
               hexadecimal number.

          -c num
               Alters the default target CPU in the x.out header.  num
               can be 0, 1, 2, or 3 indicating 8086, 80186, 80286 and
               80386 processors, respectively.  The default on
               8086/80286 systems is 0.  The default on 80386 systems
               is 3.  Note that this option only alters the default;
               if object modules containing code for a higher numbered
               processor are linked, then that will take precedence
               over the default.

          -C
               Causes the link editor to ignore the case of symbols.

          -D num
               Sets the data selector bias to the specified
               hexadecimal number.

          -F num
               Sets the size of the program stack to num bytes where
               num is a hexadecimal number. This option is ignored for
               80386 programs which have a variable sized stack.  By
               default 8086 programs have a variable stack located at
               the top of the first data segment, and 80286 programs
               have a fixed size 4096 byte stack.  The -F option is
               incompatible with the -A option that cannot be opened
               by more than one user at the same time.

          -g   Includes symbolic information for sdb.

          -i
               Creates separate instruction and data spaces for small
               model programs.  When the output file is executed, the
               program text and data areas are allocated separate
               physical segments.  The text portion will be read-only
               and shared by all users executing the file.

          -La
               Sets advisory file locking. Advisory locking is used on
               files with access modes that do not require mandatory
               locking.

          -Lm
               Sets mandatory file locking. Mandatory file locking is
               used on files that cannot be opened by more than one
               process at a time.

          -m name
               Creates a link map file named name that includes public
               symbols.

          -Mx  Specifies the memory model. x can have the following
               values:
               s    small
               m    middle
               l    large
               h    huge
               e    mixed

          -n num
               Truncates symbols to the length specified by num.

          -N num
               Sets the pagesize to hex-num (which should be a
               multiple of 512) - the default is 1024 for 80386
               programs.  8086/80186/80286 programs do not normally
               have page-aligned x.out files and the default for these
               is 0.

          -o name
               Sets the executable program filename to name instead of
               a.out.

          -P
               Disables packing of segments

          -r   Invokes the incremental linker, /lib/ldr , with the
               arguments passed to ld to produce a relocatable output
               file.

          -R   Ensures that the relocation table is of non-zero size.
               Important for 8086 compatibility.

          -Rd  num
               Specify the data segment relocation offset (80386
               only).  num is hexadecimal.

          -Rt  num
               Specify the text segment relocation offset (80386 only)
               num is hexadecimal.

          -s
               Strips the symbol table.

          -S num
               Sets the maximum number of segments to num.  If no
               argument is given, the default is 128.

          -u symbol
               Designates the specified symbol as undefined.

          -v num
               Specifies the version number.  Acceptable values for
               num are 2, 3, or 5; 5 is the default.

     Files
          /bin/ld

     See Also
          ar(XNX), masm(CP), cc(CP), ranlib(CP)

     Notes
          The user must make sure that the most recent library
          versions have been processed with ranlib(CP) before linking.
          If this is not done, ld cannot create executable programs
          using these libraries.

          ld operates on COFF files transparently, mapping COFF symbol
          types to standard XENIX x.out symbol types when possible.

     Standards Conformance
          ld is conformant with:
          AT&T SVID Issue 2, Select Code 307-127.

                                                (printed 6/18/89)



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026