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
diff --git a/VEX/pub/libvex.h b/VEX/pub/libvex.h
index 855bc64..d75919d 100644
--- a/VEX/pub/libvex.h
+++ b/VEX/pub/libvex.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2004-2015 OpenWorks LLP
+   Copyright (C) 2004-2017 OpenWorks LLP
       info@open-works.net
 
    This program is free software; you can redistribute it and/or
@@ -60,8 +60,7 @@
       VexArchPPC64,
       VexArchS390X,
       VexArchMIPS32,
-      VexArchMIPS64,
-      VexArchTILEGX
+      VexArchMIPS64
    }
    VexArch;
 
@@ -177,9 +176,6 @@
 #define VEX_HWCAPS_S390X(x)  ((x) & ~VEX_S390X_MODEL_MASK)
 #define VEX_S390X_MODEL(x)   ((x) &  VEX_S390X_MODEL_MASK)
 
-/* Tilegx: baseline capability is TILEGX36 */
-#define VEX_HWCAPS_TILEGX_BASE (1<<16)  /* TILEGX Baseline */
-
 /* arm: baseline capability is ARMv4 */
 /* Bits 5:0 - architecture level (e.g. 5 for v5, 6 for v6 etc) */
 #define VEX_HWCAPS_ARM_VFP    (1<<6)  /* VFP extension */
@@ -327,6 +323,9 @@
          line size of 64 bytes would be encoded here as 6. */
       UInt arm64_dMinLine_lg2_szB;
       UInt arm64_iMinLine_lg2_szB;
+      /* ARM64: does the host require us to use the fallback LLSC
+         implementation? */
+      Bool arm64_requires_fallback_LLSC;
    }
    VexArchInfo;
 
@@ -369,6 +368,11 @@
       guest is ppc32-linux                ==> const False
       guest is other                      ==> inapplicable
 
+   guest__use_fallback_LLSC
+      guest is mips32                     ==> applicable, default True
+      guest is mips64                     ==> applicable, default True
+      guest is arm64                      ==> applicable, default False
+
    host_ppc_calls_use_fndescrs:
       host is ppc32-linux                 ==> False
       host is ppc64-linux                 ==> True
@@ -401,11 +405,17 @@
          is assumed equivalent to a fn which always returns False. */
       Bool (*guest_ppc_zap_RZ_at_bl)(Addr);
 
+      /* Potentially for all guests that use LL/SC: use the fallback
+         (synthesised) implementation rather than passing LL/SC on to
+         the host? */
+      Bool guest__use_fallback_LLSC;
+
       /* PPC32/PPC64 HOSTS only: does '&f' give us a pointer to a
          function descriptor on the host, or to the function code
          itself?  True => descriptor, False => code. */
       Bool host_ppc_calls_use_fndescrs;
 
+      /* ??? Description ??? */
       Bool guest_mips_fp_mode64;
    }
    VexAbiInfo;
@@ -475,7 +485,7 @@
          Default=120.  A setting of zero disables unrolling.  */
       Int iropt_unroll_thresh;
       /* What's the maximum basic block length the front end(s) allow?
-         BBs longer than this are split up.  Default=50 (guest
+         BBs longer than this are split up.  Default=60 (guest
          insns). */
       Int guest_max_insns;
       /* How aggressive should front ends be in following
@@ -776,8 +786,17 @@
    VexTranslateArgs;
 
 
+/* Runs the entire compilation pipeline. */
 extern 
-VexTranslateResult LibVEX_Translate ( VexTranslateArgs* );
+VexTranslateResult LibVEX_Translate ( /*MOD*/ VexTranslateArgs* );
+
+/* Runs the first half of the compilation pipeline: lifts guest code to IR,
+   optimises, instruments and optimises it some more. */
+extern
+IRSB* LibVEX_FrontEnd ( /*MOD*/ VexTranslateArgs*,
+                        /*OUT*/ VexTranslateResult* res,
+                        /*OUT*/ VexRegisterUpdates* pxControl );
+
 
 /* A subtlety re interaction between self-checking translations and
    bb-chasing.  The supplied chase_into_ok function should say NO
diff --git a/VEX/pub/libvex_basictypes.h b/VEX/pub/libvex_basictypes.h
index b1d0f6c..86df444 100644
--- a/VEX/pub/libvex_basictypes.h
+++ b/VEX/pub/libvex_basictypes.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2004-2015 OpenWorks LLP
+   Copyright (C) 2004-2017 OpenWorks LLP
       info@open-works.net
 
    This program is free software; you can redistribute it and/or
@@ -183,10 +183,6 @@
 #   define VEX_HOST_WORDSIZE 4
 #   define VEX_REGPARM(_n) /* */
 
-#elif defined(__tilegx__)
-#   define VEX_HOST_WORDSIZE 8
-#   define VEX_REGPARM(_n) /* */
-
 #else
 #   error "Vex: Fatal: Can't establish the host architecture"
 #endif
diff --git a/VEX/pub/libvex_emnote.h b/VEX/pub/libvex_emnote.h
index 9435130..e597790 100644
--- a/VEX/pub/libvex_emnote.h
+++ b/VEX/pub/libvex_emnote.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2004-2015 OpenWorks LLP
+   Copyright (C) 2004-2017 OpenWorks LLP
       info@open-works.net
 
    This program is free software; you can redistribute it and/or
diff --git a/VEX/pub/libvex_guest_amd64.h b/VEX/pub/libvex_guest_amd64.h
index fd104ab..7db7cbc 100644
--- a/VEX/pub/libvex_guest_amd64.h
+++ b/VEX/pub/libvex_guest_amd64.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2004-2015 OpenWorks LLP
+   Copyright (C) 2004-2017 OpenWorks LLP
       info@open-works.net
 
    This program is free software; you can redistribute it and/or
diff --git a/VEX/pub/libvex_guest_arm.h b/VEX/pub/libvex_guest_arm.h
index f446262..029441f 100644
--- a/VEX/pub/libvex_guest_arm.h
+++ b/VEX/pub/libvex_guest_arm.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2004-2015 OpenWorks LLP
+   Copyright (C) 2004-2017 OpenWorks LLP
       info@open-works.net
 
    This program is free software; you can redistribute it and/or
diff --git a/VEX/pub/libvex_guest_arm64.h b/VEX/pub/libvex_guest_arm64.h
index c438c1e..bf1573d 100644
--- a/VEX/pub/libvex_guest_arm64.h
+++ b/VEX/pub/libvex_guest_arm64.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2013-2015 OpenWorks
+   Copyright (C) 2013-2017 OpenWorks
       info@open-works.net
 
    This program is free software; you can redistribute it and/or
@@ -159,9 +159,14 @@
          note of bits 23 and 22. */
       UInt  guest_FPCR;
 
+      /* Fallback LL/SC support.  See bugs 344524 and 369459. */
+      ULong guest_LLSC_SIZE; // 0==no current transaction, else 1,2,4 or 8.
+      ULong guest_LLSC_ADDR; // Address of transaction.
+      ULong guest_LLSC_DATA; // Original value at _ADDR, zero-extended.
+
       /* Padding to make it have an 16-aligned size */
       /* UInt  pad_end_0; */
-      /* ULong pad_end_1; */
+      ULong pad_end_1;
    }
    VexGuestARM64State;
 
diff --git a/VEX/pub/libvex_guest_mips32.h b/VEX/pub/libvex_guest_mips32.h
index 8351f0e..0ac8d30 100644
--- a/VEX/pub/libvex_guest_mips32.h
+++ b/VEX/pub/libvex_guest_mips32.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2010-2015 RT-RK
+   Copyright (C) 2010-2017 RT-RK
       mips-valgrind@rt-rk.com
 
    This program is free software; you can redistribute it and/or
