-Release 3.6.0 (???)
+Release 3.7.0 (???)
~~~~~~~~~~~~~~~~~~~
-Improvements:
-- XXX: ARM support
-- XXX: Mac OS 10.6 support (32 and 64 bit)
-- XXX: Much faster startup on Mac OS 10.5 for 64-bit programs.
+- Added the --mod-funcname option to cg_diff.
+- Further reduction in overheads caused by --smc-check=all, especially
+ on 64-bit targets.
-- Valgrind runs much faster when the --smc-check=all option is given.
+* IBM z/Architecture (s390x) running Linux
+ Valgrind can analyse 64-bit programs running on z/Architecture.
+ Most user space instructions up to and including z10 are supported.
+ Valgrind has been tested extensively on z9, z10, and z196 machines
+ running SLES 10/11, RedHat 5/6m, and Fedora. The Memcheck and Massif
+ tools are known to work well. Callgrind, Helgrind, and DRD work
+ reasonably well on z9 and later models. See README.s390 for more
+ details.
-- Cachegrind has a new processing script, cg_diff, which finds the
- difference between two profiles. It's very useful for evaluating the
- performance effects of a change in a program.
+
+Release 3.6.1 (16 February 2011)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.6.1 is a bug fix release. It adds support for some SSE4
+instructions that were omitted in 3.6.0 due to lack of time. Initial
+support for glibc-2.13 has been added. A number of bugs causing
+crashing or assertion failures have been fixed.
+
+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 (http://bugs.kde.org/enter_valgrind_bug.cgi) 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.
+
+188572 Valgrind on Mac should suppress setenv() mem leak
+194402 vex amd64->IR: 0x48 0xF 0xAE 0x4 (proper FX{SAVE,RSTOR} support)
+210481 vex amd64->IR: Assertion `sz == 2 || sz == 4' failed (REX.W POPQ)
+246152 callgrind internal error after pthread_cancel on 32 Bit Linux
+250038 ppc64: Altivec LVSR and LVSL instructions fail their regtest
+254420 memory pool tracking broken
+254957 Test code failing to compile due to changes in memcheck.h
+255009 helgrind/drd: crash on chmod with invalid parameter
+255130 readdwarf3.c parse_type_DIE confused by GNAT Ada types
+255355 helgrind/drd: crash on threaded programs doing fork
+255358 == 255355
+255418 (SSE4.x) rint call compiled with ICC
+255822 --gen-suppressions can create invalid files: "too many callers [...]"
+255888 closing valgrindoutput tag outputted to log-stream on error
+255963 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0x9 0xDB 0x0 (ROUNDPD)
+255966 Slowness when using mempool annotations
+256387 vex x86->IR: 0xD4 0xA 0x2 0x7 (AAD and AAM)
+256600 super-optimized strcasecmp() false positive
+256669 vex amd64->IR: Unhandled LOOPNEL insn on amd64
+256968 (SSE4.x) vex amd64->IR: 0x66 0xF 0x38 0x10 0xD3 0x66 (BLENDVPx)
+257011 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0xE 0xFD 0xA0 (PBLENDW)
+257063 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0x8 0xC0 0x0 (ROUNDPS)
+257276 Missing case in memcheck --track-origins=yes
+258870 (SSE4.x) Add support for EXTRACTPS SSE 4.1 instruction
+261966 (SSE4.x) support for CRC32B and CRC32Q is lacking (also CRC32{W,L})
+262985 VEX regression in valgrind 3.6.0 in handling PowerPC VMX
+262995 (SSE4.x) crash when trying to valgrind gcc-snapshot (PCMPxSTRx $0)
+263099 callgrind_annotate counts Ir improperly [...]
+263877 undefined coprocessor instruction on ARMv7
+265964 configure FAIL with glibc-2.13
+n-i-bz Fix compile error w/ icc-12.x in guest_arm_toIR.c
+n-i-bz Docs: fix bogus descriptions for VALGRIND_CREATE_BLOCK et al
+n-i-bz Massif: don't assert on shmat() with --pages-as-heap=yes
+n-i-bz Bug fixes and major speedups for the exp-DHAT space profiler
+n-i-bz DRD: disable --free-is-write due to implementation difficulties
+
+(3.6.1: 16 February 2011, vex r2103, valgrind r11561).
+
+
+
+Release 3.6.0 (21 October 2010)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.6.0 is a feature release with many significant improvements and the
+usual collection of bug fixes.
+
+This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux,
+PPC64/Linux, X86/Darwin and AMD64/Darwin. Support for recent distros
+and toolchain components (glibc 2.12, gcc 4.5, OSX 10.6) has been added.
+
+ -------------------------
+
+Here are some highlights. Details are shown further down:
+
+* Support for ARM/Linux.
+
+* Support for recent Linux distros: Ubuntu 10.10 and Fedora 14.
+
+* Support for Mac OS X 10.6, both 32- and 64-bit executables.
+
+* Support for the SSE4.2 instruction set.
+
+* Enhancements to the Callgrind profiler, including the ability to
+ handle CPUs with three levels of cache.
+
+* A new experimental heap profiler, DHAT.
+
+* A huge number of bug fixes and small enhancements.
+
+ -------------------------
+
+Here are details of the above changes, together with descriptions of
+many other changes, and a list of fixed bugs.
+
+* ================== PLATFORM CHANGES =================
+
+* Support for ARM/Linux. Valgrind now runs on ARMv7 capable CPUs
+ running Linux. It is known to work on Ubuntu 10.04, Ubuntu 10.10,
+ and Maemo 5, so you can run Valgrind on your Nokia N900 if you want.
+
+ This requires a CPU capable of running the ARMv7-A instruction set
+ (Cortex A5, A8 and A9). Valgrind provides fairly complete coverage
+ of the user space instruction set, including ARM and Thumb integer
+ code, VFPv3, NEON and V6 media instructions. The Memcheck,
+ Cachegrind and Massif tools work properly; other tools work to
+ varying degrees.
+
+* Support for recent Linux distros (Ubuntu 10.10 and Fedora 14), along
+ with support for recent releases of the underlying toolchain
+ components, notably gcc-4.5 and glibc-2.12.
+
+* Support for Mac OS X 10.6, both 32- and 64-bit executables. 64-bit
+ support also works much better on OS X 10.5, and is as solid as
+ 32-bit support now.
+
+* Support for the SSE4.2 instruction set. SSE4.2 is supported in
+ 64-bit mode. In 32-bit mode, support is only available up to and
+ including SSSE3. Some exceptions: SSE4.2 AES instructions are not
+ supported in 64-bit mode, and 32-bit mode does in fact support the
+ bare minimum SSE4 instructions to needed to run programs on Mac OS X
+ 10.6 on 32-bit targets.
+
+* Support for IBM POWER6 cpus has been improved. The Power ISA up to
+ and including version 2.05 is supported.
+
+* ==================== TOOL CHANGES ====================
+
+* Cachegrind has a new processing script, cg_diff, which finds the
+ difference between two profiles. It's very useful for evaluating
+ the performance effects of a change in a program.
Related to this change, the meaning of cg_annotate's (rarely-used)
- --threshold option has changed; this is unlikely to affect many people, if
- you do use it please see the user manual for details.
-
-- Massif has a new option, --pages-as-heap, which is disabled by default.
- When enabled, instead of tracking allocations at the level of heap blocks
- (as allocated with malloc/new/new[]), it instead tracks memory allocations
- at the level of memory pages (as mapped by mmap, brk, etc). Each mapped
- page is treated as its own block. Interpreting the page-level output is
- harder than the heap-level output, but this option is useful if you want
- to account for every byte of memory used by a program.
-
-- Callgrind now can do branch prediction simulation, similar to Cachegrind.
- In addition, it optionally can count the number of executed global bus events.
- Both can be used for a better approximation of a "Cycle Estimation" as
- derived event (you need to update the event formula in KCachegrind yourself).
-
-- Added new memcheck command-line option --show-possibly-lost.
+ --threshold option has changed; this is unlikely to affect many
+ people, if you do use it please see the user manual for details.
+
+* Callgrind now can do branch prediction simulation, similar to
+ Cachegrind. In addition, it optionally can count the number of
+ executed global bus events. Both can be used for a better
+ approximation of a "Cycle Estimation" as derived event (you need to
+ update the event formula in KCachegrind yourself).
+
+* Cachegrind and Callgrind now refer to the LL (last-level) cache
+ rather than the L2 cache. This is to accommodate machines with
+ three levels of caches -- if Cachegrind/Callgrind auto-detects the
+ cache configuration of such a machine it will run the simulation as
+ if the L2 cache isn't present. This means the results are less
+ likely to match the true result for the machine, but
+ Cachegrind/Callgrind's results are already only approximate, and
+ should not be considered authoritative. The results are still
+ useful for giving a general idea about a program's locality.
+
+* Massif has a new option, --pages-as-heap, which is disabled by
+ default. When enabled, instead of tracking allocations at the level
+ of heap blocks (as allocated with malloc/new/new[]), it instead
+ tracks memory allocations at the level of memory pages (as mapped by
+ mmap, brk, etc). Each mapped page is treated as its own block.
+ Interpreting the page-level output is harder than the heap-level
+ output, but this option is useful if you want to account for every
+ byte of memory used by a program.
+
+* DRD has two new command-line options: --free-is-write and
+ --trace-alloc. The former allows to detect reading from already freed
+ memory, and the latter allows tracing of all memory allocations and
+ deallocations.
+
+* DRD has several new annotations. Custom barrier implementations can
+ now be annotated, as well as benign races on static variables.
+
+* DRD's happens before / happens after annotations have been made more
+ powerful, so that they can now also be used to annotate e.g. a smart
+ pointer implementation.
+
+* Helgrind's annotation set has also been drastically improved, so as
+ to provide to users a general set of annotations to describe locks,
+ semaphores, barriers and condition variables. Annotations to
+ describe thread-safe reference counted heap objects have also been
+ added.
+
+* Memcheck has a new command-line option, --show-possibly-lost, which
+ is enabled by default. When disabled, the leak detector will not
+ show possibly-lost blocks.
+
+* A new experimental heap profiler, DHAT (Dynamic Heap Analysis Tool),
+ has been added. DHAT keeps track of allocated heap blocks, and also
+ inspects every memory reference to see which block (if any) is being
+ accessed. This gives a lot of insight into block lifetimes,
+ utilisation, turnover, liveness, and the location of hot and cold
+ fields. You can use DHAT to do hot-field profiling.
+
+* ==================== OTHER CHANGES ====================
+
+* Improved support for unfriendly self-modifying code: the extra
+ overhead incurred by --smc-check=all has been reduced by
+ approximately a factor of 5 as compared with 3.5.0.
+
+* Ability to show directory names for source files in error messages.
+ This is combined with a flexible mechanism for specifying which
+ parts of the paths should be shown. This is enabled by the new flag
+ --fullpath-after.
+
+* A new flag, --require-text-symbol, which will stop the run if a
+ specified symbol is not found it a given shared object when it is
+ loaded into the process. This makes advanced working with function
+ intercepting and wrapping safer and more reliable.
+
+* Improved support for the Valkyrie GUI, version 2.0.0. GUI output
+ and control of Valgrind is now available for the tools Memcheck and
+ Helgrind. XML output from Valgrind is available for Memcheck,
+ Helgrind and exp-Ptrcheck.
+
+* More reliable stack unwinding on amd64-linux, particularly in the
+ presence of function wrappers, and with gcc-4.5 compiled code.
+
+* Modest scalability (performance improvements) for massive
+ long-running applications, particularly for those with huge amounts
+ of code.
+
+* Support for analyzing programs running under Wine with has been
+ improved. The header files <valgrind/valgrind.h>,
+ <valgrind/memcheck.h> and <valgrind/drd.h> can now be used in
+ Windows-programs compiled with MinGW or one of the Microsoft Visual
+ Studio compilers.
+
+* A rare but serious error in the 64-bit x86 CPU simulation was fixed.
+ The 32-bit simulator was not affected. This did not occur often,
+ but when it did would usually crash the program under test.
+ Bug 245925.
+
+* A large number of bugs were fixed. These are shown below.
+
+* A number of bugs were investigated, and were candidates for fixing,
+ but are not fixed in 3.6.0, due to lack of developer time. They may
+ get fixed in later releases. They are:
+
+ 194402 vex amd64->IR: 0x48 0xF 0xAE 0x4 0x24 0x49 (FXSAVE64)
+ 212419 false positive "lock order violated" (A+B vs A)
+ 213685 Undefined value propagates past dependency breaking instruction
+ 216837 Incorrect instrumentation of NSOperationQueue on Darwin
+ 237920 valgrind segfault on fork failure
+ 242137 support for code compiled by LLVM-2.8
+ 242423 Another unknown Intel cache config value
+ 243232 Inconsistent Lock Orderings report with trylock
+ 243483 ppc: callgrind triggers VEX assertion failure
+ 243935 Helgrind: implementation of ANNOTATE_HAPPENS_BEFORE() is wrong
+ 244677 Helgrind crash hg_main.c:616 (map_threads_lookup): Assertion
+ 'thr' failed.
+ 246152 callgrind internal error after pthread_cancel on 32 Bit Linux
+ 249435 Analyzing wine programs with callgrind triggers a crash
+ 250038 ppc64: Altivec lvsr and lvsl instructions fail their regtest
+ 250065 Handling large allocations
+ 250101 huge "free" memory usage due to m_mallocfree.c
+ "superblocks fragmentation"
+ 251569 vex amd64->IR: 0xF 0x1 0xF9 0x8B 0x4C 0x24 (RDTSCP)
+ 252091 Callgrind on ARM does not detect function returns correctly
+ 252600 [PATCH] Allow lhs to be a pointer for shl/shr
+ 254420 memory pool tracking broken
+ n-i-bz support for adding symbols for JIT generated code
+
+
+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 (http://bugs.kde.org/enter_valgrind_bug.cgi) 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.
+
+135264 dcbzl instruction missing
+142688 == 250799
+153699 Valgrind should report unaligned reads with movdqa
+180217 == 212335
+190429 Valgrind reports lost of errors in ld.so
+ with x86_64 2.9.90 glibc
+197266 valgrind appears to choke on the xmms instruction
+ "roundsd" on x86_64
+197988 Crash when demangling very large symbol names
+202315 unhandled syscall: 332 (inotify_init1)
+203256 Add page-level profiling to Massif
+205093 dsymutil=yes needs quotes, locking (partial fix)
+205241 Snow Leopard 10.6 support (partial fix)
+206600 Leak checker fails to upgrade indirect blocks when their
+ parent becomes reachable
+210935 port valgrind.h (not valgrind) to win32 so apps run under
+ wine can make client requests
+211410 vex amd64->IR: 0x15 0xFF 0xFF 0x0 0x0 0x89
+ within Linux ip-stack checksum functions
+212335 unhandled instruction bytes: 0xF3 0xF 0xBD 0xC0
+ (lzcnt %eax,%eax)
+213685 Undefined value propagates past dependency breaking instruction
+ (partial fix)
+215914 Valgrind inserts bogus empty environment variable
+217863 == 197988
+219538 adjtimex syscall wrapper wrong in readonly adjtime mode
+222545 shmat fails under valgind on some arm targets
+222560 ARM NEON support
+230407 == 202315
+231076 == 202315
+232509 Docs build fails with formatting inside <title></title> elements
+232793 == 202315
+235642 [PATCH] syswrap-linux.c: support evdev EVIOCG* ioctls
+236546 vex x86->IR: 0x66 0xF 0x3A 0xA
+237202 vex amd64->IR: 0xF3 0xF 0xB8 0xC0 0x49 0x3B
+237371 better support for VALGRIND_MALLOCLIKE_BLOCK
+237485 symlink (syscall 57) is not supported on Mac OS
+237723 sysno == 101 exp-ptrcheck: the 'impossible' happened:
+ unhandled syscall
+238208 is_just_below_ESP doesn't take into account red-zone
+238345 valgrind passes wrong $0 when executing a shell script
+238679 mq_timedreceive syscall doesn't flag the reception buffer
+ as "defined"
+238696 fcntl command F_DUPFD_CLOEXEC not supported
+238713 unhandled instruction bytes: 0x66 0xF 0x29 0xC6
+238713 unhandled instruction bytes: 0x66 0xF 0x29 0xC6
+238745 3.5.0 Make fails on PPC Altivec opcodes, though configure
+ says "Altivec off"
+239992 vex amd64->IR: 0x48 0xF 0xC4 0xC1 0x0 0x48
+240488 == 197988
+240639 == 212335
+241377 == 236546
+241903 == 202315
+241920 == 212335
+242606 unhandled syscall: setegid (in Ptrcheck)
+242814 Helgrind "Impossible has happened" during
+ QApplication::initInstance();
+243064 Valgrind attempting to read debug information from iso
+243270 Make stack unwinding in Valgrind wrappers more reliable
+243884 exp-ptrcheck: the 'impossible happened: unhandled syscall
+ sysno = 277 (mq_open)
+244009 exp-ptrcheck unknown syscalls in analyzing lighttpd
+244493 ARM VFP d16-d31 registers support
+244670 add support for audit_session_self syscall on Mac OS 10.6
+244921 The xml report of helgrind tool is not well format
+244923 In the xml report file, the <preamble> not escape the
+ xml char, eg '<','&','>'
+245535 print full path names in plain text reports
+245925 x86-64 red zone handling problem
+246258 Valgrind not catching integer underruns + new [] s
+246311 reg/reg cmpxchg doesn't work on amd64
+246549 unhandled syscall unix:277 while testing 32-bit Darwin app
+246888 Improve Makefile.vex.am
+247510 [OS X 10.6] Memcheck reports unaddressable bytes passed
+ to [f]chmod_extended
+247526 IBM POWER6 (ISA 2.05) support is incomplete
+247561 Some leak testcases fails due to reachable addresses in
+ caller save regs
+247875 sizeofIRType to handle Ity_I128
+247894 [PATCH] unhandled syscall sys_readahead
+247980 Doesn't honor CFLAGS passed to configure
+248373 darwin10.supp is empty in the trunk
+248822 Linux FIBMAP ioctl has int parameter instead of long
+248893 [PATCH] make readdwarf.c big endianess safe to enable
+ unwinding on big endian systems
+249224 Syscall 336 not supported (SYS_proc_info)
+249359 == 245535
+249775 Incorrect scheme for detecting NEON capabilities of host CPU
+249943 jni JVM init fails when using valgrind
+249991 Valgrind incorrectly declares AESKEYGENASSIST support
+ since VEX r2011
+249996 linux/arm: unhandled syscall: 181 (__NR_pwrite64)
+250799 frexp$fenv_access_off function generates SIGILL
+250998 vex x86->IR: unhandled instruction bytes: 0x66 0x66 0x66 0x2E
+251251 support pclmulqdq insn
+251362 valgrind: ARM: attach to debugger either fails or provokes
+ kernel oops
+251674 Unhandled syscall 294
+251818 == 254550
+
+254257 Add support for debugfiles found by build-id
+254550 [PATCH] Implement DW_ATE_UTF (DWARF4)
+254646 Wrapped functions cause stack misalignment on OS X
+ (and possibly Linux)
+254556 ARM: valgrinding anything fails with SIGSEGV for 0xFFFF0FA0
+
+(3.6.0: 21 October 2010, vex r2068, valgrind r11471).
+
Release 3.5.0 (19 August 2009)