This section documents Sourcery G++ Lite changes for each released revision.
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.
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.
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.
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.
No significant changes. There are no significant changes for Power GNU/Linux in this release.
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.