Red Hat Developer Toolset 1.0

1.0 Release Notes

Release Notes for Red Hat Developer Toolset 1.0

Edition 0

Matt Newsome

Red Hat, Inc

Douglas Silas

Red Hat, Inc Engineering Content Services

Petr Kovář

Red Hat, Inc Engineering Content Services

Legal Notice

Copyright © 2012 Red Hat, Inc.
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack Logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.

Abstract

Red Hat Developer Toolset is a new Red Hat offering for developers on the Red Hat Enterprise Linux platform. Using a framework called Software Collections, an additional set of C and C++ tools is installed into the /opt directory, as recommended by the UNIX Filesystem Hierarchy Standard. These tools are enabled by the user on demand using the supplied scl utility. Red Hat Developer Toolset 1.0 provides current versions of the GNU Compiler Collection, GNU Debugger, and other binary utilities. These do not replace the Red Hat Enterprise Linux system versions of these tools, nor will they be used in preference to those system versions unless explicitly invoked using the scl utility.
These Release Notes contain important information available at the time of release of Red Hat Developer Toolset 1.0. Known problems, resources, and other issues are discussed here. Read this document before beginning to use Red Hat Developer Toolset 1.0.

Chapter 1. Features

The Red Hat Developer Toolset 1.0 release provides the following tools:
  • GNU Compiler Collection (GCC) version 4.7.0;
  • GNU Debugger (GDB) version 7.4.50;
  • GNU Binutils version 2.22.52.
The following features are expected to be fully functional and stable in this 1.0 release:
  • Building applications that are compliant with C89, C99 and C11 standards.
  • Building applications that are compliant with C++98 and C++03 versions of C++.
  • Building applications that are compliant with C++11.
  • Building the above applications on Red Hat Enterprise Linux 5 and executing on Red Hat Enterprise Linux 5 or Red Hat Enterprise Linux 6.

    Note

    Building on Red Hat Enterprise Linux 6 and executing on Red Hat Enterprise Linux 5 will not be supported by this or later releases.
  • Building the above applications on Red Hat Enterprise Linux 6 and executing on Red Hat Enterprise Linux 6.
  • Building code compliant with OpenMP version 3.0 or lower (via -fopenmp).
  • Using the GCC compiler's experimental Transactional Memory feature (via -fgnu-tm).
  • Using the Red Hat Developer Toolset version of GCC with the Red Hat Enterprise Linux 6.2 version of the Eclipse Integrated Development Environment (IDE).

    Note

    The Eclipse IDE is not available to Red Hat Enterprise Linux 5 users.
The following features are dependent on future updates to Red Hat Enterprise Linux and should not be used in this release:
  • Building OpenMP version 3.1-compliant code (via -fopenmp) on Red Hat Enterprise Linux 5.8, Red Hat Enterprise Linux 6.2, or earlier minor releases. The ability to build such applications will be enabled in future releases of Red Hat Enterprise Linux.

Chapter 2. System Requirements

Red Hat Developer Toolset 1.0 contains RPM packages for both Red Hat Enterprise Linux 5 and Red Hat Enterprise Linux 6, both for the 32-bit and 64-bit Intel and AMD architectures. The correct packages must be installed according to the host operating system in use.
Red Hat Enterprise Linux 5 RPM packages can be used on supported versions of Red Hat Enterprise Linux 5 only, and Red Hat Enterprise Linux 6 RPM packages can be used on supported versions of Red Hat Enterprise Linux 6 only.

Chapter 3. Usage

For detailed information on Red Hat Developer Toolset, refer to the Red Hat Developer Toolset 1.0 User Guide. The User Guide for Red Hat Developer Toolset 1.0 includes information on invocation and usage of the Red Hat Developer Toolset versions of the GNU Compiller Collections, GNU Debugger, and GNU Binutils.

3.1. Guidance on Experimental Features in GCC version 4.7.0

Red Hat Developer Toolset 1.0 includes GCC version 4.7.0. This new toolchain release includes a large number of feature enhancements and bug fixes in addition to performance improvements. It also contains some features that are considered experimental.

