Appendix A. Sourcery G++ Lite Release Notes
Prev |  | Next

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

## 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-109

Alignment of `malloc` return values. A bug in uClibc has been fixed which caused `malloc` to return memory that was aligned to four bytes only, rather than eight.

### A.1.2. Changes in Sourcery G++ Lite 4.5-108

Compiler crash with `-mlong-calls`. A bug that could cause the compiler to crash in certain situations with the `-mlong-calls` option has been fixed.

Incorrect code generation when scheduling. A compiler bug has been fixed which could cause incorrect code to be generated during scheduling.

Dynamic assignment of DSBT indices. The uClibc dynamic linker can now dynamically assign an index to a DSBT shared library that was compiled without a `--dsbt-index` option. This is not recommended in general as it generates private mappings of library text segments, requiring extra space and load time.

uClibc `clock_nanosleep` added. The function `clock_nanosleep` has been added to uClibc's librt. Due to lack of NPTL threading, it may not fully work in threaded cases.

### A.1.3. Changes in Sourcery G++ Lite 4.5-106

Linker bug fix. A bug in the linker that caused incorrect output for C++ exception tables emitted by the TI compiler has been fixed.

New version of uClibc. A new version of uClibc, based on upstream git mainline, has been imported. This results in an ABI change; all programs and libraries built with earlier releases must be rebuilt.

Inferior calling support. The included version of GDB has been updated to provide inferior call support. A bug causing GDB to obtain the return address incorrectly has also been fixed.

### A.1.4. Changes in Sourcery G++ Lite 4.5-104

C++ exception handling. Sourcery G++ Lite for C6000 uClinux now includes support for C++, including exception handling using the unwinding tables defined by the C6000 EABI.

Position independent code generation. The compiler no longer accepts the `-fpic` option without `-mdsbt`. Also, the code generator has been fixed not to emit `addkpc` instructions on C62X.

uClibc `ffsl` and `ffsll` functions. The uClibc library now includes implementations of the functions `ffsl` and `ffsll`.

Error reading FDPIC exec loadmap message. A bug has been fixed that caused gdb to fail with the error message "Error reading FDPIC exec loadmap" when the "set sysroot" command is used before connecting to the target.

Segmentation fault fixed. A bug causing gdb to segfault when the "set sysroot" command is used with no file to debug has been fixed.

### A.1.5. Changes in Sourcery G++ Lite 4.5-97

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

### A.1.6. Changes in Sourcery G++ Lite 4.5-96

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

### A.1.7. Changes in Sourcery G++ Lite 4.5-94

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

### A.1.8. Changes in Sourcery G++ Lite 4.5-92

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

### A.1.9. Changes in Sourcery G++ Lite 4.5-88

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

### A.1.10. Changes in Sourcery G++ Lite 4.5-86

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

### A.1.11. 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.12. 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.13. Changes in Sourcery G++ Lite 4.4-322

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

### A.1.14. Changes in Sourcery G++ Lite 4.4-320

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

### A.1.15. 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.16. Changes in Sourcery G++ Lite 4.4-316

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

Prev |  | Next
5.3. Manuals for GNU Toolchain Components | Home | Appendix B. Sourcery G++ Lite Licenses