1. Stanislav Sedov
  2. valgrind-freebsd


Stanislav Sedov  committed 06b7292 Merge

- Merge with 3.8.0 upstream.

  • Participants
  • Parent commits 782acd3, 80a3abd
  • Branches default

Comments (0)

Files changed (1108)


View file
 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.

File Makefile.all.am

View file
 # Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs.
 # For building the core, coregrind/Makefile.am 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.

File Makefile.am

View file
-AUTOMAKE_OPTIONS = foreign 1.7 dist-bzip2
+AUTOMAKE_OPTIONS = foreign 1.10 dist-bzip2
 include $(top_srcdir)/Makefile.all.am 
 		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.android \
+	README.mips \
+	NEWS.old \
 	valgrind.pc.in \
 	valgrind.spec.in \

File Makefile.tool-tests.am

View file
 		-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

File Makefile.tool.am

View file
+# 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

File Makefile.vex.am

View file
 	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 \


View file
+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 libc.so.  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 (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.
+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 ld.so 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 libc-2.13.so
+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)