Sourcery G++ Lite Release Notes

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

Changes in Sourcery G++ Lite 4.2-177

Linker bug affecting Library Reduction Utility.  A linker bug has been fixed that caused the mips-linux-gnu-mklibs Library Reduction Utility to produce invalid output when relinking libc.so. The bug could also affect linking of other shared libraries containing weak undefined symbols with non-default visibility.

Linker bug fix for --gc-sections A linker bug that caused certain linker-generated sections to be incorrectly omitted from the executable when the --gc-sections option is used has been fixed.

Architecture level inference fix.  The -march=4kp and -march=4ksc options now imply -mips32 and the -march=4ksd option implies -mips32r2. The erroneous option -march=4kf has been removed.

Flags fix.  The -mips3d and -mpaired-single options can now be used with -mips32r2 as well as -mips64.

Output files removed on error.  When GCC encounters an error, it now consistently removes any incomplete output files that it may have created.

-mwarn-framesize=size option.  GCC has a new command-line option, -mwarn-framesize=size, which causes warnings if any function's stack frame exceeds the given size. This option is useful when generating code for environments with limited or absent stack, e.g., BIOS.

"Can't find matching LO16" linker error fixed.  An assembler bug that caused errors when linking files containing mixed MIPS16 and non-MIPS16 code has been fixed.

Misaligned accesses to packed structures fix.  A bug that caused GCC to generate misaligned accesses to packed structures has been fixed.

Changes in Sourcery G++ Lite 4.2-155

jalx instruction.  The assembler no longer reports an error if the jalx instruction is used outside of MIPS16 mode.

Changes in Sourcery G++ Lite 4.2-129

Bug fix in fesetround A bug in fesetround has been fixed. Earlier versions of fesetround incorrectly cleared the upper half of the FCSR (floating-point control and status register).

MIPS local GOT space.  A linker bug that caused the error "not enough GOT space for local GOT entries" has been fixed.

Change to default target architecture.  The compiler now generates code for MIPS32r2 processors by default, rather than the original MIPS32 ISA. This is an incompatible change from previous releases of Sourcery G++ Lite. To build applications for MIPS32 processors, add an explicit -march=mips32 option to your compile and link commands. Refer to the GCC manual for additional information about supported targets and -march options.

Changes in Sourcery G++ Lite 4.2-116

GDB and Ctrl-C on Windows .  GDB no longer crashes when you press Ctrl-C twice during remote debugging to give up waiting for the target.

MDI support in GDB.  GDB now supports MDI, the MIPS Debug Interface protocol.

GCC update.  The GCC package has been updated to version 4.2.3. This version includes numerous bug fixes since GCC 4.2.

GDB support for user-defined prefixed commands.  The GDB define and document commands, which allow you to add new commands to the GDB command-line interface, now support creating commands within an existing prefix such as target. Hooks for prefixed commands are also supported. Refer to the Debugger manual for more information.

UNC pathname bug fix.  A bug has been fixed that caused linker errors on Windows hosts when running a Sourcery G++ toolchain installed in a UNC path (\\host\directory).

GDB info registers crash fix.  Executing info registers after executing flushregs no longer crashes GDB.

GDB search path bug fix.  A bug in GDB has been fixed that formerly resulted in an internal error when setting solib-search-path or solib-absolute-prefix after establishing a connection to a remote target.

Binutils update.  The binutils package has been updated to version 2.18.50.20080215 from the FSF trunk. This update includes numerous bug fixes.

Race fixes in setuid Several bugs in multi-threaded setuid have been fixed. The bugs led to threads with incorrect privileges and hangs at thread exit. The setgid, seteuid, setegid, setreuid, setregid, setresuid, and setresgid functions were also affected.

Changes in Sourcery G++ Lite 4.2-87

Improved argument-passing code.  The compiler can now generate more efficient code for certain functions whose arguments must be sign-extended to conform with language or ABI conventions. The required conversion was formerly being performed both in the called function and at all call sites; now the redundant conversion has been eliminated for functions that can only be called within the compilation unit where they are defined.

Multi-process mode for gdbserver The gdbserver utility has a new command-line option, --multi, that allows you to use it to debug multiple program instances. Refer to the Debugger manual for more information.

Raza XLR processor support.  Sourcery G++ now supports the Raza XLR processor. To generate code for this processor, use the option -march=xlr.

MIPS16 debugging information.  GCC now produces more accurate line number information for the debugger when -mips16 is specified.

GCC stack size limit increased.  On Windows hosts, the maximum stack size for the GCC executable has been increased. This means that more complex programs can be compiled.

Invalid object file after strip.  A bug in the assembler has been fixed that formerly caused .set symbol expression constructs to emit symbol in the wrong section. This in turn caused inconsistent behavior after stripping the symbol table.

Code generation improvements.  The compiler's code size and instruction selection heuristics have been further tuned to produce better code for MIPS processors.

New Octeon instructions.  The assembler now supports the Cavium Octeon instructions saa and saad.

-mcode-readable option.  GCC has a new command-line option, -mcode-readable, that can be used to control placement of constant data in executable code sections. This option is useful when generating MIPS16 code for processors that restrict instruction access to executable sections, such as 4KSc and 4KSd processors when the code TLBs have the Read Inhibit bit set, or processors that have a dual instruction/data SRAM interface. Consult the GCC documentation for more information about this option.

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

gdbserver support for execution wrappers.  gdbserver has a new command-line option, --wrapper, which specifies a wrapper for any programs run by gdbserver. The specified wrapper can prepare the system and environment for the new program.

Changes in Sourcery G++ Lite 4.2-85

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