@@ -40,82 +40,86 @@
 
 typedef
    struct {
+      /*    0 */ UInt host_EvC_FAILADDR;
+      /*    4 */ UInt host_EvC_COUNTER;
+
       /* CPU Registers */
-      /* 0 */ UInt guest_r0;   /* Hardwired to 0 */
-      /* 4 */ UInt guest_r1;   /* Assembler temporary */
-      /* 8 */ UInt guest_r2;   /* Values for function returns ...*/
-      /* 12 */ UInt guest_r3;  /* ...and expression evaluation */
-      /* 16 */ UInt guest_r4;  /* Function arguments */
-      /* 20 */ UInt guest_r5;
-      /* 24 */ UInt guest_r6;
-      /* 28 */ UInt guest_r7;
-      /* 32 */ UInt guest_r8;  /* Temporaries */
-      /* 36 */ UInt guest_r9;
-      /* 40 */ UInt guest_r10;
-      /* 44 */ UInt guest_r11;
-      /* 48 */ UInt guest_r12;
-      /* 52 */ UInt guest_r13;
-      /* 56 */ UInt guest_r14;
-      /* 60 */ UInt guest_r15;
-      /* 64 */ UInt guest_r16;  /* Saved temporaries */
-      /* 68 */ UInt guest_r17;
-      /* 72 */ UInt guest_r18;
-      /* 76 */ UInt guest_r19;
-      /* 80 */ UInt guest_r20;
-      /* 84 */ UInt guest_r21;
-      /* 88 */ UInt guest_r22;
-      /* 92 */ UInt guest_r23;
-      /* 96 */ UInt guest_r24;  /* Temporaries */
-      /* 100 */ UInt guest_r25;
-      /* 104 */ UInt guest_r26;  /* Reserved for OS kernel */
-      /* 108 */ UInt guest_r27;
-      /* 112 */ UInt guest_r28;  /* Global pointer */
-      /* 116 */ UInt guest_r29;  /* Stack pointer */
-      /* 120 */ UInt guest_r30;  /* Frame pointer */
-      /* 124 */ UInt guest_r31;  /* Return address */
-      /* 128 */ UInt guest_PC;  /* Program counter */
-      /* 132 */ UInt guest_HI;  /* Multiply and divide register higher result */
-      /* 136 */ UInt guest_LO;  /* Multiply and divide register lower result */
+      /*    8 */ UInt guest_r0;   /* Hardwired to 0. */
+      /*   12 */ UInt guest_r1;   /* Assembler temporary */
+      /*   16 */ UInt guest_r2;   /* Values for function returns ...*/
+      /*   20 */ UInt guest_r3;   /* ... and expression evaluation */
+      /*   24 */ UInt guest_r4;   /* Function arguments */
+      /*   28 */ UInt guest_r5;
+      /*   32 */ UInt guest_r6;
+      /*   36 */ UInt guest_r7;
+      /*   40 */ UInt guest_r8;   /* Temporaries */
+      /*   44 */ UInt guest_r9;
+      /*   48 */ UInt guest_r10;
+      /*   52 */ UInt guest_r11;
+      /*   56 */ UInt guest_r12;
+      /*   60 */ UInt guest_r13;
+      /*   64 */ UInt guest_r14;
+      /*   68 */ UInt guest_r15;
+      /*   72 */ UInt guest_r16;  /* Saved temporaries */
+      /*   76 */ UInt guest_r17;
+      /*   80 */ UInt guest_r18;
+      /*   84 */ UInt guest_r19;
+      /*   88 */ UInt guest_r20;
+      /*   92 */ UInt guest_r21;
+      /*   96 */ UInt guest_r22;
+      /*  100 */ UInt guest_r23;
+      /*  104 */ UInt guest_r24;  /* Temporaries */
+      /*  108 */ UInt guest_r25;
+      /*  112 */ UInt guest_r26;  /* Reserved for OS kernel */
+      /*  116 */ UInt guest_r27;
+      /*  120 */ UInt guest_r28;  /* Global pointer */
+      /*  124 */ UInt guest_r29;  /* Stack pointer */
+      /*  128 */ UInt guest_r30;  /* Frame pointer */
+      /*  132 */ UInt guest_r31;  /* Return address */
+      /*  136 */ UInt guest_PC;   /* Program counter */
+      /*  140 */ UInt guest_HI;   /* Multiply and divide reg higher result */
+      /*  144 */ UInt guest_LO;   /* Multiply and divide reg lower result */
+      /*  148 */ UInt _padding1;
 
       /* FPU Registers */
-      /* 144 */ ULong guest_f0;  /* Floating point general purpose registers */
-      /* 152 */ ULong guest_f1;
-      /* 160 */ ULong guest_f2;
-      /* 168 */ ULong guest_f3;
-      /* 176 */ ULong guest_f4;
-      /* 184 */ ULong guest_f5;
-      /* 192 */ ULong guest_f6;
-      /* 200 */ ULong guest_f7;
-      /* 208 */ ULong guest_f8;
-      /* 216 */ ULong guest_f9;
-      /* 224 */ ULong guest_f10;
-      /* 232 */ ULong guest_f11;
-      /* 240 */ ULong guest_f12;
-      /* 248 */ ULong guest_f13;
-      /* 256 */ ULong guest_f14;
-      /* 264 */ ULong guest_f15;
-      /* 272 */ ULong guest_f16;
-      /* 280 */ ULong guest_f17;
-      /* 288 */ ULong guest_f18;
-      /* 296 */ ULong guest_f19;
-      /* 304 */ ULong guest_f20;
-      /* 312 */ ULong guest_f21;
-      /* 320 */ ULong guest_f22;
-      /* 328 */ ULong guest_f23;
-      /* 336 */ ULong guest_f24;
-      /* 344 */ ULong guest_f25;
-      /* 352 */ ULong guest_f26;
-      /* 360 */ ULong guest_f27;
-      /* 368 */ ULong guest_f28;
-      /* 376 */ ULong guest_f29;
-      /* 384 */ ULong guest_f30;
-      /* 392 */ ULong guest_f31;
+      /*  152 */ ULong guest_f0;  /* Floating point general purpose registers */
+      /*  160 */ ULong guest_f1;
+      /*  168 */ ULong guest_f2;
+      /*  176 */ ULong guest_f3;
+      /*  184 */ ULong guest_f4;
+      /*  192 */ ULong guest_f5;
+      /*  200 */ ULong guest_f6;
+      /*  208 */ ULong guest_f7;
+      /*  216 */ ULong guest_f8;
+      /*  224 */ ULong guest_f9;
+      /*  232 */ ULong guest_f10;
+      /*  240 */ ULong guest_f11;
+      /*  248 */ ULong guest_f12;
+      /*  256 */ ULong guest_f13;
+      /*  264 */ ULong guest_f14;
+      /*  272 */ ULong guest_f15;
+      /*  280 */ ULong guest_f16;
+      /*  288 */ ULong guest_f17;
+      /*  296 */ ULong guest_f18;
+      /*  304 */ ULong guest_f19;
+      /*  312 */ ULong guest_f20;
+      /*  320 */ ULong guest_f21;
+      /*  328 */ ULong guest_f22;
+      /*  336 */ ULong guest_f23;
+      /*  344 */ ULong guest_f24;
+      /*  352 */ ULong guest_f25;
+      /*  360 */ ULong guest_f26;
+      /*  368 */ ULong guest_f27;
+      /*  376 */ ULong guest_f28;
+      /*  384 */ ULong guest_f29;
+      /*  392 */ ULong guest_f30;
+      /*  400 */ ULong guest_f31;
 
-      /* 400 */ UInt guest_FIR;
-      /* 404 */ UInt guest_FCCR;
-      /* 408 */ UInt guest_FEXR;
-      /* 412 */ UInt guest_FENR;
-      /* 416 */ UInt guest_FCSR;
+      /*  408 */ UInt guest_FIR;
+      /*  412 */ UInt guest_FCCR;
+      /*  416 */ UInt guest_FEXR;
+      /*  420 */ UInt guest_FENR;
+      /*  424 */ UInt guest_FCSR;
 
       /* TLS pointer for the thread. It's read-only in user space.
          On Linux it is set in user space by various thread-related
@@ -126,36 +130,37 @@
          environments, the UserLocal register is a pointer to a
          thread-specific storage block.
       */
-      /* 420 */ UInt guest_ULR;
+      /*  428 */ UInt guest_ULR;
 
       /* Emulation notes */
-      /* 424 */ UInt guest_EMNOTE;
+      /*  432 */ UInt guest_EMNOTE;
 
-      /* For clflush: record start and length of area to invalidate */
-      /* 428 */ UInt guest_CMSTART;
-      /* 432 */ UInt guest_CMLEN;
-      /* 436 */ UInt guest_NRADDR;
+      /* For clflush: record start and length of area to invalidate. */
+      /*  436 */ UInt guest_CMSTART;
+      /*  440 */ UInt guest_CMLEN;
+      /*  444 */ UInt guest_NRADDR;
 
-      /* 440 */ UInt host_EvC_FAILADDR;
-      /* 444 */ UInt host_EvC_COUNTER;
-      /* 448 */ UInt guest_COND;
+      /*  448 */ UInt guest_COND;
 
       /* MIPS32 DSP ASE(r2) specific registers. */
-      /* 452 */ UInt guest_DSPControl;
-      /* 456 */ ULong guest_ac0;
-      /* 464 */ ULong guest_ac1;
-      /* 472 */ ULong guest_ac2;
-      /* 480 */ ULong guest_ac3;
+      /*  452 */ UInt guest_DSPControl;
+      /*  456 */ ULong guest_ac0;
+      /*  464 */ ULong guest_ac1;
+      /*  472 */ ULong guest_ac2;
+      /*  480 */ ULong guest_ac3;
 
-      /* 488 */ UInt guest_CP0_status;
+      /*  488 */ UInt guest_CP0_status;
 
-      /* 492 */ UInt padding;
+      /*  492 */ UInt guest_LLaddr;
+      /*  496 */ UInt guest_LLdata;
+
+      /*  500 */ UInt _padding2[3];
 } VexGuestMIPS32State;
 /*---------------------------------------------------------------*/
 /*--- Utility functions for MIPS32 guest stuff.               ---*/
 /*---------------------------------------------------------------*/
 
