Sourcery G++ Lite Release Notes

This section documents Sourcery G++ Lite changes for each released revision.

Changes in Sourcery G++ Lite 2008q1-126

Disassembler bug fix.  A bug in the disassembler has been fixed that formerly caused objdump to crash when processing raw binary files, or other executables with an empty symbol table.

NEON assembler symbols.  An assembler bug that caused spurious undefined symbols to be generated has been fixed. The mov d0, d1 instruction would incorrectly cause an undefined symbol d1 to be created.

Changes in Sourcery G++ Lite 2008q1-102

ARM Cortex-A9 processor support.  The compiler can now generate code optimized for the ARM Cortex-A9 processor. This is enabled by the the -mcpu=cortex-a9 command-line option.

MOVW and MOVT relocations.  A linker error that resulted in incorrect offsets when processing relocations on MOVW and MOVT instructions referencing mergeable string sections has been fixed.

Improved argument-passing code.  The compiler can now generate more efficient code for certain functions whose arguments must be sign-extended to conform with language or ABI conventions. The required conversion was formerly being performed both in the called function and at all call sites; now the redundant conversion has been eliminated for functions that can only be called within the compilation unit where they are defined.

Linker error allocating ELF segments.  A bug where the linker produces an incorrect error message with segments at the top of the address space has been fixed.

GCC stack size limit increased.  On Windows hosts, the maximum stack size for the GCC executable has been increased. This means that more complex programs can be compiled.

Invalid object file after strip.  A bug in the assembler has been fixed that formerly caused .set symbol expression constructs to emit symbol in the wrong section. This in turn caused inconsistent behavior after stripping the symbol table.

GCC update.  The GCC package has been updated to version 4.2.3. This version includes numerous bug fixes since GCC 4.2.

License checking on Linux.  Sourcery G++'s license-checking logic now includes a workaround for a kernel bug present in some versions of Linux. This bug formerly caused failures with an error message from the cs-license component.

Cortex-R4F and VFPv3-D16.  Sourcery G++ now supports the ARM Cortex-R4F CPU and the VFPv3-D16 floating-point coprocessor. These can be selected with -mcpu=cortex-r4f and -mfpu=vfpv3-d16, respectively.

Invalid dllimport and dllexport attributes.  GCC now correctly diagnoses some invalid uses of dllimport and dllexport on typedef declarations.

Size optimization bug.  A code generation bug that caused corruption of function arguments when compiling with -Os has been fixed. The corruption occurred as part of the sibling call optimization.

UNC pathname bug fix.  A bug has been fixed that caused linker errors on Windows hosts when running a Sourcery G++ toolchain installed in a UNC path (\\host\directory).

Linker crash on invalid input files.  Some older versions of GCC generated object files with invalid mergeable string sections when compiling with -fmerge-all-constants. This bug was fixed in Sourcery G++ as of version 4.1-43. However, since system libraries included with some GNU/Linux distributions were affected by this bug, the linker has now been changed to accept object files with such invalid sections, rather than crash or produce an error message.

Binutils update.  The binutils package has been updated to version 2.18.50.20080215 from the FSF trunk. This update includes numerous bug fixes.

Changes in Sourcery G++ Lite 2007q3-66

Overlapping operands for long multiply instructions.  An incorrect assembler warning has been removed in the case of overlapping source and destination operands for UMULL, SMULL, UMLAL and SMLAL instructions on ARMv6 processors.

Linker crash on invalid input files.  Some older versions of Sourcery G++ Lite generated object files with invalid mergeable string sections when compiling with -fmerge-all-constants. This bug was fixed as of version 4.1-43. The linker has additionally been fixed to detect and issue an error message for such invalid input files, instead of crashing.

C++ library ABI fix.  GCC 4.2.1's std::type_info was not fully compatible with earlier versions. The ordering of four virtual functions has been fixed in this update.

Read-only variables.  The C++ compiler now places variables whose types are instantiations of template classes in a read-only data section if they are declared const and initialized with a constant value. This changes reduces the RAM usage of affected applications.

