Stanislav Sedov committed 06b7292 Merge

- Merge with 3.8.0 upstream.

Comments (0)

Files changed (1108)

 Julian Seward was the original founder, designer and author of
 Valgrind, created the dynamic translation frameworks, wrote Memcheck,
-the 3.X versions of Helgrind, Ptrcheck, DHAT, and did lots of other
+the 3.X versions of Helgrind, SGCheck, DHAT, and did lots of other
 Nicholas Nethercote did the core/tool generalisation, wrote
 also made a bunch of performance and memory-reduction fixes across
 diverse parts of the system.
-Maynard Johnson contributed IBM Power6 and Power7 support, and generally
-deals with ppc64-linux issues.
+Carl Love and Maynard Johnson contributed IBM Power6 and Power7
+support, and generally deal with ppc{32,64}-linux issues.
+Petar Jovanovic and Dejan Jevtic wrote and maintain the mips32-linux
+Dragos Tatulea modified the arm-android port so it also works on
+Jakub Jelinek helped out with the AVX support.
 Many, many people sent bug reports, patches, and helpful feedback.
 # Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs.
 # For building the core, coregrind/ files add some extra things.
-# Also: in newer versions of automake (1.10 onwards?) asm files ending with
-# '.S' are considered "pre-processed" (as opposed to those ending in '.s')
-# and so the CPPFLAGS are passed to the assembler.  But this is not true for
-# older automakes (e.g. 1.8.5, 1.9.6), sigh.  So we include
-# means some of the flags are duplicated on systems with newer versions of
-# automake, but this does not really matter and seems hard to avoid.
 	-I$(top_srcdir) \
 AM_FLAG_M3264_X86_LINUX   = @FLAG_M32@
+				$(AM_CFLAGS_BASE) -fomit-frame-pointer
-AM_CFLAGS_AMD64_LINUX     = @FLAG_M64@ -fomit-frame-pointer \
+				$(AM_CFLAGS_BASE) -fomit-frame-pointer
 AM_FLAG_M3264_X86_FREEBSD   = @FLAG_M32@
 			 	$(AM_CFLAGS_BASE) -marm -mcpu=cortex-a8
 				-marm -mcpu=cortex-a8 -g
 				-mmacosx-version-min=10.5 \
 				-fno-stack-protector -fno-pic -fno-PIC
+AM_CCASFLAGS_X86_DARWIN  = -arch i386 -g
 AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64
 AM_CFLAGS_AMD64_DARWIN     = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \
 			    -mmacosx-version-min=10.5 -fno-stack-protector
+AM_CCASFLAGS_AMD64_DARWIN  = -arch x86_64 -g
 AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
-AM_CCASFLAGS_S390X_LINUX  = $(AM_CPPFLAGS_S390X_LINUX) -mzarch -march=z900 \
-                            @FLAG_M64@ -g
+AM_CFLAGS_S390X_LINUX     = @FLAG_M64@ $(AM_CFLAGS_BASE) -fomit-frame-pointer
+AM_CCASFLAGS_S390X_LINUX  = @FLAG_M64@ -g -mzarch -march=z900
+AM_CCASFLAGS_MIPS32_LINUX  = @FLAG_M32@ -mips32 -g
 # Flags for the primary target.  These must be used to build the
 # regtests and performance tests.  In fact, these must be used to
 PRELOAD_LDFLAGS_COMMON_FREEBSD  = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst
 PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load
+# The Android toolchain includes all kinds of stdlib helpers present in
+# bionic which is bad because we are not linking with it and the Android
+# linker will panic.
-AUTOMAKE_OPTIONS = foreign 1.7 dist-bzip2
+AUTOMAKE_OPTIONS = foreign 1.10 dist-bzip2
 include $(top_srcdir)/ 
 		exp-bbv \
-# DDD: once all tools work on Darwin, TEST_TOOLS and TEST_EXP_TOOLS can be
-# replaced with TOOLS and EXP_TOOLS.
-  TEST_EXP_TOOLS = exp-bbv
 # Put docs last because building the HTML is slow and we want to get
 # everything else working before we try it.
 	darwin9.supp darwin9-drd.supp \
 	freebsd.supp \
 	darwin10.supp darwin10-drd.supp \
