home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixlib36d / readme36d < prev   
Text File  |  1994-03-07  |  6KB  |  188 lines

  1.         For UnixLib 3.6d, I have now taken over support from Huw Rogers, and
  2. I can be contacted at the following addresses. Please ignore the addresses
  3. given for Huw Rogers.
  4.  
  5. E-mail:
  6.         Simon.Callan@gpt.co.uk
  7.  
  8. Post:
  9.         Simon Callan
  10.         2 Malden Road
  11.         Borehanwood
  12.         Herts
  13.         WD6 1BW
  14.  
  15.  
  16. This is a rough, partial guide to what I have changed / improved / corrected
  17. in UnixLib3.6c to get it to work for GCC / G++
  18.  
  19. Thanks go to the various people who have supplied various bug-fixes,
  20. especially Alun Jones, even if he does report problems, just after I make
  21. changes that make it harder to locate the bugs.
  22.  
  23. Please note that ReadMe36c is slightly out of date, and you should ignore
  24. references to the !Boot and !alias files.
  25.  
  26. Installation for GCC
  27. ====================
  28.  
  29. For GCC to work with Unixlib, two variable need to be set up. These are Unix$path amd UnixFS$/tmp.
  30. Unix$Path shpuld point to the clib directory, with a trailing dot.
  31. UnixFS$/tmp should point to your scrap directory. This can be done by
  32. putting similar to to the following lines into your boot sequence.
  33.  
  34. *set Unix$Path ADFS::IDEDisc4.$.Usr.Develop.UnixLib36d.clib.
  35. *set UnixFS$/tmp <Wimp$ScrapDir>
  36.  
  37. gcc changes
  38. ===========
  39.  
  40. All header files have had appropriate checks for C/C++ compilation, so that
  41. C function names are not mangled when compiling C++ sources.
  42.  
  43. Number of atexit functions that can be registered has been increased to 33,
  44. so that global C++ destructors can be called
  45.  
  46. Allow for command lines of upto 1K bytes in length, as gcc can generate
  47. command lines of greater than 255 bytes.
  48.  
  49. Increase size of print buffers to 4K, as otherwise the c code generators
  50. dont generate correct code.
  51.  
  52. __uname(): for ncc compatability, we need to truncate filename of greater
  53. than 10 characters, rather than dropping vowels.
  54.  
  55. Add startup code so that C++ global constructors are called at program
  56. startup.
  57.  
  58. Incompatibilities between what GCC expects the type of error variables, and
  59. what UnixLib declares them as.
  60.  
  61. Bugs
  62. ====
  63.  
  64. If SIGSTAK is raised, an infinite loop is entered, as signal checks the
  65. stack and raises a SIGSTAK signal. Also the stack backtrace is improved
  66.  
  67. strncmp(): zero length strings were treated as 1 byte long.
  68.  
  69. memcmp(): problems with identical blocks of memory not being properly
  70. compared.
  71.  
  72. strchr(): could not find '\0' in a string.
  73.  
  74. __tmpnam(): bug that resulted in general corruption
  75.  
  76. getcwd(): corrupted the PSD. Also uses OS_Args 7 and Prefix$Dir if they can
  77. be used.
  78.  
  79. dirent(): now works with more than one open directory
  80.  
  81. stat(): Now works for Image directories.
  82.  
  83. _wr#chk functions have the wrong start address for checking the address.
  84.  
  85. If Unix$tty is set, UnixLib corrupts the heap, by trying to free part of the
  86. code!
  87.  
  88. General
  89. =======
  90.  
  91. To aid debuging, the assembler routines have had their names embeded in the
  92. code.
  93.  
  94. DRLink
  95. ======
  96.  
  97. There is a bug in DRLink that results in the offset of the entry point to be
  98. ignored, so I have moved the entry code to the start of the AREA.
  99.  
  100. Header files
  101. ============
  102.  
  103. All files have had appropriate 'extern "C"' statements added to prevent the
  104. C++ compiler mangling function names.
  105.  
  106. Minor problem of include files using include "" rather than <>.
  107.  
  108. alloca.h: GCC insists on using its own, internal version of alloca() if it
  109. can. This does not work under RISC-OS, therefore I have arrenged that GCC
  110. wont recognise alloca().
  111.  
  112. assert.h: Minor problem with K&R and ANSI C preprocesor.
  113.  
  114. dirent.h: 'struct direct' renamed to 'struct dirent'
  115.  
  116. errno.h: sys_nerr changed from 'const int' to 'int' - due to
  117. incompatabilities with GCC declaration. errno changed to __errno and errno
  118. #defined as __errno.
  119.  
  120. pwd.h: removed non STDC declarations of some functions.
  121.  
  122. stdarg.h: ensure that varargs.h / stdargs.h don't clash.
  123.  
  124. stdio.h: increase size of output buffer from 1K to 4K
  125.  
  126. stdlib.h: increase maximum number of atexit function that can be registered,
  127. as C++ needs one.
  128.  
  129. termcap.h: remove non-ANSI declarations.
  130.  
  131. unistd.h: added bits for preventing __uname() for packing filenames
  132.  
  133. sys/fcntl.h include fcntl.h
  134.  
  135. sys/file.h: GCC insists on including this.
  136.  
  137. sys/param.h: bits for DDE command line.
  138.  
  139. sys/syslib.h: bits for C++ startup code.
  140.  
  141. sys.tty.h: include termio.h if not included.
  142.  
  143. -----------------------------------------------------------------------------
  144.  
  145. Makefile: obvious
  146.  
  147. -----------------------------------------------------------------------------
  148.  
  149. src.c.atexit: changes to allow 33 atexit() functions.
  150.  
  151. src.c.memcmp: correct bug in memcmp()
  152.  
  153. src.c.strcmp(): correct bug in strncmp(), which prevents 0 length strings
  154. comparing correctly.
  155.  
  156. stdio.c.print: increase print buffer to 4K.
  157.  
  158. stdio.c.debug: add bit to shut up cc.
  159.  
  160. sys.c.errlist: change sys_nerr from 'const int' to 'int'
  161.  
  162. sys.c.exec: add code to use DDE utils if needed.
  163.  
  164. sys.c.signal: turn off stack checking, as otherwise a SIGSTAK causes an
  165. infinite loop. Improve stack backtrace.
  166.  
  167. sys.c.sysclib: C++ initialisation code. Also set __uname() non-pack facility.
  168.  
  169. sys.c.vfork: code for DDE commandline.
  170.  
  171. Assembler code: add debuging info - routine names to all assembler sources.
  172.  
  173. src.sys.s._signal: rename errno to __errno
  174.  
  175. src.sys.s.__syslib: Move entry code to start of AREA, as drlink ignores the
  176. offset value specified in the ENTRYPOINT field. add point to base of r/w
  177. area. Set up dont pack indicator for __uname(). add bits for C++
  178. constructors. Change _wr#chk to correctly check start address. set up
  179. __rwbase for write checking.
  180.  
  181. src.unix.c.dirent: rename struct direct to struct dirent.
  182.  
  183. src.unix.c.getcwd / getwd: function getwd() changed to getcwd(), which seems correct.
  184.  
  185. src.unix.c.uname: if file name is > 10 chars, dont pack if requested.
  186.  
  187. src.unix.c.unix: use DDE utils if required. Correct bug that corrupts heap
  188. if Unix$tty is set.