C++11

The GCC 4.7 compiler provides experimental support for building applications compliant with C++11 using the -std=c++11 (or equivalent -std=gnu++11) command line options. As the upstream GCC community development does not guarantee C++11 ABI compatibility across major versions of GCC, the same applies to use of C++11 with Red Hat Developer Toolset.
Consequently, using the -std=c++11 option is supported in Red Hat Developer Toolset 1.0 only when all C++ objects compiled with that flag have been built using the same major version of Red Hat Developer Toolset. The mixing of objects, binaries and libraries, built by the Red Hat Enterprise Linux 5 or 6 system toolchain GCC using the -std=c++0x or -std=gnu++0x flags, with those built with the -std=c++11 or -std=gnu++11 flags using the GCC in Red Hat Developer Toolset is explicitly not supported.
In particular, note that GCC in Red Hat Developer Toolset 1.0 includes a currently unresolved upstream gcc-4.7.0-5.2 C++11 library ABI issue. This issue renders the use of some regular (C++98-compatible) STL classes unsafe when code built in C++11 mode by the Red Hat Developer Toolset GCC is mixed with code built in C++98/03 mode. More specific details are given below. This particular issue will be resolved in a future update to Red Hat Developer Toolset. At the time of release, C++11 ABI compatibility is still being addressed by the upstream GCC community.
Additionally, as later major versions of Red Hat Developer Toolset may use a later major release of GCC, forward-compatibility of objects, binaries and libraries built with the -std=c++11 or -std=gnu++11 options cannot be guaranteed, and so is not supported.
The default language standard setting for Red Hat Developer Toolset is C++98. Any C++98-compliant binaries or libraries built in this default mode (or explicitly with -std=c++98) can be freely mixed with binaries and shared libraries built by the Red Hat Enterprise Linux 5 or 6 system toolchain GCC. Red Hat recommends use of this default -std=c++98 mode for production software development.

Transactional Memory

The GCC 4.7 compiler includes experimental support for transactional memory. Users are advised that, when executing applications built with -gnu-tm, it is currently a prerequisite to also have the appropriate version of the libitm.so.1 shared library installed. This library is installed by default for Red Hat Developer Toolset users as part of libitm-4.7.0-*.rpm. The library should be installed along with your application on any non-development machine where such applications will need to run. Red Hat plans to include this shared library as a standard component in future releases of Red Hat Enterprise Linux.

Chapter 4. Known Issues

For the list of features of the Red Hat Developer Toolset 1.0 release, refer to Chapter 1, Features.
The following known issues are present in this release and may be fixed in later releases:
  • GCC – An issue exists with the C++11 Library ABI in gcc version 4.7.0-5.2 supplied as part of Red Hat Developer Toolset 1.0. The issue affects developers using the -std=c++11/-std=gnu++11 options. Use of some regular (C++98-compatible) STL classes is unsafe when code built in C++11 mode by the Red Hat Developer Toolset GCC is mixed with code built in C++98/03 mode. More specifically, the problem only affects binaries (applications) or shared libraries that contain instances of libstdc++ classes std::list, std::pair or std::complex. An example of this would be a binary application built with Red Hat Developer Toolset's gcc-4.7.0-5.2 using the -std=c++11 or -std=gnu++11 switches and passing a reference to a std::list object to a function in a C++ system or user library built with the gcc-4.4 compiler in Red Hat Enterprise Linux 5 or Red Hat Enterprise Linux 6. The layout of the std::list object in memory differs between the two, possibly resulting in runtime failure, most likely a segmentation fault. The issue does not affect users of C++98 mode (-std=c++98/-std=gnu++98). Users are advised to avoid mixing binaries or shared libraries compiled with -std=c++11/std=-gnu++11 with those compiled with -std=c++98/-std=gnu++98 in this release. This issue will be resolved by a forthcoming update to Red Hat Developer Toolset 1.0.
  • GCC – An issue exists with C++11 exception-handling with libstdc++ versions less than 4.1.2-52.el5_8.1 on Red Hat Enterprise Linux 5. The issue affects developers building applications with Red Hat Developer Toolset and end users of those applications when deployed to these systems. Users of Red Hat Enterprise Linux 5.6 or 5.8 should apply the RHBA-2012:0527 or RHBA-2012:13247 – gcc bug fix update advisory, respectively, to resolve this issue. Note that future minor releases of Red Hat Enterprise Linux 5, later than 5.8, will include this fix automatically. The issue does not affect users of Red Hat Enterprise Linux 6.
  • GCC – A very low-impact Red Hat Enterprise Linux 6 C++ demangler issue exists. When calling abi::__cxa_demangle("e", 0, &length, &cc), length is not updated to the length of the demangled name. Users are not expected to encounter this issue.
