README
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:6k
源码类别:

编译器/解释器

开发平台:

C/C++

  1. RDOFF Utils v0.3
  2. ================
  3. The files contained in this directory are the C source code of a set
  4. of tools (and general purpose library files) for the manipulation of
  5. RDOFF version 2 object files. Note that these programs (with the
  6. exception of 'rdfdump') will NOT work with version 1 object files. See
  7. the subdirectory v1 for programs that perform that task. 
  8. Note: If you do not have a v1 subdirectory, you may have unpacked the
  9. ZIP file without specifying the 'restore directory structure' option -
  10. delete these files, and run your ZIP extracter again with this option 
  11. turned on ('-d' for PKUNZIP).
  12. RDOFF version 1 is no longer really supported, you should be using
  13. v2 instead now.
  14. There is also a 'Changes' file, which documents the differences between
  15. RDOFF 1 and 2, and an 'rdoff2.txt' file, with complete documentation for the
  16. new format.
  17. Here is a brief summary of the programs' usage:
  18. rdfdump
  19. =======
  20. This tool prints a list of the header records in an RDOFF object in 
  21. human-readable form, and optionally prints a hex dump of the contents
  22. of the segments.
  23. Usage:
  24. rdfdump [-v] filename
  25. The -v flag specifies that the hex dump (see above) should be printed.
  26. Changes from previous versions:
  27. * rdfdump supports both version 1 and 2 of RDOFF.
  28. * rdfdump now gives warnings if the RDOFF2 format is violated (it
  29.   looks for incorrect lengths for header records, and checks the
  30.   overall length count at the start of the file)
  31. ldrdf
  32. =====
  33. This tool is a version of unix 'ld' (or DOS 'link') for use with RDOFF
  34. files. It is capable of linking RDOFF objects, and libraries produced
  35. with the 'rdlib' utility discussed below.
  36. In normal usage, its command line takes the form:
  37. ldrdf [-o output-file] object files [-llibrary ...]
  38. Libraries must be specified with their path as no search is performed.
  39. Modules in libraries are not linked to the program unless they are
  40. referred to.
  41. Most of its options are not implemented, but those that are are listed here:
  42.    -v increase verbosity level. Currently 4 verbosity levels are 
  43. available: default (which only prints error information), normal
  44. (which prints information about the produced object, -v), medium
  45. (which prints information about what the program is doing, -v -v)
  46. and high (which prints all available information, -v -v -v).
  47.    -p change alignment value to which multiple segments combigned into
  48. a single segment should be aligned (must be either 1, 2, 4, 8,
  49. 16, 32 or 256. Default is 16).
  50. The default output filename is 'aout.rdx'.
  51. rdx
  52. ===
  53. This program simply loads and executes an RDOFF object, by calling
  54. '_main', which it expects to be a C-style function, which will accept
  55. two parameters, argc and argv in normal C style.
  56. rdflib
  57. ======
  58. This program creates a library file for use with ldrdf.
  59. It is supplied with a shell script 'makelib' which should probably be used
  60. to create libraries.
  61. Usage:
  62. rdflib command library [optional arguments]
  63. Valid commands are:
  64. c Create (or truncate) the library
  65. a Add a module (requires a filename and a name to give the
  66. module, ie 'rdflib a libc.rdl strcpy.rdf strcpy' puts the
  67. file 'strcpy.rdf' into 'libc.rdl', and calls it 'strcpy'.
  68. x Extract (arguments are the opposite to the 'a' command,
  69. ie you'd do 'rdflib x libc.rdl strcpy strcpy.rdf to get
  70. a copy of strcpy.rdf back out again...)
  71.         t       List modules in the library
  72. A remove command will be added soon (it is already documented
  73. as existing, but I haven't had time to implement it... if anyone
  74. else wants to do this, they're welcome to. The file format should be
  75. amply documented in the source code... look at 'rdflib.c' and 'rdlib.c',
  76. and the relevant sections of 'ldrdf.c' to see how libraries can be
  77. handled).
  78. Library functions
  79. =================
  80. The files 'rdoff.c', 'rdoff.h', 'rdfload.c' and 'rdfload.h' contain
  81. code which you may find useful. They retain the same interface as
  82. the previous version, so any code that used them previously should
  83. still work OK (maybe). 'rdoff.c' contains at the top a line:
  84. #define STRICT_ERRORS
  85. Comment this line out if you wish to use record types other than the
  86. 7 predefined types; it will then not report such records as an error,
  87. but accept them gracefully, and read them byte for byte into
  88. a 'generic record' (see the definition of GenericRec in 'rdoff.h').
  89. If you are using these functions to write RDF modules (rather than
  90. just reading them), then please note the existance of a new function
  91. 'rdfaddsegment(rdf_headerbuf,long)'. This must be called once for
  92. each segment in your object, to tell the header writing functions
  93. how long the segment is.
  94. BUGS
  95. ====
  96. This product has recently undergone a major revision, and as such there 
  97. are probably several bugs left over from the testing phase (although the
  98. previous version had quite a few that have now been fixed!). Could you
  99. please report any bugs to me at the address below, including the following
  100. information:
  101.   - A description of the bug
  102.   - What you think the program should be doing
  103.   - Which programs you are using
  104.   - Which operating system you are using, and which C compiler was used to
  105.     compile the programs (or state that the pre-compiled versions were used).
  106.   - If appropriate, any of the following:
  107.     * source code (preferably cut down to a minimum that will still assemble
  108.       and show the bug)
  109.     * the output of rdfdump on produced modules (or send the module if the
  110.       problem is in code generated)
  111.     * exact descriptions of error messages/symptoms/etc
  112. TODO
  113. ====
  114. There are still various things unimplemented that I would like to add.
  115. If you want to find out what these are, search near the top of each *.c
  116. file for a comment containing the word 'TODO'. A brief list is given here:
  117. - Improve the performace of ldrdf (there are several enhancements I can think
  118.   of that wouldn't be too hard to add)
  119. - Stop assuming that we're on a little endian machine
  120. - Make everything work with both formats (?)
  121. - Add extra functions to ldrdf (strip symbols/keep symbol list)
  122. - Check for more bugs
  123. One last thing I have to say: good luck! Whatever it is that you want to use
  124. RDOFF for, I hope its a success.  People out there are using it for many
  125. diverse applications, from operating system boot-loaders to loadable modules
  126. in games.  Whatever your application is, I hope that it works, and that you
  127. have a good time writing it.
  128. Julian Hall <jules@earthcorp.com>