GCCSDK Releases


Revision as of 12:54, 20 January 2015 by Alanb (Talk | contribs)
Jump to: navigation, search


Latest stable release

The last stable GCCSDK Release is GCCSDK GCC 4.7.4 Release 1.

It is strongly recommended that you do not use the older releases; they are maintained here mainly for reference. The older versions may contain serious bugs or generate incorrect code. If there's any reason you cannot use the latest release, then please inform the GCCSDK developers.

Latest test release

From time to time we make a test release which contain the bug fixes done on top of a previous stable release. Currently this is following what has been checked in on the trunk/gcc4 branch but is not always guaranteed up-to-date and might even contain new yet-undiscovered problems.

RISC OS binaries : Download latest test release

Source : svn co svn://svn.riscos.info/gccsdk/trunk/gcc4

Detailed release info

GCCSDK GCC 4.7.4 Release 1

Released on 19 January 2015.

GCCSDK GCC 4.1.2 Release 2

Released on 1 October 2012. Stable and well tested release featuring GCC 4.1.2 + Binutils 2.21 port.

  • Bug fixes and other improvements:
    • UnixLib: strftime fix (r5755, #226)
    • UnixLib: getcwd fix (r5758, #227)
    • UnixLib: glob fix (r5766, r5776, #229, #231)
    • UnixLib: readdir inode fix (r5767)
    • UnixLib: support for alias-disabling prefix (r5775, #232)
    • UnixLib: sendto return value fix (r5780, #233)
    • UnixLib: avoid closing RISC OS input/output stream (r5785, #236)
    • UnixLib: support tmpnam/tmpnam_r and __RISCOSIFY_NO_PROCESS combination (r5823, #238)
    • UnixLib: Avoid reading from NULL when SWI DDEUtils_ReadPrefix is not defined, nor Prefix$Dir is set (r5902, #241).
    • GCC: Disable tail call optimisations when stack checking is enabled to prevent stack corruption (#230, #243).

RISC OS binaries for developers and users are available as RiscPkg packages or straight zip files.

Source :

GCCSDK GCC 4.1.2 Release 1

Released on 21 April 2012. Stable and well tested release featuring GCC 4.1.2 + Binutils 2.21 port.

  • Major changes:
    • Upgraded to GCC 4.1.2 (r4684).
    • Upgraded to Binutils 2.21 (r4911).
    • Improved profiling support (r4502, r4503).
    • Merged UnixLib and SharedCLibrary stub code (r4624), resulting in:
      • Support for C++ when using SharedCLibrary (including module code).
      • SharedCLibrary stubs have now network support. Note that SharedCLibrary stub code remains (L)GPL free (r4991).
    • asasm: significant set of fixes to improve ObjAsm compatibility. Now able to be used to build ROOL RISC OS 5 IOMD and IYONIX branches.
    • Introduction of abi based versioning of shared libraries.
  • Bug fixes and other improvements:
    • GCC: avoid code generation resulting in stack corruption (r4656).
    • GCC: support weak symbols in module code (r5059).
    • GCC: wrong code generation when using C++ (r4682, #208).
    • UnixLib: pthread stability fixes, especially when shared library is used (r4396, r4424, r5470).
    • UnixLib: Make __write_backtrace public (r4418, r4419).
    • UnixLib: Fix return value getpwnam_r (r4425).
    • UnixLib: (line) buffered stream fix (r4398, r4459, r4786).
    • UnixLib: shared library improvements and fixes.
    • UnixLib: improved mmap() support (r4902).
    • UnixLib: opening a directory should result in EISDIR error (r4784).
    • UnixLib: alloca() related corruption fix (r4623, #205).
    • UnixLib: significant internal cleanups (r4431, r4435, r4443, r4647, r4652, r4730, r4761, r5100, r5102, r5115, r5116).
    • UnixLib: updated third party code (r4431, r4824, r5089).
    • UnixLib: add support for ARMv7 CPU detection (r5062).
    • UnixLib: initial and experimental VFP and no-chunked stack support (r4811, r4813, r4824, r4827, r4828).
    • UnixLib/SharedUnixLibrary: improved reliability of forking other binaries including I/O redirection handling (r5025). Latest SharedUnixLibrary version is now v1.12.
    • UnixLib: fix open() return value (r5166).
    • UnixLib: upgrade glob implementation (r5204, #220).
    • UnixLib: fix getcwd memory corruption (r5286).
    • UnixLib: fix fread EOF bit setting (r5296).
    • UnixLib: support for double quoted redirection filenames (r5302, #221).
    • UnixLib: stdtime: add missing buffer specification (r5331, #223).
    • UnixLib: prevent stack extension trampling signal handler's stack chunk (r5394).
    • UnixLib: merge SCL stubs into UnixLib project (r5465).
    • UnixLib: getcwd: fix buffer overflow (r5408).
    • UnixLib/SCL: support SCL's __USE_FILE_OFFSET64 and __USE_LARGEFILE64 API (r5405, r5489, r5588).
    • UnixLib: support writing symlink files (r5578).
    • Shared Object Manager: Reliability fixes (r4437, r5704, #224). SOManager module version is now 2.03.
    • elf2aif: ELF flags test fix (r4436)
    • CMunge: protection against bogus help-string entries.
    • Examples: Fix linker error (r4394)
    • GDBServer:
    • DRenderer: Source converted to AsAsm/ObjAsm syntax and upgraded to v0.55 (contributed by Christopher Martin).
  • Cross compile related changes and bug fixes:
    • Porting Tools improvements (r4416, r4450, r4454, r4455, r4479, r4482, r5456).
    • Makefile driven build (instead of script file) which improves partial rebuilding (r4467).
      • Source fetch and build of the correct Autoconf/Automake versions needed.
      • Separating GCC and Binutils build (again for improved partial rebuild).
    • Add gdbserver and syslogd to the cross-compile build.
    • Experimental EABI target and newlib build support.

RISC OS binaries for developers and users are available as RiscPkg packages or straight zip files.

Source :

GCCSDK GCC 4.1.1 Release 2

Released on 27 December 2009. Stable and well tested release featuring GCC 4.1.1 + Binutils 2.17 port and first release to feature static and shared ELF binary support. It is also for the first time available as RiscPkg packages.

  • Major changes:
    • Release where the shared library code generation is enabled and which also contains !SharedLibs.
    • Added 'asasm', the 'simple assembler' supporting the Acorn ARM assembler and ObjAsm syntax with AOF or ELF output. This was originally written by Niklas Röjemo and formally known as 'as' and also part of the !AS application. This was also the ARM assembler backend in the pre-GCCSDK 4 kits and now part of GCCSDK 4 to support legacy Acorn ARM assembler and ObjAsm files and this after many compatibility fixes.
    • Possibility to create RISC OS modules without having to use SharedCLibrary.
    • Limited profile support (gcc option -pg).
  • Most important bug fixes:
    • Shareble library fixes (SOModule and code generation).
    • Several C++ exception fixes.
    • UnixLib:
      • Better leafname determination of program name. Fixes #169 (reported by John Kortink).
      • Better canonicalisation behaviour of program name when Run$Path was used reverting the work arounds in previous Release 1b and 1a (Alias$gcc/Alias$g++).
      • Fixed memory leak.
      • Improved symbolic link support. Fixes item 1 of #162 (reported by Duncan Moore).
      • Fix for recursive signal calling.
      • Constify some of the function parameters in kernel.h. Likewise for SCL kernel.h header.
    • Module generation:
      • Image__RO_Base variable is now located in .rodata section instead of .data.
      • Avoid relocation code being copied in RMA workspace.
      • Global variables holding non const function pointers or being const but requiring relocation where not always handled correctly.
    • CMunge documentation change.
  • Cross compile related changes and bug fixes:
    • elf2aif: improved behaviour when used on non-RISC OS platforms.
    • Fix for:

     $ arm-unknown-riscos-strip -s libfoo.a
     arm-unknown-riscos-strip: cannot mkdir stAVQDap for archive copying (error: File exists)

    • Fix for linking a module binary on a 64-bit host triggering an assert.
    • gdbserver: development start of remote, gdb based, RISC OS debugger for ELF binaries.
    • Porting tools: several bug fixes and improvements.

RISC OS binaries for developers and users are available as RiscPkg packages or straight zip files.

Source :

GCCSDK GCC 4.1.1 Release 1b

Released on 6 January 2009. Stable and well tested release featuring GCC 4.1.1 + Binutils 2.17 port and static ELF binary support.

This is a small but important bug fix release for GCCSDK GCC 4.1.1 release 1a as its workaround for the canonicalisation for argv[0] resulted in ignoring the first parameter given to gcc/g++.

RISC OS binaries :

Source :

GCCSDK GCC 4.1.1 Release 1a

Released on 3 January 2009 and featuring GCC 4.1.1 + Binutils 2.17 port and static ELF binary support.

This is a small but important bug fix release for GCCSDK GCC 4.1.1 release 1 solving following problems:

  • Workaround for a problem in RISC OS 5 where UnixLib is not able to determine the full path for argv[0] when the binary is run via Run$Path. This fixes the "File 'cc1' not found" error when compiling on RISC OS 5.
  • The new UnixLib 5 qsort code could sometimes fail resulting in an "internal compiler error" during compilation on RISC OS.
  • Avoid having both index/html and Index/html in !GCC.docs folder.

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_4_1_1_v1a

GCCSDK GCC 4.1.1 Release 1

Released on 23 December 2008 and featuring GCC 4.1.1 + Binutils 2.17 port and static ELF binary support.

  • GNU C/C++ compilers based on GCC 4.1.1.
  • Object file format is now ELF based and no longer AOF/AIF (although that Absolute AIF files can be created from static built ELF programs). Currently only static ELF binaries are supported in this release but the shared library development is already finished and undergoing testing.
  • UnixLib as runtime library also means a soft-float floating point implementation resulting significant speed increases for floating point intensive code.
  • UnixLib: many enhancements and bugfixes done.
  • RISC OS module support for C programs.

Further documentation can be found in !GCC's help file.

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_4_1_1_v1

GCCSDK GCC 4.1.1 Pre-release 1

Released on 17 November 2007. This release is for testing purposes and is soliciting feedback from developers.

The first test release of GCC 4.1.1 + Binutils 2.17 port featuring:

  • GNU C/C++ compilers based on GCC 4.1.1.
  • Object file format is now ELF based and no longer AOF/AIF (although that Absolute AIF files can be created from static built ELF programs).
  • Shared library support with default set of shared libraries for UnixLib, libgcc, C++ support library and dynamic loader.
  • UnixLib as runtime library also means a soft-float floating point implementation resulting significant speed increases for floating point intensive code.
  • RISC OS module support for C programs.

Further documentation can be found in !GCC's help file.

VERY IMPORTANT: we encourage every RISC OS developer to try out this release and gives us feedback on your experience with this release. There is a known list of problems mentioned in !GCC's help file which we foresee to be fixed in the first release.

Note that we like to reserve the freedom to make some incompatible changes to the shared UnixLib API before the first release and this based on developer feedback and the already known need to do some API bugfixes or cleanups.

So therefore please do not distribute your programs built with shared UnixLib runtime library found in this pre-release but feel free to do so with the static UnixLib version instead (i.e. using -static option when linking) so that users still can run your programs when we do the first release containing the first supported shared UnixLib version.

RISC OS binaries :

Source :

GCCSDK GCC 3.4.6 Release 3

Released on 17 July 2007. Another interim bug fix release in the 3.4.6 series.

  • GCC compiler fixes:
    • The dependency paths were never converted to RISC OS filepaths when option -mamu was specified, bug #151.
    • Fixed incorrect stack size checking in -O3 compiled binaries, bug #148 and bug #156.
  • Assembler fixes:
    • Removed the built-in limit of 40 include directories.
  • UnixLib fixes:
    • mktime: Fix corruption of its input structure, bug #152.
    • regex.h: Made it usable for C++ programs.
    • Fixed incorrect program name determination for programs run as "*Run MyLibrary:myprog".
    • fsync: Don't error on files open with O_RDWR.
    • strnicmp: Compare lowercased versions of strings rather than uppercase.
    • Change EAGAIN value to the same as EWOULDBLOCK, to match TCPIPLibs and Linux. Change EDEADLK value for TCPIPLibs compatibility and add ENOTSUP.
    • uname: changed utsname.sysname from "riscos" into "RISC OS" and utsname.machine from "arm-acorn" into "armvxl" with 'x' the major ARM architecture digit.
    • Fixed memory access problem when using redirection.
    • pthreads can now be used in binaries run under TaskWindow or in Wimp applications without special support code needed.
  • SharedCLibrary stub fixes:
    • vfscanf, vscanf and vsscanf: made it available.
    • fdopen: implemented.
    • fileno: fixed which allows C++ fstreams to work.
  • Librarian fixes:
    • Fixed spurious problem when creating a new library and when run on RISC OS.

GCCSDK cross-compilation improvements:

  • Provided -mthrowback option instructing the cross-compiler to sends its warnings and errors via syslog messages to a given RISC OS host. A RISC OS syslogd implementation will then generated normal throwback messages.

RISC OS binaries : Download

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_3_4_6_v3

GCCSDK GCC 3.4.6 Release 2

Released on 17 September 2006. Mainly an interim bug fix release.

  • GCC compilers fixes:
    • Correction of Release 1 filename handling regression with GCC.
    • Enabling of throwback for C preprocessor.
    • Pass gcc include paths through to 'as' assembler. There are known limitations on the current assembler include path support concerning Unix and RISC OS style pathname syntax so we recommend using path variables when you want to specify assembler include directories.
  E.g.: gcc -IOSLib: -c source.s -o source.o
  • Assembler fixes:
    • Allow suffix swapping in its include filenames and adding hdr/Hdr suffixes to its default suffix swap list. This allows RISC OS and cross compilation of same assembler sources which include OSLib headers.
    • No longer supporting GCC @ comments. This is no longer needed for the GCCSDK build procedure and allows the @ as built-in variable by default i.e. without having to resort to the -objasm option.
    • Assembler now supports all ARMv5E (XScale) instructions (i.e. not including the Thumb instructions).
    • Fixed several miss-assemblings or unsupported corner cases: LFMFD, LDC/STC, PLD, LDR/STR(H,SH,SB), etc.
    • Added testcases for future regression tests.
  • UnixLib fixes:
    • Improvement of backtrace and error handling: showing info on all current threads and demangled C++ function names.
    • readdir: fix in its suffix swapping code and improved POSIX behaviour.
    • unixify: fix memory leak and return value.
    • riscosify: avoid using hard-wired "/home/riscos/env/" path.
    • Stability fix when <Alt><Break> is used.
    • Conditional support for XScale compilation.
  • Librarian fixes:
    • Replacing AOF object in ALF file didn't work.
    • Several code fixes improving its stability.
  • Linker fixes:
    • 'hide' edit command did not always work.
  • Fix for C++ using SharedCLibrary. Examples Makefile updated to build hello world examples in different ways.
  • Various documentation updates.

GCCSDK cross-compilation improvements:

  • Improved memory debugging support, allowing use of Dmalloc instead of Fortify.
  • Allow building of processor specific toolchains using the --with-arch, --with-tune and --with-float configure options. In particular, allow building of GCC and UnixLib which, apart from ARMv3, also target ARMv3M (like ARM7), ARMv4 (like StrongARM) and ARMv5TE (like XScale) architectures by default.
  • Improvements of the "porting scripts" which are also used by the GCCSDK Autobuilder:
    • Autobuilder now uses separate X libraries instead of relying on monolithic X tree. Many other autobuilder packages updated. Non-Debian source fetcher improved. Many dependencies added so that many packages can be built with just one command.
    • Faster --ro-recursive implementation.
    • Parallel build support.
    • Created pkg-config wrapper to make sure only cross-compiled pkg-config files are found.

RISC OS binaries : Download

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_3_4_6_v2

GCCSDK GCC 3.4.6 Release 1

Released on 12 June 2006. This is the last upstream compiler release in the 3.4.x series, and is largely a feature addition release with a small number of non-critical bug fixes. Most future development upstream and for RISC OS will focus on GCC 4.x series compilers. In particular, the forthcoming GCC 4.2 version. There may be future releases of GCC 3.4.6 for RISC OS with bug fixes if required.

  • cmunge: Upgraded to v0.76 which has fixes for the carry-capable veneer return problem and a workaround for the broken handling of the system call in Pace SCL seen on IYONIX pc. All details in !gcc.docs.CMunge.History.
  • Provided two new GCC options -mlibrary-static-data-offset and -mclient-static-data-offset (latter being default) which when compiling module code to be able to use the library static data offset (at sl-540) instead of the client static data offset (sl-536). Graham Shaw.
  • Added resgen, a tool to create an AOF file encapsulating one or more files ready for (de)registering with ResourceFS.
  • Several bug fixes and enhancements were done:
    • as : solved bug #149; support for offset parameter in ALIGN; support for ALIGN AREA attribute; alignment happens with zero bytes instead of random bytes; support for rotated constants.
    • decaof : made it more robust.
    • drlink : new option -strict to treat warnings as errors. The linker invoked by gcc will add the option -strict when environment variable TLINK_STRICT has been defined (value unimportant).
    • gcc : better -mapcs-26 vs -mapcs-32 behaviour but note that -mapcs-26 support is deprecated.
    • gcc/as/drlink : RISC OS binaries have support for reading/writing "program/c" RISC OS files in addition to "c.program" files (but the command line argument still specifies them as "program.c").
    • libfile : increased compatibility with Acorn/Castle libfile version.
    • UnixLib : bug fix details in separate !gcc.docs.UnixLib.Changes file.
    • SharedUnixLibrary (v1.10) : support for RISC OS versions where the module private word is in USR read-only memory.
  • Various Autobuiler and porting-tool enhancements.
  • GCCSDK build enhancements:
    • Move CVS to SVN changes.
    • GCC ARM backend/drlink : support for 64-bit platforms (x86_64).
    • Solaris 8 SPARC support

RISC OS binaries : Download

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_3_4_6_v1

GCCSDK GCC 3.4.5 Release 1

Released on 15 February 2006. This is the first and most probably the only release of GCC 3.4.5 for RISC OS.


  • Update to the GCC 3.4.5 release.
  • RISC OS modules can now be created in C++ too.
  • cmunge: Upgraded to v0.72 which now contains GCCSDK support and several bugs fixes and enhancements.
  • Porting tools are now using the environment variables GCCSDK_INSTALL_ENV and GCCSDK_INSTALL_CROSSBIN to locate their files. This allows easy switching between multiple cross-compiler versions or installation at non-default directories.
  • Included Andreas Dehmel's DRenderer v0.52 source & binary which recently became GPL licensed. Any future development of DRenderer can happen in the GCCSDK project.

Important bug fixes:

  • Longstanding Fortran COMMON bug is fixed.
  • Calling SharedCLibrary functions (-mlibscl option) having one or more float arguments resulted in wrong behaviour. This is now fixed.
  • as: Under some circumstances, reserved AOF symbol attributes were set and this could be triggered too by GCC usage of 'as'. drlink: A warning is given when unsupported/reserved AOF symbol attributes are detected.
  • UnixLib's regex implementation is now derived from the PostgreSQL codebase resulting in significantly faster timings.
  • UnixLib got several bug fixes which improved its stability and its API compliance.
  • The module SharedUnixLibrary got two important bug fixes resulting in version 1.09.
  • Removed the old (26 bit only) rink version as there is now elsewhere a 26/32 bit neutral version.

RISC OS binaries : Download

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_3_4_5_v1

GCCSDK GCC 3.4.4 Release 3

Released on 8 July 2005. This is the third full release of GCC 3.4.4 to RISC OS.

  • This is a full release of the upstream 3.4.4 compiler and the first released version of GCC to have RISC OS module support.
  • This version also contains more fixes and improvements to GCC and UnixLib. See the 'Changes' document inside !gcc for more information.
  • This release includes SharedUnixLibrary 1.07.

RISC OS binaries : Download

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_3_4_4_v3

GCCSDK GCC 3.4.4 Release 2

Released on 6 May 2005. This is the second full release of GCC 3.4.4 to RISC OS.

  • Despite the name, this is technically a pre-release version of the upstream 3.4.4, but is simply labelled 3.4.4 for RISC OS purposes. We consider this compiler stable.
  • This version contains more fixes and improvements to GCC and UnixLib than any previous version. See the 'Changes' document inside !gcc for more information.
  • This release includes SharedUnixLibrary 1.06.

RISC OS binaries : Download

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_3_4_4_v2

GCCSDK GCC 3.4.4 Release 1

Released on 25 December 2004. This is the first release of GCC 3.4.4 for RISC OS.

  • As with 3.4.1, there are again extensive improvements to UnixLib, and some important GCC and toolchain bug fixes.

RISC OS binaries : Download

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_3_4_4

GCCSDK GCC 3.4.1 Release 1

Released on 5 October 2004. This is the first and only release of GCC 3.4.1 for RISC OS. This GCC release was taken after abandoning the 3.3 branch.

  • It contains many extensive improvements to UnixLib.

RISC OS binaries : Download

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_3_4_1

GCCSDK GCC 3.3.3 Pre-release 2

Released on 18 April 2004. This is the second release candidate of the first big update to RISC OS GCC in two years. It is is considered stable enough for general use. It contains a C, C++ and Fortran 77 compiler along with an assembler, a linker and the standard run-time libraries, Libstdc++ and a pre-release of UnixLib 4.0.

The Fortran compiler is an optional download and has not undergone much testing. You are welcome to try it.

This release contains bug fixes for RISC OS filename handling, an interactivity problem with AMU and updates for diffutils, flex, grep, make, patch and sed.

RISC OS binaries : Download

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_3_3_3_pre2

GCCSDK GCC 2.95.4 Release 3

Released on 5 January 2003. This is the third release of GCC 2.95.4 for RISC OS. The reason for release is to correct a bug in the backend assembler that can cause miscompilation of pre/post index addressing in LDR/STR instructions.

The Fortran compiler is an optional download but it is still not supported. The G95 compiler is improving and now supports basic code generation, but is not anywhere near usable yet.

RISC OS binaries : Download

Source : svn co svn://svn.riscos.info/gccsdk/tags/release_2_95_4_v3


This was the first compiler port. It is considered stable and functional. There are a few minor installation problems. The compiler has source code translators for C, C++, Pascal, Ada 9X and Fortran 77.

Its Unixlib contains many bugs, and it should be avoided.

This distribution has not been updated since April 1997.


GCC 2.4.5


GCC and GCCSDK pages

GCC for RISC OS, GCC tutorial, GCC common switches, GCC for beginners, UnixLib, ELFLoader
GCCSDK and Unix porting
GCCSDK, GCCSDK Releases, GCCSDK Development, Using GCCSDK, Autobuilder Development and Packaging Cygwin setup, Accelerating autobuilder with apt-proxy, ChoX11, Developer help wanted

Personal tools