-/* ALL THE FOLLOWING ARE VISIBLE TO LIBRARY CLIENT */
+/* ALL THE FOLLOWING ARE VISIBLE TO LIBRARY CLIENT. */
 
 /* Initialise all guest MIPS32 state. */
 
diff --git a/VEX/pub/libvex_guest_mips64.h b/VEX/pub/libvex_guest_mips64.h
index 88d1f7f..792803e 100644
--- a/VEX/pub/libvex_guest_mips64.h
+++ b/VEX/pub/libvex_guest_mips64.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2010-2015 RT-RK
+   Copyright (C) 2010-2017 RT-RK
       mips-valgrind@rt-rk.com
 
    This program is free software; you can redistribute it and/or
@@ -46,84 +46,87 @@
 
 typedef
    struct {
+      /*    0 */ ULong host_EvC_FAILADDR;
+      /*    8 */ UInt host_EvC_COUNTER;
+      /*   12 */ UInt _padding1;
+
       /* CPU Registers */
-      /*   0 */ ULong guest_r0;   /* Hardwired to 0 */
-      /*   8 */ ULong guest_r1;   /* Assembler temporary */
-      /*   16 */ ULong guest_r2;  /* Values for function returns ...*/
-      /*   24 */ ULong guest_r3;  /* ...and expression evaluation */
-      /*   32 */ ULong guest_r4;  /* Function arguments */
-      /*   40 */ ULong guest_r5;
-      /*   48 */ ULong guest_r6;
-      /*   56 */ ULong guest_r7;
-      /*   64 */ ULong guest_r8;
-      /*   72 */ ULong guest_r9;
-      /*   80 */ ULong guest_r10;
-      /*   88 */ ULong guest_r11;
-      /*   96 */ ULong guest_r12;  /* Temporaries */
-      /*   104 */ ULong guest_r13;
-      /*   112 */ ULong guest_r14;
-      /*   120 */ ULong guest_r15;
-      /*   128 */ ULong guest_r16;  /* Saved temporaries */
-      /*   136 */ ULong guest_r17;
-      /*   144 */ ULong guest_r18;
-      /*   152 */ ULong guest_r19;
-      /*   160 */ ULong guest_r20;
-      /*   168 */ ULong guest_r21;
-      /*   176 */ ULong guest_r22;
-      /*   184 */ ULong guest_r23;
-      /*   192 */ ULong guest_r24;  /* Temporaries */
-      /*   200 */ ULong guest_r25;
-      /*   208 */ ULong guest_r26;  /* Reserved for OS kernel */
-      /*   216 */ ULong guest_r27;
-      /*   224 */ ULong guest_r28;  /* Global pointer */
-      /*   232 */ ULong guest_r29;  /* Stack pointer */
-      /*   240 */ ULong guest_r30;  /* Frame pointer */
-      /*   248 */ ULong guest_r31;  /* Return address */
-      /*   256 */ ULong guest_PC;   /* Program counter */
-      /*   264 */ ULong guest_HI;   /* Multiply and divide reg higher result */
-      /*   272 */ ULong guest_LO;   /* Multiply and divide reg lower result */
+      /*   16 */ ULong guest_r0;   /* Hardwired to 0. */
+      /*   24 */ ULong guest_r1;   /* Assembler temporary */
+      /*   32 */ ULong guest_r2;   /* Values for function returns ...*/
+      /*   40 */ ULong guest_r3;   /* ... and expression evaluation */
+      /*   48 */ ULong guest_r4;   /* Function arguments */
+      /*   56 */ ULong guest_r5;
+      /*   64 */ ULong guest_r6;
+      /*   72 */ ULong guest_r7;
+      /*   80 */ ULong guest_r8;
+      /*   88 */ ULong guest_r9;
+      /*   96 */ ULong guest_r10;
+      /*  104 */ ULong guest_r11;
+      /*  112 */ ULong guest_r12;  /* Temporaries */
+      /*  120 */ ULong guest_r13;
+      /*  128 */ ULong guest_r14;
+      /*  136 */ ULong guest_r15;
+      /*  144 */ ULong guest_r16;  /* Saved temporaries */
+      /*  152 */ ULong guest_r17;
+      /*  160 */ ULong guest_r18;
+      /*  168 */ ULong guest_r19;
+      /*  176 */ ULong guest_r20;
+      /*  184 */ ULong guest_r21;
+      /*  192 */ ULong guest_r22;
+      /*  200 */ ULong guest_r23;
+      /*  208 */ ULong guest_r24;  /* Temporaries */
+      /*  216 */ ULong guest_r25;
+      /*  224 */ ULong guest_r26;  /* Reserved for OS kernel */
+      /*  232 */ ULong guest_r27;
+      /*  240 */ ULong guest_r28;  /* Global pointer */
+      /*  248 */ ULong guest_r29;  /* Stack pointer */
+      /*  256 */ ULong guest_r30;  /* Frame pointer */
+      /*  264 */ ULong guest_r31;  /* Return address */
+      /*  272 */ ULong guest_PC;   /* Program counter */
+      /*  280 */ ULong guest_HI;   /* Multiply and divide reg higher result */
+      /*  288 */ ULong guest_LO;   /* Multiply and divide reg lower result */
 
       /* FPU Registers */
-      /*   280 */ ULong guest_f0;   /* Floting point gen purpose registers */
-      /*   288 */ ULong guest_f1;
-      /*   296 */ ULong guest_f2;
-      /*   304 */ ULong guest_f3;
-      /*   312 */ ULong guest_f4;
-      /*   320 */ ULong guest_f5;
-      /*   328 */ ULong guest_f6;
-      /*   336 */ ULong guest_f7;
-      /*   344 */ ULong guest_f8;
-      /*   352 */ ULong guest_f9;
-      /*   360 */ ULong guest_f10;
-      /*   368 */ ULong guest_f11;
-      /*   376 */ ULong guest_f12;
-      /*   384 */ ULong guest_f13;
-      /*   392 */ ULong guest_f14;
-      /*   400 */ ULong guest_f15;
-      /*   408 */ ULong guest_f16;
-      /*   416 */ ULong guest_f17;
-      /*   424 */ ULong guest_f18;
-      /*   432 */ ULong guest_f19;
-      /*   440 */ ULong guest_f20;
-      /*   448 */ ULong guest_f21;
-      /*   456 */ ULong guest_f22;
-      /*   464 */ ULong guest_f23;
-      /*   472 */ ULong guest_f24;
-      /*   480 */ ULong guest_f25;
-      /*   488 */ ULong guest_f26;
-      /*   496 */ ULong guest_f27;
-      /*   504 */ ULong guest_f28;
-      /*   512 */ ULong guest_f29;
-      /*   520 */ ULong guest_f30;
-      /*   528 */ ULong guest_f31;
+      /*  296 */ ULong guest_f0;   /* Floating point gen. purpose registers */
+      /*  304 */ ULong guest_f1;
+      /*  312 */ ULong guest_f2;
+      /*  320 */ ULong guest_f3;
+      /*  328 */ ULong guest_f4;
+      /*  336 */ ULong guest_f5;
+      /*  344 */ ULong guest_f6;
+      /*  352 */ ULong guest_f7;
+      /*  360 */ ULong guest_f8;
+      /*  368 */ ULong guest_f9;
+      /*  376 */ ULong guest_f10;
+      /*  384 */ ULong guest_f11;
+      /*  392 */ ULong guest_f12;
+      /*  400 */ ULong guest_f13;
+      /*  408 */ ULong guest_f14;
+      /*  416 */ ULong guest_f15;
+      /*  424 */ ULong guest_f16;
+      /*  432 */ ULong guest_f17;
+      /*  440 */ ULong guest_f18;
+      /*  448 */ ULong guest_f19;
+      /*  456 */ ULong guest_f20;
+      /*  464 */ ULong guest_f21;
+      /*  472 */ ULong guest_f22;
+      /*  480 */ ULong guest_f23;
+      /*  488 */ ULong guest_f24;
+      /*  496 */ ULong guest_f25;
+      /*  504 */ ULong guest_f26;
+      /*  512 */ ULong guest_f27;
+      /*  520 */ ULong guest_f28;
+      /*  528 */ ULong guest_f29;
+      /*  536 */ ULong guest_f30;
+      /*  544 */ ULong guest_f31;
 
-      /*   536 */ UInt guest_FIR;
-      /*   540 */ UInt guest_FCCR;
-      /*   544 */ UInt guest_FEXR;
-      /*   548 */ UInt guest_FENR;
-      /*   552 */ UInt guest_FCSR;
-
-      /*   556 */ UInt guest_CP0_status;
+      /*  552 */ UInt guest_FIR;
+      /*  556 */ UInt guest_FCCR;
+      /*  560 */ UInt guest_FEXR;
+      /*  564 */ UInt guest_FENR;
+      /*  568 */ UInt guest_FCSR;
+      /*  572 */ UInt guest_CP0_status;
 
       /* TLS pointer for the thread. It's read-only in user space. On Linux it
          is set in user space by various thread-related syscalls.
@@ -132,29 +135,30 @@
          UserLocal register, if it is implemented. In some operating
          environments, the UserLocal register is a pointer to a thread-specific
          storage block.
-       */
-        ULong guest_ULR;         /* 560 */
+      */
+      /*  576 */ ULong guest_ULR;
 
       /* Emulation notes */
-        UInt guest_EMNOTE;       /* 568 */
+      /*  584 */ UInt guest_EMNOTE;
+      /*  588 */ UInt guest_COND;
 
       /* For clflush: record start and length of area to invalidate */
-        ULong guest_CMSTART;     /* 576 */
-        ULong guest_CMLEN;       /* 584 */
+      /*  592 */ ULong guest_CMSTART;
+      /*  600 */ ULong guest_CMLEN;
 
-        ULong guest_NRADDR;      /* 592 */
+      /*  608 */ ULong guest_NRADDR;
 
-        ULong host_EvC_FAILADDR; /* 600 */
-        UInt host_EvC_COUNTER;   /* 608 */
-        UInt guest_COND;         /* 612 */
-        UInt padding[2];
+      /*  616 */ ULong guest_LLaddr;
+      /*  624 */ ULong guest_LLdata;
+
+      /*  632 */ ULong _padding2;
 } VexGuestMIPS64State;
 
 /*---------------------------------------------------------------*/
 /*--- Utility functions for MIPS64 guest stuff.               ---*/
 /*---------------------------------------------------------------*/
 
