Nouvelle version majeure de GCC : GCC 4.3.0
Posted by patrick sur mars 11, 2008
GCC 4.3.0 has been released. GCC 4.3.0 is a major release, containing substantial new functionality not available in GCC 4.2.x or previous GCC releases. See: http://gcc.gnu.org/gcc-4.3/changes.html for more information about changes in GCC 4.3.0.
There is one important caveat. It was discovered after the final release
has been made that some OS kernels on i?86 and x86_64 architectures
violate the processor specific ABI with regards to the DF flag, if a process
is interrupted with a signal while doing overlapping memmove or running some other code with DF flag set, the signal handler might be started with DF flag set on entry to the signal handler. GCC 4.3.0 no longer emits cld instructions unnecessarily, so GCC 4.3.0 compiled async signal handlers or functions the signal handlers call that rely on DF flag being cleared might misbehave. This will be hopefully fixed in the kernels soon and future GCC releases might provide an optional workaround for this bug.
Fixes for some systems:
– http://gcc.gnu.org/gcc-4.3/changes.html (« GCC requires the GMP and MPFR libraries for building all the various front-end languages it supports. See the prerequisites page for version requirements… The GCC middle-end has been integrated with the MPFR library. This allows GCC to evaluate and replace at compile-time calls to built-in math functions having constant arguments with their mathematically equivalent results. In making use of MPFR, GCC can generate correct results regardless of the math library implementation or floating point precision of the host platform. This also allows GCC to generate identical results regardless of whether one compiles in native or cross-compile configurations to a particular target….C++: Experimental support for the upcoming ISO C++ standard, C++0x.
-Wc++0x-compat has been added and is now enabled by default for
-Wall. It produces warnings for constructs whose meaning differs between ISO C++ 1998 and C++0x… An experimental parallel mode has been added. This is a parallel implementation of many C++ Standard library algorithms, like
std::sort, to give but four examples…Java: gcj now uses the Eclipse Java compiler for its Java parsing needs. This enables the use of all 1.5 language features, and fixes most existing front end bugs…Other significant improvements
- The compiler’s
--helpcommand-line option has been extended so that it now takes an optional set of arguments. These arguments restrict the information displayed to specific classes of command-line options, and possibly only a subset of those options. It is also now possible to replace the descriptive text associated with each displayed option with an indication of its current value, or for binary options, whether it has been enabled or disabled.
Here are some examples. The following will display all the options controlling warning messages:
Whereas this will display all the undocumented, target specific options:
This sequence of commands will display the binary optimizations that are enabled by
gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts diff /tmp/O2-opts /tmp/O3-opts | grep enabled
– http://en.wikipedia.org/wiki/GNU_Compiler_Collection (« GCC was started by Richard Stallman in 1985. He extended an existing compiler to compile C. The compiler originally compiled Pastel, an extended, nonportable dialect of Pascal, and was written in Pastel. It was rewritten in C by Len Tower and Stallman, and released in 1987 as the compiler for the GNU Project, in order to have a compiler available that was free software. Its development was supervised by the Free Software Foundation.« )