home *** CD-ROM | disk | FTP | other *** search
- Changes
- =======
-
- This describes the changes between the releases of GCC for the Archimedes.
-
-
-
- 2.4.5 (1.beta.1) -> 2.4.5 (R2)
- ==============================
-
- This is mostly bug fixes with a few enhancements.
-
- 1) Confusion between binaries being in subdirs gcc and bin sorted out -
- they are definitely in bin (i think).
-
- 2) GCC now handles leaf functions differently, and drops the APCS-R
- prologue and epilogues, if it can. This means that GCC now runs at
- around 16,500 Dhrystones compared to the previous 14,300, and
- Norcroft's 18,500.
-
- 3) A problem with using variables the same as the APCS-R register names
- (r0, fp etc.) has been cleared.
-
- 4) The switch -acorn-make is now deprecated, and has been replaced by
- -mamu, which has the same effect of generating the dependencies file
- for AMU. This was done as all machine specific switch should start
- -m. -acorn-make is accepted by this release, but will not be
- accepted by later versions.
-
- 5) For those who wish to use Stubs rather than UnixLib, a new switch
- -mstubs has been added which does all that is required to use Stubs.
-
- 6) Attempts to use the -pipe command are rejected as errors.
-
- 7) the -mno-apcs switch has had its behaviour tidied up. [internal
- effect only]
-
- 8) Profiling attempts to generate something reasonable.
-
-
-
-
- 2.4.5 (r2) -> 2.4.5 (R2.1)
- ==========================
-
- Mainly fixes for a couple of minor bugs - If they dont bite, you dont need
- this upgrade.
-
- 1) Problems with passing float parameters to some functions - the
- generated code references an undefined register. This was reported
- when using the iostream library and the << operator.
-
- 2) When using C++, the new_handler() functions required UnixLib to be
- used rather than stubs as the used write() to report errors. I now
- use OS_Write0 to disply the error message - this does mean that
- redirection of stderr will not catch this error message.
-
- 3) GCC has an inbuilt alloca(), which is incompatabile with the APCS-R
- multi-chunk stack. To use alloca correctly, you MUST include the
- file <alloca.h> before calling alloca(). This is due to GCC simply
- dropping the stack pointer without checking for any erorrs. UnixLib
- uses malloc() and patches the return address in the stack to free
- the memory on function return.
-
- 4) I have finally sorted out the problem of register names - AS now
- contains these as internal constants, which do not clash with
- variables of the same name.
-
- The register names that GCC / AS recognises are :
-
- r0 r1 r2 r3 r4 r5 r6 r7 r8 General purpose registers
- rfp sl fp ip sp lr pc Used by GCC - take care when using these
- f0 f1 f2 f3 f4 f5 f6 f7 Floating point registers.
-
- Note - AS only recognises these when being used as a backend to GCC,
- if using AS in standalone mode, you still have to define the
- registers you use.
-
- 5) Internal labels are now preceded by a '.', which is illegal in C
- variables, so there should be no clashes.
-
- 6) Changes to UnixLib have meant that 'riscos' does not have to be
- undefined when compiling with UnixLib.
-
-
-
- 2.4.5 (R2.1) -> 2.4.5 (R2.2)
- ============================
-
- Yet again, this is only a few bug fixes. My current intention is that this
- will be the last relase of GCC 2.4.5, and the next release will be based on
- GCC 2.6.x (probably 2.6.1), unless anyone reports any show stoper bugs.
-
- 1) The backend assembler has been improved to generate the correct
- instructions for loading / storing floating point values, with
- post-increment write back to the base register. This only caused
- errors on the FPA, and not on the FPE. This correction is also in
- !AS V1.26 and later.
-
- 2) the use of long long variables should work - most of the long long
- library code was missing.
-
- 3) Confusion between different, incompatible versions of !AS being in
- the run path has been corrected, GCC now uses gcc_as. This is
- currently a standard V1.26b !AS, linked against the Shared C
- library, though this may drift in the future. This has meant the the
- binary is reduced in size.
-
- 4) The problem with GCC not correctly reading the return code from the
- sub programs it invokes has been cured, and errors from one run do
- not affect the next.
-
- 5) Calls to alloca() are correctly handled by GCC now, and it is not
- required to include the file <alloca.h>, though it is recomended.
-
- 6) Includes of the form #include "Path:file.h" now work correctly, and
- there is no need for the #include "Path:/file.h" form.
-
- 7) Problems with an 'extern int' statement being followed immediately
- by a 'const int' statement casuing !AS to complain about attempting
- to put data into a non-init area has been cleared - I forgot to
- change back to the code area after outputing a 'common' area.
-
- 8) At the request of the ARchBSD mob, GCC should now handle filenames
- with upto 55 characters in each path element.
-
- 9) gcc now complain if it thinks it does not have enough memory to run.
- The minimum wimpslot that will allow GCC to run is now 3044K. If the
- slot is smaller, GCC stops with a fatal error.
-