-/* ALL THE FOLLOWING ARE VISIBLE TO LIBRARY CLIENT */
+/* ALL THE FOLLOWING ARE VISIBLE TO LIBRARY CLIENT. */
 
 /* Initialise all guest MIPS64 state. */
 
diff --git a/VEX/pub/libvex_guest_offsets.h b/VEX/pub/libvex_guest_offsets.h
index 6834fbb..7dfcd12 100644
--- a/VEX/pub/libvex_guest_offsets.h
+++ b/VEX/pub/libvex_guest_offsets.h
@@ -42,7 +42,7 @@
 #define OFFSET_ppc32_GPR9 52
 #define OFFSET_ppc32_GPR10 56
 #define OFFSET_ppc32_CIA 1168
-#define OFFSET_ppc32_CR0_0 1185
+#define OFFSET_ppc32_CR0_0 1187
 #define OFFSET_ppc64_GPR0 16
 #define OFFSET_ppc64_GPR1 24
 #define OFFSET_ppc64_GPR2 32
@@ -55,7 +55,7 @@
 #define OFFSET_ppc64_GPR9 88
 #define OFFSET_ppc64_GPR10 96
 #define OFFSET_ppc64_CIA 1296
-#define OFFSET_ppc64_CR0_0 1325
+#define OFFSET_ppc64_CR0_0 1327
 #define OFFSET_arm_R0 8
 #define OFFSET_arm_R1 12
 #define OFFSET_arm_R2 16
@@ -92,133 +92,73 @@
 #define OFFSET_s390x_CC_DEP1 360
 #define OFFSET_s390x_CC_DEP2 368
 #define OFFSET_s390x_CC_NDEP 376
