nickclifton (nickclifton) wrote,

July/Augist 2015 GNU Toolchain Update

Hi Guys,

  Sorry for the delay in bringing you this update; I have been very busy in the last few months.  Anyway the highlights of the changes to the GNU Toolchain are as follows:

   * The GDB 7.10 branch has been created.  Expect a release soon.

   * Support for tracepoints on aarch64-linux was added in GDBserver.

   * A point update of the FSF Binutils - 2.25.1 - has been released.  No new features but lots of important bug fixes.

   * GCC 5.2 has been released.  This is a bug-fix update to the previous 5.1 release.

   * The linker now has experimental support for the removal of redundant sections from COFF and PE format files.  This is enabled via the --gc-sections linker command line option.

   * A new linker command line option --require-defined=<symbol> has been added.  This behaves in much the same way as the --undefined=<sym> option in that it creates a reference to an undefined symbol that should force a library to be pulled into the link or garbage collection not to remove a specific section.  The difference between --require-defined and --undefined is that with the former the linker will issue an error message if the specified symbol has not been defined by the end of the link.

  * The --disassemble (or -d) and --disassemble-all (or -D) options to objdump have received a subtle change.  With -d objdump will assume that any symbols present in a code section occur on the boundary between instructions and so it will refuse to disassemble across such a boundary.  With -D however this assumption is suppressed.  This means that it is possible for the output of -d and -D to differ if, for example, data is stored in a code section.

  * GCC has a couple of new warning options available:


    This generates a warning when the __builtin_frame_address or __builtin_return_address are called with an argument greater than 0.  Such calls may return indeterminate values or crash the program.


    This generates a warning if a self-comparison always evaluates to true or false.  This detects various mistakes such as:

      int i = 1;

      if (i > i) { ... }

  * With the Nios II port of GCC it is now possible to specify the target architecture variant with -march=r1 or -march=r2.  It is also possible to explicitly enable or disable the use of the r2 BMX (bit manipulation) and CDX (code density) instructions via the use of the new -mbmx -mno-bmx -mcdx and -mno-cdx options.

  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded