GCC extensions

This is a list of (experimental) extensions to GCC which, for one reason or the other, did not (yet) make it into the official source tree. Please direct feedback and bugreports to their respective maintainers, not our mailing lists.

PentiumGCC

The PentiumGCC (short PGCC) is an extension of GCC specifically aimed at the newer Intel chips and their clones (Pentium, PPro, Pentium-II and the Cyrix6x86 and AMD-K6+ chips). The current goal is to enhance GCC to a point where it generates code as fast as PGCC, but until that work is finished PGCC is still maintained, and often achieves substantial speed improvements over GCC.

ATMEL AVR port

This is an experimental port for the 8bit ATMEL AVR micro controllers.

M68HC11 port

This is a port of GCC, GDB and the Binutils for Motorola 68HC11 (later 68HC12). This port supports 8,16,32 and 64-bits integers as well as 32 and 64-bits floats. It uses ELF32 for object files and DWARF-2 for debugging information.

Patch to build elsewhere than in the source directory using Sun make

If, for some reason, you cannot use GNU make nor build in the srcdir, this patch for GCC 2.95.1 will allow you to build GCC using Sun make in a srcdir != objdir setup.

Apply it with (for example) GNU patch:

patch -p1 -d /path/to/gcc-2.95.1 < gcc-2.95.1-sun-make-patch1.txt

This patch is not supposed to interfere with proper building and installation on non-Sun systems or when using GNU make.

Contact: hp@axis.se

Libg++

Libg++, the GNU C++ library, is an attempt to provide a variety of C++ programming tools and other support to GNU C++ programmers. It has been available for quite some time now, and, although it has been superseded by libstdc++, it is still providing some useful services. And, it has proven to be a good testsuite for the compiler...

Bounds checking patches for GCC releases and GCC snapshots

These patches add a -fbounds-checking flag that adds bounds checking tests to pointer and array accesses. Richard Jones developed the patches against gcc-2.7 in 1995. Herman ten Brugge is the current maintainer and has updated the patches for gcc-2.95.2. William Bader has unofficial updates for selected GCC snapshots.

You may freely mix object modules compiled with and without bounds checking. The bounds checker also includes replacements for mem* and str* routines and can detect invalid calls against checked memory objects, even from modules compiled without bounds checking.

Here is a compilation and execution of an example program.

These patches are unrelated to the fat pointer bounds checking patches by Greg McGary <gkm@eng.ascend.com> which change the size of pointers and require building modified versions of libc and most other libraries that your program calls. Greg's patches will eventually be incorporated into GCC. If you can use Greg's fat pointer bounds checker, it has the advantage of better run-time performance and support for languages other than C.

StackGuard

StackGuard emits programs hardened against "stack smashing" attacks on x86 GNU/Linux. StackGuard 2.0 is based on egcs-1.1.2 (gcc version 2.91.66); StackGuard 1.21 is based on gcc-2.7.2.

Cacheprof

An open-source tool for investigating cache effects in programs (on x86 GNU/Linux, though possibly portable to other x86 POSIX targets).


GCC Museum

In this section you will find extensions which do not (directly) apply to current GCC sources but are of historical interest or may be helpful to consult for future development.

Development tools for the TMS340x0

A GCC port to a bit-addressable architecture.