-#define OFFSET_mips32_r0 0
-#define OFFSET_mips32_r1 4
-#define OFFSET_mips32_r2 8
-#define OFFSET_mips32_r3 12
-#define OFFSET_mips32_r4 16
-#define OFFSET_mips32_r5 20
-#define OFFSET_mips32_r6 24
-#define OFFSET_mips32_r7 28
-#define OFFSET_mips32_r8 32
-#define OFFSET_mips32_r9 36
-#define OFFSET_mips32_r10 40
-#define OFFSET_mips32_r11 44
-#define OFFSET_mips32_r12 48
-#define OFFSET_mips32_r13 52
-#define OFFSET_mips32_r14 56
-#define OFFSET_mips32_r15 60
-#define OFFSET_mips32_r15 60
-#define OFFSET_mips32_r17 68
-#define OFFSET_mips32_r18 72
-#define OFFSET_mips32_r19 76
-#define OFFSET_mips32_r20 80
-#define OFFSET_mips32_r21 84
-#define OFFSET_mips32_r22 88
-#define OFFSET_mips32_r23 92
-#define OFFSET_mips32_r24 96
-#define OFFSET_mips32_r25 100
-#define OFFSET_mips32_r26 104
-#define OFFSET_mips32_r27 108
-#define OFFSET_mips32_r28 112
-#define OFFSET_mips32_r29 116
-#define OFFSET_mips32_r30 120
-#define OFFSET_mips32_r31 124
-#define OFFSET_mips32_PC 128
-#define OFFSET_mips32_HI 132
-#define OFFSET_mips32_LO 136
-#define OFFSET_mips64_r0 0
-#define OFFSET_mips64_r1 8
-#define OFFSET_mips64_r2 16
-#define OFFSET_mips64_r3 24
-#define OFFSET_mips64_r4 32
-#define OFFSET_mips64_r5 40
-#define OFFSET_mips64_r6 48
-#define OFFSET_mips64_r7 56
-#define OFFSET_mips64_r8 64
-#define OFFSET_mips64_r9 72
-#define OFFSET_mips64_r10 80
-#define OFFSET_mips64_r11 88
-#define OFFSET_mips64_r12 96
-#define OFFSET_mips64_r13 104
-#define OFFSET_mips64_r14 112
-#define OFFSET_mips64_r15 120
-#define OFFSET_mips64_r15 120
-#define OFFSET_mips64_r17 136
-#define OFFSET_mips64_r18 144
-#define OFFSET_mips64_r19 152
-#define OFFSET_mips64_r20 160
-#define OFFSET_mips64_r21 168
-#define OFFSET_mips64_r22 176
-#define OFFSET_mips64_r23 184
-#define OFFSET_mips64_r24 192
-#define OFFSET_mips64_r25 200
-#define OFFSET_mips64_r26 208
-#define OFFSET_mips64_r27 216
-#define OFFSET_mips64_r28 224
-#define OFFSET_mips64_r29 232
-#define OFFSET_mips64_r30 240
-#define OFFSET_mips64_r31 248
-#define OFFSET_mips64_PC 256
-#define OFFSET_mips64_HI 264
-#define OFFSET_mips64_LO 272
-#define OFFSET_tilegx_r0 0
-#define OFFSET_tilegx_r1 8
-#define OFFSET_tilegx_r2 16
-#define OFFSET_tilegx_r3 24
-#define OFFSET_tilegx_r4 32
-#define OFFSET_tilegx_r5 40
-#define OFFSET_tilegx_r6 48
-#define OFFSET_tilegx_r7 56
-#define OFFSET_tilegx_r8 64
-#define OFFSET_tilegx_r9 72
-#define OFFSET_tilegx_r10 80
-#define OFFSET_tilegx_r11 88
-#define OFFSET_tilegx_r12 96
-#define OFFSET_tilegx_r13 104
-#define OFFSET_tilegx_r14 112
-#define OFFSET_tilegx_r15 120
-#define OFFSET_tilegx_r16 128
-#define OFFSET_tilegx_r17 136
-#define OFFSET_tilegx_r18 144
-#define OFFSET_tilegx_r19 152
-#define OFFSET_tilegx_r20 160
-#define OFFSET_tilegx_r21 168
-#define OFFSET_tilegx_r22 176
-#define OFFSET_tilegx_r23 184
-#define OFFSET_tilegx_r24 192
-#define OFFSET_tilegx_r25 200
-#define OFFSET_tilegx_r26 208
-#define OFFSET_tilegx_r27 216
-#define OFFSET_tilegx_r28 224
-#define OFFSET_tilegx_r29 232
-#define OFFSET_tilegx_r30 240
-#define OFFSET_tilegx_r31 248
-#define OFFSET_tilegx_r32 256
-#define OFFSET_tilegx_r33 264
-#define OFFSET_tilegx_r34 272
-#define OFFSET_tilegx_r35 280
-#define OFFSET_tilegx_r36 288
-#define OFFSET_tilegx_r37 296
-#define OFFSET_tilegx_r38 304
-#define OFFSET_tilegx_r39 312
-#define OFFSET_tilegx_r40 320
-#define OFFSET_tilegx_r41 328
-#define OFFSET_tilegx_r42 336
-#define OFFSET_tilegx_r43 344
-#define OFFSET_tilegx_r44 352
-#define OFFSET_tilegx_r45 360
-#define OFFSET_tilegx_r46 368
-#define OFFSET_tilegx_r47 376
-#define OFFSET_tilegx_r48 384
-#define OFFSET_tilegx_r49 392
-#define OFFSET_tilegx_r50 400
-#define OFFSET_tilegx_r51 408
-#define OFFSET_tilegx_r52 416
-#define OFFSET_tilegx_r53 424
-#define OFFSET_tilegx_r54 432
-#define OFFSET_tilegx_r55 440
-#define OFFSET_tilegx_pc 512
-#define OFFSET_tilegx_EMNOTE 528
-#define OFFSET_tilegx_CMSTART 536
-#define OFFSET_tilegx_NRADDR 552
+#define OFFSET_mips32_r0 8
+#define OFFSET_mips32_r1 12
+#define OFFSET_mips32_r2 16
+#define OFFSET_mips32_r3 20
+#define OFFSET_mips32_r4 24
+#define OFFSET_mips32_r5 28
+#define OFFSET_mips32_r6 32
+#define OFFSET_mips32_r7 36
+#define OFFSET_mips32_r8 40
+#define OFFSET_mips32_r9 44
+#define OFFSET_mips32_r10 48
+#define OFFSET_mips32_r11 52
+#define OFFSET_mips32_r12 56
+#define OFFSET_mips32_r13 60
+#define OFFSET_mips32_r14 64
+#define OFFSET_mips32_r15 68
+#define OFFSET_mips32_r15 68
+#define OFFSET_mips32_r17 76
+#define OFFSET_mips32_r18 80
+#define OFFSET_mips32_r19 84
+#define OFFSET_mips32_r20 88
+#define OFFSET_mips32_r21 92
+#define OFFSET_mips32_r22 96
+#define OFFSET_mips32_r23 100
+#define OFFSET_mips32_r24 104
+#define OFFSET_mips32_r25 108
+#define OFFSET_mips32_r26 112
+#define OFFSET_mips32_r27 116
+#define OFFSET_mips32_r28 120
+#define OFFSET_mips32_r29 124
+#define OFFSET_mips32_r30 128
+#define OFFSET_mips32_r31 132
+#define OFFSET_mips32_PC 136
+#define OFFSET_mips32_HI 140
+#define OFFSET_mips32_LO 144
+#define OFFSET_mips64_r0 16
+#define OFFSET_mips64_r1 24
+#define OFFSET_mips64_r2 32
+#define OFFSET_mips64_r3 40
+#define OFFSET_mips64_r4 48
+#define OFFSET_mips64_r5 56
+#define OFFSET_mips64_r6 64
+#define OFFSET_mips64_r7 72
+#define OFFSET_mips64_r8 80
+#define OFFSET_mips64_r9 88
+#define OFFSET_mips64_r10 96
+#define OFFSET_mips64_r11 104
+#define OFFSET_mips64_r12 112
+#define OFFSET_mips64_r13 120
+#define OFFSET_mips64_r14 128
+#define OFFSET_mips64_r15 136
+#define OFFSET_mips64_r15 136
+#define OFFSET_mips64_r17 152
+#define OFFSET_mips64_r18 160
+#define OFFSET_mips64_r19 168
+#define OFFSET_mips64_r20 176
+#define OFFSET_mips64_r21 184
+#define OFFSET_mips64_r22 192
+#define OFFSET_mips64_r23 200
+#define OFFSET_mips64_r24 208
+#define OFFSET_mips64_r25 216
+#define OFFSET_mips64_r26 224
+#define OFFSET_mips64_r27 232
+#define OFFSET_mips64_r28 240
+#define OFFSET_mips64_r29 248
+#define OFFSET_mips64_r30 256
+#define OFFSET_mips64_r31 264
+#define OFFSET_mips64_PC 272
+#define OFFSET_mips64_HI 280
+#define OFFSET_mips64_LO 288
diff --git a/VEX/pub/libvex_guest_ppc32.h b/VEX/pub/libvex_guest_ppc32.h
index 842032a..816ef5a 100644
--- a/VEX/pub/libvex_guest_ppc32.h
+++ b/VEX/pub/libvex_guest_ppc32.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2004-2015 OpenWorks LLP
+   Copyright (C) 2004-2017 OpenWorks LLP
       info@open-works.net
 
    This program is free software; you can redistribute it and/or
@@ -173,49 +173,53 @@
       /* XER pieces */
       /* 1164 */ UChar guest_XER_SO; /* in lsb */
       /* 1165 */ UChar guest_XER_OV; /* in lsb */
-      /* 1166 */ UChar guest_XER_CA; /* in lsb */
-      /* 1167 */ UChar guest_XER_BC; /* all bits */
+      /* 1166 */ UChar guest_XER_OV32; /* in lsb */
+      /* 1167 */ UChar guest_XER_CA; /* in lsb */
+      /* 1168 */ UChar guest_XER_CA32; /* in lsb */
+      /* 1169 */ UChar guest_XER_BC; /* all bits */
 
       /* CR pieces */
-      /* 1168 */ UChar guest_CR0_321; /* in [3:1] */
-      /* 1169 */ UChar guest_CR0_0;   /* in lsb */
-      /* 1170 */ UChar guest_CR1_321; /* in [3:1] */
-      /* 1171 */ UChar guest_CR1_0;   /* in lsb */
-      /* 1172 */ UChar guest_CR2_321; /* in [3:1] */
-      /* 1173 */ UChar guest_CR2_0;   /* in lsb */
-      /* 1174 */ UChar guest_CR3_321; /* in [3:1] */
-      /* 1175 */ UChar guest_CR3_0;   /* in lsb */
-      /* 1176 */ UChar guest_CR4_321; /* in [3:1] */
-      /* 1177 */ UChar guest_CR4_0;   /* in lsb */
-      /* 1178 */ UChar guest_CR5_321; /* in [3:1] */
-      /* 1179 */ UChar guest_CR5_0;   /* in lsb */
-      /* 1180 */ UChar guest_CR6_321; /* in [3:1] */
-      /* 1181 */ UChar guest_CR6_0;   /* in lsb */
-      /* 1182 */ UChar guest_CR7_321; /* in [3:1] */
-      /* 1183 */ UChar guest_CR7_0;   /* in lsb */
+      /* 1170 */ UChar guest_CR0_321; /* in [3:1] */
+      /* 1171 */ UChar guest_CR0_0;   /* in lsb */
+      /* 1172 */ UChar guest_CR1_321; /* in [3:1] */
+      /* 1173 */ UChar guest_CR1_0;   /* in lsb */
+      /* 1174 */ UChar guest_CR2_321; /* in [3:1] */
+      /* 1175 */ UChar guest_CR2_0;   /* in lsb */
+      /* 1176 */ UChar guest_CR3_321; /* in [3:1] */
+      /* 1177 */ UChar guest_CR3_0;   /* in lsb */
+      /* 1178 */ UChar guest_CR4_321; /* in [3:1] */
+      /* 1179 */ UChar guest_CR4_0;   /* in lsb */
+      /* 1180 */ UChar guest_CR5_321; /* in [3:1] */
+      /* 1181 */ UChar guest_CR5_0;   /* in lsb */
+      /* 1182 */ UChar guest_CR6_321; /* in [3:1] */
+      /* 1183 */ UChar guest_CR6_0;   /* in lsb */
+      /* 1184 */ UChar guest_CR7_321; /* in [3:1] */
+      /* 1185 */ UChar guest_CR7_0;   /* in lsb */
 
       /* FP Status and  Control Register fields. Only rounding mode fields
        * and Floating-point Condition Code (FPCC) fields in the FPSCR are
        * supported.
        */
-      /* 1184 */ UChar guest_FPROUND; // Binary Floating Point Rounding Mode
-      /* 1185 */ UChar guest_DFPROUND; // Decimal Floating Point Rounding Mode
-      /* 1186 */ UChar guest_C_FPCC;   // Floating-Point Result Class Descriptor
+      /* 1186 */ UChar guest_FPROUND; // Binary Floating Point Rounding Mode
+      /* 1187 */ UChar guest_DFPROUND; // Decimal Floating Point Rounding Mode
+      /* 1188 */ UChar guest_C_FPCC;   // Floating-Point Result Class Descriptor
                                        // and Floating-point Condition Code
