blob: 8ba2c684bd9a4f464f0fc0a434de80b26b55b396 [file] [log] [blame]
\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename rdoff.info
@settitle Relocatable Dynamic Object File Format (RDOFF)
@afourpaper
@c %**end of header
@titlepage
@title Relocatable Dynamic Object File Format (RDOFF)
@author Yuri Zaporozhets @email{r_tty@@yahoo.co.uk}
@author Julian Hall @email{jules@@dsf.org.uk}
@end titlepage
@ifinfo
Copyright @copyright{} 2002-2015 Netwide Assembler Project.
Written by Yuri Zaporozhets @email{r_tty@@yahoo.co.uk}
Based on various sources and notes written by Julian Hall @email{jules@@dsf.org.uk}
Distributed under GNU documentation license.
@end ifinfo
@ifnottex
@node Top, Overview, (dir), (dir)
@top RDOFF
RDOFF is a Relocatable Dynamic Object File Format.
@end ifnottex
@menu
* Overview:: Introduction.
* Structure:: Structure of RDOFF file.
* Utilities:: Description of RDOFF utilities.
@end menu
@node Overview
@chapter Introduction
RDOFF was designed initially to test the object-file production
interface to NASM. It soon became apparent that it could be enhanced
for use in serious applications due to its simplicity; code to load
and execute an RDOFF object module is very simple. It also contains
enhancements to allow it to be linked with a dynamic link library at
either run- or load- time, depending on how complex you wish to make
your loader.
@node Structure
@chapter Structure of RDOFF file
RDOFF module consists of three parts:
@itemize
@item Master header
@item Header (may be omited)
@item Sections
@end itemize
@dfn{Master header} contains signature, version and size information.
@dfn{Header} consists of zero or more @ref{Records, records}.
@dfn{Sections} represent actual contents of the file. Each section is prepended
by a section header.
@node Records, , ,Structure
@section Records that may appear in RDOFF header
@menu
* Relocation:: Relocation records.
* Import:: Declaring external symbols.
* Export:: Declaring public and exported symbols.
* DLL:: Specifying a run-time library name.
* BSS:: Reserving space in BSS section.
* Segment relocation:: Complexity of relocation in segmented systems.
* Far import:: External 'far' symbols.
* Module name:: Specifying module name.
* Common variable:: Declaring common variables.
* Generic record:: Embedding general-purpose data into the header.
@end menu
@node Relocation
@subsection Relocation records
@node Import
@subsection Declaring external and imported symbols
@node Export
@subsection Declaring public and exported symbols
@node DLL
@subsection Specifying a run-time library name
@node BSS
@subsection Reserving space in BSS section
@node Segment relocation
@subsection Complexity of relocation in segmented systems
@node Far import
@subsection External 'far' symbols.
@node Module name
@subsection Specifying module name.
@node Common variable
@subsection Declaring common variables.
@node Generic record
@subsection Embedding general-purpose data into the header.
@node Utilities
@chapter RDOFF utilities
@menu
* rdfdump:: Dump the contents of RDOFF file.
* ldrdf:: RDOFF linker.
* rdflib:: RDOFF librarian.
* rdlar:: New RDOFF librarian/archiver.
* rdx:: Load and execute RDOFF module.
@end menu
@node rdfdump
@section @command{rdfdump} - dump the contents of RDOFF file
@node ldrdf
@section @command{ldrdf} - RDOFF linker
@node rdflib
@section @command{rdflib} - RDOFF librarian
@node rdlar
@section @command{rdlar} - new RDOFF librarian/archiver
@node rdx
@section @command{rdx} - load and execute RDOFF module
@bye