Appendix A. Sourcery G++ Lite Release Notes

This appendix contains information about changes in this release of Sourcery G++ Lite for C6000 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 C6000 uClinux

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

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

A.1.1. Changes in Sourcery G++ Lite 4.5-97

No significant changes.  There are no significant changes for C6000 uClinux in this release.

A.1.2. Changes in Sourcery G++ Lite 4.5-96

No significant changes.  There are no significant changes for C6000 uClinux in this release.

A.1.3. Changes in Sourcery G++ Lite 4.5-94

No significant changes.  There are no significant changes for C6000 uClinux in this release.

A.1.4. Changes in Sourcery G++ Lite 4.5-92

No significant changes.  There are no significant changes for C6000 uClinux in this release.

A.1.5. Changes in Sourcery G++ Lite 4.5-88

No significant changes.  There are no significant changes for C6000 uClinux in this release.

A.1.6. Changes in Sourcery G++ Lite 4.5-86

No significant changes.  There are no significant changes for C6000 uClinux in this release.

A.1.7. Changes in Sourcery G++ Lite 4.5-78

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:

  • Smaller and faster code for compound conditionals.
  • Improved filling of branch delay slots.
  • Removal of superfluous sign and zero extensions.

New -fstrict-volatile-bitfields option.  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. Refer to the GCC manual for details.

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 C6000 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.

A.1.8. Changes in Sourcery G++ Lite 4.4-326

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.

GDB update.  The included version of GDB has been updated to 7.0.50.20100218. This update adds numerous bug fixes and new features, including improved C++ language support, automatic caching of stack memory, and Position Independent Executable (PIE) support.

GDB and Ctrl+C on Windows .  GDB no longer crashes when you press Ctrl+C twice during remote debugging to give up waiting for the target.

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.

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 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 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++.

GDB asynchronous mode fix.  GDB can now be used from the command line in asynchronous mode with remote targets. Previously, GDB did not accept user input while asynchronous commands (such as continue &) were running.

Multi-process mode for gdbserver The gdbserver utility has a new command-line option, --multi, that allows you to use it to debug multiple program instances. Refer to the Debugger manual for more information.

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 qOffsets crash fix.  GDB no longer crashes when a remote stub provides load offsets for an unlinked object file.

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.

Improved breakpoints in constructors and template functions.  GDB now supports breakpoints on source code locations that have several code addresses associated with them. Setting a breakpoint on a constructor automatically associates the breakpoint with all constructor bodies generated by GCC. If you set a breakpoint on a line of a templated function, GDB breaks at the indicated line in all instantiations of the templated function.

GDB printf %p.  GDB's printf command now supports the "%p" format specifier.

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.).

GDB update.  The included version of GDB has been updated to 6.6.20070821. This update includes numerous bug fixes.

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.

GDB interrupt handling bug fix.  A bug in GDB has been fixed that caused it to sometimes fail to indicate that the target had stopped after being interrupted. The bug affected clients using GDB's MI front end.

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.

Printing global variables in GDB.  A GDB bug that caused errors in printing values of global variables in the debugger has been fixed. GDB was formerly computing addresses of such variables incorrectly; in some cases, this resulted in incorrect values being printed, while in others, it resulted in memory access errors in the remote gdbserver.

Improved debugging for optimized code.  GDB's ability to print and change variables' values in optimized code is improved. GDB now tracks variable scopes more accurately, making better use of the detailed debugging information produced by Sourcery G++ compilers.

Improved handling of Windows paths in GDB.  GDB now properly recognizes the names of source files that were passed to the compiler using an absolute path on Windows. You may refer to the file either by its base name (without any leading directory components), by the exact path passed to the compiler, or by its absolute path.

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.

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.

Robustness on Microsoft Windows.  Defects that sometimes caused GDB to become non-responsive on Microsoft Windows have been eliminated.

Memory access errors when setting breakpoints.  A GDB bug that caused spurious "Cannot access memory" errors has been fixed. The errors occurred when setting breakpoints after the program being debugged exited or was killed.

GDB support for Cygwin pathnames.  A bug in GDB's translation of Cygwin pathnames has been fixed.

GDB update.  The included version of GDB has been updated to 6.6.50.20070228. This update includes numerous bug fixes and improved support for C++ pointers to members.

GDB and programs linked with the --gc-sections linker option.  GDB has been improved to better handle debug information found in programs and libraries linked with the --gc-sections option. GDB formerly selected the wrong debug information in some cases, resulting in incorrect behavior when stepping over a function or displaying local variables, for example.

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.

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.

GDB memory find bug fix.  A bug in GDB's find command has been fixed. The bug caused searches on large memory areas to fail or report matches at incorrect addresses.

Inlined function debugging fix.  GDB now backtraces correctly when stopped at the first instruction of an inlined function. Earlier versions would sometimes encounter internal errors in this situation.

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.

GDB support for user-defined prefixed commands.  The GDB define and document commands, which allow you to add new commands to the GDB command-line interface, now support creating commands within an existing prefix such as target. Hooks for prefixed commands are also supported. Refer to the Debugger manual for more information.

GDB update.  The included version of GDB has been updated to 6.7.20080107. This update includes numerous bug fixes.

Frame manipulation bug fix.  A bug in GDB has been fixed that caused frame manipulation commands to report an internal error in some cases when used on arbitrary stack frames specified by an address.

GDB info registers crash fix.  Executing info registers after executing flushregs no longer crashes GDB.

Read watchpoints bug fix.  A GDB bug has been fixed that caused watchpoints set to trigger on memory reads to be silently ignored in some cases.

GDB search path bug fix.  A bug in GDB has been fixed that formerly resulted in an internal error when setting solib-search-path or solib-absolute-prefix after establishing a connection to a remote target.

Debugging of inlined functions.  GDB now supports inlined functions. GDB can include inlined functions in the stack trace; display inlined functions' arguments and local variables; and step into, over, and out of inlined functions.

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.

gdbserver support for execution wrappers.  gdbserver has a new command-line option, --wrapper, which specifies a wrapper for any programs run by gdbserver. The specified wrapper can prepare the system and environment for the new program.

Debugger access to out-of-bounds memory.  GDB turns on inaccessible-by-default by default, disallowing access to memory outside the regions specified in a board configuration.

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.

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.

GDB update.  The included version of GDB has been updated to 6.6.50.20070620. This update includes numerous bug fixes.

Setting thread-specific breakpoints in GDB.  A bug in GDB has been fixed that caused a syntax error for the break *expression thread threadnum command.

A.1.9. Changes in Sourcery G++ Lite 4.4-322

No significant changes.  There are no significant changes for C6000 uClinux in this release.

A.1.10. Changes in Sourcery G++ Lite 4.4-320

No significant changes.  There are no significant changes for C6000 uClinux in this release.

A.1.11. Changes in Sourcery G++ Lite 4.4-319

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.12. Changes in Sourcery G++ Lite 4.4-316

Initial release.  This is the initial public release for C6000 uClinux.