-      /* 1187 */ UChar pad2;
+      /* 1189 */ UChar pad0;
+      /* 1190 */ UChar pad1;
+      /* 1191 */ UChar pad2;
 
       /* Vector Save/Restore Register */
-      /* 1188 */ UInt guest_VRSAVE;
+      /* 1192 */ UInt guest_VRSAVE;
 
       /* Vector Status and Control Register */
-      /* 1192 */ UInt guest_VSCR;
+      /* 1196 */ UInt guest_VSCR;
 
       /* Emulation notes */
-      /* 1196 */ UInt guest_EMNOTE;
+      /* 1200 */ UInt guest_EMNOTE;
 
       /* For icbi: record start and length of area to invalidate */
-      /* 1200 */ UInt guest_CMSTART;
-      /* 1204 */ UInt guest_CMLEN;
+      /* 1204 */ UInt guest_CMSTART;
+      /* 1208 */ UInt guest_CMLEN;
 
       /* Used to record the unredirected guest address at the start of
          a translation whose start has been redirected.  By reading
@@ -223,34 +227,35 @@
          find out what the corresponding no-redirection address was.
          Note, this is only set for wrap-style redirects, not for
          replace-style ones. */
-      /* 1208 */ UInt guest_NRADDR;
-      /* 1212 */ UInt guest_NRADDR_GPR2; /* needed by aix */
+      /* 1212 */ UInt guest_NRADDR;
+      /* 1216 */ UInt guest_NRADDR_GPR2; /* needed by aix */
 
      /* A grows-upwards stack for hidden saves/restores of LR and R2
         needed for function interception and wrapping on ppc32-aix5.
         A horrible hack.  REDIR_SP points to the highest live entry,
         and so starts at -1. */
-      /* 1216 */ UInt guest_REDIR_SP;
-      /* 1220 */ UInt guest_REDIR_STACK[VEX_GUEST_PPC32_REDIR_STACK_SIZE];
+      /* 1220 */ UInt guest_REDIR_SP;
+      /* 1224 */ UInt guest_REDIR_STACK[VEX_GUEST_PPC32_REDIR_STACK_SIZE];
 
       /* Needed for Darwin (but mandated for all guest architectures):
          CIA at the last SC insn.  Used when backing up to restart a
          syscall that has been interrupted by a signal. */
-      /* 1348 */ UInt guest_IP_AT_SYSCALL;
+      /* 134C */ UInt guest_IP_AT_SYSCALL;
 
       /* SPRG3, which AIUI is readonly in user space.  Needed for
          threading on AIX. */
-      /* 1352 */ UInt guest_SPRG3_RO;
-      /* 1356 */ UInt  padding1;
-      /* 1360 */ ULong guest_TFHAR;     // Transaction Failure Handler Address Register 
-      /* 1368 */ ULong guest_TEXASR;    // Transaction EXception And Summary Register
-      /* 1376 */ ULong guest_TFIAR;     // Transaction Failure Instruction Address Register
-      /* 1384 */ ULong guest_PPR;       // Program Priority register
-      /* 1392 */ UInt  guest_TEXASRU;   // Transaction EXception And Summary Register Upper
-      /* 1396 */ UInt  guest_PSPB;      // Problem State Priority Boost register
+      /* 1356 */ UInt guest_SPRG3_RO;
+      /* 1360 */ UInt  padding1;
+      /* 1364 */ ULong guest_TFHAR;     // Transaction Failure Handler Address Register
+      /* 1372 */ ULong guest_TEXASR;    // Transaction EXception And Summary Register
+      /* 1380 */ ULong guest_TFIAR;     // Transaction Failure Instruction Address Register
+      /* 1388 */ ULong guest_PPR;       // Program Priority register
+      /* 1396 */ UInt  guest_TEXASRU;   // Transaction EXception And Summary Register Upper
+      /* 1400 */ UInt  guest_PSPB;      // Problem State Priority Boost register
       /* Padding to make it have an 16-aligned size */
-      /* 1400 */ UInt  padding2;
-      /* 1404 */ UInt  padding3;
+      /* 1404 */ UInt  padding2;
+      /* 1408 */ UInt  padding3;
+      /* 1412 */ UInt  padding4;
    }
    VexGuestPPC32State;
 
diff --git a/VEX/pub/libvex_guest_ppc64.h b/VEX/pub/libvex_guest_ppc64.h
index 927b227..02c4020 100644
--- a/VEX/pub/libvex_guest_ppc64.h
+++ b/VEX/pub/libvex_guest_ppc64.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2004-2015 OpenWorks LLP
+   Copyright (C) 2004-2017 OpenWorks LLP
       info@open-works.net
 
    This program is free software; you can redistribute it and/or
@@ -211,52 +211,56 @@
       /* XER pieces */
       /* 1304 */ UChar guest_XER_SO; /* in lsb */
       /* 1305 */ UChar guest_XER_OV; /* in lsb */
-      /* 1306 */ UChar guest_XER_CA; /* in lsb */
-      /* 1307 */ UChar guest_XER_BC; /* all bits */
+      /* 1306 */ UChar guest_XER_OV32; /* in lsb */
+      /* 1307 */ UChar guest_XER_CA; /* in lsb */
+      /* 1308 */ UChar guest_XER_CA32; /* in lsb */
+      /* 1309 */ UChar guest_XER_BC; /* all bits */
 
       /* CR pieces */
-      /* 1308 */ UChar guest_CR0_321; /* in [3:1] */
-      /* 1309 */ UChar guest_CR0_0;   /* in lsb */
-      /* 1310 */ UChar guest_CR1_321; /* in [3:1] */
-      /* 1311 */ UChar guest_CR1_0;   /* in lsb */
-      /* 1312 */ UChar guest_CR2_321; /* in [3:1] */
-      /* 1313 */ UChar guest_CR2_0;   /* in lsb */
-      /* 1314 */ UChar guest_CR3_321; /* in [3:1] */
-      /* 1315 */ UChar guest_CR3_0;   /* in lsb */
-      /* 1316 */ UChar guest_CR4_321; /* in [3:1] */
-      /* 1317 */ UChar guest_CR4_0;   /* in lsb */
-      /* 1318 */ UChar guest_CR5_321; /* in [3:1] */
-      /* 1319 */ UChar guest_CR5_0;   /* in lsb */
-      /* 1320 */ UChar guest_CR6_321; /* in [3:1] */
-      /* 1321 */ UChar guest_CR6_0;   /* in lsb */
-      /* 1322 */ UChar guest_CR7_321; /* in [3:1] */
-      /* 1323 */ UChar guest_CR7_0;   /* in lsb */
+      /* 1310 */ UChar guest_CR0_321; /* in [3:1] */
+      /* 1311 */ UChar guest_CR0_0;   /* in lsb */
+      /* 1312 */ UChar guest_CR1_321; /* in [3:1] */
+      /* 1313 */ UChar guest_CR1_0;   /* in lsb */
+      /* 1314 */ UChar guest_CR2_321; /* in [3:1] */
+      /* 1315 */ UChar guest_CR2_0;   /* in lsb */
+      /* 1316 */ UChar guest_CR3_321; /* in [3:1] */
+      /* 1317 */ UChar guest_CR3_0;   /* in lsb */
+      /* 1318 */ UChar guest_CR4_321; /* in [3:1] */
+      /* 1319 */ UChar guest_CR4_0;   /* in lsb */
+      /* 1320 */ UChar guest_CR5_321; /* in [3:1] */
+      /* 1321 */ UChar guest_CR5_0;   /* in lsb */
+      /* 1322 */ UChar guest_CR6_321; /* in [3:1] */
+      /* 1323 */ UChar guest_CR6_0;   /* in lsb */
+      /* 1324 */ UChar guest_CR7_321; /* in [3:1] */
+      /* 1325 */ UChar guest_CR7_0;   /* in lsb */
 
       /* FP Status and  Control Register fields. Only rounding mode fields
        * and Floating-point Condition Code (FPCC) fields are supported.
        */
-      /* 1324 */ UChar guest_FPROUND; // Binary Floating Point Rounding Mode
-      /* 1325 */ UChar guest_DFPROUND; // Decimal Floating Point Rounding Mode
-      /* 1326 */ UChar guest_C_FPCC;   // Floating-point Condition Code
+      /* 1326 */ UChar guest_FPROUND; // Binary Floating Point Rounding Mode
+      /* 1327 */ UChar guest_DFPROUND; // Decimal Floating Point Rounding Mode
+      /* 1328 */ UChar guest_C_FPCC;   // Floating-point Condition Code
                                        // and Floating-point Condition Code
 
