Sourcery G++ Lite Release Notes

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

Changes in Sourcery G++ Lite 4.1-78

Preprocessing assembly code.  The compiler driver passes -I options to the assembler, so that #include directives (processed by the preprocessor) and .include directives (processed by the assembler) use the same search path.

Dynamically-initialized const variables.  Dynamically-initialized namespace-scope C++ variables are no longer placed in read-only data sections, even when marked const. These variables must be modified at startup, so they cannot be placed in ROM, even though their values cannot change once initialized.

Disabling diagnostics for use of system header and library directories.  The warnings for use of options such as -I/usr/include when cross compiling can be disabled with a new option -Wno-poison-system-directories. This option is intended for use in chroot environments when such directories contain the correct headers and libraries for the target system rather than the host.

E500 interrupt safety fix.  A bug that caused GCC to generate function epilogues that were not interrupt safe on E500 targets has been fixed.

Optimized memcpy and memmove Optimized implementations of memcpy and memmove have been added for E500 targets.

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

Debugging of statically-linked threaded programs.  GDB and EGLIBC now support thread debugging when using GCC's -static option. Existing statically-linked programs must be relinked after upgrading EGLIBC for this fix.

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

ABI markings for Power Architecture binaries.  GCC and Binutils now mark Power Architecture binaries according to their floating point and vector calling conventions. The linker reads this information and warns when mismatched object files are linked together. For example, the linker warns if -msoft-float objects are linked to a -mhard-float C library. GDB uses the same information to correctly call functions from the command line and display return values after finish.

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.

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.

Debugger access to AltiVec and SPE registers.  GDB can display AltiVec and SPE registers when using gdbserver on configurations with these auxiliary processors.

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

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

Changes in Sourcery G++ Lite 4.1-69

Segmentation fault in memset A segmentation fault in memset has been fixed. The problem occurs on some 8xx series PowerPC CPUs when executing a dcbz instruction, because 8xx processors are unable to report page faults correctly in this case. The problematic dcbz instruction is avoided on affected processors.

Assembler skipping \ characters.  A bug is fixed where the assembler would skip \ characters when they appeared at certain positions in the input file. This bug primarily affected assembler macros.

Spurious compiler warnings eliminated.  GCC no longer emits warnings when linker-specific command-line options are provided in combination with modes that do not perform linking, such as with the -c flag.

Changes in Sourcery G++ Lite 4.1-59

Forced alignment of array variables.  A new option -falign-arrays has been added to the compiler. Specifying this option sets the minimum alignment for array variables to be the largest power of two less than or equal to their total storage size, or the biggest alignment used on the machine, whichever is smaller. This option may be helpful when compiling legacy code that uses type punning on arrays that does not strictly conform to the C standard.

E500 floating-point bug fix.  Some bugs affecting comparisons of NaNs on E500 processors have been fixed.

Software floating-point bug fix.  A bug affecting conversion of wider floating-point types to subnormal float values when using software floating point has been fixed.

Changes in Sourcery G++ Lite 4.1-56

Linux Host Requirements.  The lowest version of Linux that is required for the Linux hosted toolchain is now RedHat 7.3. Previous versions required RedHat 8.0 or later.

Installer hangs while refreshing environment.  The Sourcery G++ installer for Microsoft Windows now updates the PATH environment variable without waiting for open applications to acknowledge the update. This change prevents open applications from blocking the installer's progress.

Less disk space required for installation.  Sourcery G++ Lite packages are smaller because multiple copies of files have been replaced with hard and/or symbolic links when possible. Both the size of the installer images and the amount of disk space required for an installed package have been reduced.

Alignment bug fix.  A bug has been fixed that formerly caused incorrect code to be generated in some situations for copying structure arguments being passed by value. The incorrect code caused alignment errors on stack accesses on some targets.

Changes in Sourcery G++ Lite 4.1-51

No significant changes.  There are no significant changes for Power GNU/Linux in this release.

Changes in Sourcery G++ Lite 4.1-47

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.

Changes in Sourcery G++ Lite 4.1-46

Initial release.  This is the initial release for Power GNU/Linux.