-	darwin11.supp \
+	darwin11.supp darwin12.supp \
 # default.supp, as it is built from the base .supp files at compile-time.
 dist_noinst_DATA = $(SUPP_FILES)
-pkglib_DATA = default.supp
+vglibdir = $(pkglibdir)
+vglib_DATA = default.supp
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = valgrind.pc
 	cat $(DEFAULT_SUPP_FILES) >> default.supp
 ## Preprend @PERL@ because tests/vg_regtest isn't executable
+## Ensure make exits with error if PERL fails or check_makefile_consistency fails.
 regtest: check
-	-tests/check_makefile_consistency gdbserver_tests $(TEST_TOOLS) $(TEST_EXP_TOOLS)
 	gdbserver_tests/make_local_links $(GDB)
-	@PERL@ tests/vg_regtest gdbserver_tests $(TEST_TOOLS) $(TEST_EXP_TOOLS)
+	if @PERL@ tests/vg_regtest gdbserver_tests $(TOOLS) $(EXP_TOOLS) ; then \
+	   tests/check_makefile_consistency gdbserver_tests $(TOOLS) $(EXP_TOOLS); \
+	else \
+	   tests/check_makefile_consistency gdbserver_tests $(TOOLS) $(EXP_TOOLS); \
+	   false; \
+	fi
 nonexp-regtest: check
-	@PERL@ tests/vg_regtest $(TEST_TOOLS)
+	@PERL@ tests/vg_regtest $(TOOLS)
 exp-regtest: check
-	@PERL@ tests/vg_regtest gdbserver_tests $(TEST_EXP_TOOLS)
+	@PERL@ tests/vg_regtest gdbserver_tests $(EXP_TOOLS)
 # Nb: gdbserver_tests are put in exp-regtest rather than nonexp-regtest
 # because they are tested with various valgrind tools, so might be using
 # an experimental tool.
 	README.s390 \ \
+	README.mips \
+	NEWS.old \ \ \

 		-DVGO_@VGCONF_OS@=1 \
 # Nb: Tools need to augment these flags with an arch-selection option, such
 # as $(AM_FLAG_M3264_PRI).
 AM_CFLAGS   = -Winline -Wall -Wshadow -g
+# MIPS Linux default start symbol is __start, not _start like on x86 or amd
+	-static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \
+	@FLAG_M32@
 # On Android we must ask for non-executable stack, not sure why.