-      /* 1327 */ UChar pad2;
+      /* 1329 */ UChar pad2;
+      /* 1330 */ UChar pad3;
+      /* 1331 */ UChar pad4;
 
       /* Vector Save/Restore Register */
-      /* 1328 */ UInt guest_VRSAVE;
+      /* 1332 */ UInt guest_VRSAVE;
 
       /* Vector Status and Control Register */
-      /* 1332 */ UInt guest_VSCR;
+      /* 1336 */ UInt guest_VSCR;
 
       /* Emulation notes */
-      /* 1336 */ UInt guest_EMNOTE;
+      /* 1340 */ UInt guest_EMNOTE;
 
       /* gcc adds 4 bytes padding here: pre-empt it. */
-      /* 1340 */ UInt  padding;
+      /* 1344 */ UInt  padding;
 
       /* For icbi: record start and length of area to invalidate */
-      /* 1344 */ ULong guest_CMSTART;
-      /* 1352 */ ULong guest_CMLEN;
+      /* 1348 */ ULong guest_CMSTART;
+      /* 1356 */ ULong guest_CMLEN;
 
       /* Used to record the unredirected guest address at the start of
          a translation whose start has been redirected.  By reading
@@ -264,35 +268,35 @@
          find out what the corresponding no-redirection address was.
          Note, this is only set for wrap-style redirects, not for
          replace-style ones. */
-      /* 1360 */ ULong guest_NRADDR;
-      /* 1368 */ ULong guest_NRADDR_GPR2;
+      /* 1364 */ ULong guest_NRADDR;
+      /* 1372 */ ULong guest_NRADDR_GPR2;
 
      /* A grows-upwards stack for hidden saves/restores of LR and R2
         needed for function interception and wrapping on ppc64-linux.
         A horrible hack.  REDIR_SP points to the highest live entry,
         and so starts at -1. */
-      /* 1376 */ ULong guest_REDIR_SP;
-      /* 1384 */ ULong guest_REDIR_STACK[VEX_GUEST_PPC64_REDIR_STACK_SIZE];
+      /* 1380 */ ULong guest_REDIR_SP;
+      /* 1388 */ ULong guest_REDIR_STACK[VEX_GUEST_PPC64_REDIR_STACK_SIZE];
 
       /* Needed for Darwin: CIA at the last SC insn.  Used when backing up
          to restart a syscall that has been interrupted by a signal. */
-      /* 1640 */ ULong guest_IP_AT_SYSCALL;
+      /* 1646 */ ULong guest_IP_AT_SYSCALL;
 
       /* SPRG3, which AIUI is readonly in user space.  Needed for
          threading on AIX. */
-      /* 1648 */ ULong guest_SPRG3_RO;
+      /* 1654 */ ULong guest_SPRG3_RO;
 
-      /* 1656 */ ULong guest_TFHAR;     // Transaction Failure Handler Address Register 
-      /* 1664 */ ULong guest_TEXASR;    // Transaction EXception And Summary Register
-      /* 1672 */ ULong guest_TFIAR;     // Transaction Failure Instruction Address Register
-      /* 1680 */ ULong guest_PPR;       // Program Priority register
-      /* 1688 */ UInt  guest_TEXASRU;   // Transaction EXception And Summary Register Upper
-      /* 1692 */ UInt  guest_PSPB;      // Problem State Priority Boost register
+      /* 1662 */ ULong guest_TFHAR;     // Transaction Failure Handler Address Register
+      /* 1670 */ ULong guest_TEXASR;    // Transaction EXception And Summary Register
+      /* 1678 */ ULong guest_TFIAR;     // Transaction Failure Instruction Address Register
+      /* 1686 */ ULong guest_PPR;       // Program Priority register
+      /* 1694 */ UInt  guest_TEXASRU;   // Transaction EXception And Summary Register Upper
+      /* 1698 */ UInt  guest_PSPB;      // Problem State Priority Boost register
 
       /* Padding to make it have an 16-aligned size */
-      /* 1696   UInt  padding1;  currently not needed */
-      /* 1700   UInt  padding2;  currently not needed */
-      /* 1708   UInt  padding3;  currently not needed */
+      /* 1698 */   UInt  padding1;
+   /* 1702    UInt  padding2; */
+   /* 1706    UInt  padding3; */
 
    }
    VexGuestPPC64State;
diff --git a/VEX/pub/libvex_guest_s390x.h b/VEX/pub/libvex_guest_s390x.h
index 99d5947..8cf0919 100644
--- a/VEX/pub/libvex_guest_s390x.h
+++ b/VEX/pub/libvex_guest_s390x.h
@@ -8,7 +8,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright IBM Corp. 2010-2015
+   Copyright IBM Corp. 2010-2017
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
diff --git a/VEX/pub/libvex_guest_tilegx.h b/VEX/pub/libvex_guest_tilegx.h
deleted file mode 100644
index d3c7062..0000000
--- a/VEX/pub/libvex_guest_tilegx.h
+++ /dev/null
@@ -1,149 +0,0 @@
-
-/*---------------------------------------------------------------*/
-/*--- begin                             libvex_guest_tilegx.h ---*/
-/*---------------------------------------------------------------*/
-
-/*
-  This file is part of Valgrind, a dynamic binary instrumentation
-  framework.
-
-  Copyright (C) 2010-2015 Tilera Corp.
-
-  This program is free software; you can redistribute it and/or
-  modify it under the terms of the GNU General Public License as
-  published by the Free Software Foundation; either version 2 of the
-  License, or (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program; if not, write to the Free Software
-  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-  02111-1307, USA.
-
-  The GNU General Public License is contained in the file COPYING.
-*/
-
-/* Contributed by Zhi-Gang Liu <zliu at tilera dot com> */
-
-#ifndef __LIBVEX_PUB_GUEST_TILEGX_H
-#define __LIBVEX_PUB_GUEST_TILEGX_H
-
-#include "libvex_basictypes.h"
-#include "libvex_emnote.h"
-
-#undef   TILEGX_DEBUG
-
-/*---------------------------------------------------------------*/
-/*--- Vex's representation of the tilegx CPU state.           ---*/
-/*---------------------------------------------------------------*/
-
-typedef ULong ULONG;
-
-typedef
-struct {
-  /* CPU Registers */
-  /*   0   */ ULONG guest_r0;
-  /*   8   */ ULONG guest_r1;
-  /*   16  */ ULONG guest_r2;
-  /*   24  */ ULONG guest_r3;
-  /*   32  */ ULONG guest_r4;
-  /*   40  */ ULONG guest_r5;
-  /*   48  */ ULONG guest_r6;
-  /*   56  */ ULONG guest_r7;
-  /*   64  */ ULONG guest_r8;
-  /*   72  */ ULONG guest_r9;
-  /*   80  */ ULONG guest_r10;
-  /*   88  */ ULONG guest_r11;
-  /*   96  */ ULONG guest_r12;
-  /*   104 */ ULONG guest_r13;
-  /*   112 */ ULONG guest_r14;
-  /*   120 */ ULONG guest_r15;
-  /*   128 */ ULONG guest_r16;
-  /*   136 */ ULONG guest_r17;
-  /*   144 */ ULONG guest_r18;
-  /*   152 */ ULONG guest_r19;
-  /*   160 */ ULONG guest_r20;
-  /*   168 */ ULONG guest_r21;
-  /*   176 */ ULONG guest_r22;
-  /*   184 */ ULONG guest_r23;
-  /*   192 */ ULONG guest_r24;
-  /*   200 */ ULONG guest_r25;
-  /*   208 */ ULONG guest_r26;
-  /*   216 */ ULONG guest_r27;
-  /*   224 */ ULONG guest_r28;
-  /*   232 */ ULONG guest_r29;
-  /*   240 */ ULONG guest_r30;
-  /*   248 */ ULONG guest_r31;
-  /*   256 */ ULONG guest_r32;
-  /*   264 */ ULONG guest_r33;
-  /*   272 */ ULONG guest_r34;
-  /*   280 */ ULONG guest_r35;
-  /*   288 */ ULONG guest_r36;
-  /*   296 */ ULONG guest_r37;
-  /*   304 */ ULONG guest_r38;
-  /*   312 */ ULONG guest_r39;
-  /*   320 */ ULONG guest_r40;
-  /*   328 */ ULONG guest_r41;
-  /*   336 */ ULONG guest_r42;
-  /*   344 */ ULONG guest_r43;
-  /*   352 */ ULONG guest_r44;
-  /*   360 */ ULONG guest_r45;
-  /*   368 */ ULONG guest_r46;
-  /*   376 */ ULONG guest_r47;
-  /*   384 */ ULONG guest_r48;
-  /*   392 */ ULONG guest_r49;
-  /*   400 */ ULONG guest_r50;
-  /*   408 */ ULONG guest_r51;
-  /*   416 */ ULONG guest_r52; /* FP */
-  /*   424 */ ULONG guest_r53;
-  /*   432 */ ULONG guest_r54; /* SP */
-  /*   440 */ ULONG guest_r55; /* LR */
-  /*   448 */ ULONG guest_r56; /* zero */
-  /*   456 */ ULONG guest_r57; /* Reserved */
-  /*   464 */ ULONG guest_r58; /* Reserved */
-  /*   472 */ ULONG guest_r59; /* Reserved */
-  /*   480 */ ULONG guest_r60; /* Reserved */
-  /*   488 */ ULONG guest_r61; /* Reserved */
-  /*   496 */ ULONG guest_r62; /* Reserved */
-  /*   504 */ ULONG guest_r63; /* Reserved */
-  /*   512 */ ULONG guest_pc;
-  /*   520 */ ULONG guest_spare; /* Reserved */
-  /*   528 */ ULONG guest_EMNOTE;
-  /*   536 */ ULONG guest_CMSTART;
-  /*   544 */ ULONG guest_CMLEN;
-  /*   552 */ ULONG guest_NRADDR;
-  /*   560 */ ULong guest_cmpexch;
-  /*   568 */ ULong guest_zero;
-  /*   576 */ ULong guest_ex_context_0;
-  /*   584 */ ULong guest_ex_context_1;
-  /*   592 */ ULong host_EvC_FAILADDR;
-  /*   600 */ ULong host_EvC_COUNTER;
-  /*   608 */ ULong guest_COND;
-  /*   616 */ ULong PAD;
-
-} VexGuestTILEGXState;
-
-#define OFFSET_tilegx_r(_N)  (8 * (_N))
-
-/*---------------------------------------------------------------*/
-/*--- Utility functions for TILEGX guest stuff.               ---*/
-/*---------------------------------------------------------------*/
-
-/* ALL THE FOLLOWING ARE VISIBLE TO LIBRARY CLIENT */
-
-/* Initialise all guest TILEGX state. */
-
-extern
-void LibVEX_GuestTILEGX_initialise ( /*OUT*/VexGuestTILEGXState* vex_state );
-
-
-#endif /* __LIBVEX_PUB_GUEST_TILEGX_H */
-
-
-/*---------------------------------------------------------------*/
-/*---                                   libvex_guest_tilegx.h ---*/
-/*---------------------------------------------------------------*/
diff --git a/VEX/pub/libvex_guest_x86.h b/VEX/pub/libvex_guest_x86.h
index 5c77569..3ec8af5 100644
--- a/VEX/pub/libvex_guest_x86.h
+++ b/VEX/pub/libvex_guest_x86.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2004-2015 OpenWorks LLP
+   Copyright (C) 2004-2017 OpenWorks LLP
       info@open-works.net
 
    This program is free software; you can redistribute it and/or
