## SYNOPSIS

           ld86   [-03MNdimrstyz[-]]  [-llib_extension]  [-o outfile]
           [-Ccrtfile]    [-Llibdir]     [-Olibfile]     [-Ttextaddr]
           [-Hheapsize] [-Ddataaddr] infile...

## DESCRIPTION

           This  linker understands only the object files produced by
           the as86 assembler, it can link them into either an impure
           or a separate I&D executable.

           The linking defaults are everything off or none except for
           -0 and the output file is a.out.  There is not a  standard
           library location defined in the linker.

## OPTIONS

           -0     produce header with 16-bit magic

           -3     produce header with 32-bit magic

           -d     delete  the  header  from the output file, used for
                  MSDOS  COM  files.  As  a  side  effect  this  also
                  includes  -s  as  there's  nowhere  to put a symbol
                  table.

           -Cx    add file libdir-from-search/crtx.o to list of files
                  linked

           -D     data  base  address follows (in format suitable for
                  strtoul)

           -H     the top of heap (initial stack) address (in  format
                  suitable for strtoul)

           -Lx    add  dir  name x to the head of the list of library
                  dirs searched

           -M     print symbols linked on stdout

           -N     Create a native Linux OMAGIC output  file.  If  the
                  contents  are  i386  code  the binary can be either
                  linked by GCC or  executed  by  linux.  If  the  -z
                  option  is  also included the linker can generate a
                  QMAGIC executable.

           -Ox    add library libdir-from-search/x to list  of  files
                  linked

           -T     text  base  address follows (in format suitable for
                  strtoul)

                  if possible.

           -t     trace modules being looked at on stdout

           -y     Alter the symbol tables to add  label  'extensions'
                  so  that  labels with more than 8 characters can be
                  stored in elks executables.

           -z     produce   "unmapped   zero   page"   or    "QMAGIC"
                  executables

           All  the  options not taking an argument may be turned off
           by following the option letter by a '-', as for cc1.

## PREDEFINED LABELS

           The linker predefines several labels that can be  imported
           into user programs.

           __etext
                  Standard  C  variable  for  the  end  of  the  text
                  segment.

           __edata
                  Standard C variable for the end of  the  initilised
                  data.

           __end  Standard C variable for the end of the bss area.

           __segoff
                  The  offset  within the executable file between the
                  start of the text segment and the start of the data
                  segment  in 16 byte 'paragraphs'. Note this is zero
                  for impure (tiny model) executables and is adjusted
                  for executables that don't start at offset 0 within
                  the segment.

           __segXDL
                  The lowest address with data in  segment  'X'.  (eg
                  __seg0DL  is  for segment zero or the text segment,
                  __seg3DL is for the data segment) The value 'X'  is
                  a hex digit.

           __segXDH
                  The top of segment 'X's data area.

           __segXCL
                  The   bottom  of  segment  'X's  'common  data'  or
                  unitilised data area.  Each  segment  has  both  an
                  initilised and unitilised data area.

           __segXCH
                  The top of segment 'X's common area.

## BUGS

           The linker cannot deal with reverse seeks  caused  by  org
           instructions  in the object file. Unlike previous versions
           the current one traps the error rather than trying to fill
           up the hard disk.

           The  linker  produces  a broken a.out object file if given
           one input and the -r option this is so  it  is  compatible
           with pre-dev86 versions.

                                Apr, 1997                     ld86(1)