\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 Zaporogets @email{yuriz@@ukr.net} @author Julian Hall @email{jules@@dsf.org.uk} @end titlepage @ifinfo Copyright @copyright{} 2002-2004 Netwide Assembler Project. Written by Yuri Zaporogets @email{yuriz@@users.sf.net} 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