Changes in Sourcery G++ Lite 2007q3-52

Preprocessing assembly code.  The compiler driver passes -I options to the assembler, so that #include directives (processed by the preprocessor) and .include directives (processed by the assembler) use the same search path.

C++ class debug information.  The flag -femit-class-debug-always is now disabled by default. The flag produces duplicate C++ class debug information as a work-around for older debuggers.

Dynamically-initialized const variables.  Dynamically-initialized namespace-scope C++ variables are no longer placed in read-only data sections, even when marked const. These variables must be modified at startup, so they cannot be placed in ROM, even though their values cannot change once initialized.

Register allocation bug fix.  A register allocation bug has been fixed. Under rare circumstances, the bug caused incorrect code generation.

iWMMXt bug fix.  A GCC bug affecting code generation for iWMMXt processors has been fixed. The bug caused internal compiler errors when compiling some functions with large stack frames.

Default linker script.  GCC no longer uses the simulator linker script by default. To avoid a link failure, you must specify a linker script explicitly with the -T command-line option, or via the Properties item on the Project menu in the Sourcery G++ IDE.

Volatile postincrement and postdecrement bug fix.  A code generation bug that caused postincrement or postdecrement of a volatile object to reread the modified value from that object in some contexts has been fixed. The bug affected code performing a comparison of the postincrement or postdecrement expression with a constant, or that was optimized to comparison with a constant.

Widening multiply instructions for ARMv6 and later.  GCC now makes use of the 32-to-64-bit widening multiply instructions (umull, smull, umlal, and smlal) when generating code for ARMv6 and later. A bug had caused these instructions to be used for ARMv3 to ARMv5 only.

Stricter check for anonymous unions.  G++ now issues an error about invalid code that uses the same name for a member of an anonymous union and an entity in the surrounding namespace. For example, you will now get an error about code like:

int i;
static union { int i; };

because both the global variable and the anonymous union member are named i. To make this code valid you must change one of the declarations to use a different name.

Assembler code file name suffixes.  GCC now recognizes .sx as well as .S as a file name suffix indicating assembler code which must be preprocessed. The alternate suffix may be useful in conjunction with other program development tools on Windows that do not distinguish case on filenames and treat .S the same as .s, which GCC uses to indicate assembler code without preprocessing.

GCC update.  The GCC package has been updated to version 4.2.1. This version includes numerous bug fixes since GCC 4.2.

Handling of dllimport member functions within notshared classes.  G++ now assigns default ELF visibility to member functions marked dllimport, even if those member functions appear within notshared classes. As a result, it is now possible to use a notshared class in a DLL, but still define a member function marked dllimport in another DLL.

Smaller code for C++ destructors.  G++ now generates more compact code to handle the destruction of C++ objects declared at namespace scope or declared within a function scope using the static keyword.

Binutils update.  The binutils package has been updated to the 2007-08-19 version of the pre-2.18 FSF trunk. This contains many new improvements and bug fixes. For more information, refer to the manuals for the individual utilities, and to the binutils web site at http://www.gnu.org/software/binutils/.

Debugging information fix.  GCC no longer generates invalid debugging information for sections with no contents. The invalid debugging information caused the GNU/Linux prelinker to crash.

Calls to undefined weak symbols.  The linker now implements semantics that comply to the ARM EABI for R_ARM_CALL and T_ARM_THM_CALL relocations against undefined weak symbols. These now result in a jump to the next instruction.

Assembler skipping \ characters.  A bug is fixed where the assembler would skip \ characters when they appeared at certain positions in the input file. This bug primarily affected assembler macros.

Improved diagnostics for region overflow.  The linker will now give more helpful diagnostics when the object files being linked are too big for one of the memory regions defined in the linker script.

Spurious compiler warnings eliminated.  GCC no longer emits warnings when linker-specific command-line options are provided in combination with modes that do not perform linking, such as with the -c flag.

Call shortening bug fix.  GCC no longer overrides __attribute__((long_call)) on calls to locally-defined functions when the function is weak, or when it is in a different section from the caller.

