This section documents Sourcery G++ Lite changes for each released revision.
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=
option.
GCC has a new command-line option,
size
-mwarn-framesize=
,
which causes warnings if any function's stack frame exceeds
the given size
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.
jalx
instruction.
The assembler no longer reports an error if the jalx
instruction is used outside of MIPS16 mode.
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.
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.
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
constructs to emit symbol
expression
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.