Upgrade to valgrind 3.13.0 (15 June 2017).

Release 3.13.0 (15 June 2017)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3.13.0 is a feature release with many improvements and the usual collection of
bug fixes.

This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux,
PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux,
MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android,
X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12.

* ==================== CORE CHANGES ===================

* The translation cache size has been increased to keep up with the demands of
  large applications.  The maximum number of sectors has increased from 24 to
  48.  The default number of sectors has increased from 16 to 32 on all
  targets except Android, where the increase is from 6 to 12.

* The amount of memory that Valgrind can use has been increased from 64GB to
  128GB.  In particular this means your application can allocate up to about
  60GB when running on Memcheck.

* Valgrind's default load address has been changed from 0x3800'0000 to
  0x5800'0000, so as to make it possible to load larger executables.  This
  should make it possible to load executables of size at least 1200MB.

* A massive spaceleak caused by reading compressed debuginfo files has been
  fixed.  Valgrind should now be entirely usable with gcc-7.0 "-gz" created
  debuginfo.

* The C++ demangler has been updated.

* Support for demangling Rust symbols has been added.

* A new representation of stack traces, the "XTree", has been added.  An XTree
  is a tree of stacktraces with data associated with the stacktraces.  This is
  used by various tools (Memcheck, Helgrind, Massif) to report on the heap
  consumption of your program.  Reporting is controlled by the new options
  --xtree-memory=none|allocs|full and --xtree-memory-file=<file>.

  A report can also be produced on demand using the gdbserver monitor command
  'xtmemory [<filename>]>'.  The XTree can be output in 2 formats: 'callgrind
  format' and 'massif format. The existing visualisers for these formats (e.g.
  callgrind_annotate, KCachegrind, ms_print) can be used to visualise and
  analyse these reports.

  Memcheck can also produce XTree leak reports using the Callgrind file
  format.  For more details, see the user manual.

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

* ppc64: support for ISA 3.0B and various fixes for existing 3.0 support

* amd64: fixes for JIT failure problems on long AVX2 code blocks

* amd64 and x86: support for CET prefixes has been added

* arm32: a few missing ARMv8 instructions have been implemented

* arm64, mips64, mips32: an alternative implementation of Load-Linked and
  Store-Conditional instructions has been added.  This is to deal with
  processor implementations that implement the LL/SC specifications strictly
  and as a result cause Valgrind to hang in certain situations.  The
  alternative implementation is automatically enabled at startup, as required.
  You can use the option --sim-hints=fallback-llsc to force-enable it if you
  want.

* Support for OSX 10.12 has been improved.

* On Linux, clone handling has been improved to honour CLONE_VFORK that
  involves a child stack.  Note however that CLONE_VFORK | CLONE_VM is handled
  like CLONE_VFORK (by removing CLONE_VM), so applications that depend on
  CLONE_VM exact semantics will (still) not work.

* The TileGX/Linux port has been removed because it appears to be both unused
  and unsupported.

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

* Memcheck:

  - Memcheck should give fewer false positives when running optimised
    Clang/LLVM generated code.

  - Support for --xtree-memory and 'xtmemory [<filename>]>'.

  - New command line options --xtree-leak=no|yes and --xtree-leak-file=<file>
    to produce the end of execution leak report in a xtree callgrind format
    file.

  - New option 'xtleak' in the memcheck leak_check monitor command, to produce
    the leak report in an xtree file.

* Massif:

  - Support for --xtree-memory and 'xtmemory [<filename>]>'.

  - For some workloads (typically, for big applications), Massif memory
    consumption and CPU consumption has decreased significantly.

* Helgrind:

  - Support for --xtree-memory and 'xtmemory [<filename>]>'.

  - addition of client request VALGRIND_HG_GNAT_DEPENDENT_MASTER_JOIN, useful
    for Ada gnat compiled applications.

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

* For Valgrind developers: in an outer/inner setup, the outer Valgrind will
  append the inner guest stacktrace to the inner host stacktrace.  This helps
  to investigate the errors reported by the outer, when they are caused by the
  inner guest program (such as an inner regtest).  See README_DEVELOPERS for
  more info.

* To allow fast detection of callgrind files by desktop environments and file
  managers, the format was extended to have an optional first line that
  uniquely identifies the format ("# callgrind format").  Callgrind creates
  this line now, as does the new xtree functionality.

