Appendix A. Sourcery CodeBench Lite Release Notes

This appendix contains information about changes in this release of Sourcery CodeBench Lite for ARM EABI. You should read through these notes to learn about new features and bug fixes.

Table of Contents

A.1. Changes in Sourcery CodeBench Lite for ARM EABI

A.1. Changes in Sourcery CodeBench Lite for ARM EABI

This section documents Sourcery CodeBench Lite changes for each released revision.

A.1.1. Changes in Sourcery CodeBench Lite 2012.09-63

Code size optimization improvement.  When compiling with -Os or -O2 and higher GCC no longer enables the -funroll-loops option by default. This change reduces the size of optimized code produced by Sourcery CodeBench and brings its behavior back into conformance with other GCC distributions. For more information about the tradeoffs between optimizing for size versus speed please see the Sourcery CodeBench Knowledge Base .

Loop optimization bug fix.  A compiler bug that caused some forms of loop to be mis-optimized when using the -fpromote-loop-indices option (enabled by default when optimizing for speed) has been fixed.

Wrong-code bug fix.  A bug in GCC's scheduler has been fixed that sometimes caused incorrect code to be generated.

Install to empty directory failure fixed.  A bug that prevented installation of Sourcery CodeBench Lite into an existing empty directory has been fixed.

GDB simulator removed.  The built-in ARM processor simulator has been removed from the debugger. The stand-alone arm-none-eabi-run executable has also been removed.

Updated system requirements.  The host operating system requirements for Sourcery CodeBench Lite have been updated. The minimum versions of GNU/Linux now supported are Red Hat Enterprise Linux 5, SuSE Enterprise Linux 10, Fedora Core 6, Ubuntu 8.04, and Debian 5, or later versions of these distributions running on 32-bit or 64-bit Intel or AMD CPUs.

A.1.2. Changes in Sourcery CodeBench Lite 2012.09-17

GCC version 4.7.2.  Sourcery CodeBench Lite for ARM EABI is now based on GCC version 4.7.2. For more information about changes from GCC version 4.6 that was included in previous releases, see http://gcc.gnu.org/gcc-4.7/changes.html.

Select correct multilib for -mcpu=cortex-a15 A GCC bug has been fixed that caused an incorrect multilib to be selected when compiling with -mcpu=cortex-a15.

Incorrect warnings for naked functions fixed.  A bug in the C++ compiler has been fixed that caused it to incorrectly warn about missing return statements in functions with the naked attribute, which can only include inline assembly statements.

Linker script symbols.  The linker now supports a new HIDDEN keyword to define symbols with object scope. Refer to the linker manual for details.

Binutils version 2.23.  Sourcery CodeBench Lite for ARM EABI is now based on binutils version 2.23.

Fix for interrupts on Cortex-M3.  A bug in CS3 has been fixed that caused errors while linking RAM-profile applications using interrupts for Cortex-M3 targets.

Support for Xilinx ZC702 Evaluation Kit.  Sourcery CodeBench Lite now includes support for creating and debugging of applications for the Xilinx Zynq-7000 EPP ZC702 Evaluation Kit.

GDB update.  The included version of GDB has been updated to 7.4.50.20120716. This update adds numerous bug fixes and features. Refer to http://www.gnu.org/software/gdb/news for more information.

Removal of the Sourcery CodeBench Debug Sprite.  The Sourcery CodeBench Debug Sprite has been removed.

A.1.3. Changes in Sourcery CodeBench Lite 2012.03-56

New Sourcery CodeBench Lite branding.  Sourcery G++ has been renamed to Sourcery CodeBench. This change affects the names of the default installation directory and installer-created shortcuts, but no internal pathnames or tool names within the installation directory have been changed.

Fix for internal compiler error.  A bug that caused GCC to report an internal compiler error in push_minipool_fix has been fixed.

Internal compiler error with NEON intrinsics.  A compiler bug has been fixed that caused internal compiler errors when using certain NEON intrinsics.

Nondeterministic code generation bug fix.  A GCC bug has been fixed that caused nondeterministic code generation for some input files when optimizing.

Fix for compiler hang.  A bug that caused GCC to become stuck in an infinite loop in the optimizer has been fixed.

Internal compiler error.  A GCC bug has been fixed that caused an internal compiler error when sign extending the result of an array subscript expression with an index greater than 255.

GCC version 4.6.  Sourcery CodeBench Lite for ARM EABI is now based on GCC version 4.6. For more information about changes from GCC version 4.5 that was included in previous releases, see http://gcc.gnu.org/gcc-4.6/changes.html.

