Table of Contents
This section documents Sourcery CodeBench Lite changes for each released revision.
Internal compiler error fix.
A bug that sometimes caused an internal compiler error when
compiling with the -mabi=64
option and
optimizations enabled has been fixed.
microMIPS delay slots.
A GCC bug that caused delay slots to remain unfilled when
compiling with -mmicromips
has been fixed.
MIPS code generation fix.
A bug in GCC has been fixed that caused register corruption
with the -fuse-caller-save
option for MIPS O32
ABI targets.
Better code for short operations. GCC no longer generates unnecessary type conversions for conditional moves on short data types. This fixes a regression from GCC 4.7.
GCC nor
instruction tuning.
GCC has been improved to make better use of nor
instructions in generated code.
Assembler internal error.
A bug that caused the assembler to crash with an
internal error on dmtur
instructions
has been fixed.
New assembler option: -mfix-rm7000
.
The assembler now accepts the -mfix-rm7000
command-line option. This option causes the assembler to
work around hardware errata in the dmult
and dmultu
instructions on RM7000 cores.
In addition, GCC now accepts this command-line option and passes it
through to the assembler.
New macros to access TCOpt
.
The header file
mips/mt.h
now defines the macros
mips32_gettcopt
,
mips32_settcopt
and
mips32_xchtcopt
to access the CP0
register
TCOpt
.
Changes to included libraries.
Some library variants built with -mmicromips
and -mnan=2008
have been removed from
Sourcery CodeBench Lite for MIPS ELF. Please refer to
Section 3.2, “Library Configurations” for a list of the
currently-supported multilibs.
MIPS16 debug information bug fix. A bug in GCC has been fixed that caused incorrect debug information to be produced for mixed MIPS16 and standard MIPS code. The bug caused single-stepping problems and incorrect function call backtraces reported while debugging such code with GDB.
GCC -fremove-local-statics
option.
GCC no longer supports the -fremove-local-statics
command-line option. The optimizations formerly controlled by
this option are now carried out automatically by other
optimization passes.
Internal compiler error fix.
A bug that sometimes caused an internal compiler error
when compiling with -funroll-loops
on a Windows XP host has been fixed.
GCC version 4.8.1.
Sourcery CodeBench Lite for MIPS ELF is now based on GCC
version 4.8.1. For more information about changes from GCC
version 4.7 that was included in previous releases, see
http://gcc.gnu.org/gcc-4.8/changes.html
.
Invalid assembler errors.
A bug that caused the assembler to incorrectly reject
msglds
instructions and crash with an
internal error on msgsnds
instructions has
been fixed.
IEEE 754-2008 feature support updates.
GCC and GAS now support new options to control IEEE 754-2008
features, as follows: -mabs=2008
replaces
-mabs2008
, -mabs=legacy
replaces
-mno-abs2008
, -mnan=2008
replaces
-mnan2008
, and -mnan=legacy
replaces -mno-nan2008
. The old options remain
supported but are now deprecated and may be removed in the future.
For further information about the new options please refer to the
compiler and assembler manuals.
Linker plugins bug fix.
A bug that caused errors similar to
libgcc_s.so.1: could not read symbols:
Nonrepresentable section on output
when linking with linker plugins active (for example, when
Link Time Optimization is enabled) has been fixed.
Binutils update. The binutils package has been updated to version 2.23.52.20130912 from the FSF trunk. This update includes numerous bug fixes.
Changed the CS3 API for passing arguments to main
.
CS3 now requires that the function that initializes arguments
passed to main
be named
__cs3_init_args
.
See Section 5.2.3, “The C Initialization Phase” for details.
microMIPS FPU instruction emulation bug fixes.
Bugs in the CS3 FPU emulation library have been fixed that made
the ABS.fmt
, NEG.fmt
, MOVF
and MOVT
instructions execute incorrectly on non-FPU
processors.
Newlib update. The Newlib package has been updated to version 2.0.0, with additions from the community CVS trunk as of 2013-07-06. This update provides various C99/POSIX cleanups along with other bug fixes and enhancements.
Optimized memset
.
memset
has now been optimized for speed.
GDB Backtrace fix. A bug has been fixed that caused GDB to incorrectly display backtraces through signal handlers.
GDB update.
The version of GDB has been updated to 7.6.50.20130726-cvs.
This update adds numerous bug fixes and features. Refer
to http://www.gnu.org/software/gdb/news
for
more information.
Improved GDB diagnostic.
GDB now issues an error message when an invalid option
is passed to the add-symbol-file
command.
New GDB command.
GDB now supports the remove-symbol-file
command.
QEMU version 1.5.50. Sourcery CodeBench Lite for MIPS ELF is now based on QEMU version 1.5.50.
New installer. The installer has changed. Please refer to Section 2.4, “Installing Sourcery CodeBench Lite” for more details. Previous versions of Sourcery CodeBench Lite cannot be updated. You must uninstall the previous version or choose a different directory during installation.
Update Python to 2.7.5. The version of Python used by GDB has been updated to 2.7.5.
QEMU CPU simulator.
The GDB instruction-set simulator has been replaced with QEMU.
QEMU uses just-in-time translation of target machine instructions
to provide high-performance simulation of target applications.
You can invoke QEMU from GDB using the new
target qemu
command.
Refer to Chapter 4, “Using Sourcery CodeBench from the Command Line” for more information about
using QEMU.
Newlib crash fix. A bug that caused Newlib to sometimes crash when used with a C++ program that has more than 31 static objects has been fixed.
CS3 missing 2008 NaN multilib linker scripts bug fix. Missing linker scripts targeting Malta and SEAD-3 boards have been added for the 2008 NaN multilibs.
GDB support for removing symbols.
GDB now supports the remove-symbol-file
command.
Refer to the GDB manual for full documentation.
cs-rm -f
bug fix.
A bug that caused cs-rm -f
on
Windows hosts to incorrectly issue an error when
passed a glob pattern that matched nothing has been
fixed.
C++ exception handling format. The C++ exception handling format has been changed to fix a defect in the specification. The new format is not backwards-compatible with code produced by Sourcery CodeBench beginning with 2012.09 releases; you should recompile all C++ code using exceptions. The compatibility issue does not affect code produced by older Sourcery CodeBench Lite releases or third-party libraries built with other compilers.
IEEE 754 soft float NaN interpretation bug fixes. The IEEE 754 soft-float emulation libraries have been corrected to consistently use the legacy NaN representations.
Exception handling bug fix. A bug that sometimes caused an incorrect call to terminate during exception handling has been fixed.
N64 ABI fast software floating-point libraries. A bug in GCC has been fixed that caused the fast software floating-point libraries to be disabled for the N64 ABI.
Temporary register assembler bug fix.
A bug has been fixed that caused $zero
to
be used as a temporary register for address calculation on
some loads targeting that register.
Assembler bug fix for .stab
directives.
An assembler bug has been fixed that caused incorrect code to
be generated when .stab
directives were used in
microMIPS or MIPS16 mode.
Assembler bug fix for microMIPS symbol loads. An assembler bug has been fixed that caused some microMIPS symbols to be loaded from an incorrect address.
N64 linker assertion failure fix.
A linker bug has been fixed that caused an assertion failure when
linking N64 code using the special __ehdr_start
symbol.
N64 FPU emulation bug fix. A bug in the CS3 FPU emulation library has been fixed that made N64 hard-float code execute incorrectly on non-FPU processors.
GDB CP0 register access bug fix. A bug in GDB has been fixed that made CP0 registers inaccessible.
Debug Sprite spurious error message bug fix.
A bug in the Sourcery CodeBench Debug Sprite has been fixed that caused
a spurious Error initializing the target
message upon startup in the attachment (-a
) mode.
Conditional expression bug fix. A bug that caused an internal compiler error in some programs with conditional expressions has been fixed.
Missed optimization.
A bug that caused GCC to miss an opportunity to use short
instructions when compiling with -mmicromips
has been fixed.
Exception handling bug fix. A bug that sometimes caused incorrect results when using C++ exception specifications has been fixed.
Incorrect optimization bug fix.
A compiler bug has been fixed that caused incorrect code to be
generated for some comparisons unless optimization was suppressed
with -fno-forward-propagate
.
GCC version 4.7.3.
Sourcery CodeBench Lite for MIPS ELF is now based on GCC
version 4.7.3. This update incorporates numerous bug fixes.
For more information, see
http://gcc.gnu.org/gcc-4.7/changes.html
.
GCC option -meva
.
GCC now passes the -meva
command-line
option to GAS.
IEEE 754-2008 features and multilibs added.
Support for some IEEE 754-2008 floating-point arithmetic
standard features has been added to the toolchain for
processors that implement them. This includes changes to the
compiler, binutils, the dynamic linker and floating-point
environment library functions. The changes enable support
for the recommended encoding of NaN data introduced by the
said revision of the standard as well as the use of the
floating-point ABS.fmt
and NEG.fmt
instructions in a non-arithmetic manner. Multilibs built
with the updated encoding of NaN data have been added. For
information as to how to control these features, please refer
to the compiler and assembler manuals.
Linker --gc-sections
crash fix.
A bug that caused the linker to sometimes crash when
using --gc-sections
has been fixed.
Improved error message for incompatible object files. The linker error message emitted when attempting to link objects with incompatible error handling formats now includes the object names.
Binutils update. The binutils package has been updated to version 2.23.52.20130219 from the FSF trunk. This update includes numerous bug fixes.
Installer warnings fixed.
A bug that caused Gtk warnings relating to
libappmenu.so
when running the installer
on 64-bit Ubuntu GNU/Linux hosts has been fixed.
microMIPS FPU emulation bug fix.
Support for the missing microMIPS RECIP.fmt
and
RSQRT.fmt
instructions has been added to the CS3 FPU
emulation library.
IEEE 754 integer conversion bug fix.
A bug in the CS3 FPU emulator has been fixed that caused integer
conversion instructions to produce incorrect results. The bug
triggered for the minimum valid, out-of-range, infinite and NaN
inputs to the CEIL.L.fmt
, CEIL.W.fmt
,
CVT.L.fmt
, CVT.W.fmt
,
FLOOR.L.fmt
, FLOOR.W.fmt
,
ROUND.L.fmt
, ROUND.W.fmt
,
TRUNC.L.fmt
, and TRUNC.W.fmt
instructions run on processors without an FPU as well as
processors whose FPU traps to the emulator for any of such inputs.
IEEE 754 signaling NaN interpretation bug fix. A bug in the CS3 FPU emulator has been fixed that caused legacy signaling NaN data encoded with a zero payload to be interpreted as quiet NaN data. As a result IEEE 754 exception state was not set correctly for floating-point operations receiving such data as input. The bug affected hard-float code run on processors without an FPU as well as processors whose FPU traps to the emulator for signaling NaN input.
MIPS32r2 FPU emulation bug fix. The CS3 FPU emulation library now correctly supports multiply-accumulate and reciprocal approximation instructions in MIPS32r2 code.
CS3 FPU emulator IEEE 754 features.
The CS3 FPU emulation library now supports some of the IEEE
754-2008 standard features recently added to the MIPS architecture.
These are a new encoding of NaN data and a different treatment
of ABS.fmt
and NEG.fmt
instructions
as well as the associated new Floating Point Control and Status
register state to switch between the IEEE 754-2008 and legacy
mode.
Improved source line stepping.
GDB and gdbserver
now implement range stepping,
which improves the performance of single stepping over a source
line by reducing the number of control messages from GDB.
GDB hang fix. A bug that caused GDB to sometimes hang when setting a breakpoint has been fixed.
Sprite remote communication bug fix.
A bug in the Sourcery CodeBench Debug Sprite that caused it to
exit with the error Remote communication error.
Target disconnected.: Invalid argument.
on some
Microsoft Windows hosts has been fixed.
Debug Sprite with multiple connections.
The Sourcery CodeBench Debug Sprite now works correctly when using
multiple connections (-m
) with the Mentor
Embedded Sourcery Probe. Previously, the Sprite exited with
an error after the first connection.
Debug Sprite source line stepping improvement. The Sourcery CodeBench Debug Sprite now supports range stepping when used with debug devices that implement this MDI feature.
Fast software floating-point libraries. A bug that caused the fast software floating-point libraries to be disabled has been fixed.
microMIPS branch generation fixed.
A bug in GCC has been fixed that caused it to generate out-of-range
microMIPS branches, which resulted in a linker error
relocation truncated to fit: R_MICROMIPS_PC16_S1
.
Compact C++ language-specific data.
GCC now defaults to emitting a compact encoding of the
C++ language-specific data for exception handling.
For more information, refer to the documentation of the
-mcompact-eh
and
-mno-compact-eh
options in the GCC manual.
Pointer comparison bug fixed. A bug in GCC that caused it to incorrectly optimize away a pointer comparison has been fixed.
Loop optimization bug fix.
A compiler bug that caused some forms
of loop to be mis-optimized when using the
-fpromote-loop-indices
option
has been fixed.
Wrong-code bug fix. A bug in GCC's scheduler has been fixed that sometimes caused incorrect code to be generated.
Performance regression fixed. A bug that introduced unnecessary instructions to
zero-extend unsigned char
or short
values
has been fixed.
Linker raw binary input crash fix.
A bug that caused the linker to crash when linking binary
inputs (--format=binary
) while using
--gc-sections
has been fixed.
Assembler bug fixes.
Assembler bugs have been fixed that caused assembly errors or
incorrect code to be produced for the LUI
instruction, microMIPS B16
, BEQZ16
,
and BNEZ16
suffixed instruction mnemonics, as well
as 32-bit microMIPS instructions placed in a 16-bit delay slot
of a branch or a jump.
CS3 linking fix.
A bug has been fixed that caused relocation truncated
to fit
errors when linking the CS3 libraries against
object files compiled with a -G
option value
less than 4.
ssize_t
type definition bug fix.
The definition of the POSIX ssize_t
data type has
been corrected for 64-bit targets to match the width of the ISO
C size_t
type.
GCC version 4.7.2.
Sourcery CodeBench Lite for MIPS ELF is now based on GCC
version 4.7.2. For more information about changes from GCC
version 4.6 that was included in previous releases, see
http://gcc.gnu.org/gcc-4.7/changes.html
.
Optimization bug fix.
A GCC bug has been fixed that caused incorrect code to be
generated for builtin_unreachable
when optimizing.
Linker crash bug fix.
A bug has been fixed that caused the linker to crash
when using customized linker scripts without a
.eh_frame_hdr
output section description.
Assembler %hi
and %lo
operator bug fixes
.
Several bugs have been fixed in the handling of
%hi
and %lo
assembly
operators applied to expressions involving forward symbol
references. The bugs caused the assembler to fail with a
relocation overflow
error message or to
produce incorrect code.
Linker script symbols.
The linker now supports a new HIDDEN
keyword to define
symbols with object scope. Refer to the linker manual for details.
microMIPS SWXC1
instruction encoding bug fix
.
A bug in the encoding of the microMIPS SWXC1
instruction has been fixed. The bug caused LWXC1
to be produced by the assembler and listed by the disassembler
instead.
Binutils version 2.23. Sourcery CodeBench Lite for MIPS ELF is now based on binutils version 2.23.
EVA instruction assembler bug fix. An assembler bug in branch delay slot optimization involving EVA instructions has been fixed.
Assembler internal error bug fix.
A bug has been fixed that caused the assembler to sometimes fail
with a fixup not contained within frag
error
message. The bug was triggered by the branch delay slot
optimization, not normally used for compiler-generated code.
N64 MDI semihosting bug fix. A bug in MDI semihosting has been fixed that caused incorrect return values for the N64 ABI.
GDB update.
The included version of GDB has been updated to
7.4.50.20120716. This update adds numerous bug fixes and
features. Refer to http://www.gnu.org/software/gdb/news
for more information.
Non-stop support. The Sourcery CodeBench Debug Sprite now supports non-stop debugging.
Updated system requirements. The host operating system requirements for Sourcery CodeBench Lite have been updated. The minimum versions of GNU/Linux now supported are Red Hat Enterprise Linux 5, SuSE Enterprise Linux 10, Fedora Core 6, Ubuntu 8.04, and Debian 5, or later versions of these distributions running on 32-bit or 64-bit Intel or AMD CPUs.