\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
