pkgsrc/devel/valgrind
alnsn 9719ba4125 Update valgrind to version 3.9.0.
Main changes are listed below, full list is available on
http://valgrind.org/docs/manual/dist.news.html

Release 3.9.0 (31 October 2013)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.9.0 is a feature release with many improvements and the usual
collection of bug fixes.

This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux,
PPC64/Linux, S390X/Linux, MIPS32/Linux, MIPS64/Linux, ARM/Android,
X86/Android, X86/MacOSX 10.7 and AMD64/MacOSX 10.7.  Support for
MacOSX 10.8 is significantly improved relative to the 3.8.0 release.

* ================== PLATFORM CHANGES =================

* Support for MIPS64 LE and BE running Linux.  Valgrind has been
  tested on MIPS64 Debian Squeeze and Debian Wheezy distributions.

* Support for MIPS DSP ASE on MIPS32 platforms.

* Support for s390x Decimal Floating Point instructions on hosts that
  have the DFP facility installed.

* Support for POWER8 (Power ISA 2.07) instructions

* Support for Intel AVX2 instructions.  This is available only on 64
  bit code.

* Initial support for Intel Transactional Synchronization Extensions,
  both RTM and HLE.

* Initial support for Hardware Transactional Memory on POWER.

* Improved support for MacOSX 10.8 (64-bit only).  Memcheck can now
  run large GUI apps tolerably well.

* ==================== TOOL CHANGES ====================

* Memcheck:

  - Improvements in handling of vectorised code, leading to
    significantly fewer false error reports.  You need to use the flag
    --partial-loads-ok=yes to get the benefits of these changes.

  - Better control over the leak checker.  It is now possible to
    specify which leak kinds (definite/indirect/possible/reachable)
    should be displayed, which should be regarded as errors, and which
    should be suppressed by a given leak suppression.  This is done
    using the options --show-leak-kinds=kind1,kind2,..,
    --errors-for-leak-kinds=kind1,kind2,.. and an optional
    "match-leak-kinds:" line in suppression entries, respectively.

    Note that generated leak suppressions contain this new line and
    are therefore more specific than in previous releases.  To get the
    same behaviour as previous releases, remove the "match-leak-kinds:"
    line from generated suppressions before using them.

  - Reduced "possible leak" reports from the leak checker by the use
    of better heuristics.  The available heuristics provide detection
    of valid interior pointers to std::stdstring, to new[] allocated
    arrays with elements having destructors and to interior pointers
    pointing to an inner part of a C++ object using multiple
    inheritance.  They can be selected individually using the
    option --leak-check-heuristics=heur1,heur2,...

  - Better control of stacktrace acquisition for heap-allocated
    blocks.  Using the --keep-stacktraces option, it is possible to
    control independently whether a stack trace is acquired for each
    allocation and deallocation.  This can be used to create better
    "use after free" errors or to decrease Valgrind's resource
    consumption by recording less information.

  - Better reporting of leak suppression usage.  The list of used
    suppressions (shown when the -v option is given) now shows, for
    each leak suppressions, how many blocks and bytes it suppressed
    during the last leak search.

* Helgrind:

  - False errors resulting from the use of statically initialised
    mutexes and condition variables (PTHREAD_MUTEX_INITIALISER, etc)
    have been removed.

  - False errors resulting from the use of pthread_cond_waits that
    timeout, have been removed.

* ==================== OTHER CHANGES ====================

* Some attempt to tune Valgrind's space requirements to the expected
  capabilities of the target:

  - The default size of the translation cache has been reduced from 8
    sectors to 6 on Android platforms, since each sector occupies
    about 40MB when using Memcheck.

  - The default size of the translation cache has been increased to 16
    sectors on all other platforms, reflecting the fact that large
    applications require instrumentation and storage of huge amounts
    of code.  For similar reasons, the number of memory mapped
    segments that can be tracked has been increased by a factor of 6.

  - In all cases, the maximum number of sectors in the translation
    cache can be controlled by the new flag --num-transtab-sectors.

* Changes in how debug info (line numbers, etc) is read:

  - Valgrind no longer temporarily mmaps the entire object to read
    from it.  Instead, reading is done through a small fixed sized
    buffer.  This avoids virtual memory usage spikes when Valgrind
    reads debuginfo from large shared objects.

  - A new experimental remote debug info server.  Valgrind can read
    debug info from a different machine (typically, a build host)
    where debuginfo objects are stored.  This can save a lot of time
    and hassle when running Valgrind on resource-constrained targets
    (phones, tablets) when the full debuginfo objects are stored
    somewhere else.  This is enabled by the --debuginfo-server=
    option.

  - Consistency checking between main and debug objects can be
    disabled using the --allow-mismatched-debuginfo option.

* Stack unwinding by stack scanning, on ARM.  Unwinding by stack
  scanning can recover stack traces in some cases when the normal
  unwind mechanisms fail.  Stack scanning is best described as "a
  nasty, dangerous and misleading hack" and so is disabled by default.
  Use --unw-stack-scan-thresh and --unw-stack-scan-frames to enable
  and control it.

* Detection and merging of recursive stack frame cycles.  When your
  program has recursive algorithms, this limits the memory used by
  Valgrind for recorded stack traces and avoids recording
  uninteresting repeated calls.  This is controlled by the command
  line option --merge-recursive-frame and by the monitor command
  "v.set merge-recursive-frames".

* File name and line numbers for used suppressions.  The list of used
  suppressions (shown when the -v option is given) now shows, for each
  used suppression, the file name and line number where the suppression
  is defined.

* New and modified GDB server monitor features:

  - valgrind.h has a new client request, VALGRIND_MONITOR_COMMAND,
    that can be used to execute gdbserver monitor commands from the
    client program.

  - A new monitor command, "v.info open_fds", that gives the list of
    open file descriptors and additional details.

  - An optional message in the "v.info n_errs_found" monitor command,
    for example "v.info n_errs_found test 1234 finished", allowing a
    comment string to be added to the process output, perhaps for the
    purpose of separating errors of different tests or test phases.

  - A new monitor command "v.info execontext" that shows information
    about the stack traces recorded by Valgrind.

  - A new monitor command "v.do expensive_sanity_check_general" to run
    some internal consistency checks.

* New flag --sigill-diagnostics to control whether a diagnostic
  message is printed when the JIT encounters an instruction it can't
  translate.  The actual behavior -- delivery of SIGILL to the
  application -- is unchanged.

* The maximum amount of memory that Valgrind can use on 64 bit targets
  has been increased from 32GB to 64GB.  This should make it possible
  to run applications on Memcheck that natively require up to about 35GB.
2013-11-05 17:49:52 +00:00
..
DESCR
distinfo
Makefile
PLIST
PLIST.Darwin