+	$(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips32-linux.a
 	-Wl,--whole-archive \
+	-Wl,--whole-archive \
+	-Wl,--no-whole-archive
 # General stuff
 	pub/libvex_guest_ppc64.h \
 	pub/libvex_guest_arm.h \
 	pub/libvex_guest_s390x.h \
+	pub/libvex_guest_mips32.h \
 	pub/libvex_s390x_common.h \
 	pub/libvex_ir.h \
 	priv/guest_ppc_defs.h \
 	priv/guest_arm_defs.h \
 	priv/guest_s390_defs.h \
+	priv/guest_mips_defs.h \
 	priv/host_generic_regs.h \
 	priv/host_generic_simd64.h \
 	priv/host_generic_simd128.h \
 	priv/host_ppc_defs.h \
 	priv/host_arm_defs.h \
 	priv/host_s390_defs.h \
-	priv/host_s390_disasm.h
+	priv/host_s390_disasm.h \
+	priv/host_mips_defs.h
 BUILT_SOURCES = pub/libvex_guest_offsets.h
 CLEANFILES    = pub/libvex_guest_offsets.h
 			    pub/libvex_guest_ppc32.h \
 			    pub/libvex_guest_ppc64.h \
 			    pub/libvex_guest_arm.h \
-			    pub/libvex_guest_s390x.h
+			    pub/libvex_guest_s390x.h \
+			    pub/libvex_guest_mips32.h
 	rm -f auxprogs/genoffsets.s
 	$(CC) $(CFLAGS) \
 	      $(LIBVEX_CFLAGS) \
 				-O -S -o auxprogs/genoffsets.s \
-	grep xyzzy auxprogs/genoffsets.s | grep define \
+	grep xyzzy auxprogs/genoffsets.s | grep "^#define" \
 	   | sed "s/xyzzy\\$$//g" \
 	   | sed "s/xyzzy#//g" \
 	   | sed "s/xyzzy//g" \
 	priv/guest_arm_toIR.c \
 	priv/guest_s390_helpers.c \
 	priv/guest_s390_toIR.c \
+	priv/guest_mips_helpers.c \
+	priv/guest_mips_toIR.c \
 	priv/host_generic_regs.c \
 	priv/host_generic_simd64.c \
 	priv/host_generic_simd128.c \
 	priv/host_arm_isel.c \
 	priv/host_s390_defs.c \
 	priv/host_s390_isel.c \
-	priv/host_s390_disasm.c
+	priv/host_s390_disasm.c \
+	priv/host_mips_defs.c \
+	priv/host_mips_isel.c
 	-Wbad-function-cast \
+Release 3.8.0 (10 August 2012)
+3.8.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, MIPS/Linux, ARM/Android, X86/Android,
+X86/MacOSX 10.6/10.7 and AMD64/MacOSX 10.6/10.7.  Support for recent
+distros and toolchain components (glibc 2.16, gcc 4.7) has been added.
+There is initial support for MacOSX 10.8, but it is not usable for
+serious work at present.
+* ================== PLATFORM CHANGES =================
+* Support for MIPS32 platforms running Linux.  Valgrind has been
+  tested on MIPS32 and MIPS32r2 platforms running different Debian
+  Squeeze and MeeGo distributions.  Both little-endian and big-endian
+  cores are supported.  The tools Memcheck, Massif and Lackey have
+  been tested and are known to work. See README.mips for more details.
+* Preliminary support for Android running on x86.
+* Preliminary (as-yet largely unusable) support for MacOSX 10.8.
+* Support for Intel AVX instructions and for AES instructions.  This
+  support is available only for 64 bit code.
+* Support for POWER Decimal Floating Point instructions.
+* ==================== TOOL CHANGES ====================
+* Non-libc malloc implementations are now supported.  This is useful
+  for tools that replace malloc (Memcheck, Massif, DRD, Helgrind).
+  Using the new option --soname-synonyms, such tools can be informed
+  that the malloc implementation is either linked statically into the
+  executable, or is present in some other shared library different
+  from  This makes it possible to process statically linked
+  programs, and programs using other malloc libraries, for example
+  TCMalloc or JEMalloc.
+* For tools that provide their own replacement for malloc et al, the
+  option --redzone-size=<number> allows users to specify the size of
+  the padding blocks (redzones) added before and after each client
+  allocated block.  Smaller redzones decrease the memory needed by
+  Valgrind.  Bigger redzones increase the chance to detect blocks
+  overrun or underrun.  Prior to this change, the redzone size was
+  hardwired to 16 bytes in Memcheck.
+* Memcheck:
+  - The leak_check GDB server monitor command now can
+    control the maximum nr of loss records to output.
+  - Reduction of memory use for applications allocating
+    many blocks and/or having many partially defined bytes.
+  - Addition of GDB server monitor command 'block_list' that lists
+    the addresses/sizes of the blocks of a leak search loss record.
+  - Addition of GDB server monitor command 'who_points_at' that lists
+    the locations pointing at a block.
+  - If a redzone size > 0 is given, VALGRIND_MALLOCLIKE_BLOCK now will
+    detect an invalid access of these redzones, by marking them
+    noaccess.  Similarly, if a redzone size is given for a memory
+    pool, VALGRIND_MEMPOOL_ALLOC will mark the redzones no access.
+    This still allows to find some bugs if the user has forgotten to
+    mark the pool superblock noaccess.
+  - Performance of memory leak check has been improved, especially in
+    cases where there are many leaked blocks and/or many suppression
+    rules used to suppress leak reports.
+  - Reduced noise (false positive) level on MacOSX 10.6/10.7, due to
+    more precise analysis, which is important for LLVM/Clang
+    generated code.  This is at the cost of somewhat reduced
+    performance.  Note there is no change to analysis precision or
+    costs on Linux targets.
+* DRD:
+  - Added even more facilities that can help finding the cause of a data
+    race, namely the command-line option --ptrace-addr and the macro
+    DRD_STOP_TRACING_VAR(x). More information can be found in the manual.
+  - Fixed a subtle bug that could cause false positive data race reports.
+* ==================== OTHER CHANGES ====================
+* The C++ demangler has been updated so as to work well with C++ 
+  compiled by up to at least g++ 4.6.
+* Tool developers can make replacement/wrapping more flexible thanks
+  to the new option --soname-synonyms.  This was reported above, but
+  in fact is very general and applies to all function
+  replacement/wrapping, not just to malloc-family functions.
+* Round-robin scheduling of threads can be selected, using the new
+  option --fair-sched= yes.  Prior to this change, the pipe-based
+  thread serialisation mechanism (which is still the default) could
+  give very unfair scheduling.  --fair-sched=yes improves
+  responsiveness of interactive multithreaded applications, and
+  improves repeatability of results from the thread checkers Helgrind
+  and DRD.
+* For tool developers: support to run Valgrind on Valgrind has been
+  improved.  We can now routinely Valgrind on Helgrind or Memcheck.
+* gdbserver now shows the float shadow registers as integer
+  rather than float values, as the shadow values are mostly
+  used as bit patterns.
+* Increased limit for the --num-callers command line flag to 500.
+* Performance improvements for error matching when there are many
+  suppression records in use.
+* Improved support for DWARF4 debugging information (bug 284184).
+* Initial support for DWZ compressed Dwarf debug info.
+* Improved control over the IR optimiser's handling of the tradeoff
+  between performance and precision of exceptions.  Specifically,
+  --vex-iropt-precise-memory-exns has been removed and replaced by
+  --vex-iropt-register-updates, with extended functionality.  This
+  allows the Valgrind gdbserver to always show up to date register
+  values to GDB.
+* Modest performance gains through the use of translation chaining for
+  JIT-generated code.
+* ==================== 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 ( 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
+where XXXXXX is the bug number as listed below.
+197914  Building valgrind from svn now requires automake-1.10
+203877  increase to 16Mb maximum allowed alignment for memalign et al
+219156  Handle statically linked malloc or other malloc lib (e.g. tcmalloc) 
+247386  make perf does not run all performance tests
+270006  Valgrind scheduler unfair 
+270777  Adding MIPS/Linux port to Valgrind
+270796  s390x: Removed broken support for the TS insn
+271438  Fix configure for proper SSE4.2 detection
+273114  s390x: Support TR, TRE, TROO, TROT, TRTO, and TRTT instructions
+273475  Add support for AVX instructions
+274078  improved configure logic for mpicc
+276993  fix mremap 'no thrash checks' 
+278313  Fedora 15/x64: err read debug info with --read-var-info=yes flag
+281482  memcheck incorrect byte allocation count in realloc() for silly argument
+282230  group allocator for small fixed size, use it for MC_Chunk/SEc vbit
+283413  Fix wrong sanity check
+283671  Robustize alignment computation in LibVEX_Alloc
+283961  Adding support for some HCI IOCTLs
+284124  parse_type_DIE: confused by: DWARF 4
+284864  == 273475 (Add support for AVX instructions)
+285219  Too-restrictive constraints for Thumb2 "SP plus/minus register"
+285662  (MacOSX): Memcheck needs to replace memcpy/memmove
+285725  == 273475 (Add support for AVX instructions)
+286261  add wrapper for linux I2C_RDWR ioctl
+286270  vgpreload is not friendly to 64->32 bit execs, gives warnings
+286374  Running cachegrind with --branch-sim=yes on 64-bit PowerPC program fails
+286384  configure fails "checking for a supported version of gcc"
+286497  == 273475 (Add support for AVX instructions)
+286596  == 273475 (Add support for AVX instructions)
+286917  disInstr(arm): unhandled instruction: QADD (also QSUB)
+287175  ARM: scalar VFP fixed-point VCVT instructions not handled
+287260  Incorrect conditional jump or move depends on uninitialised value(s)
+287301  vex amd64->IR: 0x66 0xF 0x38 0x41 0xC0 0xB8 0x0 0x0 (PHMINPOSUW)
+287307  == 273475 (Add support for AVX instructions)
+287858  VG_(strerror): unknown error 
+288298  (MacOSX) unhandled syscall shm_unlink
+288995  == 273475 (Add support for AVX instructions)
+289470  Loading of large Mach-O thin binaries fails.
+289656  == 273475 (Add support for AVX instructions)
+289699  vgdb connection in relay mode erroneously closed due to buffer overrun 
+289823  ==  293754 (PCMPxSTRx not implemented for 16-bit characters)
+289839  s390x: Provide support for unicode conversion instructions
+289939  monitor cmd 'leak_check' with details about leaked or reachable blocks
+290006  memcheck doesn't mark %xmm as initialized after "pcmpeqw %xmm %xmm"
+290655  Add support for AESKEYGENASSIST instruction 
+290719  valgrind-3.7.0 fails with automake-1.11.2 due to"pkglibdir" usage
+290974  vgdb must align pages to VKI_SHMLBA (16KB) on ARM 
+291253  ES register not initialised in valgrind simulation
+291568  Fix 3DNOW-related crashes with baseline x86_64 CPU (w patch)
+291865  s390x: Support the "Compare Double and Swap" family of instructions
+292300  == 273475 (Add support for AVX instructions)
+292430  unrecognized instruction in __intel_get_new_mem_ops_cpuid
+292493  == 273475 (Add support for AVX instructions)
+292626  Missing fcntl F_SETOWN_EX and F_GETOWN_EX support
+292627  Missing support for some SCSI ioctls
+292628  none/tests/x86/bug125959-x86.c triggers undefined behavior
+292841  == 273475 (Add support for AVX instructions)
+292993  implement the getcpu syscall on amd64-linux
+292995  Implement the “cross memory attach” syscalls introduced in Linux 3.2
+293088  Add some VEX sanity checks for ppc64 unhandled instructions
+293751  == 290655 (Add support for AESKEYGENASSIST instruction)
+293754  PCMPxSTRx not implemented for 16-bit characters
+293755  == 293754 (No tests for PCMPxSTRx on 16-bit characters)
+293808  CLFLUSH not supported by latest VEX for amd64
+294047  valgrind does not correctly emulate prlimit64(..., RLIMIT_NOFILE, ...)
+294048  MPSADBW instruction not implemented
+294055  regtest none/tests/shell fails when locale is not set to C
+294185  INT 0x44 (and others) not supported on x86 guest, but used by Jikes RVM
+294190  --vgdb-error=xxx can be out of sync with errors shown to the user
+294191  amd64: fnsave/frstor and 0x66 size prefixes on FP instructions
+294260  disInstr_AMD64: disInstr miscalculated next %rip
+294523  --partial-loads-ok=yes causes false negatives
+294617  vex amd64->IR: 0x66 0xF 0x3A 0xDF 0xD1 0x1 0xE8 0x6A
+294736  vex amd64->IR: 0x48 0xF 0xD7 0xD6 0x48 0x83
+294812  patch allowing to run (on x86 at least) helgrind/drd on tool.
+295089  can not annotate source for both helgrind and drd
+295221  POWER Processor decimal floating point instruction support missing
+295427  building for i386 with clang on darwin11 requires "-new_linker linker"
+295428  coregrind/m_main.c has incorrect x86 assembly for darwin
+295590  Helgrind: Assertion 'cvi->nWaiters > 0' failed
+295617  ARM - Add some missing syscalls
+295799  Missing \n with get_vbits in gdbserver when line is % 80 [...]
+296229  Linux user input device ioctls missing wrappers
+296318  ELF Debug info improvements (more than one rx/rw mapping)
+296422  Add translation chaining support
+296457  vex amd64->IR: 0x66 0xF 0x3A 0xDF 0xD1 0x1 0xE8 0x6A (dup of AES)
+296792  valgrind 3.7.0: add SIOCSHWTSTAMP (0x89B0) ioctl wrapper
+296983  Fix build issues on x86_64/ppc64 without 32-bit toolchains
+297078  gdbserver signal handling problems [..]
+297147  drd false positives on newly allocated memory
+297329  disallow decoding of IBM Power DFP insns on some machines
+297497  POWER Processor decimal floating point instruction support missing
+297701  Another alias for strncasecmp_l in
+297911  'invalid write' not reported when using APIs for custom mem allocators.
+297976  s390x: revisit EX implementation
+297991  Valgrind interferes with mmap()+ftell() 
+297992  Support systems missing WIFCONTINUED (e.g. pre-2.6.10 Linux) 
+297993  Fix compilation of valgrind with gcc -g3.
+298080  POWER Processor DFP support missing, part 3
+298227  == 273475 (Add support for AVX instructions)
+298335  == 273475 (Add support for AVX instructions)
+298354  Unhandled ARM Thumb instruction 0xEB0D 0x0585 (streq)
+298394  s390x: Don't bail out on an unknown machine model.  [..]
+298421  accept4() syscall (366) support is missing for ARM
+298718  vex amd64->IR: 0xF 0xB1 0xCB 0x9C 0x8F 0x45
+298732  valgrind installation problem in ubuntu with kernel version 3.x
+298862  POWER Processor DFP instruction support missing, part 4
+298864  DWARF reader mis-parses DW_FORM_ref_addr
+298943  massif asserts with --pages-as-heap=yes when brk is changing [..]
+299053  Support DWARF4 DW_AT_high_pc constant form
+299104  == 273475 (Add support for AVX instructions)
+299316  Helgrind: hg_main.c:628 (map_threads_lookup): Assertion 'thr' failed.
+299629  dup3() syscall (358) support is missing for ARM
+299694  POWER Processor DFP instruction support missing, part 5
+299756  Ignore --free-fill for MEMPOOL_FREE and FREELIKE client requests
+299803  == 273475 (Add support for AVX instructions)
+299804  == 273475 (Add support for AVX instructions)
+299805  == 273475 (Add support for AVX instructions)
+300140  ARM - Missing (T1) SMMUL
+300195  == 296318 (ELF Debug info improvements (more than one rx/rw mapping))
+300389  Assertion `are_valid_hwcaps(VexArchAMD64, [..])' failed.
+300414  FCOM and FCOMP unimplemented for amd64 guest
+301204  infinite loop in canonicaliseSymtab with ifunc symbol
+301229  == 203877 (increase to 16Mb maximum allowed alignment for memalign etc)
+301265  add x86 support to Android build 
+301984  configure script doesn't detect certain versions of clang
+302205  Fix compiler warnings for POWER VEX code and POWER test cases
+302287  Unhandled movbe instruction on Atom processors
+302370  PPC: fnmadd, fnmsub, fnmadds, fnmsubs insns always negate the result
+302536  Fix for the POWER Valgrind regression test: memcheck-ISA2.0.
+302578  Unrecognized isntruction 0xc5 0x32 0xc2 0xca 0x09 vcmpngess
+302656  == 273475 (Add support for AVX instructions)
+302709  valgrind for ARM needs extra tls support for android emulator [..]
+302827  add wrapper for CDROM_GET_CAPABILITY
+302901  Valgrind crashes with dwz optimized debuginfo
+302918  Enable testing of the vmaddfp and vnsubfp instructions in the testsuite
+303116  Add support for the POWER instruction popcntb
+303127  Power test suite fixes for frsqrte, vrefp, and vrsqrtefp instructions.
+303250  Assertion `instrs_in->arr_used <= 10000' failed w/ OpenSSL code
+303466  == 273475 (Add support for AVX instructions)
+303624  segmentation fault on Android 4.1 (e.g. on Galaxy Nexus OMAP) 
+303963  strstr() function produces wrong results under valgrind callgrind
+304054  CALL_FN_xx macros need to enforce stack alignment
+304561  tee system call not supported
+715750  (MacOSX): Incorrect invalid-address errors near 0xFFFFxxxx (mozbug#)
+n-i-bz  Add missing gdbserver xml files for shadow registers for ppc32
+n-i-bz  Bypass gcc4.4/4.5 code gen bugs causing out of memory or asserts
+n-i-bz  Fix assert in gdbserver for watchpoints watching the same address
+n-i-bz  Fix false positive in sys_clone on amd64 when optional args [..]
+n-i-bz  s390x: Shadow registers can now be examined using vgdb
+(3.8.0-TEST3:  9 August 2012, vex r2465, valgrind r12865)
+(3.8.0:       10 August 2012, vex r2465, valgrind r12866)
 Release 3.7.0 (5 November 2011)
   (--join-list-vol); fixed a memory leak triggered by repeated client
   memory allocatation and deallocation; improved Darwin support.
-* exp-ptrcheck: this tool has been reduced in scope so as to improve
+* exp-ptrcheck: this tool has been renamed to exp-sgcheck
+* exp-sgcheck: this tool has been reduced in scope so as to improve
   performance and remove checking that Memcheck does better.
   Specifically, the ability to check for overruns for stack and global
   arrays is unchanged, but the ability to check for overruns of heap
 (3.4.0.RC1:  24 Dec 2008, vex r1878, valgrind r8882).
 (3.4.0:       3 Jan 2009, vex r1878, valgrind r8899).
-Release 3.3.1 (4 June 2008)
-3.3.1 fixes a bunch of bugs in 3.3.0, adds support for glibc-2.8 based
-systems (openSUSE 11, Fedora Core 9), improves the existing glibc-2.7
-support, and adds support for the SSSE3 (Core 2) instruction set.
-3.3.1 will likely be the last release that supports some very old
-systems.  In particular, the next major release, 3.4.0, will drop
-support for the old LinuxThreads threading library, and for gcc
-versions prior to 3.0.
-The fixed bugs are as follows.  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
-( rather than mailing the
-developers (or mailing lists) directly -- bugs that are not entered
-into bugzilla tend to get forgotten about or ignored.
-n-i-bz  Massif segfaults at exit
-n-i-bz  Memcheck asserts on Altivec code
-n-i-bz  fix sizeof bug in Helgrind
-n-i-bz  check fd on sys_llseek
-n-i-bz  update syscall lists to kernel
-n-i-bz  support sys_sync_file_range
-n-i-bz  handle sys_sysinfo, sys_getresuid, sys_getresgid on ppc64-linux
-n-i-bz  intercept memcpy in 64-bit's
-n-i-bz  Fix wrappers for sys_{futimesat,utimensat}
-n-i-bz  Minor false-error avoidance fixes for Memcheck
-n-i-bz  libmpiwrap.c: add a wrapper for MPI_Waitany
-n-i-bz  helgrind support for glibc-2.8
-n-i-bz  partial fix for mc_leakcheck.c:698 assert:
-        'lc_shadows[i]->data + lc_shadows[i] ...
-n-i-bz  Massif/Cachegrind output corruption when programs fork
-n-i-bz  register allocator fix: handle spill stores correctly
-n-i-bz  add support for PA6T PowerPC CPUs
-126389  vex x86->IR: 0xF 0xAE (FXRSTOR)
-158525  ==126389
-152818  vex x86->IR: 0xF3 0xAC (repz lodsb) 
-153196  vex x86->IR: 0xF2 0xA6 (repnz cmpsb) 
-155011  vex x86->IR: 0xCF (iret)
-155091  Warning [...] unhandled DW_OP_ opcode 0x23
-156960  ==155901
-155528  support Core2/SSSE3 insns on x86/amd64
-155929  ms_print fails on massif outputs containing long lines
-157665  valgrind fails on shmdt(0) after shmat to 0
-157748  support x86 PUSHFW/POPFW
-158212  helgrind: handle pthread_rwlock_try{rd,wr}lock.
-158425  sys_poll incorrectly emulated when RES==0
-158744  vex amd64->IR: 0xF0 0x41 0xF 0xC0 (xaddb)
-160907  Support for a couple of recent Linux syscalls
-161285  Patch -- support for eventfd() syscall
-161378  illegal opcode in debug libm (FUCOMPP)
-160136  ==161378
-161487  number of suppressions files is limited to 10
-162386  ms_print typo in milliseconds time unit for massif
-161036  exp-drd: client allocated memory was never freed
-162663  signalfd_wrapper fails on 64bit linux
-(3.3.1.RC1:  2 June 2008, vex r1854, valgrind r8169).
-(3.3.1:      4 June 2008, vex r1854, valgrind r8180).
-Release 3.3.0 (7 December 2007)
-3.3.0 is a feature release with many significant improvements and the
-usual collection of bug fixes.  This release supports X86/Linux,
-AMD64/Linux, PPC32/Linux and PPC64/Linux.  Support for recent distros
-(using gcc 4.3, glibc 2.6 and 2.7) has been added.
-The main excitement in 3.3.0 is new and improved tools.  Helgrind
-works again, Massif has been completely overhauled and much improved,
-Cachegrind now does branch-misprediction profiling, and a new category
-of experimental tools has been created, containing two new tools:
-Omega and DRD.  There are many other smaller improvements.  In detail:
-- Helgrind has been completely overhauled and works for the first time
-  since Valgrind 2.2.0.  Supported functionality is: detection of
-  misuses of the POSIX PThreads API, detection of potential deadlocks
-  resulting from cyclic lock dependencies, and detection of data
-  races.  Compared to the 2.2.0 Helgrind, the race detection algorithm
-  has some significant improvements aimed at reducing the false error
-  rate.  Handling of various kinds of corner cases has been improved.
-  Efforts have been made to make the error messages easier to
-  understand.  Extensive documentation is provided.
-- Massif has been completely overhauled.  Instead of measuring
-  space-time usage -- which wasn't always useful and many people found
-  confusing -- it now measures space usage at various points in the
-  execution, including the point of peak memory allocation.  Its
-  output format has also changed: instead of producing PostScript
-  graphs and HTML text, it produces a single text output (via the new
-  'ms_print' script) that contains both a graph and the old textual
-  information, but in a more compact and readable form.  Finally, the
-  new version should be more reliable than the old one, as it has been
-  tested more thoroughly.
-- Cachegrind has been extended to do branch-misprediction profiling.
-  Both conditional and indirect branches are profiled.  The default
-  behaviour of Cachegrind is unchanged.  To use the new functionality,
-  give the option --branch-sim=yes.
-- A new category of "experimental tools" has been created.  Such tools
-  may not work as well as the standard tools, but are included because
-  some people will find them useful, and because exposure to a wider
-  user group provides tool authors with more end-user feedback.  These
-  tools have a "exp-" prefix attached to their names to indicate their
-  experimental nature.  Currently there are two experimental tools:
-  * exp-Omega: an instantaneous leak detector.  See
-    exp-omega/docs/omega_introduction.txt.
-  * exp-DRD: a data race detector based on the happens-before
-    relation.  See exp-drd/docs/README.txt.
-- Scalability improvements for very large programs, particularly those
-  which have a million or more malloc'd blocks in use at once.  These
-  improvements mostly affect Memcheck.  Memcheck is also up to 10%
-  faster for all programs, with x86-linux seeing the largest
-  improvement.
-- Works well on the latest Linux distros.  Has been tested on Fedora
-  Core 8 (x86, amd64, ppc32, ppc64) and openSUSE 10.3.  glibc 2.6 and
-  2.7 are supported.  gcc-4.3 (in its current pre-release state) is
-  supported.  At the same time, 3.3.0 retains support for older
-  distros.
-- The documentation has been modestly reorganised with the aim of
-  making it easier to find information on common-usage scenarios.
-  Some advanced material has been moved into a new chapter in the main
-  manual, so as to unclutter the main flow, and other tidying up has
-  been done.
-- There is experimental support for AIX 5.3, both 32-bit and 64-bit
-  processes.  You need to be running a 64-bit kernel to use Valgrind
-  on a 64-bit executable.
-- There have been some changes to command line options, which may
-  affect you:
-  * --log-file-exactly and 
-    --log-file-qualifier options have been removed.
-    To make up for this --log-file option has been made more powerful.
-    It now accepts a %p format specifier, which is replaced with the
-    process ID, and a %q{FOO} format specifier, which is replaced with
-    the contents of the environment variable FOO.
-  * --child-silent-after-fork=yes|no [no]