nickclifton (nickclifton) wrote,

November 2013 GNU Toolchain Update

Hi Guys,

  There is lots to report this month:

  * A port to the Andes NDS32 architecture has been accepted into GCC.  Unfortunately the accompanying binutils port has yet to be accepted.

  * GCC now has a pointer checking system to detect out of bounds pointer references.  Enabled via the new -fcheck-pointer-bounds command line option it adds extra code to compiled functions when a special set of built-in functions are used.  Here is a small  example:
    void *
      __wrap_malloc (size_t n)
         void * p = (void *) __real_malloc (n);
         return __builtin___bnd_set_ptr_bounds (p, n);

    This tells GCC that the returned pointer refers to memory between p and p + n - 1.  (If pointer checking is not enable, the built-in function still works, it just returns its first argument).

    There is a whole set of these built-in functions to cover various different situations.  This has the advantage that the boundary checking code is only added when a pointer affected by one of these built-ins is used.

    In related news support for the old mudflap pointer boundary checker has now been removed from GCC.

  * GCC has a new warning option  -Wdate-time This generates warning when the macros __TIME__, __DATE__ or __TIMESTAMP__ are encountered in the source code as they might prevent bit-wise-identical reproducible compilations.

  * A new GCC command line optimization option -flive-range-shrinkage attempts to improve register usage by reducing the range over which a particular value or variable has to be held in a register.  This is usually helpful on fast processors with small or moderate size register sets.

  * Another new GCC command line option -fisolate-erroneous-paths detects pieces of code which trigger erroneous or undefined behaviour.  The optimization then isolates these regions from the main control flow and replaces them with a trap.

  * The RS6000/PowerPC port's -mabi= command line option can accept two new parameters:


    These control the selection of the old ELFv1 ABI and the new ELFv2 ABI.  The v1 ABI is the default for big-endian PowerPC targets and the v2 ABI is the default for little-endian PowerPC targets.

  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded