binutils

GNU Toolchain Update – Spring 2018

GNU Toolchain Update – Spring 2018

The GNU Toolchain is a collection of programming tools produced by the GNU Project. The tools are often packaged together due to their common use for developing software applications, operating systems, and low-level software for embedded systems.

This blog is part of a series (see: Fall 2017 Update) covering the latest changes and improvements in the components that make up this Toolchain. Apart from the announcement of new releases, the features described here are at the bleeding edge of software development in the tools. This means that it may be awhile before they make it into production releases, and they might not be fully functional yet. But anyone who is interested in experimenting with them can build their own copy of the Toolchain and then try them out.

Continue reading “GNU Toolchain Update – Spring 2018”

Share
Recommended compiler and linker flags for GCC

Recommended compiler and linker flags for GCC

Did you know that when you compile your C or C++ programs, GCC will not enable all exceptions by default?  Do you know which build flags you need to specify in order to obtain the same level of security hardening that GNU/Linux distributions use (such as Red Hat Enterprise Linux and Fedora)? This article walks through a list of recommended build flags.

The GNU-based toolchain in Red Hat Enterprise Linux and Fedora (consisting of GCC programs such as gcc, g++, and Binutils programs such as as and ld)  are very close to upstream defaults in terms of build flags. For historical reasons, the GCC and Binutils upstream projects do not enable optimization or any security hardening by default. While some aspects of the default settings can be changed when building GCC and Binutils from source, the toolchain we supply in our RPM builds does not do this. We only align the architecture selection to the minimum architecture level required by the distribution.

Consequently, developers need to pay attention to build flags, and manage them according to the needs of their project for optimization, level of warning and error detection, and security hardening.

Continue reading “Recommended compiler and linker flags for GCC”

Share
Fall 2017 GNU Toolchain Update

Fall 2017 GNU Toolchain Update

The GNU Toolchain is a collection of programming tools produced by the GNU Project. The tools are often packaged together due to their common use for developing software applications, operating systems, and low-level software for embedded systems.

This blog is part of a regular series covering the latest changes and improvements in the components that make up this Toolchain. Apart from the announcement of new releases, however, the features described here are at the bleeding edge of software development in the tools. This does mean that it may be a while before they make it into production releases, and they might not be fully functional yet. But anyone who is interested in experimenting with them can build their own copy of the Toolchain and then try them out.

Continue reading “Fall 2017 GNU Toolchain Update”

Share
December ’15/January ’16 GNU Toolchain Update

December ’15/January ’16 GNU Toolchain Update

First of all I have an apology to make. I managed to reformat my hard drive over the holidays, wiping away all of my notes for this blog. In particular I was contacted by a reader about an enhancement to gcc’s inline assembler support which I have now totally lost. 🙁 So, dear reader, wherever you are, I apologise, and if you contact me again I will make sure that the extended asm enhancement gets mentioned in the next blog post.

The big news, for me at least, is that binutils 2.26 is now out.  This release contains lots of bug fixes of course, plus a few new features:

  • A new configure option:  –enable-compressed-debug-sections=[all,gas,gold,ld,none]
    This decides whether DWARF debug sections should be compressed by default. For now this option is off for all of the tools, although of course it can be enabled via a command line option.  In future releases of binutils however, the option will be enabled by default.
  • Support for the ARC EM/HS and ARC600/700 architectures.
  • Support for the LLVM plugin.
  • Continue reading “December ’15/January ’16 GNU Toolchain Update”

Share