Binutils update.  The binutils package has been updated from version 2.17 to the pre-2.18 FSF trunk. This is a significant update with many improvements and bug fixes.

Changes to the assembler (as) include:

  • On MIPS targets, support for additional processors and the SmartMIPS and DSP Release 2 extensions has been added.

New linker (ld) features include:

  • A new command-line option --default-script has been added to give more precise control over linker script processing.
  • There are new command-line options -Bsymbolic-functions, --dynamic-list, --dynamic-list-cpp-new, and --dynamic-list-data to control symbols that should be dynamically linked.
  • The new --print-gc-sections option lists sections removed by garbage collection.

Other changes include:

  • The objcopy utility has a new --extract-symbol option to extract only symbol table information from the input file.
  • The gprof utility now allows input files to have histogram records for several memory ranges, provided those ranges are disjoint.

For more information, refer to the manuals for the individual utilities, and the binutils web site at http://www.gnu.org/software/binutils/.

Forced alignment of array variables.  A new option -falign-arrays has been added to the compiler. Specifying this option sets the minimum alignment for array variables to be the largest power of two less than or equal to their total storage size, or the biggest alignment used on the machine, whichever is smaller. This option may be helpful when compiling legacy code that uses type punning on arrays that does not strictly conform to the C standard.

ARM EABI compliance.  Objects produced by Sourcery G++ are now marked as ARM ELF version 5 rather than ARM ELF version 4. This reflects compliance with recent revisions of the ARM EABI. Sourcery G++ still accepts objects marked with version 4.

Smaller C++ applications.  The C++ runtime library has been modified so that using namespace-scope objects with destructors does not pull in unnecessary support functions. Therefore, statically linked C++ applications compiled with -fno-exceptions are substantially smaller.

ARMv6-M floating-point bug fix.  A bug affecting conversion of wider floating-point types to subnormal float values on ARMv6-M processors has been fixed.

Changes in Sourcery G++ Lite 2007q1-21

NEON coprocessor system registers.  The assembler now accepts the MVFR0 and MVFR1 coprocessor registers in fmrx and fmxr instructions.

Disabling diagnostics for use of system header and library directories.  The warnings for use of options such as -I/usr/include when cross compiling can be disabled with a new option -Wno-poison-system-directories. This option is intended for use in chroot environments when such directories contain the correct headers and libraries for the target system rather than the host.

Thumb-2 doubleword writeback addressing modes.  An assembler bug that caused writeback addressing modes for ldrd and strd to be incorrectly encoded has been fixed.

Thumb-2 shift instruction aliases.  The assembler now accepts mov with shifted operands as an alias for Thumb-2 shift instructions. For example mov r0, r1, lsl r2 is encoded as lsl r0, r1, r2.

EABI object attribute merging.  The linker now properly merges EABI object attributes into its output file.

Thumb-2 exception return instructions.  An assembler bug that caused subs pc, lr, #const and movs pc, lr to be incorrectly encoded has been fixed.

Tag_ABI_PCS_wchar_t object attributes.  Objects generated with -fshort-wchar are now given the correct Tag_ABI_PCS_wchar_t EABI object attribute annotations.

Uppercase special register names.  The assembler now accepts both uppercase and lowercase special register names when assembling msr and mrs instructions for the Microcontroller profile of the ARM Architecture.

Changes in Sourcery G++ Lite 2007q1-10

Disassembly of overlapping sections.  A bug in the disassembler that caused code to be displayed as data (and vice-versa) in files with overlapping sections has been fixed. This mainly affects the objdump utility.

Marvell Feroceon support.  Sourcery G++ Lite now generates code optimized for Marvell Feroceon CPUs when the mcpu=marvell-f option is specified. This option also selects runtime libraries optimized for this processor.

Fix --gc-sections and C++ exceptions.  A bug in the --gc-sections linker option has been fixed. Previously this would incorrectly remove unwinding tables, breaking C++ applications that use exceptions.

Installer hangs while refreshing environment.  The Sourcery G++ installer for Microsoft Windows now updates the PATH environment variable without waiting for open applications to acknowledge the update. This change prevents open applications from blocking the installer's progress.

Improved assembler diagnostics for 8-bit offsets.  The assembler now correctly diagnoses out-of-range offsets to instructions such as LDRD as 8-bit rather than half-word offsets.

Less disk space required for installation.  Sourcery G++ Lite packages are smaller because multiple copies of files have been replaced with hard and/or symbolic links when possible. Both the size of the installer images and the amount of disk space required for an installed package have been reduced.

Thumb register corruption fix.  A bug in the compiler that could cause register corruption in Thumb mode has been fixed. The compiler was formerly emitting code to restore registers on function return that was not interrupt safe.

__aeabi_lcmp.  An error in the libgcc implementation of __aeabi_lcmp that caused incorrect results to be returned has been fixed. This is a support routine defined by the ARM EABI. GCC does not normally use this routine directly, however it may be used by third-party code.

The \@ assembler pseudo-variable.  A bug in the assembler that caused uses of the \@ pseudo-variable to be mis-parsed as comments has been fixed.

Assembly of SRS instructions.  An assembler bug that resulted in incorrect encoding of the Thumb-2 SRS instruction has been fixed. In addition the assembler supports explicit specification of the base register, as accepted by other ARM toolchains.

Symbols defined in linker scripts.  A bug is fixed that caused the linker to crash in some circumstances when a linker script defined a symbol in an output section. Typically usage is where the script contained a __DATA_LOAD = LOADADDR(.data) statement in the .data section.

Crash when generating vector code.  A bug that sometimes caused the compiler to crash when invoked with the -ftree-vectorize option has been fixed.

VFP disassembly crash.  A bug that caused crashes when disassembling some forms of the VFP fmrx and fmxr instructions has been fixed.

ARM NEON store intrinsics bug fix.  A compiler bug that incorrectly caused calls to ARM NEON store intrinsics (such as vst1_u8) to be optimized away has been fixed.

Improvements to ARM NEON support.  The ARM NEON support in GCC has been enhanced to comply with new rules for containerized vector types specified in the ARM procedure call standard. Additionally, the compiler now rejects implicit conversions between NEON polynomial vector types and NEON integer vector types of the same layout.

Propagation of Thumb symbol attributes.  Symbols referring to Thumb functions on ARM targets now have their Thumb attribute correctly propagated to any aliases defined with .set or .symver.

Complex numbers bug fix.  A bug that could lead to incorrect code generation for code using complex numbers has been fixed.

Use of system header and library directories diagnosed.  The compiler and linker now diagnose the incorrect use of native system header and library directories for cross-compilation. This typically arises from options such as -I/usr/X11R6/include hard-coded in build scripts written without a view to cross-compilation.

Linking of non-ELF images.  A linker bug that could cause a crash when linking non-ELF objects for ARM targets has been fixed.

Initialization priorities.  The constructor and destructor function attributes now accept an optional priority argument. Constructors with small priorities are run before those with larger priorities; the opposite is true for destructors. For example:

void f __attribute__((constructor(500)));
void f() {
  /* Perform initialization.  */
}

defines a function f with priority 500. This function will be run before constructors with larger priorities. Constructor and destructors with no explicit priority argument have priority 65535, the maximum permitted value.

Thumb-2 IT block code generation error fixed.  A bug in Thumb-2 code generation has been fixed. This bug would result in missing IT instructions, causing the assembler to reject the code.

ARM Cortex-R4 performance improvements.  Sourcery G++ Lite now generates faster code when compiling for the ARM Cortex-R4 processor by scheduling instructions for the processor's pipelines. To generate code for this processor, use the -mcpu=cortex-r4 command-line option.

