home *** CD-ROM | disk | FTP | other *** search
- Release date: 8 May 1993
-
- This file contains disclaimer and copyright notices as well as a brief
- description of unusual or new features of the porting of the GNU C and
- C++ compiler version 2.2.2 for the Amiga Sistem.
-
- The porting was done by Davide Pasetto (il dipo) and is (c)Copyright 1993.
-
- The author releases this programming system under the GNU general public
- licence that you can find in another file. You MUST read the licence before
- you use this programming system and, if you do not accept that licence, you
- should delete everything.
-
- The programming system v2.2.2 release 0 is composed of:
-
- GNU C compiler v2.2.2 (c)Copyright GNU
- GNU C preprocessor v2.2.2 (c)Copyright GNU
- GNU C++ compiler v2.2.2 (c)Copyright GNU
- dlink linker v2.06.05 (c)Copyright Matt Dillon
- pasm assembler v1.0 (c)Copyright Davide Pasetto (il dipo)
- prelink prelinker v2.0 (c)Copyright Davide Pasetto (il dipo)
- fdtoin utility v2.0 (c)Copyright Davide Pasetto (il dipo)
- genclass utility v1.0 (c)Copyright Davide Pasetto (il dipo)
- gnulib.lib v2.0 (c)Copyright Davide Pasetto (il dipo) & GNU
- gnulibnf.lib v2.0 (c)Copyright Davide Pasetto (il dipo) & GNU
- ansic.lib v2.0 (c)Copyright Davide Pasetto (il dipo)
- cplusplus.lib v2.2.2 (c)Copyright GNU
- ansic include files v2.0 (c)Copyright Davide Pasetto (il dipo)
- cplusplus includes v2.2.2 (c)Copyright GNU
- container classes v2.2.2 (c)Copyright GNU
- startup files v2.0 (c)Copyright Davide Pasetto (il dipo)
- several docs v2.2.2 (c)Copyright GNU
-
- The amigaguide (R) hypertext format docs were converted by makeinfo utility.
-
- All this programs except dlink are compiled with this programming system and
- work ONLY under Amiga OS2.0 or higher.
-
- For problems, questions or bug report please contact:
-
- Davide Pasetto (il dipo),
- via Gereschi 14, 56127, PISA, ITALY
- e-mail: 2:332/602.18
-
- ---------------------------- ANSI C LIBRARY ---------------------------
-
- The ansic library contains all the c interface functions described in
- the ANSI standard definition, plus some very used BSD and SYS V
- functions. The whole library is compiled with GNUC and with -O2
- optimization level; this makes the library a little bigger but faster.
-
- ------------------------------- Signals -------------------------------
-
- Actually the library knows the existence of 25 signals (all the signal
- I can found in ANSI standard or in the UN*X manuals), but by now only
- 4 can be generated, and they are atached to CTRL_C, CTRL_D, CTRL_E,
- CTRL_F. The un*x signals on the Amiga are recognized by an exception
- handler commected to the exec task; the signal actually recognized by
- this handler are:
-
- SIGKILL (connected to CTRL_C, default is abort() and cannot be changed)
- SIGTSTP (connected to CTRL_D, default is stop task processing)
- SIGCONT (connected to CTRL_E, default is nothing or resume
- task processing if disabled)
- SIGINT (connected to CTRL_F).
-
- SIGTSTP and SIGCONT can be used to stop task processing, thus freeing
- CPU power, and then continue task processing.
-
- Unfortunatelly exception handling is well supported only by exec, but
- it's not supported by the rest of the Amiga OS, so we must use it with
- care: we must add the concept of 'atomic section'.
-
- Definition: 'atomic section' is a piece of code that cannot be
- interrupted by an externally generated task exception. Atomic sections
- must be declared using two new macros defined in signal.h:
-
- ATOMIC_ON
- ATOMIC_OFF
-
- The first one is used to start the section, while the second one stops it;
- they use a nesting counter, so you must call ATOMIC_OFF as much as you
- call ATOMIC_ON. Almost every Amiga OS function must be called in atomic
- mode, every functions that could work on global data structures MUST be
- called in atomic mode, this means the whole dos.library, intuition and
- graphics, but (I think) not the math libraries (for example). C standard
- library knows of this exception handling processing, it uses it and does
- its best to optimize the atomic section declarations. If you set your own
- signal handler routine (using signal call), it will be executed in an
- atomic section, so no other signal can happend while it's executing.
- Direct usage of the exec exception facility is not supported by the
- ansic.lib.
-
- --------------------------- Stack Checking ------------------------------
-
- Stack checking is avaiable by the use of the -mcheck-stack switch. By
- default stack checking code implements a dynamic growing and shrinking
- stack allocating and freeing memory as needed. It will only abort the
- task when no memory can be found. As usual stack cheching adds some
- overhead to each call to a program function and to the alloca
- function.
-
- The user can sobstitute the default stack checking behaviour by giving
- the folowing functions and variabiles:
-
- ULONG ___Stack_Limit this variable contains the current lowest stack
- possible value
-
- UWORD ___Stack_Changed this variable is 0 if the stack is the initial
- one, non zero if not
-
- ___Stack_Init this function initializes stack checking system
- ___Stack_End this one must free every still allocated stack chunk
- ___Stack_Overflow this one is called when stack overflows; it has
- one parameter: needed minimum stack size; if it
- returns it MUST eat his parameter and MUST have
- changed a7 to a stack that it AT LEAST as large
- as required.
- ___Stack_Adjust this function is called at the end of each
- function when ___Stack_Changed is non zero;
- this can do the dynamic stack shrinking.
-
- NOTE: This feature has not been tested very much and I would like to hear any
- comment and bug report about it.
-
-
- --------------------------- Linker options --------------------------------
-
- The linker supported options are:
-
- -Lfloat link with floating point support (it requires
- mathieee*.library on execution); default is off.
-
- -Lplus link for cplusplus.
-
- -Lnostdlib link with no stdlibrary (also no floating math supported);
- programs linked so will work also under 1.3.
-
-
- ------------------------ Inline function calls --------------
-
- The compiler supports inline function calls to all those Amiga OS
- library function that does not get or return double values. The inline
- function support is made by the fdtoin program; to use it you must
- assign fd: where the fd files are, clib: where the library protos are,
- and inline: where you want the program put the inline calls definition
- files.
-
- Note that the library calls are inlined ONLY when optimizing (as are
- all the inline functions with GNUC 2.2.2).
-
- There is a bug: template is a keyword for C++ compiler, so any
- function that has template as argument will give syntax error when
- compiled with GNU C++. This is the case of ReadArgs and another dos
- function, so you should edit the inline file by hand and change
- parameter name.
-
-
- --------------------- C++ container class constructors ------------
-
- The c++ container class constructor is calles genclass and works like
- the GNU shell script described in the library manual: first you must
- see if the class needs one or two type definition. In the first case
- you use "genclass type [ref or val]" while in the second you must use
- "genclass -2 type1 [ref or val] type2 [ref or val]". Remember that ref
- means to add a `&' behind the type.
-
-
- ------------------------- Known bugs ---------------------------------
-
- Some bugs still remains in the cplusplus library; expecially the library
- test of random number generator failed and I could not understand why.
- I think that the floating point subsystem is good becouse that happends also
- when compiled for 68882 only, so I cannot understand what happened. I'll
- work on this. I found other transitory problems in the stream subsystem of
- this library: it happened that it lost one or two chars during reading, and also
- in this case I could not understand why. I would like to hear some feedback
- from you about this.
-
-
- ------------------------ Future attractions ----------------------------
-
- I'am working on the GNU objective c compiler to create a runtime environment
- and this should be released as update 1 to this programming system in 2 weeks.
-
- I'am also working on GNU symbolic debugger but this is a more difficult project
- and I cannot say when it will be ready.
-
-