Table of Contents
This section documents Sourcery G++ Lite changes for each released revision.
gdbserver bug fix. A bug has been fixed that caused gdbserver to crash when debugging programs using thread-local storage without other multi-threading features.
@
fix.
A bug has been fixed in the processing of
FILE
@
command-line options by GCC, GDB, and other tools.
The bug caused any options in
FILE
FILE
following a blank line
to be ignored.
Preprocessor error handling.
The preprocessor now treats failing to find a file referenced
via #include
as a fatal error.
Stack unwinding bug fix. A compiler bug that resulted in incorrect stack unwinding information has been fixed. The bug interfered with the next and finish commands when debugging, and could cause programs using C++ exception handling to crash.
ELF file corruption with strip. A bug that caused strip to corrupt unusual ELF files has been fixed.
GDB support for Cygwin pathnames. A bug in GDB's translation of Cygwin pathnames has been fixed.
gdbserver multi-threaded debugging fix. A bug has been fixed that prevented gdbserver from exiting after debugging a multi-threaded program.
GCC internal compiler error. A bug has been fixed that caused the compiler to crash when optimizing code that casts between structure types and the type of the first field.
ELF Program Headers.
The linker now better diagnoses errors in the usage of
FILEHDR
and PHDRS
keywords in PHDRS
command of linker
scripts. Refer to the linker manual for more information.
ColdFire MCF5441x support.
Sourcery G++ now supports the Freescale MCF5441x (Modelo)
family of microprocessors. To compile for these CPUs
use the -mcpu=54410
, -mcpu=54415
,
-mcpu=54416
, -mcpu=54417
, and
-mcpu=54418
command-line options.
Linux kernel headers update. Linux kernel header files have been updated to version 2.6.30. Among other things this fixes assembler failures with functions that convert integers to different endianness.
Optimizer improvements. When optimizing for speed, the compiler now uses improved heuristics to limit certain types of optimizations that may adversely affect both code size and speed. This change also makes it possible to produce better code when optimizing for space rather than speed.
EGLIBC version 2.10.
Sourcery G++ Lite for ColdFire GNU/Linux now includes the EGLIBC version 2.10
library, based on GNU C Library version 2.10.
This is a major upgrade from the version 2.5 included in
previous releases of Sourcery G++,
and brings GLIBC support up to date on the ColdFire platform.
New features introduced by this upgrade include support for NPTL
(Native POSIX Thread Library) and related features such as
thread-local storage.
For more information about other EGLIBC changes, see
http://www.eglibc.org/news#eglibc_2_10
.
Linux kernel update required. As a consequence of upgrading to a more current version of EGLIBC, Sourcery G++ Lite now requires more recent Linux kernel versions and an additional kernel patch. Refer to Section 3.3, “Target Kernel Requirements” for more information.
GDB update. The included version of GDB has been updated to 6.8.50.20090630. This update adds numerous bug fixes and new features, including support for multi-byte and wide character sets and improved C++ template support.
GDB and third-party compilers. Some bugs that caused GDB to crash when debugging programs compiled with third-party tools have been fixed. These bugs did not affect programs built with Sourcery G++.
Remote debugging hardware watchpoint bug fix. A GDB bug has been fixed that caused hardware watchpoint hits to be incorrectly reported in some cases.
GDB internal warning fix.
A GDB bug has been fixed that caused warnings of the form
warning: (Internal error: pc
.
address
in read in psymtab, but not in symtab.)
Binutils update. The binutils package has been updated to version 2.19.51.20090709 from the FSF trunk. This update includes numerous bug fixes.
Code generation for string literals. A defect in the generation of code for string literals has been corrected. Multiple occurrences of the same string literal in the same file sometimes resulted in incorrect code.
Configuration file required for Debug Sprite. When invoking the Sourcery G++ Debug Sprite from the command line, it is now required to specify a board configuration file argument. This change eliminates a source of confusion and errors resulting from accidental omission of the configuration file argument, since recent improvements to debugger functionality depend on properties specified in the configuration file. Refer to Chapter 5, “Sourcery G++ Debug Sprite” for more details on invoking the Sourcery G++ Debug Sprite from the command line.
GDB segmentation fault bug fix. A bug in the Sourcery G++ Debug Sprite that sometimes caused GDB to crash when inspecting register contents has been fixed.
Register variable corruption.
A compiler bug has been fixed that caused incorrect code to be
generated when the frame pointer or other special-use registers
are used as explicit local register variables, introduced via the
asm
keyword on their declarations.
Startup code debugging fixes.
Two GDB bugs have been fixed that caused errors when
debugging startup code. One bug caused an internal error
message; the other caused the error Cannot find
bounds of current function
.
-fremove-local-statics
optimization.
The -fremove-local-statics
optimization is
now enabled by default at -O2
and higher
optimization levels.
Elimination of spurious warnings about NULL
.
The C++ compiler no longer issues spurious warnings about
comparisons between pointers to members and
NULL
.
Vectorizer improvements.
The compiler now generates improved code for accesses to static
nested array variables
(e.g. static int foo[8][8];
).
GCC version 4.4.1.
Sourcery G++ Lite for ColdFire GNU/Linux is now based on GCC version 4.4.1.
For more information about changes from GCC version 4.3 that was
included in previous releases, see
http://gcc.gnu.org/gcc-4.4/changes.html
.
Linker map address sorting.
The map generated by the linker -Map
option
now lists symbols sorted by address.
GDB finish internal error. A bug has been fixed that caused a GDB internal error when using the finish command. The bug occurred when debugging optimized code.
GCC version 4.3.3.
Sourcery G++ Lite for ColdFire GNU/Linux is now based on GCC version 4.3.3.
This is a bug fix update to GCC.
For more information about changes from GCC version 4.3.2 that was
included in previous releases, see
http://gcc.gnu.org/gcc-4.3/changes.html
.
Bug fix for assembly listing.
A bug that caused the assembler to produce corrupted
listings (via the -a
option) on Windows
hosts has been fixed.
Incorrect code when using -falign-labels
.
A bug that caused the compiler to generate incorrect code
for switch
statements when the
-falign-labels
option is used has been fixed.
Reduced compilation time. Compilation and build times when using Sourcery G++ Lite are now slightly faster. This performance improvement is the result of building the compilers and other host tools with a recent version of Sourcery G++, rather than an older GCC version.
Internal compiler error with -O3
or -fpredictive-commoning
.
A bug has been fixed that caused internal compiler errors
when compiling some code with -O3
or -fpredictive-commoning
.
C++ named operators bug fix.
A bug has been fixed that caused the compiler to crash in
some cases when the C++ operators and_eq
,
bitand
, bitor
, compl
,
not_eq
, or_eq
and
xor_eq
were used in contexts where the
preprocessor converts their names to strings.
Debug information for anonymous structure types. A GCC bug in the generation of debug information for anonymous structure types in C++ code has been fixed. The bug caused printing the type information for such structures in the debugger (via the ptype command) to fail with an error message.
GDB display of source. A bug has been fixed that prevented GDB from locating debug information in some cases. The debugger failed to display source code for or step into the affected functions.
Sprite's failure to reset the target.
A bug has been fixed that sometimes caused the Sourcery G++
Debug Sprite to fail to reset the target when using the
multiple sequential connection feature (enabled via the
-m
command-line option). This problem was
specific to running the Debug Sprite on Microsoft Windows
hosts.
Installer fails during upgrade. The Sourcery G++ installer for Microsoft Windows hosts could fail during an upgrade while waiting for the previous version to be uninstalled. This bug has been fixed.
Loop optimization improvements.
A new option, -fpromote-loop-indices
, has
been added to the compiler. Specifying this option enables an
optimization that improves the performance of loops with index
variables of integer types narrower than the target machine
word size, such as char or short.
This optimization also applies to int on 64-bit
targets.
Overloaded function resolution. The C++ compiler now correctly diagnoses an error when the second operand of a comma expression is an unresolved set of overloaded functions. Previously, it incorrectly used the context of the comma expression to resolve the function.
Uninstaller removed by upgrade. The uninstaller could be incorrectly deleted during an upgrade on Microsoft Windows hosts. This bug has been fixed.
Remote debugging connection auto-retry. The target remote command within GDB now uses a configurable auto-retry timeout when establishing TCP connections. This is useful in avoiding race conditions when the remote GDB stub or GDB server is launched simultaneously with GDB. The auto-retry behavior is enabled by default; refer to the GDB manual for details.
Extraneous linker error messages.
A linker bug that caused extraneous error messages of the form
Dwarf Error: Offset (507) greater than or equal to
.debug_str size (421).
has been corrected. This bug did not
affect the correctness of output binaries.
GDB segment warning.
Some compilers produce binaries including uninitialized data
regions, such as the stack and heap. GDB incorrectly
displayed the warning Loadable segment
"
for such binaries; the warning has now
been fixed.
name
" outside of ELF
segments
Internal compiler errors when optimizing. A defect that occasionally caused internal compiler errors when partial redundancy elimination (PRE) optimization was enabled has been corrected.
m68k-linux-gnu-objcopy bug fix.
A bug has been fixed that caused
m68k-linux-gnu-objcopy to issue an error
when generating output in the Intel HEX format and using
--change-section-lma
to change section
addresses.
Linker script search path.
The bug in the linker has been fixed that caused it not to
follow its documented behavior for searching for linker
scripts named with the -T
option. Now
scripts are looked up first in the current directory, then
in library directories specified with -L
command-line options, and finally in the default system
linker script directory.
Sprite crash on error. A bug has been fixed which sometimes caused the Sourcery G++ Debug Sprite to crash when it attempted to send an error message to GDB.
Errors when inserting breakpoints.
A GDB bug has been fixed that caused errors of the form
`
when setting a breakpoint on function
' found in
filename
psymtab but not in symtab
function
.
This error commonly occurred when setting breakpoints on functions
provided by the C library.
Install directory pathnames. Bugs in the install and uninstall scripts for Linux hosts that caused errors or incorrect behavior when the Sourcery G++ install directory pathname contains whitespace characters have been fixed.
Temporary files on Microsoft Windows.
On Microsoft Windows hosts, Sourcery G++ Lite now uses the standard
Windows algorithm to choose the directory in which to place
temporary files. This change eliminates a crash that
occurred if none of the TEMP
,
TMP
, or TMPDIR
variables were
set to a suitable directory.
Open Source BDM ColdFire support. Initial support for Open Source BDM (OSBDM) probes has been added to the Sourcery G++ Debug Sprite. Both integrated and stand-alone OSBDM probes are supported. Using this feature requires installed OSBDM drivers, which are currently only available for Windows hosts. For more information, see Section 5.7, “Open Source BDM Devices”.
Internal compiler error when optimizing.
A bug has been fixed that caused internal compiler
error: in build2_stat
when compiling.
Binutils update. The binutils package has been updated to version 2.19.51.20090205 from the FSF trunk. This update includes numerous bug fixes.
GDB quit error.
A bug in GDB has been fixed that
caused quit to report Quitting:
You can't do that without a process to debug.
when
debugging a core dump file.
Internal compiler error
with -fremove-local-statics
.
An internal compiler error that occurred when using
the -fremove-local-statics
option has been
fixed. The error occurred when compiling code with
function-local static
array or structure
variables.
Corruption of block-scope variables. A compiler optimization bug that sometimes caused corruption of stack-allocated variables has been fixed. The bug affected variables declared in a local block scope in functions containing multiple non-overlapping lexical block scopes, a technique commonly used by programmers to reduce stack frame size. In some rare cases, other optimizations performed by the compiler were ignoring the local extent of such block-scope variables.
Persistent remote server connections. A GDB bug has been fixed that caused the target extended-remote command to fail to tell the remote server to make the connection persistent across program invocations.
GDB update. The included version of GDB has been updated to 6.8.50.20081022. This update includes numerous bug fixes.
Pointer-to-member functions.
A bug has been fixed that caused the C++ compiler to crash
when compiling a pointer-to-member function reference
without an explicit &
operator. This
syntax is allowed only when the
-fms-extensions
command-line option is
used.
Printing casted values in GDB.
A GDB bug that caused incorrect output for expressions
containing casts, such as in the
print *(Type *)ptr
command, has been fixed.
Bug fix for objcopy/strip. An objcopy bug that corrupted COMDAT groups when creating new binaries has been fixed. This bug also affected strip -g.
Binutils support for DWARF Version 3. The addr2line command now supports binaries containing DWARF 3 debugging information. The ld command can display error messages with source locations for input files containing DWARF 3 debugging information.
P&E driver updates. The P&E drivers for Windows and Linux have been updated to version 3.32-920.
Connecting to the target using a pipe.
A bug in GDB's
target remote | program
command has been fixed. When launching the specified
program
failed, the bug caused
GDB to crash, hang, or give a message
Error: No Error
.
Modifying control registers. A bug has been fixed which prevented writes to processor and device control registers when using the Sourcery G++ Debug Sprite.
P&E ColdFire V1 support. The P&E drivers now include support for V1 ColdFire devices.
Code generation bug fix.
A bug has been fixed that caused the compiler to generate
invalid code which was rejected by the assembler with
an operands mismatch
error.
Errors after loading the debugged program. An intermittent GDB bug has been fixed. The bug could cause a GDB internal error after the load command.
GDB update.
The included version of GDB has been updated to
6.8.50.20080821. This update adds numerous bug fixes and
new features, including support for decimal floating point,
the new find command to
search memory, the new /m
(mixed
source and assembly) option to the
disassemble command, and the new
macro define command to define C
preprocessor macros interactively.
Remote debugging improvements. The gdbserver utility now supports a more efficient communications protocol that can reduce latency during remote debugging. The protocol optimizations are enabled automatically when gdbserver operates over a TCP connection. Refer to the GDB manual for more information.
Output files removed on error. When GCC encounters an error, it now consistently removes any incomplete output files that it may have created.
Cache control. A bug in the Debug Sprite has been fixed that previously caused failures when stepping over breakpoints on V3, V4 and V4e cores when caching is enabled.
Processor status register display. When displaying the status register, both GDB and the Sourcery G++ IDE now list the names of flags that are set. Previously, a decimal number was displayed.
GCC version 4.3.2.
Sourcery G++ Lite for ColdFire GNU/Linux is now based on GCC version 4.3.2.
For more information about changes from GCC version 4.2 that was
included in previous releases, see
http://gcc.gnu.org/gcc-4.3/changes.html
.
Sprite communication improvements. The Sourcery G++ Debug Sprite now uses a more efficient protocol for communicating with GDB. This can result in less latency when debugging, especially when running the Sprite on a remote machine over a network connection.
Bug fix for objdump on Windows.
An objdump bug that caused the -S
option
not to work on Windows in some cases has been fixed.