summaryrefslogtreecommitdiff
path: root/rdoff/doc/rdoff.texi
blob: 8d3c1f3ff817945a87ad5aa03bfbc28be702c133 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
\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 Netwide Assembler Project.
Written by Yuri Zaporogets @email{yuriz@@ukr.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 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