Other notes:
  • Red Hat Developer Toolset primarily aims to provide a compiler for development of user applications for deployment on multiple versions of Red Hat Enterprise Linux. Operating system components, kernel modules and device drivers generally correspond to a specific version of Red Hat Enterprise Linux, for which the supplied base OS compiler is recommended.
  • Red Hat Developer Toolset 1.0 supports C and C++ development only. If compilation of source code written in other languages (for example: Fortran) is attempted with the Red Hat Developer Toolset GCC (for example with the command scl enable devtoolset-1.0 'gcc -M test.F'), a message will report that no Fortran compiler is installed. Because this is an expected behavior, either invoke the system Fortran compiler front end via gfortran or use the system version of GCC available on Red Hat Enterprise Linux.
  • Use of any version of Valgrind with the Red Hat Developer Toolset 1.0, or any applications or libraries built with Red Hat Developer Toolset, is not supported.
  • Building an application with Red Hat Developer Toolset 1.0 on Red Hat Enterprise Linux (for example: Red Hat Enterprise Linux 5.8) and then executing that application on an earlier minor version (such as Red Hat Enterprise Linux 5.6) may result in runtime errors due to differences in non-toolchain components between Red Hat Enterprise Linux releases. Users are advised to check compatibility carefully. Red Hat only supports execution of an application built with Red Hat Developer Toolset on the same, or a later, supported release of Red Hat Enterprise Linux than the version used to build that application.
  • All code in the non-shared library libstdc++_nonshared.a in Red Hat Developer Toolset 1.0 is licensed under the GNU General Public License v3 with additional permissions granted under Section 7, described in the GCC Runtime Library Exception version 3.1, as published by the Free Software Foundation.
  • The compiler included in Red Hat Developer Toolset emits newer Debug With Arbitrary Record Format (DWARF) debugging records than previous compilers available on Red Hat Enterprise Linux. These new debugging records improve the debugging experience in a variety of ways, particularly for C++ and optimized code. However, certain tools are not yet capable of handling the newer DWARF debug records. To generate the older style debugging records, use the options -gdwarf-2 -gstrict-dwarf or -gdwarf-3 -gstrict-dwarf.
  • Some newer library features are statically linked into applications built with Red Hat Developer Toolset to support execution on multiple versions of Red Hat Enterprise Linux. This adds a small additional security risk as normal Red Hat Enterprise Linux errata would not change this code. If the need for developers to rebuild their applications due to such an issue arises, Red Hat will signal this via a security erratum. Developers are strongly advised not to statically link their entire application for the same reasons.
  • Note that error messages related to a missing libitm library when using the -fgnu-tm option require the libitm package to be installed. You can install the package with the following command:
    yum install libitm
  • The ccache utility can be used with GCC included in Red Hat Developer Toolset by setting your environment correctly. For example:
    ~]$ scl enable devtoolset-1.0 '/usr/lib64/ccache/gcc -c foo.c'
    Alternatively, you can create a shell with the Red Hat Developer Toolset version of GCC as the default compiler:
    ~]$ scl enable devtoolset-1.0 'bash'
    After you have created the shell, run the following two commands:
    ~]$ export PATH=/usr/lib64/ccache${PATH:+:${PATH}}
    
    ~]$ gcc -c -o a.o a.c
  • Use of -m32 and -lquadmath options can sometimes result in errors (file format not recognized; treating as linker script, syntax error). This is a known issue that will be fixed in a future release of Red Hat Developer Toolset. A simple workaround is to replace -lquadmath on the gcc command line with `gcc -print-file-name=libquadmath.so | sed 's/x86_64/i?86/'`, that is:
    gcc -m32 `gcc -print-file-name=libquadmath.a | sed 's/x86_64/i?86/'` other-options
  • Red Hat Developer Toolset 1.0 is a developer product that depends on -devel packages. Because -devel packages for Red Hat Enterprise Linux Client are only available via optional Red Hat Network channels, users need to enable these optional Red Hat Network channels to be able to install Red Hat Developer Toolset 1.0 on Red Hat Enterprise Linux Client.

Chapter 5. Package Manifest

The following binary and source RPM packages are included in Red Hat Developer Toolset 1.0 for both Red Hat Enterprise Linux 5 and 6 unless otherwise specified. A list of dependencies required by Red Hat Developer Toolset 1.0 is also provided below.

Binary RPM Packages Included in This Release

  • devtoolset-1.0
  • devtoolset-1.0-build
  • devtoolset-1.0-runtime
  • devtoolset-1.0-gcc
  • devtoolset-1.0-gcc-c++
  • devtoolset-1.0-gcc-plugin-devel
  • devtoolset-1.0-libitm-devel
  • devtoolset-1.0-libquadmath-devel
  • devtoolset-1.0-libstdc++-devel
  • devtoolset-1.0-gcc-debuginfo
  • devtoolset-1.0-binutils
  • devtoolset-1.0-binutils-devel
  • devtoolset-1.0-binutils-debuginfo
  • devtoolset-1.0-gdb
  • devtoolset-1.0-gdb-gdbserver
  • devtoolset-1.0-gdb-debuginfo
  • devtoolset-1.0-gdb-doc
  • libitm
  • scl-utils
  • scl-utils-build
  • scl-utils-debuginfo

Source RPM Packages Included in This Release

  • devtoolset
  • devtoolset-1.0-gcc
  • devtoolset-1.0-binutils
  • devtoolset-1.0-gdb
  • scl-utils

Other Dependencies

  • glibc-devel
  • glibc-headers
  • kernel-headers
  • libgomp
  • scl-utils
  • gmp (only on Red Hat Enterprise Linux 5)
  • mpfr (only on Red Hat Enterprise Linux 6)

Chapter 6. Additional Resources

For more information about Red Hat Developer Toolset 1.0 and Red Hat Enterprise Linux, refer to the resources listed below.

Red Hat Enterprise Linux Developer Program Group

Users of Red Hat Developer Toolset can access the Red Hat Enterprise Linux Developer Program Group in the Red Hat Customer Portal to get developer related information for the development tools available for Red Hat Enterprise Linux. In addition, users can find there developer related papers and videos on topics that are of interest to developers, for example RPM building, threaded programming, performance tuning, debugging, and so on.
  • To visit the Red Hat Enterprise Linux Developer Program Group, log in to the Customer Portal, click Groups at the top of the page and choose Red Hat Enterprise Linux Developer Program from the Groups List.

Online Documentation

Revision History

Revision History
Revision 0-24.4002013-10-31Rüdiger Landmann
Rebuild with publican 4.0.0
Revision 0-242012-07-18Anthony Towns
Rebuild for Publican 3.0
Revision 1-0Tue Jun 26 2012Petr Kovář
Update for Red Hat Developer Toolset 1.0.
Revision 0-3Tue May 22 2012Petr Kovář
Update for Red Hat Developer Toolset 1.0 Beta-2.
Revision 0-2Thu Apr 30 2012Petr Kovář
Update for Red Hat Developer Toolset 1.0 Beta-1.
Revision 0-1Tue Apr 10 2012Douglas Silas
Update for Red Hat Developer Toolset 1.0 Alpha-2.
Revision 0-0Wed Mar 28 2012Douglas Silas
Initial creation of the book.