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 2012.09-98

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.

Install to empty directory failure fixed.  A bug that prevented installation of Sourcery CodeBench Lite into an existing empty directory has been fixed.

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.

A.1.2. Changes in Sourcery CodeBench Lite 2012.09-42

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.

A.1.3. Changes in Sourcery CodeBench Lite 2012.03-64

__attribute__((nomips16)) code generation bug fix .  A bug in GCC that caused incorrect code to be generated for functions with the __attribute__((nomips16)) attribute while compiling with -mips16 has been fixed.

C++ bug fix.  A bug that caused unpredictable program behavior in C++ programs has been fixed.

Invalid microMIPS relocation fixed.  A bug in branch code generation for microMIPS, reported by the linker as relocation truncated to fit: R_MICROMIPS_PC16_S1, has been fixed.

Improved size optimization for microMIPS.  The compiler now aligns microMIPS functions more efficiently when the -Os option is used.

Compiler crash fixed.  A GCC bug that occasionally caused an internal compiler error during register allocation has been fixed.

Register allocation bug fix.  A bug in the register allocator that caused incorrect code generation has been fixed.

Linker --gc-sections bug fix.  A linker bug that incorrectly caused undefined references to be diagnosed when the --gc-sections option is used has been fixed.

EVA support.  GAS now supports MIPS EVA instructions. You can specify the -meva option to GCC and GAS to indicate that EVA instructions are being used.

A.1.4. Changes in Sourcery CodeBench Lite 2012.03-41

Nondeterministic code generation bug fix.  A GCC bug has been fixed that caused nondeterministic code generation for some input files when optimizing.

GCC version 4.6.  Sourcery CodeBench Lite for MIPS ELF is now based on GCC version 4.6. For more information about changes from GCC version 4.5 that was included in previous releases, see http://gcc.gnu.org/gcc-4.6/changes.html.

Fix for internal compiler error.  A GCC bug has been fixed that caused an internal compiler error when using pointer casts in C++0x constexpr initialization expressions.

Compact C++ exception handling tables.  GCC now defaults to emitting a compact encoding of C++ exception handling tables, rather than using a DWARF-based scheme. For more information, refer to the documentation of the -mcompact-eh and -mno-compact-eh options in the GCC manual.

Fix for bit-field optimization bug.  A compiler bug that caused incorrect code to be generated for programs using bit-fields has been fixed.

Incorrect accesses to volatile memory.  The compiler no longer generates SWP, LWP, SWM or LWM instructions to access objects declared with the volatile type qualifier, as these instructions can cause multiple memory accesses of unspecified ordering.

GCC version 4.6.3.  Sourcery CodeBench Lite for MIPS ELF is now based on GCC version 4.6.3. For more information about issues that have been fixed since version 4.6.1, see http://gcc.gnu.org/gcc-4.6/changes.html.

GCC stack usage improvement.  GCC now generates better code for stack allocation in some cases when compiling with -fno-strict-aliasing.

Linker --gc-sections option bug fix.  A bug has been fixed that caused the linker to incorrectly remove the .debug_types section when using the --gc-sections option.

Installer failure during upgrade.  Some recent releases were affected by an installer bug on Windows hosts that caused installing a newer version of Sourcery CodeBench Lite into the same directory to fail with the error Sourcery CodeBench Lite for MIPS ELF upgrade failed. This bug has now been fixed, but the affected releases cannot be upgraded. As a workaround, uninstall the older release before installing the new version.

C++ debugging bug fix.  A GDB bug has been fixed that caused GDB to fail to find enum constants in base classes when debugging C++ code.

Fix for crash in GDB.  A memory corruption bug in GDB has been fixed that under very rare circumstances made it crash or exhibit other unpredictable behavior. On GNU/Linux hosts, this bug caused crashes with an error message similar to: *** glibc detected *** mips-sde-elf-gdb: free(): invalid next size (normal): 0x09466198 *** followed by a backtrace.

Fix debugger remote target interruption.  A bug in GDB's handling of requests to interrupt execution on a remote target has been fixed that caused it to stop the target but not emit a stopped MI record.

GDB internal error fix.  A bug has been fixed that caused GDB to produce messages of the form: warning: (Internal error: pc 0x1000a0 in read in psymtab, but not in symtab.) when taking the addresses of symbols from objects added with the add-symbol-file command.

A.1.5. Changes in Sourcery CodeBench Lite 2011.09-86

64-bit multilibs.  Sourcery CodeBench Lite now includes libraries and linker scripts to build applications for MIPS64R2 N64 ABI. Use the -mabi=64 option to compile using 64-bit multilibs, and linker scripts for the Malta board with a 64-bit processor (e.g., malta64-ram-hosted.ld to link executables. Multilibs for the N64 ABI are available for all combinations of big/little endianness and hardware/software floating point. Refer to Section 3.2, “Library Configurations” for more information about the 64-bit multilibs.

GCC crash bug fix.  A GCC bug has been fixed that caused an internal compiler error when a MIPS16 function was inlined into a MIPS32 function.

GCC optimization bug fix.  A bug in the GCC optimizer has been fixed that caused incorrect code to be generated for some cases of multiplication by a constant when compiling with -O2 or -O3.

GCC wrong code fix.  An optimizer bug has been fixed that caused GCC to generate code with incorrect scheduling of memory reference instructions.

Fix for assembler internal error.  A bug has been fixed that caused the assembler to abort with an assertion failure in emit_inc_line_addr.

A.1.6. Changes in Sourcery CodeBench Lite 2011.09-76

Changes to included libraries.  Library variants built with -mfp64, -mno-float, and -mcode-readable=no 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.

Fix for compiler hang.  A bug that caused GCC to become stuck in an infinite loop in the optimizer has been fixed.

Optimization bug fix.  A compiler bug has been fixed that affected some programs using type-aliased assignments to pointer variables. The bug caused incorrect code to be generated when compiled with -O2 or -O3.

Binutils version 2.21.  Sourcery CodeBench Lite for MIPS ELF is now based on binutils version 2.21.

Assembler crash.  The assembler now warns when there is line information for the *ABS* section, rather than crash. This can occur when the .offset directive is used incorrectly.

Fix for crash in GDB maint print arch A bug in the GDB command maint print arch that sometimes caused GDB to crash has been fixed.

Remote command bug fix.  A bug in the Sourcery CodeBench Debug Sprite has been fixed that caused GDB's monitor remote commands to fail without performing the intended action on some versions of Windows.

Debug Sprite option defaults.  The Sourcery CodeBench Debug Sprite now uses default option values specified in board configuration files. Options included in the device URL override the default values.

Changes to host operating system requirements.  The minimum required Microsoft Windows OS needed to run Sourcery CodeBench Lite is now Windows XP (SP1).

A.1.7. 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.