Appendix A. Sourcery G++ Lite Release Notes

This appendix contains information about changes in this release of Sourcery G++ Lite for SuperH uClinux. You should read through these notes to learn about new features and bug fixes.

Table of Contents

A.1. Changes in Sourcery G++ Lite for SuperH uClinux

A.1. Changes in Sourcery G++ Lite for SuperH uClinux

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

A.1.1. Changes in Sourcery G++ Lite 2010.09-60

GCC fix for duplicated symbols.  A GCC optimizer bug that caused multiple definitions of local symbols has been fixed. Code affected by the bug was rejected by the assembler.

New -fstrict-volatile-bitfields The compiler has a new option, -fstrict-volatile-bitfields, which forces access to a volatile structure member using the width that conforms to its type. This option is enabled by default. Refer to the GCC manual for details.

Linker debug information fix.  A bug in linker processing of debug information has been fixed. The bug sometimes prevented the Sourcery G++ debugger from displaying source code if the executable was linked with the --gc-sections option.

A.1.2. Changes in Sourcery G++ Lite 2010.09-13

Changes to Sourcery G++ version numbering.  Sourcery G++ product and Lite toolchains now uniformly use a version numbering scheme of the form 2010.09-60. The major and minor parts of the version number, in this case 2010.09, identify the release branch, while the final component is a build number within the branch. There are also new preprocessor macros defined by the compiler for the version number components so that you may conditionalize code for Sourcery G++ or particular Sourcery G++ versions. Details are available in the Sourcery G++ Knowledge Base.

GCC fix for reference to undefined label.  A bug in the optimizer that caused GCC to emit references to undefined labels has been fixed.

Alignment attributes.  A bug has been fixed that caused the compiler to ignore alignment attributes of C++ static member variables where the attribute was present on the definition, but not the declaration.

Compiler optimization improvements.  The compiler has been enhanced with a number of optimization improvements, including:

  • More efficient assignment for structures containing bitfields.
  • Better code for initializing C++ arrays with explicit element initializers.
  • Improved logic for eliminating/combining redundant comparisons in code with nested conditionals.
  • Better selection of loop variables, resulting in fewer temporaries and more efficient register usage.
  • Better code when constant addresses are used as arguments to inline assembly statements.
  • Better code for copying small constant strings.

GCC version 4.5.1.  Sourcery G++ Lite for SuperH uClinux is now based on GCC version 4.5.1. For more information about changes from GCC version 4.4 that was included in previous releases, see http://gcc.gnu.org/gcc-4.5/changes.html.

Smaller C++ programs with -g An assembler bug has been fixed that caused unnecessary references to exception-handling routines from C++ programs when debug information is enabled. For programs that do not otherwise use exceptions, this change results in smaller code size.

Additional validation in the assembler.  The assembler now diagnoses an error, instead of producing an invalid object file, when directives such as .hidden are missing operands.

Strip bug fix.  A bug in the strip and objcopy utilities, which resulted in stripped object files that the linker could not recognize, has been fixed.

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

Linux kernel headers update.  Linux kernel header files have been updated to version 2.6.35.2.

GDB update.  The included version of GDB has been updated to 7.2.50.20100908. This update adds numerous bug fixes and new features, including improved C++ language support, a new command to save breakpoints to a file, a new convenience variable $_thread that holds the number of the current thread, among many other improvements.

GDB crash fix.  A bug has been fixed that caused GDB to crash on launch if the environment variable CYGPATH is set to a program that does not exist or cannot be executed.

A.1.3. Changes in Sourcery G++ Lite 4.4-206

Improved code generation for if statements.  The compiler can now generate better code for if statements when the then and else clauses contain similar code.

Linker bug fix for --section-start A linker bug that caused --section-start to fail to work as documented if the section is defined in multiple object files has been fixed.

Internal compiler error fix.  A bug has been fixed that caused the compiler to crash when compiling code using a large constant in a conditional expression at -O2 or higher optimization levels.

GCC internal compiler error.  A bug has been fixed that caused GCC to crash when compiling some C++ code using templates at -O2 or -O3.

Debugging preprocessed source code.  A compiler bug has been fixed that caused debug output to erroneously contain the name of the intermediate preprocessed file.

GCC internal compiler error with optimize attribute.  A bug has been fixed that caused the compiler to crash when invoked with the -O0 or -O1 option on code using the optimize attribute to specify higher optimization levels for individual functions.

A.1.4. Changes in Sourcery G++ Lite 4.4-141

Initial release.  This is the initial release for SuperH uClinux.