* File name template arguments (such as --log-file, --xtree-memory-file, ...)
  have a new %n format letter that is replaced by a sequence number.

* "--version -v" now shows the SVN revision numbers from which Valgrind was
  built.

* ==================== FIXED BUGS ====================

The following bugs have been fixed or resolved.  Note that "n-i-bz"
stands for "not in bugzilla" -- that is, a bug that was reported to us
but never got a bugzilla entry.  We encourage you to file bugs in
bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather
than mailing the developers (or mailing lists) directly -- bugs that
are not entered into bugzilla tend to get forgotten about or ignored.

To see details of a given bug, visit
  https://bugs.kde.org/show_bug.cgi?id=XXXXXX
where XXXXXX is the bug number as listed below.

162848  --log-file output isn't split when a program forks
340777  Illegal instruction on mips (ar71xx)
341481  MIPS64: Iop_CmpNE32 triggers false warning on MIPS64 platforms
342040  Valgrind mishandles clone with CLONE_VFORK | CLONE_VM that clones
        to a different stack.
344139  x86 stack-seg overrides, needed by the Wine people
344524  store conditional of guest applications always fail - observed on
        Octeon3(MIPS)
348616  Wine/valgrind: noted but unhandled ioctl 0x5390 [..] (DVD_READ_STRUCT)
352395  Please provide SVN revision info in --version -v
352767  Wine/valgrind: noted but unhandled ioctl 0x5307 [..] (CDROMSTOP)
356374  Assertion 'DRD_(g_threadinfo)[tid].pt_threadid !=
        INVALID_POSIX_THREADID' failed
358213  helgrind/drd bar_bad testcase hangs or crashes with new glibc pthread
        barrier implementation
358697  valgrind.h: Some code remains even when defining NVALGRIND
359202  Add musl libc configure/compile
360415  amd64 instructions ADCX and ADOX are not implemented in VEX
        == 372828 (vex amd64->IR: 0x66 0xF 0x3A 0x62 0x4A 0x10)
360429  unhandled ioctl 0x530d with no size/direction hints (CDROMREADMODE1)
362223  assertion failed when .valgrindrc is a directory instead of a file
367543  bt/btc/btr/bts x86/x86_64 instructions are poorly-handled wrt flags
367942  Segfault vgPlain_do_sys_sigaction (m_signals.c:1138)
368507  can't malloc chunks larger than about 34GB
368529  Android arm target link error, missing atexit and pthread_atfork
368863  WARNING: unhandled arm64-linux syscall: 100 (get_robust_list)
368865  WARNING: unhandled arm64-linux syscall: 272 (kcmp)
368868  disInstr(arm64): unhandled instruction 0xD53BE000 = cntfrq_el0 (ARMv8)
368917  WARNING: unhandled arm64-linux syscall: 218 (request_key)
368918  WARNING: unhandled arm64-linux syscall: 127 (sched_rr_get_interval)
368922  WARNING: unhandled arm64-linux syscall: 161 (sethostname)
368924  WARNING: unhandled arm64-linux syscall: 84 (sync_file_range)
368925  WARNING: unhandled arm64-linux syscall: 130 (tkill)
368926  WARNING: unhandled arm64-linux syscall: 97 (unshare)
369459  valgrind on arm64 violates the ARMv8 spec (ldxr/stxr)
370028  Reduce the number of compiler warnings on MIPS platforms
370635  arm64 missing syscall getcpu
371225  Fix order of timer_{gettime,getoverrun,settime} syscalls on arm64
371227  Clean AArch64 syscall table
371412  Rename wrap_sys_shmat to sys_shmat like other wrappers
371471  Valgrind complains about non legit memory leaks on placement new (C++)
371491  handleAddrOverrides() is [incorrect] when ASO prefix is used
371503  disInstr(arm64): unhandled instruction 0xF89F0000
371869  support '%' in symbol Z-encoding
371916  execution tree xtree concept
372120  c++ demangler demangles symbols which are not c++
372185  Support of valgrind on ARMv8 with 32 bit executable
372188  vex amd64->IR: 0x66 0xF 0x3A 0x62 0x4A 0x10 0x10 0x48 (PCMPxSTRx $0x10)
372195  Power PC, xxsel instruction is not always recognized.
372504  Hanging on exit_group
372600  process loops forever when fatal signals are arriving quickly
372794  LibVEX (arm32 front end): 'Assertion szBlg2 <= 3' failed
373046  Stacks registered by core are never deregistered
373069  memcheck/tests/leak_cpp_interior fails with GCC 5.1+
373086  Implement additional Xen hypercalls
373192  Calling posix_spawn in glibc 2.24 completely broken
373488  Support for fanotify API on ARM64 architecture
== 368864  WARNING: unhandled arm64-linux syscall: 262 (fanotify_init)
373555  Rename BBPTR to GSPTR as it denotes guest state pointer only
373938  const IRExpr arguments for matchIRExpr()
374719  some spelling fixes
374963  increase valgrind's load address to prevent mmap failure
375514  valgrind_get_tls_addr() does not work in case of static TLS
375772  +1 error in get_elf_symbol_info() when computing value of 'hi' address
        for ML_(find_rx_mapping)()
375806  Test helgrind/tests/tc22_exit_w_lock fails with glibc 2.24
375839  Temporary storage exhausted, with long sequence of vfmadd231ps insns
        == 377159  "vex: the `impossible' happened" still present
        == 375150  Assertion 'tres.status == VexTransOK' failed
        == 378068  valgrind crashes on AVX2 function in FFmpeg
376142  Segfaults on MIPS Cavium Octeon boards
376279  disInstr(arm64): unhandled instruction 0xD50320FF
376455  Solaris: unhandled syscall lgrpsys(180)
376518  Solaris: unhandled fast trap getlgrp(6)
376611  ppc64 and arm64 don't know about prlimit64 syscall
376729  PPC64, remove R2 from the clobber list
        == 371668
376956  syswrap of SNDDRV and DRM_IOCTL_VERSION causing some addresses
        to be wrongly marked as addressable
377066  Some Valgrind unit tests fail to compile on Ubuntu 16.10 with
        PIE enabled by default
377376  memcheck/tests/linux/getregset fails with glibc2.24
377427  PPC64, lxv instruction failing on odd destination register
377478  PPC64: ISA 3.0 setup fixes
377698  Missing memory check for futex() uaddr arg for FUTEX_WAKE
        and FUTEX_WAKE_BITSET, check only 4 args for FUTEX_WAKE_BITSET,
        and 2 args for FUTEX_TRYLOCK_PI
377717  Fix massive space leak when reading compressed debuginfo sections
377891  Update Xen 4.6 domctl wrappers
377930  fcntl syscall wrapper is missing flock structure check
378524  libvexmultiarch_test regression on s390x and ppc64
378535  Valgrind reports INTERNAL ERROR in execve syscall wrapper
378673  Update libiberty demangler
378931  Add ISA 3.0B additional isnstructions, add OV32, CA32 setting support
379039  syscall wrapper for prctl(PR_SET_NAME) must not check more than 16 bytes
379094  Valgrind reports INTERNAL ERROR in rt_sigsuspend syscall wrapper
379371  UNKNOWN task message [id 3444, to mach_task_self(), reply 0x603]
        (task_register_dyld_image_infos)
379372  UNKNOWN task message [id 3447, to mach_task_self(), reply 0x603]
        (task_register_dyld_shared_cache_image_info)
379390  unhandled syscall: mach:70 (host_create_mach_voucher_trap)
379473  MIPS: add support for rdhwr cycle counter register
379504  remove TileGX/Linux port
379525  Support more x86 nop opcodes
379838  disAMode(x86): not an addr!
379703  PC ISA 3.0 fixes: stxvx, stxv, xscmpexpdp instructions
379890  arm: unhandled instruction: 0xEBAD 0x1B05 (sub.w fp, sp, r5, lsl #4)
379895  clock_gettime does not execute POST syscall wrapper
379925  PPC64, mtffs does not set the FPCC and C bits in the FPSCR correctly
379966  WARNING: unhandled amd64-linux syscall: 313 (finit_module)
380200  xtree generated callgrind files refer to files without directory name
380202  Assertion failure for cache line size (cls == 64) on aarch64.
380397  s390x: __GI_strcspn() replacement needed
n-i-bz  Fix pub_tool_basics.h build issue with g++ 4.4.7.

(3.13.0.RC1:  2 June 2017, vex r3386, valgrind r16434)
(3.13.0.RC2:  9 June 2017, vex r3389, valgrind r16443)
(3.13.0:     14 June 2017, vex r3396, valgrind r16446)

Bug: N/A
Test: manual
Change-Id: Id4498a49f462c3689cbcb35c15f96a8c7e3cea17
1569 files changed