@@ -194,8 +194,8 @@
       UShort guest_GS;
       UShort guest_SS;
       /* LDT/GDT stuff. */
-      HWord  guest_LDT; /* host addr, a VexGuestX86SegDescr* */
-      HWord  guest_GDT; /* host addr, a VexGuestX86SegDescr* */
+      ULong  guest_LDT; /* host addr, a VexGuestX86SegDescr* */
+      ULong  guest_GDT; /* host addr, a VexGuestX86SegDescr* */
 
       /* Emulation notes */
       UInt   guest_EMNOTE;
@@ -223,6 +223,8 @@
 
       /* Padding to make it have an 16-aligned size */
       UInt padding1;
+      UInt padding2;
+      UInt padding3;
    }
    VexGuestX86State;
 
diff --git a/VEX/pub/libvex_ir.h b/VEX/pub/libvex_ir.h
index 5efcd5c..fcac043 100644
--- a/VEX/pub/libvex_ir.h
+++ b/VEX/pub/libvex_ir.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2004-2015 OpenWorks LLP
+   Copyright (C) 2004-2017 OpenWorks LLP
       info@open-works.net
 
    This program is free software; you can redistribute it and/or
@@ -776,6 +776,13 @@
       Iop_RecpExpF64,  /* FRECPX d  :: IRRoundingMode(I32) x F64 -> F64 */
       Iop_RecpExpF32,  /* FRECPX s  :: IRRoundingMode(I32) x F32 -> F32 */
 
+      /* --------- Possibly required by IEEE 754-2008. --------- */
+
+      Iop_MaxNumF64,  /* max, F64, numerical operand if other is a qNaN */
+      Iop_MinNumF64,  /* min, F64, ditto */
+      Iop_MaxNumF32,  /* max, F32, ditto */
+      Iop_MinNumF32,  /* min, F32, ditto */
+
       /* ------------------ 16-bit scalar FP ------------------ */
 
       Iop_F16toF64,  /*                       F16 -> F64 */
@@ -1957,7 +1964,7 @@
       Iex_ITE,
       Iex_CCall,
       Iex_VECRET,
-      Iex_BBPTR
+      Iex_GSPTR
    }
    IRExprTag;
 
@@ -2132,7 +2139,7 @@
          quite poor code to be generated.  Try to avoid it.
 
          In principle it would be allowable to have the arg vector
-         contain an IRExpr_VECRET(), although not IRExpr_BBPTR(). However,
+         contain an IRExpr_VECRET(), although not IRExpr_GSPTR(). However,
          at the moment there is no requirement for clean helper calls to
          be able to return V128 or V256 values.  Hence this is not allowed.
 
@@ -2196,8 +2203,8 @@
    only appear at most once in an argument list, and it may not appear
    at all in argument lists for clean helper calls. */
 
-static inline Bool is_IRExpr_VECRET_or_BBPTR ( const IRExpr* e ) {
-   return e->tag == Iex_VECRET || e->tag == Iex_BBPTR;
+static inline Bool is_IRExpr_VECRET_or_GSPTR ( const IRExpr* e ) {
+   return e->tag == Iex_VECRET || e->tag == Iex_GSPTR;
 }
 
 
@@ -2217,7 +2224,7 @@
 extern IRExpr* IRExpr_CCall  ( IRCallee* cee, IRType retty, IRExpr** args );
 extern IRExpr* IRExpr_ITE    ( IRExpr* cond, IRExpr* iftrue, IRExpr* iffalse );
 extern IRExpr* IRExpr_VECRET ( void );
-extern IRExpr* IRExpr_BBPTR  ( void );
+extern IRExpr* IRExpr_GSPTR  ( void );
 
 /* Deep-copy an IRExpr. */
 extern IRExpr* deepCopyIRExpr ( const IRExpr* );
@@ -2376,10 +2383,10 @@
      number of times at a fixed interval, if required.
 
    Normally, code is generated to pass just the args to the helper.
-   However, if IRExpr_BBPTR() is present in the argument list (at most
-   one instance is allowed), then the baseblock pointer is passed for
+   However, if IRExpr_GSPTR() is present in the argument list (at most
+   one instance is allowed), then the guest state pointer is passed for
    that arg, so that the callee can access the guest state.  It is
-   invalid for .nFxState to be zero but IRExpr_BBPTR() to be present,
+   invalid for .nFxState to be zero but IRExpr_GSPTR() to be present,
    since .nFxState==0 is a claim that the call does not access guest
    state.
 
@@ -2416,7 +2423,7 @@
          allowed. */
       IRCallee* cee;    /* where to call */
       IRExpr*   guard;  /* :: Ity_Bit.  Controls whether call happens */
-      /* The args vector may contain IRExpr_BBPTR() and/or
+      /* The args vector may contain IRExpr_GSPTR() and/or
          IRExpr_VECRET(), in both cases, at most once. */
       IRExpr**  args;   /* arg vector, ends in NULL. */
       IRTemp    tmp;    /* to assign result to, or IRTemp_INVALID if none */
diff --git a/VEX/pub/libvex_s390x_common.h b/VEX/pub/libvex_s390x_common.h
index ecdc11b..5b21b34 100644
--- a/VEX/pub/libvex_s390x_common.h
+++ b/VEX/pub/libvex_s390x_common.h
@@ -8,7 +8,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright IBM Corp. 2010-2015
+   Copyright IBM Corp. 2010-2017
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
diff --git a/VEX/pub/libvex_trc_values.h b/VEX/pub/libvex_trc_values.h
index 38ff2e1..e46e0fb 100644
--- a/VEX/pub/libvex_trc_values.h
+++ b/VEX/pub/libvex_trc_values.h
@@ -7,7 +7,7 @@
    This file is part of Valgrind, a dynamic binary instrumentation
    framework.
 
-   Copyright (C) 2004-2015 OpenWorks LLP
+   Copyright (C) 2004-2017 OpenWorks LLP
       info@open-works.net
 
    This program is free software; you can redistribute it and/or