Fix for internal compiler error.  A GCC bug has been fixed that caused an internal compiler error when using pointer casts in C++0x constexpr initialization expressions.

ARM VFP9-S errata workaround.  A compiler workaround for ARM Errata Notice GENC-010704 (760019: Canceled FDIV or FSQRT can be executed twice) has been implemented.

Fix for bit-field optimization bug.  A compiler bug that caused incorrect code to be generated for programs using bit-fields has been fixed.

GCC version 4.6.3.  Sourcery CodeBench Lite for ARM EABI is now based on GCC version 4.6.3. For more information about issues that have been fixed since version 4.6.1, see http://gcc.gnu.org/gcc-4.6/changes.html.

Compiler crash fixed.  A GCC bug that occasionally caused an internal compiler error during register allocation has been fixed.

Map file name demangling bug fix.  GCC now properly passes the --demangle and --no-demangle options to the linker to control map file output. The default behavior on all hosts is now to demangle C++ names.

GCC stack usage improvement.  GCC now generates better code for stack allocation in some cases when compiling with -fno-strict-aliasing.

ARM miscompilation fix.  A bug has been fixed that caused miscompilation of some expressions involving the minimum or maximum idiom, such as (a > 0) ? a : 0.

Register allocation bug fix.  A bug in the register allocator that caused incorrect code generation has been fixed.

Linker --gc-sections option bug fix.  A bug has been fixed that caused the linker to incorrectly remove the .debug_types section when using the --gc-sections option.

Linker --gc-sections bug fix.  A linker bug that incorrectly caused undefined references to be diagnosed when the --gc-sections option is used has been fixed.

Binutils version 2.21.  Sourcery CodeBench Lite for ARM EABI is now based on binutils version 2.21.

Assembler crash.  The assembler now warns when there is line information for the *ABS* section, rather than crash. This can occur when the .offset directive is used incorrectly.

Installer failure during upgrade.  Some recent releases were affected by an installer bug on Windows hosts that caused installing a newer version of Sourcery CodeBench Lite into the same directory to fail with the error Sourcery CodeBench Lite for ARM EABI upgrade failed. This bug has now been fixed, but the affected releases cannot be upgraded. As a workaround, uninstall the older release before installing the new version.

CS3 bug fix for Xilinx Zynq-7000.  A bug that caused undefined symbol errors in the CS3 library when linking programs for the Xilinx Zynq-7000 has been fixed.

Freescale i.MX53 QSB support.  Sourcery CodeBench Lite now supports the Freescale i.MX53 QSB board.

Fix for crash in GDB maint print arch A bug in the GDB command maint print arch that sometimes caused GDB to crash has been fixed.

C++ debugging bug fix.  A GDB bug has been fixed that caused GDB to fail to find enum constants in base classes when debugging C++ code.

Fix for crash in GDB.  A memory corruption bug in GDB has been fixed that under very rare circumstances made it crash or exhibit other unpredictable behavior. On GNU/Linux hosts, this bug caused crashes with an error message similar to: *** glibc detected *** arm-none-eabi-gdb: free(): invalid next size (normal): 0x09466198 *** followed by a backtrace.

GDB interrupt handling bug fix.  A bug in GDB has been fixed that caused it to sometimes fail to interrupt lengthy single-step operations (as by a Ctrl+C when using GDB from the command line).

Fix debugger remote target interruption.  A bug in GDB's handling of requests to interrupt execution on a remote target has been fixed that caused it to stop the target but not emit a stopped MI record.

Fix GDB crash during connection to debug agent.  A bug has been fixed that caused GDB to crash while connecting to any debug agent through standard IO where the debug agent had detected an early error and terminated the communication.

GDB internal error fix.  A bug has been fixed that caused GDB to produce messages of the form: warning: (Internal error: pc 0x1000a0 in read in psymtab, but not in symtab.) when taking the addresses of symbols from objects added with the add-symbol-file command.

Improved disassembler performance in the debugger.  GDB's disassembler has been improved to use more efficient memory access on remote targets.

Fix GDB crash in debugging Thumb assembly routines.  A bug in GDB has been fixed that caused a crash when debugging Thumb assembly routines that switch stacks by writing the stack pointer in the function prologue.

Debug Sprite option defaults.  The Sourcery CodeBench Debug Sprite now uses default option values specified in board configuration files. Options included in the device URL override the default values.

Changes to host operating system requirements.  The minimum required Microsoft Windows OS needed to run Sourcery CodeBench Lite is now Windows XP (SP1).

A.1.4. Changes in Older Releases

For information about changes in older releases of Sourcery CodeBench Lite for ARM EABI, please refer to the Getting Started guide packaged with those releases.