mirror of
https://github.com/netwide-assembler/nasm.git
synced 2024-11-27 08:10:07 +08:00
173 lines
6.3 KiB
Plaintext
173 lines
6.3 KiB
Plaintext
RDOFF Utils v0.3
|
|
================
|
|
|
|
The files contained in this directory are the C source code of a set
|
|
of tools (and general purpose library files) for the manipulation of
|
|
RDOFF version 2 object files. Note that these programs (with the
|
|
exception of 'rdfdump') will NOT work with version 1 object files. See
|
|
the subdirectory v1 for programs that perform that task.
|
|
|
|
Note: If you do not have a v1 subdirectory, you may have unpacked the
|
|
ZIP file without specifying the 'restore directory structure' option -
|
|
delete these files, and run your ZIP extracter again with this option
|
|
turned on ('-d' for PKUNZIP).
|
|
|
|
RDOFF version 1 is no longer really supported, you should be using
|
|
v2 instead now.
|
|
|
|
There is also a 'Changes' file, which documents the differences between
|
|
RDOFF 1 and 2, and an 'rdoff2.txt' file, with complete documentation for the
|
|
new format.
|
|
|
|
Here is a brief summary of the programs' usage:
|
|
|
|
rdfdump
|
|
=======
|
|
|
|
This tool prints a list of the header records in an RDOFF object in
|
|
human-readable form, and optionally prints a hex dump of the contents
|
|
of the segments.
|
|
|
|
Usage:
|
|
rdfdump [-v] filename
|
|
|
|
The -v flag specifies that the hex dump (see above) should be printed.
|
|
|
|
Changes from previous versions:
|
|
|
|
* rdfdump supports both version 1 and 2 of RDOFF.
|
|
* rdfdump now gives warnings if the RDOFF2 format is violated (it
|
|
looks for incorrect lengths for header records, and checks the
|
|
overall length count at the start of the file)
|
|
|
|
ldrdf
|
|
=====
|
|
|
|
This tool is a version of unix 'ld' (or DOS 'link') for use with RDOFF
|
|
files. It is capable of linking RDOFF objects, and libraries produced
|
|
with the 'rdlib' utility discussed below.
|
|
|
|
In normal usage, its command line takes the form:
|
|
|
|
ldrdf [-o output-file] object files [-llibrary ...]
|
|
|
|
Libraries must be specified with their path as no search is performed.
|
|
Modules in libraries are not linked to the program unless they are
|
|
referred to.
|
|
|
|
Most of its options are not implemented, but those that are are listed here:
|
|
|
|
-v increase verbosity level. Currently 4 verbosity levels are
|
|
available: default (which only prints error information), normal
|
|
(which prints information about the produced object, -v), medium
|
|
(which prints information about what the program is doing, -v -v)
|
|
and high (which prints all available information, -v -v -v).
|
|
|
|
-p change alignment value to which multiple segments combigned into
|
|
a single segment should be aligned (must be either 1, 2, 4, 8,
|
|
16, 32 or 256. Default is 16).
|
|
|
|
The default output filename is 'aout.rdx'.
|
|
|
|
rdx
|
|
===
|
|
|
|
This program simply loads and executes an RDOFF object, by calling
|
|
'_main', which it expects to be a C-style function, which will accept
|
|
two parameters, argc and argv in normal C style.
|
|
|
|
rdflib
|
|
======
|
|
|
|
This program creates a library file for use with ldrdf.
|
|
|
|
It is supplied with a shell script 'makelib' which should probably be used
|
|
to create libraries.
|
|
|
|
Usage:
|
|
rdflib command library [optional arguments]
|
|
|
|
Valid commands are:
|
|
|
|
c Create (or truncate) the library
|
|
a Add a module (requires a filename and a name to give the
|
|
module, ie 'rdflib a libc.rdl strcpy.rdf strcpy' puts the
|
|
file 'strcpy.rdf' into 'libc.rdl', and calls it 'strcpy'.
|
|
x Extract (arguments are the opposite to the 'a' command,
|
|
ie you'd do 'rdflib x libc.rdl strcpy strcpy.rdf to get
|
|
a copy of strcpy.rdf back out again...)
|
|
t List modules in the library
|
|
|
|
A remove command will be added soon (it is already documented
|
|
as existing, but I haven't had time to implement it... if anyone
|
|
else wants to do this, they're welcome to. The file format should be
|
|
amply documented in the source code... look at 'rdflib.c' and 'rdlib.c',
|
|
and the relevant sections of 'ldrdf.c' to see how libraries can be
|
|
handled).
|
|
|
|
Library functions
|
|
=================
|
|
|
|
The files 'rdoff.c', 'rdoff.h', 'rdfload.c' and 'rdfload.h' contain
|
|
code which you may find useful. They retain the same interface as
|
|
the previous version, so any code that used them previously should
|
|
still work OK (maybe). 'rdoff.c' contains at the top a line:
|
|
|
|
#define STRICT_ERRORS
|
|
|
|
Comment this line out if you wish to use record types other than the
|
|
7 predefined types; it will then not report such records as an error,
|
|
but accept them gracefully, and read them byte for byte into
|
|
a 'generic record' (see the definition of GenericRec in 'rdoff.h').
|
|
|
|
If you are using these functions to write RDF modules (rather than
|
|
just reading them), then please note the existance of a new function
|
|
'rdfaddsegment(rdf_headerbuf,long)'. This must be called once for
|
|
each segment in your object, to tell the header writing functions
|
|
how long the segment is.
|
|
|
|
BUGS
|
|
====
|
|
|
|
This product has recently undergone a major revision, and as such there
|
|
are probably several bugs left over from the testing phase (although the
|
|
previous version had quite a few that have now been fixed!). Could you
|
|
please report any bugs to me at the address below, including the following
|
|
information:
|
|
|
|
- A description of the bug
|
|
- What you think the program should be doing
|
|
- Which programs you are using
|
|
- Which operating system you are using, and which C compiler was used to
|
|
compile the programs (or state that the pre-compiled versions were used).
|
|
- If appropriate, any of the following:
|
|
* source code (preferably cut down to a minimum that will still assemble
|
|
and show the bug)
|
|
* the output of rdfdump on produced modules (or send the module if the
|
|
problem is in code generated)
|
|
* exact descriptions of error messages/symptoms/etc
|
|
|
|
TODO
|
|
====
|
|
|
|
There are still various things unimplemented that I would like to add.
|
|
If you want to find out what these are, search near the top of each *.c
|
|
file for a comment containing the word 'TODO'. A brief list is given here:
|
|
|
|
- Improve the performace of ldrdf (there are several enhancements I can think
|
|
of that wouldn't be too hard to add)
|
|
- Stop assuming that we're on a little endian machine
|
|
- Make everything work with both formats (?)
|
|
- Add extra functions to ldrdf (strip symbols/keep symbol list)
|
|
- Check for more bugs
|
|
|
|
One last thing I have to say: good luck! Whatever it is that you want to use
|
|
RDOFF for, I hope its a success. People out there are using it for many
|
|
diverse applications, from operating system boot-loaders to loadable modules
|
|
in games. Whatever your application is, I hope that it works, and that you
|
|
have a good time writing it.
|
|
|
|
|
|
|
|
Julian Hall <jules@earthcorp.com>
|