| <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Appendix A. Sourcery G++ Lite Release Notes</title><link rel="stylesheet" href="cs.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><meta name="description" content=" This appendix contains information about changes in this release of Sourcery G++ Lite for ARM GNU/Linux. You should read through these notes to learn about new features and bug fixes."><link rel="home" href="index.html" title="Sourcery G++ Lite"><link rel="up" href="index.html" title="Sourcery G++ Lite"><link rel="prev" href="ch06s03.html" title="6.3. Manuals for GNU Toolchain Components"><link rel="next" href="chap-license.html" title="Appendix B. Sourcery G++ Lite Licenses"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix A. Sourcery G++ Lite Release Notes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch06s03.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="chap-license.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="chap-release"></a>Appendix A. Sourcery G++ Lite Release Notes</h2></div><div><div class="abstract"><p class="title"><b></b></p><p> | |
| This appendix contains information about changes in this | |
| release of Sourcery G++ Lite for ARM GNU/Linux. You should read | |
| through these notes to learn about new features and bug fixes. | |
| </p></div></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="chap-release.html#sec-release-notes">A.1. Changes in Sourcery G++ Lite for ARM GNU/Linux</a></span></dt></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sec-release-notes"></a>A.1. Changes in Sourcery G++ Lite for ARM GNU/Linux</h2></div></div></div><p> | |
| This section documents Sourcery G++ Lite changes for each released revision. | |
| </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id281187"></a>A.1.1. Changes in Sourcery G++ Lite 2011.03-41</h3></div></div></div><p><b>Variable Length Array (VLA) alignment bug. </b> | |
| A compiler bug that resulted in incorrectly aligned variable length | |
| arrays (VLA) in leaf functions has been fixed. | |
| </p><p><b>Cortex-R5 support. </b> | |
| Sourcery G++ now includes support for ARM Cortex-R5 | |
| processors. To compile for these processors, | |
| use <code class="option">-mcpu=cortex-r5</code>. | |
| </p><p><b>Inline assembly and volatile fields. </b> | |
| A bug has been fixed that caused the compiler to incorrectly | |
| reject inline <code class="code">asm</code> statements referring to volatile | |
| class/struct fields with errors such as <code class="literal">error: output | |
| number 1 not directly addressable</code>. | |
| </p><p><b>Fixed-point arithmetic support. </b> | |
| Experimental compiler support has been added for fixed-point | |
| arithmetic on ARM, as described in the draft ISO/IEC technical | |
| report TR 18037. Specialized instructions defined in recent | |
| architecture versions for performing saturating arithmetic, | |
| etc. are used when available, but are not a prerequisite for | |
| using the new language features. See | |
| <a class="xref" href="sec-arm-fixed-point.html" title="3.10. Fixed-Point Arithmetic">Section 3.10, “Fixed-Point Arithmetic”</a> for further details. | |
| </p><p><b>C++ constructor bug fix. </b> | |
| A compiler bug has been fixed that caused incorrect code for C++ | |
| constructors for some class hierarchies that use virtual inheritance | |
| and include empty classes. At runtime, the incorrect constructors | |
| resulted in memory corruption or other errors. | |
| </p><p><b>Thumb debug information fix. </b> | |
| A compiler bug that resulted in incorrect debug information | |
| for Thumb code has been fixed. The incorrect information | |
| prevented single stepping through some code. | |
| </p><p><b>Internal compiler error with pointer casting. </b> | |
| A compiler bug has been fixed that caused internal compiler | |
| errors when accessing double-word memory locations with | |
| casted pointers under ARM mode. | |
| </p><p><b>Unaligned access support. </b> | |
| The compiler now generates more efficient code for accessing | |
| packed data structures and for copying small blocks of | |
| unaligned data when targeting architectures that permit | |
| unaligned word/halfword accesses. This feature can be | |
| controlled by the <code class="option">-munaligned-access</code> and | |
| <code class="option">-mno-unaligned-access</code> options, and is enabled | |
| by default for ARMv6 processors and above, except for ARMv6-M. | |
| </p><p><b>Internal compiler error under Thumb mode. </b> | |
| A compiler bug has been fixed that caused internal compiler | |
| errors when generating Thumb code. | |
| </p><p><b>EGLIBC version 2.13. </b> | |
| Sourcery G++ Lite for ARM GNU/Linux now includes EGLIBC version 2.13 | |
| library which is based on GNU C Library version 2.13. | |
| For more information about changes, see | |
| <code class="uri">http://www.eglibc.org/news#eglibc_2_13</code>. | |
| </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id281510"></a>A.1.2. Changes in Sourcery G++ Lite 2011.03-18</h3></div></div></div><p><b>GCC fixes for <code class="option">-fstrict-volatile-bitfields</code>. </b> | |
| GCC now honors <code class="option">-fstrict-volatile-bitfields</code> | |
| when a bitfield is not declared volatile initially, but an | |
| object including bit fields is cast to volatile. | |
| Also, a bug was fixed that caused incorrect code to be generated | |
| for some stores to volatile bit fields when | |
| <code class="option">-fstrict-volatile-bitfields</code> is enabled. | |
| </p><p><b>Compiler optimization improvements. </b> | |
| The compiler has been enhanced with a number of optimization | |
| improvements, including: | |
| </p><div class="itemizedlist"><ul type="disc"><li> | |
| Smaller and faster code for compound conditionals. | |
| </li><li> | |
| Removal of superfluous sign and zero extensions. | |
| </li><li> | |
| Improved code for multiply-and-accumulate operations on ARM. | |
| </li></ul></div><p> | |
| </p><p><b>Internal compiler error with NEON intrinsics. </b> | |
| A compiler bug has been fixed that caused internal compiler | |
| errors when using certain NEON intrinsics. | |
| </p><p><b>GCC version 4.5.2. </b> | |
| Sourcery G++ Lite for ARM GNU/Linux is now based on GCC version 4.5.2. | |
| </p><p><b>GCC code generation bug for casts to <code class="code">volatile</code> | |
| types. </b> | |
| A compiler bug has been fixed that sometimes caused incorrect code | |
| for references to pointers to types with <code class="code">volatile</code> casts. | |
| </p><p><b>Incorrect optimization fix. </b> | |
| An optimizer bug that in rare cases caused incorrect code to | |
| be generated for complex AND and OR expressions containing | |
| redundant subexpressions has been fixed. | |
| </p><p><b>Incorrect C++ warning fixed. </b> | |
| A bug in GCC has been fixed that caused spurious warnings | |
| about lambda expressions in C++ code that does not use them. | |
| </p><p><b>GCC fixes for NEON in big-endian mode. </b> | |
| Several compiler bugs have been fixed that could lead to | |
| incorrect code when using NEON in big-endian mode. The problems | |
| only manifested when using the auto-vectorizer (enabled by | |
| default at the <code class="option">-O3</code> optimization level) with | |
| the <code class="option">-mvectorize-with-neon-quad</code> option. | |
| </p><p><b>GCC fix for thread-local storage. </b> | |
| A compiler optimization bug has been fixed that affected | |
| accesses to thread-local storage. The bug resulted in | |
| assembler errors of the form <code class="literal">symbol `.LPIC2' is | |
| already defined</code>. | |
| </p><p><b>Incorrect code for built-in comparison functions. </b> | |
| A bug has been fixed that sometimes caused GCC's built-in | |
| comparison functions, | |
| such as <code class="function">__builtin_isgreaterequal</code>, to | |
| incorrectly raise exceptions when invoked on unordered | |
| floating-point arguments. | |
| </p><p><b>C++ exception handling. </b> | |
| A defect in the implementation of the EH-ABI specification | |
| has been fixed. The defect affected the catching of pointer | |
| types in code generated by the ARM <span class="trademark">RealView</span>® compiler but using | |
| the Sourcery G++ runtime libraries. The fix also retains | |
| backward compatibility with existing GCC-compiled code. | |
| </p><p><b>GCC bug where accesses to volatile structure fields are optimized away. </b> | |
| A bug has been fixed where accesses to volatile fields of a structure | |
| were sometimes incorrectly optimized away if the structure instance | |
| was defined as non-volatile. | |
| </p><p><b>Internal compiler error fixes. </b> | |
| Two bugs have been fixed that caused compiler crashes in rare cases. | |
| The first bug involved code with multiple comparison operations, | |
| and the second one involved <code class="type">char</code> to <code class="type">int</code> | |
| conversion. | |
| </p><p><b>Thumb-2 assembler validation fix. </b> | |
| The assembler now correctly rejects Thumb-2 | |
| <code class="literal">ADD</code>, <code class="literal">ADDS</code>, | |
| <code class="literal">SUB</code>, and <code class="literal">SUBS</code> | |
| instructions that have an invalid shift operand. | |
| Previously, invalid shift values were accepted and | |
| generated unpredictable instructions. | |
| </p><p><b>Objdump fix for multiple input files. </b> | |
| The Objdump utility did not produce correct disassembly | |
| when processing multiple input files. This has been fixed. | |
| </p><p><b><code class="function">popen</code> bug fix. </b> | |
| GLIBC's <code class="function">popen</code> function no longer causes a | |
| deadlock situation when invoked from more than one thread. | |
| </p><p><b><code class="function">strstr</code> and | |
| <code class="function">strcasestr</code> bug fixes. </b> | |
| A problem has been fixed that caused GLIBC's | |
| <code class="function">strstr</code> and <code class="function">strcasestr</code> | |
| functions to return wrong results on certain inputs. | |
| </p><p><b>Linux kernel headers update. </b> | |
| Linux kernel header files have been updated to version | |
| 2.6.38. | |
| </p><p><b>Improved GDB startup times when debugging remote | |
| targets | |
| . </b> | |
| GDB has been enhanced to reduce the startup times when working | |
| with remote targets via GDBServer, especially when the target uses | |
| a large number of shared libraries. | |
| </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id282310"></a>A.1.3. Changes in Sourcery G++ Lite 2010.09-50</h3></div></div></div><p><b>GCC fix for duplicated symbols. </b> | |
| A GCC optimizer bug that caused multiple definitions of | |
| local symbols has been fixed. Code affected by the bug | |
| was rejected by the assembler. | |
| </p><p><b>NEON code generation fix. </b> | |
| A GCC bug has been fixed that resulted in an assembler error | |
| <code class="literal">VFP/Neon double precision register expected</code>. | |
| </p><p><b>Static data size improvement at <code class="option">-Os</code>. </b> | |
| When optimizing for size, the compiler no longer implicitly | |
| adds padding bytes to align static and local arrays on | |
| word boundaries. | |
| This fixes static data size regressions introduced since GCC 4.4. | |
| The additional alignment is still used when optimizing for speed. | |
| </p><p><b>New <code class="option">-fstrict-volatile-bitfields</code> option. </b> | |
| The compiler has a new | |
| option, <code class="option">-fstrict-volatile-bitfields</code>, which | |
| forces access to a volatile structure member using the width | |
| that conforms to its type. | |
| <span> | |
| This option is enabled by default to conform to the ARM EABI. | |
| </span> | |
| Refer to the GCC manual for details. | |
| </p><p><b>Internal compiler error fixes. </b> | |
| A bug has been fixed that caused the compiler to crash | |
| on code containing a <code class="literal">typedef</code> alias | |
| for <code class="type">__builtin_va_list</code> with option | |
| <code class="option">-femit-struct-debug-baseonly</code>. | |
| <span> | |
| This bug affected compiling the Linux kernel. | |
| </span> | |
| A second bug has been fixed that caused a crash | |
| when compiling code using C99 variable-length arrays. | |
| <span> | |
| Additionally, a compiler crash on code using | |
| 64-bit integer multiplications with NEON vectorization enabled | |
| has also been fixed. | |
| </span> | |
| </p><p><b>NEON narrowing-move instructions. </b> | |
| The compiler now supports narrowing-move instructions | |
| when auto-vectorizing for NEON. Loops accessing arrays of | |
| <code class="type">char</code> or <code class="type">short</code> values are now more | |
| likely to be vectorized. | |
| </p><p><b>Improved support for atomic memory builtins. </b> | |
| The compiler support for built-in atomic memory access | |
| operations on ARMv7 targets has been improved. | |
| These builtins are documented in the GCC manual. | |
| </p><p><b>Improved thread-local storage access. </b> | |
| Sourcery G++ Lite now implements the TLS Descriptor access model, | |
| which provides faster access to thread-local storage from | |
| shared libraries and position-independent executables. | |
| This GCC option, which is enabled by default, | |
| additionally requires support from the dynamic loader. | |
| Code built with older versions of Sourcery G++ continues to | |
| work with the included loader. | |
| For more information, refer to | |
| <a class="xref" href="sec-dynamic-loader-version.html" title="3.5. Target Dynamic Loader Requirements">Section 3.5, “Target Dynamic Loader Requirements”</a>. | |
| </p><p><b>Linker debug information fix. </b> | |
| A bug in linker processing of debug information has been | |
| fixed. The bug sometimes prevented the Sourcery G++ debugger from | |
| displaying source code if the executable was linked | |
| with the <code class="option">--gc-sections</code> option. | |
| </p><p><b>Absolute branch bug fixes. </b> | |
| A bug that caused the assembler to crash on a branch | |
| to an absolute address has been fixed. Linker handling of the | |
| resulting relocations has also been improved. Previously this | |
| caused an invalid switch to ARM mode on ARMv7-M devices. | |
| </p><p><b><code class="code">VMOV</code> instruction bug fix. </b> | |
| A bug that caused the assembler to incorrectly reject | |
| certain valid immediate operands for the <code class="code">VMOV</code> | |
| instruction has been fixed. | |
| </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id282678"></a>A.1.4. Changes in Sourcery G++ Lite 2010.09-29</h3></div></div></div><p><b>Changes to Sourcery G++ version numbering. </b> | |
| Sourcery G++ product and Lite toolchains now uniformly use | |
| a version numbering scheme of the form 2011.03-41. | |
| The major and minor parts of the version number, in this | |
| case 2011.03, identify the release branch, | |
| while the final component is a build number within the branch. | |
| There are also new preprocessor macros defined by the compiler | |
| for the version number components so that you may conditionalize | |
| code for Sourcery G++ or particular Sourcery G++ versions. | |
| Details are available in the | |
| <a class="ulink" href="https://support.codesourcery.com/GNUToolchain/kbentry1" target="_top"> | |
| Sourcery G++ Knowledge Base</a>. | |
| </p><p><b>GCC fix for reference to undefined label. </b> | |
| A bug in the optimizer that caused GCC to emit references | |
| to undefined labels has been fixed. | |
| </p><p><b>Precision improvement with vectorization enabled. </b> | |
| The GCC auto-vectorizer no longer uses | |
| NEON floating-point instructions unless the | |
| <code class="option">-funsafe-math-optimizations</code> option (implied | |
| by <code class="option">-ffast-math</code>) is specified. This is because | |
| NEON hardware does not fully support the IEEE 754 standard for | |
| floating-point arithmetic. In particular, very small quantities | |
| may be flushed to zero. | |
| </p><p><b>Alignment attributes. </b> | |
| A bug has been fixed that caused the compiler to ignore | |
| alignment attributes of C++ static member variables where | |
| the attribute was present on the definition, but not the | |
| declaration. | |
| </p><p><b><code class="code">naked</code> attribute semantics. </b> | |
| The <code class="code">naked</code> function attribute now also implies the | |
| <code class="code">noinline</code> and <code class="code">noclone</code> attributes. | |
| This fixes bugs resulting from invalid optimizations of functions | |
| with this attribute. | |
| </p><p><b>Stack corruption bug fix. </b> | |
| A bug in GCC has been fixed that caused stack corruption | |
| in functions with the <code class="code">interrupt</code> attribute. | |
| </p><p><b>GCC bug fix for push multiple instruction generation. </b> | |
| A bug has been fixed that caused GCC to generate incorrect | |
| push multiple instructions, causing an assembler warning | |
| <code class="literal">register range not in ascending order</code>. | |
| </p><p><b>Thumb-2 internal compiler error fix. </b> | |
| A bug has been fixed that caused the compiler to crash | |
| when compiling Thumb-2 code using 64-bit integer arithmetic. | |
| </p><p><b>Compiler optimization improvements. </b> | |
| The compiler has been enhanced with a number of optimization | |
| improvements, including: | |
| </p><div class="itemizedlist"><ul type="disc"><li> | |
| More efficient assignment for structures containing bitfields. | |
| </li><li> | |
| Better code for initializing C++ arrays with explicit | |
| element initializers. | |
| </li><li> | |
| Improved logic for eliminating/combining redundant comparisons in | |
| code with nested conditionals. | |
| </li><li> | |
| Better selection of loop variables, resulting in fewer | |
| temporaries and more efficient register usage. | |
| </li><li> | |
| More optimization of references to globals in | |
| position-independent code. | |
| </li><li> | |
| Various Thumb code generation improvements. | |
| </li><li> | |
| Better code when constant addresses are used as arguments to | |
| inline assembly statements. | |
| </li><li> | |
| Better code for copying small constant strings. | |
| </li><li> | |
| Improved tuning for Cortex-M4 processors. | |
| </li><li> | |
| Cortex-A9 specific tuning for VFP and NEON instructions. | |
| </li><li> | |
| Use of more NEON features. | |
| </li></ul></div><p> | |
| </p><p><b>Preprocessor symbols for floating-point calling convention. </b> | |
| Built-in preprocessor symbols <code class="symbol">__ARM_PCS</code> and | |
| <code class="symbol">__ARM_PCS_VFP</code> are now defined to indicate | |
| the current floating-point calling convention. | |
| </p><p><b>GCC version 4.5.1. </b> | |
| Sourcery G++ Lite for ARM GNU/Linux is now based on GCC version 4.5.1. | |
| For more information about changes from GCC version 4.4 that was | |
| included in previous releases, see | |
| <code class="uri">http://gcc.gnu.org/gcc-4.5/changes.html</code>. | |
| </p><p><b>C++ locale support. </b> | |
| The C++ standard library now includes locale support. | |
| </p><p><b>New <code class="option">-Wdouble-promotion</code> warning | |
| option. </b> | |
| The compiler has a new | |
| option, <code class="option">-Wdouble-promotion</code>, which enables | |
| warnings about implicit promotions of <code class="type">float</code> | |
| values to <code class="type">double</code>. This option is useful when | |
| compiling code for processors (such as ARM Cortex-M4) that | |
| have hardware support for single-precision floating-point | |
| arithmetic only, where unintentional use of double precision | |
| results in dramatically slower code. | |
| </p><p><b>Linker bug fix. </b> | |
| A bug that caused the linker error <code class="literal">relocation | |
| truncated to fit: R_ARM_THM_JUMP24</code> when linking | |
| some Thumb-2 applications has been fixed. | |
| </p><p><b>Assembler PC-relative store fix. </b> | |
| A bug that caused the assembler to reject some valid | |
| PC-relative store instructions has been fixed. It now | |
| issues a warning instead for architectures where these | |
| instructions are deprecated. | |
| </p><p><b>ARMv7-A linker bug fix. </b> | |
| A bug in the linker support for <code class="option">--fix-cortex-a8</code>, | |
| which is enabled by default when linking ARMv7-A objects, has been | |
| fixed. Programs affected by the bug sometimes crashed with | |
| segmentation fault or illegal instruction errors. | |
| </p><p><b>Smaller C++ programs with <code class="option">-g</code>. </b> | |
| An assembler bug has been fixed that caused unnecessary references | |
| to exception-handling routines from C++ programs when debug | |
| information is enabled. For programs that do not otherwise | |
| use exceptions, this change results in smaller code size. | |
| </p><p><b>Additional validation in the assembler. </b> | |
| The assembler now diagnoses an error, instead of producing | |
| an invalid object file, when directives such as | |
| <code class="literal">.hidden</code> are missing operands. | |
| </p><p><b>Assembler PC-relative load fix. </b> | |
| An assembler bug that caused the assembler to reject some | |
| references to global symbols has been fixed. This | |
| bug affected Thumb instructions of the form | |
| <code class="literal">ldr r0, <em class="replaceable"><code>symbol</code></em></code>. | |
| </p><p><b>Strip bug fix. </b> | |
| A bug in the <code class="command">strip</code> and | |
| <code class="command">objcopy</code> utilities, which resulted in | |
| stripped object files that the linker could not recognize, | |
| has been fixed. | |
| </p><p><b>Binutils update. </b> | |
| The binutils package has been updated to version | |
| 2.20.51.20100809 from the FSF trunk. This update includes | |
| numerous bug fixes. | |
| </p><p><b>More efficient process creation functions. </b> | |
| The <code class="function">system</code> and | |
| <code class="function">popen</code> functions provided by GLIBC have | |
| been improved to require less memory when memory overcommit | |
| is disabled in the Linux kernel. | |
| </p><p><b>Optimized string and memory functions. </b> | |
| The performance of GLIBC's string and memory functions, including | |
| <code class="function">strstr</code> and <code class="function">memmem</code>, | |
| have been significantly improved for large inputs. | |
| </p><p><b>Linux kernel headers update. </b> | |
| Linux kernel header files have been updated to version | |
| 2.6.35.2. | |
| </p><p><b> | |
| Improved support for debugging <span class="trademark"> | |
| RealView</span>® C++ programs | |
| . </b> | |
| GDB has been enhanced to handle some debug information | |
| contained in binaries produced by the | |
| ARM <span class="trademark">RealView</span>® | |
| compiler. Formerly, GDB sometimes crashed on programs | |
| which use C++ templates. | |
| Another bug has been fixed that caused GDB to fail to place | |
| breakpoints in binaries produced by the | |
| ARM <span class="trademark">RealView</span>® | |
| compiler when the source file location for the breakpoint was | |
| specified as an absolute pathname. | |
| </p><p><b>GDB update. </b> | |
| The included version of GDB has been updated to | |
| 7.2.50.20100908. This update adds numerous bug fixes and | |
| new features, including improved C++ language support, | |
| a new command to save breakpoints to a file, | |
| a new | |
| convenience variable <code class="varname">$_thread</code> that holds | |
| the number of the current thread, among many other | |
| improvements. | |
| </p><p><b>GDB crash fix. </b> | |
| A bug has been fixed that caused GDB to crash on launch if | |
| the environment variable <code class="literal">CYGPATH</code> is set | |
| to a program that does not exist or cannot be executed. | |
| </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id283824"></a>A.1.5. Changes in Older Releases</h3></div></div></div><p> | |
| For information about changes in older releases of | |
| Sourcery G++ Lite for ARM GNU/Linux, | |
| please refer to the Getting Started guide packaged with those | |
| releases. | |
| </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch06s03.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="chap-license.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">6.3. Manuals for GNU Toolchain Components </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix B. Sourcery G++ Lite Licenses</td></tr></table></div></body></html> |