Appendix A. Sourcery CodeBench Lite Release Notes

This appendix contains information about changes in this release of Sourcery CodeBench Lite for MIPS ELF. You should read through these notes to learn about new features and bug fixes.

Table of Contents

A.1. Changes in Sourcery CodeBench Lite for MIPS ELF

A.1. Changes in Sourcery CodeBench Lite for MIPS ELF

This section documents Sourcery CodeBench Lite changes for each released revision.

A.1.1. Changes in Sourcery CodeBench Lite 2014.05-24

Instrumentation bug fix.  A bug that caused GCC to instrument functions tagged with __attribute__((no_instrument_function)) when compiling with -fprofile-arcs has been fixed.

Fix for microMIPS illegal instruction errors.  A bug that caused GCC to emit invalid microMIPS store instructions has been fixed.

-Weffc++ and -Wnon-virtual-dtor interaction.  The two C++ warning options -Weffc++ and -Wnon-virtual-dtor have been updated to interoperate correctly and warn about the lack of virtual destructors only in polymorphic classes.

Assembler symbol difference fix.  A bug has been fixed that sometimes caused the assembler to miscalculate the difference between two symbols.

Fix for linker relocation overflow errors.  A bug has been fixed that caused relocation truncated to fit errors when linking PIC objects that were compiled with the -mxgot option and have many symbols.

CS3 stack initialization fix.  A bug in the CS3 initialization code that sometimes caused the stack pointer to point outside of the available RAM region has been fixed.

Fix for sbrk A bug in CS3 that caused sbrk to fail on targets with more than 2GB of RAM has been fixed.

GDB memory manipulation fix.  A bug has been fixed that caused GDB to read incorrect contents from breakpoint addresses, leading to unpredictable behavior and erroneous backtraces.

Line single-stepping GDB bug fix.  A bug in GDB sometimes prevented line single-stepping within MIPS16 or microMIPS code from stopping at the intended place. Execution continued until the current function completed or a breakpoint was hit. The bug affected debugging with MDI devices and has been fixed now.

Debug Sprite kernel mode initialization bug fix.  The Sourcery CodeBench Debug Sprite has been fixed to ensure the kernel mode is set in the initial application context, via an appropriate setting of the CP0 Status register.

Installer help.  The installer now displays help on Microsoft Windows hosts when invoked from the command line with the --help option. Formerly, this command-line option only worked on GNU/Linux hosts.

Installer error dialog.  On Microsoft Windows hosts the installer now displays an error dialog during a GUI installation if a fatal error occurs.

Installer logging improved.  The installer now logs information related to the progress of the installation and also errors when it fails to start.

Installer 32-bit library detection.  The installer checks for required 32-bit compatibility libraries on supported 64-bit GNU/Linux hosts.

Microsoft Windows XP host no longer supported.  The minimum required Microsoft Windows OS needed to run Sourcery CodeBench Lite is now Windows Vista.

Installer temp path.  The installer now allows you to change the directory where it is extracted using the P2_INSTALLER_TEMP_PATH environment variable. See Section 2.4, “Installing Sourcery CodeBench Lite”.

A.1.2. Changes in Sourcery CodeBench Lite 2014.05-2

GCC option -mvirt GCC now passes the -mvirt command-line option to GAS.

GCC version 4.8.3 prerelease.  Sourcery CodeBench Lite for MIPS ELF is now based on a GCC 4.8.3 prerelease snapshot from Mar 20th, 2014, SVN revision 208690. This version includes numerous other bug fixes. For more information about changes from GCC version 4.8.1 that was included in previous releases, see http://gcc.gnu.org/gcc-4.8/changes.html.

microMIPS jump instructions.  A bug that caused GCC to fail to generate the jrc and jals instructions in microMIPS mode has been fixed.

Binutils update.  The binutils package has been updated to version 2.24.51.20140217 from the FSF trunk, git revision 024a23103f04282872d4352302b1bfe04391a7a4. This update includes numerous bug fixes.

Fix for GDB crashes.  GDB has been made more robust to handle executables with incorrect DWARF-2 .debug_line information. Previously, GDB crashed on programs that referenced missing include directory information.

GDB packet warning fix.  A bug has been fixed that formerly caused GDB to display an invalid packet warning after interrupting applications using semihosted I/O.

GDB update.  The version of GDB has been updated to 7.7.50-cvs, git revision 024a23103f04282872d4352302b1bfe04391a7a4. This update adds numerous bug fixes and features. Refer to http://www.gnu.org/software/gdb/news for more information.

Installer disk space calculation.  The installer for GNU/Linux hosts now correctly calculates the temporary disk space required.

A.1.3. Changes in Sourcery CodeBench Lite 2013.11-39

No significant changes.  There are no significant changes for MIPS ELF in this release.

A.1.4. Changes in Sourcery CodeBench Lite 2013.11-37

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.

A.1.5. Changes in Sourcery CodeBench Lite 2013.11-4

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.

A.1.6. Changes in Sourcery CodeBench Lite 2013.05-65

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.

A.1.7. Changes in Sourcery CodeBench Lite 2013.05-44

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.

A.1.8. Changes in Sourcery CodeBench Lite 2013.05-35

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.

A.1.9. Changes in Sourcery CodeBench Lite 2013.05-8

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.

A.1.10. Changes in Older Releases

For information about changes in older releases of Sourcery CodeBench Lite for MIPS ELF, please refer to the Getting Started guide packaged with those releases.