Invalid load instructions.  A bug in the compiler which caused it to generate invalid assembly (e.g. ldrd r0, [#0, r2]) has been fixed.

VFPv3/NEON debug information.  A bug in the compiler which caused it to generate incorrect debug information for code using VFPv3/NEON registers has been fixed. The debugger is now able unable to locate and display values held in these registers.

iWMMXt compiler errors.  A compiler bug that caused invalid assembly when generating iWMMXt code has been fixed.

ARMv6-M system instructions.  An assembler bug that caused some ARMv6-M system instructions to be incorrectly rejected has been fixed. The affected instructions are msr, mrs, yield, wfi, wfe and sev.

Assembling Thumb store-multiple instructions.  The assembler now issues an error message instead of crashing on load/store multiple instructions that incorrectly use Thumb-2 addressing modes (e.g., ldmdb) in legacy Thumb syntax mode. If you want to use these address modes, you should use unified syntax mode instead.

Thumb-2 stack decrement misassembly.  An assembler bug that resulted in incorrect encoding of the 32-bit Thumb-2 form of the sub sp, sp, #const instruction has been fixed. Previously this was misassembled as subs.

Naked functions.  Functions marked with __attribute__((naked)) no longer contain prologue and epilogue code. Please refer to the GCC manual for the proper use of this attribute.

Assembly of Thumb-2 load/store multiple instructions.  The Thumb-2 ldm and stm assembly mnemonics are now assembled to ldr and str instructions when a single register is transferred, as specified in the Thumb-2 Architecture Supplement.

Conditional Thumb-2 branch instructions.  A linker bug that could cause objects involving conditional Thumb-2 branch instructions to be incorrectly rejected has been fixed.

Fix addr2line defect.  The binary utility addr2line now operates correctly on 64-bit targets with DWARF2 debug information.

Thumb-2 assembler infinite loop.  An assembler bug that would cause it to enter an infinite loop when processing some Thumb-2 assembly has been fixed.

Assembler warnings about overlapping multiplication operands.  The assembler no longer warns about overlapping Rd and Rm operands when assembling mul and mla instructions for the ARM architecture version six or above.

Alignment bug fix.  A bug has been fixed that formerly caused incorrect code to be generated in some situations for copying structure arguments being passed by value. The incorrect code caused alignment errors on stack accesses on some targets.

ARM Cortex-A8 performance improvements.  Sourcery G++ Lite now generates faster code when compiling for the ARM Cortex-A8 processor by scheduling instructions for the processor's dual-issue pipelines. To generate code for this processor, use the -mcpu=cortex-a8 command-line option.

GCC version 4.2.  Sourcery G++ Lite for ARM SymbianOS is now based on GCC version 4.2. For more information about changes from GCC version 4.1 that was included in previous releases, see http://gcc.gnu.org/gcc-4.2/changes.html.

Improve handling of corrupt debug information.  The binary utility readelf now copes more gracefully with corrupted DWARF 2 information.

Smaller C++ programs.  Rarely-used functions in the C++ runtime library have been isolated into separate object files so that they will not be included unless needed. As a result, most statically linked C++ programs are smaller.

Changes in Sourcery G++ Lite 4.1-37

Preserve volatile accesses.  Reads from volatile memory are no longer incorrectly optimized away at higher optimization levels.

Changes in Sourcery G++ Lite 4.1-34

Implicit conversions between generic vector types.  Implicit conversions between generic vector types are now only permitted when the two vectors in question have the same number of elements and compatible element types. (Note that the restriction involves compatible element types, not implicitly-convertible element types: thus, a vector type with element type int may not be implicitly converted to a vector type with element type unsigned int.) This restriction, which is in line with specifications for SIMD architectures such as AltiVec, may be relaxed using the flag -flax-vector-conversions. This flag is intended only as a compatibility measure and should not be used for new code.

type_info comparison fix.  Comparison of type_info objects now uses pointer comparison where possible.

C++ forced unwinding fixes.  Some bugs relating to forced unwinding through C++ code have been fixed.

Support for additional Stellaris boards.  Linker scripts are provided for the 6xx and 8xx series Stellaris boards.

Linux support for USB Debug Sprite.  A new driver is included to allow the Sourcery G++ Lite USB Debug Sprite to run on Linux hosts. See Chapter 3, Sourcery G++ Lite for ARM SymbianOS for additional information.

Changes in Sourcery G++ Lite 4.1-33

Linker scripts.  A bug is fixed where an erroneous linker script would cause a linker crash. An error message is now produced.

Newlib memory use improvements.  The memory overhead of linking with newlib is reduced. Applications that use only a minimal set of library features may now require significantly less memory.

Changes in Sourcery G++ Lite 4.1-31

Compiler alias analysis.  The type-based alias analysis performed by the compiler when compiling with -O2 or with -fstrict-aliasing is now more conservative. The more aggressive analysis used in previous versions sometimes resulted in incorrect code generation.

Fully relocatable preprocessor.  When cross-compiling, the default preprocessor search path includes only the directories present in the installed toolchain. This speeds up the preprocessor and prevents the unintentional use of unrelated files and directories on the machine where it is installed.

Changes in Sourcery G++ Lite 4.1-29

Support for new-style symbol hashing.  Support has been added in binutils and the prelinker for new-style (also known as DT_GNU_HASH) symbol hashing. This can dramatically speed up symbol resolution time and is particularly applicable in environments where full prelinking is not possible (for example where shared libraries are dynamically opened at runtime). The new-style hashing may be enabled by passing --hash-style=gnu to the linker.

Prelinker update.  The prelinker has been updated to the current upstream sources and some bugs affecting operation have been fixed.

Changes in Sourcery G++ Lite 4.1-28

Improved support for ROM debugging.  GDB now determines ROM regions automatically from the memory map included in target configuration files. This information is used to determine when hardware breakpoints should automatically be used (for instance the step, next and finish commands). Separate ROM configurations have been removed from the Eclipse debugger menu. The Eclipse GUI has been extended to provide improved support for debugging programs in ROM, when a memory map is not automatically available.

Changes in Sourcery G++ Lite 4.1-27

Rename Windows executables.  The Windows host tools make.exe and rm.exe are now named cs-make.exe and cs-rm.exe. This change avoids conflicts with tools provided by other distributors.

iWMMXt bug fixes.  Some bugs involving incorrect code generation and internal compiler errors when generating iWMMXt code have been fixed.

Cortex-M3 startup code.  The ARMv7M startup code (armv7m-crt0.o) incorrectly contained ARM code. This has been replaced with Thumb-2 code.

ARM EABI coverage testing support.  Coverage testing using GCOV is now supported for the ARM EABI target. Please refer to the GNU C Compiler Manual (HTML) for more information on coverage testing.

Changes in Sourcery G++ Lite 4.1-23

Windows debugging fix.  In recent releases of Sourcery G++ Lite, the GDB target remote | command would hang on Windows. This affected both command line and Eclipse debugging when using the Sourcery G++ Lite Debug Sprite.

Stellaris USB Debug Sprite improvements.  The former USB Debug Stub, armswd, is now known as the USB Debug Sprite, and has been renamed to arm-stellaris-eabi-sprite. In addition, its initialization sequence has been updated to recognize the r1p1 release of the Cortex-M3 processor.

Incompatible changes to Stellaris linker scripts.  Sourcery G++ Lite now supports linking executables to run from RAM as well as ROM. As part of this change, there are now separate RAM and ROM versions of the linker scripts for each supported board, and the former ROM-based versions have been renamed. For example, if you were formerly linking with -T lm3s10x.ld, you should now use -T lm3s10x-rom.ld to get the same behavior.

Changes in Sourcery G++ Lite 4.1-21

Eclipse debuggers.  Eclipse configurations for debugging arm-none-eabi applications using the GDB simulator and remote debug stubs have been added.

iWMMXt2 support.  The assembler and disassembler now support iWMMXt2 instructions.

NEON intrinsics support.  GCC now supports NEON intrinsics defined in the arm_neon.h header. These are the same intrinsics supported by the ARM RVCT compiler and are documented in the 'ARM NEON Intrinsics' section of the GCC manual.

Changes in Sourcery G++ Lite 4.1-19

ARMv4t linux multilib.  Linux configurations now support ARMv4t CPUs.

Linker scripts.  Several problems with the linker scripts for bare-metal targets have been fixed.

Changes in Sourcery G++ Lite 4.1-18

Binutils update.  The binutils in this release is based on the final binutils 2.17 release.

GDB update.  The included version of GDB has been upgraded to 6.5.50.20060822. This includes numerous bug fixes from the previous version.

GDB support for flash memory.  The GDB load command can now write to flash memory, if the remote debugging stub contains appropriate support.

Compiler support for NEON.  Initial GCC support for autovectorization and generation of NEON SIMD instructions has been added.

Bare metal Cortex-M3 configurations.  Bare metal configurations now support generating images for use on ARMv7M devices (eg. Cortex-M3).

iWMMXt support in GLIBC.  GLIBC's setjmp and longjmp now support saving and restoring iWMMXt registers on hardware with those registers. This requires a kernel reporting iwmmxt in the Features entry in /proc/cpuinfo.

iWMMXt exception handling support.  Exception handling now restores the values of iWMMXt registers correctly.

Corrected IPC functions.  A bug in GLIBC's msgctl, semctl, and shmctl functions has been corrected.

Changes in Sourcery G++ Lite 4.1-16

GCC update.  This release is based on GCC 4.1.1.

Fully relocatable compiler.  The compiler now searches for its components only in the directory where it has been installed, and no longer also searches pathnames matching the directory where it was configured. This speeds up the compiler and prevents problems with unintentionally finding unrelated files or directories on the machine where it has been installed.

Stack permission marking for ARM GNU/Linux.  Non-executable stacks can provide increased security against some forms of buffer overflow attacks. The tools involved must coordinate the annotation of required stack permissions, either executable, or non-executable. For ARM GNU/Linux targets the compiler now outputs annotations indicating the required stack permissions.

Changes in Sourcery G++ Lite 4.1-15

Stabs debugging information support.  Using the Stabs debugging format (available with -gstabs or -gstabs+) now works in conjunction with -mthumb. CodeSourcery recommends the default DWARF debugging format (available with -g) as DWARF is a more comprehensive debugging format.

Changes in Sourcery G++ Lite 4.1-13

Stellaris linker scripts in IDE.  Linker scripts may now be selected via a drop-down menu in Eclipse.

Stellaris linker scripts for 3xx series CPUs.  The linker scripts for 3xx Series CPUs now place the ISR vector at address zero, as required by all Cortex-M3 cores.

Stellaris USB Debug Sprite improvements.  Bug fixes and new features include:

  • A bug that caused the stub not to correctly update the program counter and other register values was fixed. As a result of this fix, it is now possible to run programs residing in SRAM using the continue command from GDB.
  • The stub no longer prints status messages via GDB console output when invoked with the -q command-line option.
  • The stub's initialization sequence was updated to recognize revision C Cortex-M3 hardware.

Changes in Sourcery G++ Lite 4.1-9

Stellaris USB Debug Sprite improvements.  Program images exceeding 4K can now be uploaded to flash memory.

Additional Stellaris boards supported.  The Stellaris 301, 310, 315, and 316 CPUs are now supported. Linker scripts have been added for these boards.

Changes in Sourcery G++ Lite 4.1-8

Stellaris USB Debug Sprite improvements.  Several bug fixes and enhancements were made to the USB Debug Stub. In particular:

  • Bugs in the implementation of open, read, and lseek were fixed.
  • Support was added for isatty, rename, unlink, and system.
  • Memory reads that span 4K block boundaries now work correctly.

Changes in Sourcery G++ Lite 4.1-4

Runtime libraries.  Support for ARMv7 including Cortex-M3 and pure Thumb-2.

Assembler.  Support for NEON and VFPv3, including unified NEON/VFP syntax.

Changes in Sourcery G++ Lite 4.1-1

Initial release.  This release is based on GCC 4.1.0.