123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- .TH ld86 1 "Apr, 1997"
- .BY Bruce Evans
- .nh
- .SH NAME
- ld86 \- Linker for as86(1)
- .SH SYNOPSIS
- .BR ld86
- .RB [ -03MNdimrstyz [-]]
- .RB [ -llib_extension ]
- .RB [ -o\ outfile ]
- .RB [ -Ccrtfile ]
- .RB [ -Llibdir ]
- .RB [ -Olibfile ]
- .RB [ -Ttextaddr ]
- .RB [ -Hheapsize ]
- .RB [ -Ddataaddr ]
- .B infile...
- .SH 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
- .B -0
- and the output file is
- .BR a.out .
- There is
- .I not
- a standard library location defined in the linker.
- .SH OPTIONS
- .TP
- .B -0
- produce header with 16-bit magic
- .\"and use library subdir i86 for -lx
- .TP
- .B -3
- produce header with 32-bit magic
- .\"and use library subdir i386 for -lx
- .TP
- .B -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.
- .TP
- .B -Cx
- add file libdir-from-search/crtx.o to list of files linked
- .TP
- .B -D
- data base address follows (in format suitable for strtoul)
- .TP
- .B -H
- the top of heap (initial stack) address (in format suitable for strtoul)
- .TP
- .B -Lx
- add dir name x to the head of the list of library dirs searched
- .TP
- .B -M
- print symbols linked on stdout
- .TP
- .B -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
- .B -z
- option is also included the linker can generate a QMAGIC executable.
- .TP
- .B -Ox
- add library or object file libdir-from-search/x to list of files linked
- .TP
- .B -T
- text base address follows (in format suitable for strtoul)
- .TP
- .B -i
- separate I&D output
- .TP
- .B -lx
- add library libdir-from-search/libx.a to list of files linked
- .TP
- .B -m
- print modules linked on stdout
- .TP
- .B -o
- output file name follows
- .TP
- .B -s
- strip symbols
- .TP
- .B -r
- Generate a relocatable object from one source object, if the linker is
- given the -N option also the output format will be the hosts native format
- if possible.
- .TP
- .B -t
- trace modules being looked at on stdout
- .TP
- .B -y
- Alter the symbol tables to add label 'extensions' so that labels with
- more than 8 characters can be stored in elks executables.
- .TP
- .B -z
- produce "unmapped zero page" or "QMAGIC" executables
- .P
- All the options not taking an argument may be turned off by following the
- option letter by a '-', as for cc1.
- .SH PREDEFINED LABELS
- The linker predefines several labels that can be imported into user programs.
- .TP
- .B __etext
- Standard C variable for the end of the text segment.
- .TP
- .B __edata
- Standard C variable for the end of the initilised data.
- .TP
- .B __end
- Standard C variable for the end of the bss area.
- .TP
- .B __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
- .B zero
- for impure (tiny model) executables and is adjusted for executables that
- don't start at offset 0 within the segment.
- .TP
- .B __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.
- .TP
- .B __segXDH
- The top of segment 'X's data area.
- .TP
- .B __segXCL
- The bottom of segment 'X's 'common data' or unitilised data area. Each
- segment has both an initilised and unitilised data area.
- .TP
- .B __segXCH
- The top of segment 'X's common area.
- .TP
- .B __segXSO
- This is the adjusted offset from segment 0 of the start of segment 'X'
- in 'paragraphs'.
- .SH HISTORY
- The 6809 version does not support -i.
- The previous versions of the linker could produce an 8086 executable with
- segments of a size >64k, now only i386 executables may have segments
- this large.
- .SH BUGS
- The linker cannot deal with reverse seeks caused by
- .B 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
- .B -r
- option this is so it is compatible with pre-dev86 versions.
|