Table of Contents
This section documents Sourcery G++ Lite changes for each released revision.
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.
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:
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.
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.