Appendix A. Sourcery G++ Lite Release Notes

This appendix contains information about changes in this release of Sourcery G++ Lite for ColdFire GNU/Linux. 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 ColdFire GNU/Linux

A.1. Changes in Sourcery G++ Lite for ColdFire GNU/Linux

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

A.1.1. Changes in Sourcery G++ Lite 4.4-54

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.

@FILE 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 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.

A.1.2. Changes in Sourcery G++ Lite 4.4-29

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.

A.1.3. Changes in Sourcery G++ Lite 4.3-210

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 "name" outside of ELF segments for such binaries; the warning has now been fixed.

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 `function' found in filename psymtab but not in symtab when setting a breakpoint on 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.

A.1.4. Changes in Sourcery G++ Lite 4.3-43

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.

A.1.5. Changes in Sourcery G++ Lite 4.3-11

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.

A.1.6. Changes in Older Releases

For information about changes in older releases of Sourcery G++ Lite for ColdFire GNU/Linux, please refer to the Getting Started guide packaged with those releases.