You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
(5) |
2
(3) |
|
3
(2) |
4
(3) |
5
(16) |
6
(8) |
7
(6) |
8
(2) |
9
(4) |
|
10
(10) |
11
(22) |
12
(7) |
13
(10) |
14
(11) |
15
(8) |
16
(6) |
|
17
(11) |
18
|
19
(6) |
20
(8) |
21
(5) |
22
(11) |
23
(6) |
|
24
(1) |
25
(6) |
26
(4) |
27
(2) |
28
(1) |
29
|
30
(2) |
|
31
(5) |
|
|
|
|
|
|
|
From: Will S. <wil...@vn...> - 2015-05-05 22:26:48
|
A handful of patches intended to clean up the valgrind regtest results as seen on powerpc platforms. I've locally been running against Fedora20 and Fedora21 installations, on Power6, Power7, and Power8 (LE and BE) platforms. With these changes in place, the tests are significantly cleaned up. At a high level, there are several spots where some ifdiffery needed to be updated to handle ppc64LE versus BE, and some new .exp files to handle the output generated on ppc64*. Thanks, -Will |
|
From: <sv...@va...> - 2015-05-05 20:33:29
|
Author: florian
Date: Tue May 5 21:33:17 2015
New Revision: 15182
Log:
Merge from trunk.
Added:
branches/ASPACEM_TWEAKS/docs/internals/qemu-aarch64-linux-HOWTO.txt
- copied unchanged from r15181, trunk/docs/internals/qemu-aarch64-linux-HOWTO.txt
branches/ASPACEM_TWEAKS/docs/internals/qemu-mips64-linux-HOWTO.txt
- copied unchanged from r15181, trunk/docs/internals/qemu-mips64-linux-HOWTO.txt
Removed:
branches/ASPACEM_TWEAKS/docs/internals/aarch64-linux-on-qemu-HOWTO.txt
Modified:
branches/ASPACEM_TWEAKS/ (props changed)
branches/ASPACEM_TWEAKS/NEWS
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_coredump/coredump-elf.c
branches/ASPACEM_TWEAKS/coregrind/m_coredump/coredump-macho.c
branches/ASPACEM_TWEAKS/coregrind/m_debugger.c
branches/ASPACEM_TWEAKS/coregrind/m_debuginfo/debuginfo.c
branches/ASPACEM_TWEAKS/coregrind/m_errormgr.c
branches/ASPACEM_TWEAKS/coregrind/m_execontext.c
branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/m_gdbserver.c
branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/server.c
branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/server.h
branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-darwin.c
branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_libcassert.c
branches/ASPACEM_TWEAKS/coregrind/m_machine.c
branches/ASPACEM_TWEAKS/coregrind/m_main.c
branches/ASPACEM_TWEAKS/coregrind/m_mallocfree.c
branches/ASPACEM_TWEAKS/coregrind/m_scheduler/scheduler.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-amd64-darwin.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-amd64-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-arm-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-arm64-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-mips32-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-mips64-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-ppc32-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-ppc64-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-s390x-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-tilegx-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-x86-darwin.c
branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-x86-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_signals.c
branches/ASPACEM_TWEAKS/coregrind/m_stacktrace.c
branches/ASPACEM_TWEAKS/coregrind/m_syswrap/syswrap-generic.c
branches/ASPACEM_TWEAKS/coregrind/m_threadstate.c
branches/ASPACEM_TWEAKS/coregrind/m_translate.c
branches/ASPACEM_TWEAKS/coregrind/m_transtab.c
branches/ASPACEM_TWEAKS/coregrind/m_xarray.c
branches/ASPACEM_TWEAKS/darwin12.supp
branches/ASPACEM_TWEAKS/docs/Makefile.am
branches/ASPACEM_TWEAKS/drd/tests/Makefile.am
branches/ASPACEM_TWEAKS/exp-bbv/tests/Makefile.am
branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/complex_rep.vgtest
branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/fldcw_check.vgtest
branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/million.vgtest
branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/rep_prefix.vgtest
branches/ASPACEM_TWEAKS/helgrind/hg_main.c
branches/ASPACEM_TWEAKS/helgrind/libhb_core.c
branches/ASPACEM_TWEAKS/include/pub_tool_xarray.h
branches/ASPACEM_TWEAKS/memcheck/mc_translate.c
branches/ASPACEM_TWEAKS/none/tests/libvex_test.c
branches/ASPACEM_TWEAKS/perf/memrw.c
Modified: branches/ASPACEM_TWEAKS/NEWS
==============================================================================
--- branches/ASPACEM_TWEAKS/NEWS (original)
+++ branches/ASPACEM_TWEAKS/NEWS Tue May 5 21:33:17 2015
@@ -157,6 +157,7 @@
345394 Fix memcheck/tests/strchr on OS X
345637 Fix memcheck/tests/sendmsg on OS X
345695 Add POWERPC support for AT_DCACHESIZE and HWCAP2
+345824 Fix aspacem segment mismatch: seen with none/tests/bigcode
345887 Fix an assertion in the address space manager
346267 Compiler warnings for PPC64 code on call to LibVEX_GuestPPC64_get_XER()
and LibVEX_GuestPPC64_get_CR()
@@ -168,6 +169,7 @@
346474 PPC64 Power 8, spr TEXASRU register not supported
346487 Compiler generates "note" about a future ABI change for PPC64
346801 Fix link error on OS X: _vgModuleLocal_sf_maybe_extend_stack
+347151 Fix suppression for pthread_rwlock_init on OS X 10.8
n-i-bz Provide implementations of certain compiler builtins to support
compilers who may not provide those
n-i-bz Old STABS code is still being compiled, but never used. Remove it.
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c Tue May 5 21:33:17 2015
@@ -815,8 +815,9 @@
# endif
/* Some kernels on s390 provide 'r' permission even when it was not
- explicitly requested. It seems that 'x' permission implies 'r'. */
-# if defined(VGA_s390x)
+ explicitly requested. It seems that 'x' permission implies 'r'.
+ This behaviour also occurs on OS X. */
+# if defined(VGA_s390x) || defined(VGO_darwin)
sloppyRcheck = True;
# else
sloppyRcheck = False;
Modified: branches/ASPACEM_TWEAKS/coregrind/m_coredump/coredump-elf.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_coredump/coredump-elf.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_coredump/coredump-elf.c Tue May 5 21:33:17 2015
@@ -42,7 +42,6 @@
#include "pub_core_libcproc.h" // VG_(geteuid), VG_(getegid)
#include "pub_core_libcassert.h" // VG_(exit), vg_assert
#include "pub_core_mallocfree.h" // VG_(malloc), VG_(free)
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_xarray.h"
#include "pub_core_clientstate.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_coredump/coredump-macho.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_coredump/coredump-macho.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_coredump/coredump-macho.c Tue May 5 21:33:17 2015
@@ -33,7 +33,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_coredump.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
void VG_(make_coredump)(ThreadId tid, const vki_siginfo_t *si, ULong max_size)
Modified: branches/ASPACEM_TWEAKS/coregrind/m_debugger.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_debugger.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_debugger.c Tue May 5 21:33:17 2015
@@ -30,7 +30,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h"
#include "pub_core_threadstate.h"
#include "pub_core_xarray.h"
#include "pub_core_clientstate.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_debuginfo/debuginfo.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_debuginfo/debuginfo.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_debuginfo/debuginfo.c Tue May 5 21:33:17 2015
@@ -32,7 +32,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_debuginfo.h" /* self */
#include "pub_core_demangle.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_errormgr.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_errormgr.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_errormgr.c Tue May 5 21:33:17 2015
@@ -30,7 +30,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h"
#include "pub_core_threadstate.h" // For VG_N_THREADS
#include "pub_core_debugger.h"
#include "pub_core_debuginfo.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_execontext.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_execontext.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_execontext.c Tue May 5 21:33:17 2015
@@ -36,8 +36,6 @@
#include "pub_core_options.h"
#include "pub_core_stacktrace.h"
#include "pub_core_machine.h" // VG_(get_IP)
-#include "pub_core_vki.h" // To keep pub_core_threadstate.h happy
-#include "pub_core_libcsetjmp.h" // Ditto
#include "pub_core_threadstate.h" // VG_(is_valid_tid)
#include "pub_core_execontext.h" // self
Modified: branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/m_gdbserver.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/m_gdbserver.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/m_gdbserver.c Tue May 5 21:33:17 2015
@@ -33,12 +33,9 @@
#include "pub_core_libcproc.h"
#include "pub_core_libcprint.h"
#include "pub_core_mallocfree.h"
-#include "pub_core_libcsetjmp.h"
#include "pub_core_threadstate.h"
#include "pub_core_gdbserver.h"
#include "pub_core_options.h"
-#include "pub_core_libcsetjmp.h"
-#include "pub_core_threadstate.h"
#include "pub_core_transtab.h"
#include "pub_core_hashtable.h"
#include "pub_core_xarray.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/server.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/server.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/server.c Tue May 5 21:33:17 2015
@@ -157,7 +157,9 @@
VG_(message)(Vg_DebugMsg,
"------ Valgrind's internal memory use stats follow ------\n" );
VG_(sanity_check_malloc_all)();
- VG_(message)(Vg_DebugMsg, "------\n" );
+ VG_(message)(Vg_DebugMsg,
+ "------ %llu bytes have already been mmap-ed ANONYMOUS.\n",
+ VG_(am_get_anonsize_total)());
VG_(print_all_arena_stats)();
if (VG_(clo_profile_heap))
VG_(print_arena_cc_analysis) ();
@@ -384,7 +386,7 @@
VG_(gdbserver_status_output)();
break;
case 4: /* memory */
- VG_(printf) ("%llu bytes have already been allocated.\n",
+ VG_(printf) ("%llu bytes have already been mmap-ed ANONYMOUS.\n",
VG_(am_get_anonsize_total)());
VG_(print_all_arena_stats) ();
if (VG_(clo_profile_heap))
Modified: branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/server.h
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/server.h (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/server.h Tue May 5 21:33:17 2015
@@ -40,7 +40,6 @@
#include "pub_core_libcassert.h"
#include "pub_core_libcbase.h"
#include "pub_core_options.h"
-#include "pub_core_libcsetjmp.h"
#include "pub_core_threadstate.h"
#include "pub_core_gdbserver.h"
#include "pub_core_vki.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-darwin.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-darwin.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-darwin.c Tue May 5 21:33:17 2015
@@ -47,7 +47,6 @@
#include "pub_core_ume.h"
#include "pub_core_options.h"
#include "pub_core_tooliface.h" /* VG_TRACK */
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h" /* ThreadArchState */
#include "priv_initimg_pathscan.h"
#include "pub_core_initimg.h" /* self */
Modified: branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c Tue May 5 21:33:17 2015
@@ -50,7 +50,6 @@
#include "pub_core_syscall.h"
#include "pub_core_signals.h" /* VG_(extend_stack) */
#include "pub_core_tooliface.h" /* VG_TRACK */
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h" /* ThreadArchState */
#include "priv_initimg_pathscan.h"
#include "pub_core_initimg.h" /* self */
Modified: branches/ASPACEM_TWEAKS/coregrind/m_libcassert.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_libcassert.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_libcassert.c Tue May 5 21:33:17 2015
@@ -31,7 +31,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_gdbserver.h"
#include "pub_core_aspacemgr.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_machine.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_machine.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_machine.c Tue May 5 21:33:17 2015
@@ -29,7 +29,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // setjmp facilities
#include "pub_core_threadstate.h"
#include "pub_core_libcassert.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_main.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_main.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_main.c Tue May 5 21:33:17 2015
@@ -31,7 +31,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_xarray.h"
#include "pub_core_clientstate.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_mallocfree.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_mallocfree.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_mallocfree.c Tue May 5 21:33:17 2015
@@ -38,7 +38,6 @@
#include "pub_core_libcprint.h"
#include "pub_core_mallocfree.h"
#include "pub_core_options.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h" // For VG_INVALID_THREADID
#include "pub_core_gdbserver.h"
#include "pub_core_transtab.h"
@@ -759,7 +758,7 @@
"\n"
" Valgrind's memory management: out of memory:\n"
" %s's request for %llu bytes failed.\n"
- " %llu bytes have already been allocated.\n"
+ " %llu bytes have already been mmap-ed ANONYMOUS.\n"
" Valgrind cannot continue. Sorry.\n\n"
" There are several possible reasons for this.\n"
" - You have some kind of memory limit in place. Look at the\n"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_scheduler/scheduler.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_scheduler/scheduler.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_scheduler/scheduler.c Tue May 5 21:33:17 2015
@@ -62,7 +62,6 @@
#include "pub_core_debuglog.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h" // __NR_sched_yield
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_clientstate.h"
#include "pub_core_aspacemgr.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-amd64-darwin.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-amd64-darwin.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-amd64-darwin.c Tue May 5 21:33:17 2015
@@ -34,7 +34,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-amd64-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-amd64-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-amd64-linux.c Tue May 5 21:33:17 2015
@@ -33,7 +33,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-arm-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-arm-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-arm-linux.c Tue May 5 21:33:17 2015
@@ -38,7 +38,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-arm64-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-arm64-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-arm64-linux.c Tue May 5 21:33:17 2015
@@ -33,7 +33,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-mips32-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-mips32-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-mips32-linux.c Tue May 5 21:33:17 2015
@@ -34,7 +34,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-mips64-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-mips64-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-mips64-linux.c Tue May 5 21:33:17 2015
@@ -34,7 +34,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" /* to keep _threadstate.h happy */
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-ppc32-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-ppc32-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-ppc32-linux.c Tue May 5 21:33:17 2015
@@ -36,7 +36,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-ppc64-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-ppc64-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-ppc64-linux.c Tue May 5 21:33:17 2015
@@ -36,7 +36,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-s390x-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-s390x-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-s390x-linux.c Tue May 5 21:33:17 2015
@@ -33,7 +33,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-tilegx-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-tilegx-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-tilegx-linux.c Tue May 5 21:33:17 2015
@@ -35,7 +35,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-x86-darwin.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-x86-darwin.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-x86-darwin.c Tue May 5 21:33:17 2015
@@ -34,7 +34,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-x86-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-x86-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_sigframe/sigframe-x86-linux.c Tue May 5 21:33:17 2015
@@ -33,7 +33,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h" /* find_segment */
#include "pub_core_libcbase.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_signals.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_signals.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_signals.c Tue May 5 21:33:17 2015
@@ -203,7 +203,6 @@
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
#include "pub_core_debuglog.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_xarray.h"
#include "pub_core_clientstate.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_stacktrace.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_stacktrace.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_stacktrace.c Tue May 5 21:33:17 2015
@@ -30,7 +30,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_debuginfo.h" // XXX: circular dependency
#include "pub_core_aspacemgr.h" // For VG_(is_addressable)()
Modified: branches/ASPACEM_TWEAKS/coregrind/m_syswrap/syswrap-generic.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_syswrap/syswrap-generic.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_syswrap/syswrap-generic.c Tue May 5 21:33:17 2015
@@ -1220,10 +1220,7 @@
and that segment is writable. */
NSegment const * seg2;
- if (VG_(brk_limit) > VG_(brk_base))
- seg2 = VG_(am_find_nsegment)( VG_(brk_limit)-1 );
- else
- seg2 = VG_(am_find_nsegment)( VG_(brk_limit) );
+ seg2 = VG_(am_find_nsegment)( VG_(brk_limit) - 1 );
vg_assert(seg2);
if (seg == seg2 && seg->hasW)
Modified: branches/ASPACEM_TWEAKS/coregrind/m_threadstate.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_threadstate.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_threadstate.c Tue May 5 21:33:17 2015
@@ -30,7 +30,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_mallocfree.h" // VG_(malloc)
#include "pub_core_libcassert.h"
Modified: branches/ASPACEM_TWEAKS/coregrind/m_translate.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_translate.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_translate.c Tue May 5 21:33:17 2015
@@ -53,7 +53,6 @@
#include "pub_core_dispatch.h" // VG_(run_innerloop__dispatch_{un}profiled)
// VG_(run_a_noredir_translation__return_point)
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h" // VexGuestArchState
#include "pub_core_trampoline.h" // VG_(ppctoc_magic_redirect_return_stub)
Modified: branches/ASPACEM_TWEAKS/coregrind/m_transtab.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_transtab.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_transtab.c Tue May 5 21:33:17 2015
@@ -569,6 +569,7 @@
XArray *var = VG_(newXA)(ttaux_malloc, "transtab.IEA__add",
ttaux_free,
sizeof(InEdge));
+ VG_(hintSizeXA) (var, iea->n_fixed + 1);
UWord i;
for (i = 0; i < iea->n_fixed; i++) {
VG_(addToXA)(var, &iea->edges.fixed[i]);
@@ -649,6 +650,7 @@
XArray *var = VG_(newXA)(ttaux_malloc, "transtab.OEA__add",
ttaux_free,
sizeof(OutEdge));
+ VG_(hintSizeXA) (var, oea->n_fixed+1);
UWord i;
for (i = 0; i < oea->n_fixed; i++) {
VG_(addToXA)(var, &oea->edges.fixed[i]);
Modified: branches/ASPACEM_TWEAKS/coregrind/m_xarray.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_xarray.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_xarray.c Tue May 5 21:33:17 2015
@@ -133,6 +133,24 @@
return ((char*)xa->arr) + n * xa->elemSzB;
}
+void VG_(hintSizeXA) ( XArray* xa, Word n)
+{
+ /* Currently, we support giving a size hint only just after the
+ call to VG_(newXA). So, we could instead have done
+ a function VG_(newXA_with_SizeHint). The separate VG_(hintSizeXA)
+ function is however chosen as we might one day accept to
+ give a size hint after having added elements. That could be useful
+ for reducing the size of an xarray to just the size currently needed
+ or to give a size hint when it is known that a lot more elements
+ are needed or when the final nr of elements is known. */
+ vg_assert(xa);
+ vg_assert(xa->usedsizeE == 0);
+ vg_assert(xa->totsizeE == 0);
+ vg_assert(!xa->arr);
+ xa->arr = xa->alloc_fn(xa->cc, n * xa->elemSzB);
+ xa->totsizeE = n;
+}
+
static inline void ensureSpaceXA ( XArray* xa )
{
if (xa->usedsizeE == xa->totsizeE) {
Modified: branches/ASPACEM_TWEAKS/darwin12.supp
==============================================================================
--- branches/ASPACEM_TWEAKS/darwin12.supp (original)
+++ branches/ASPACEM_TWEAKS/darwin12.supp Tue May 5 21:33:17 2015
@@ -237,6 +237,13 @@
fun:*ImageLoaderMachO*doModInitFunctions*
}
+# See https://bugs.kde.org/show_bug.cgi?id=196528
+{
+ macos-__pthread_rwlock_init-see-our-bug-196528
+ Memcheck:Cond
+ fun:pthread_rwlock_init
+}
+
#########################################################
## Leaks (apparently) in even hello-world style programs
Modified: branches/ASPACEM_TWEAKS/docs/Makefile.am
==============================================================================
--- branches/ASPACEM_TWEAKS/docs/Makefile.am (original)
+++ branches/ASPACEM_TWEAKS/docs/Makefile.am Tue May 5 21:33:17 2015
@@ -30,7 +30,6 @@
internals/3_9_BUGSTATUS.txt \
internals/3_10_BUGSTATUS.txt \
internals/MERGE_3_10_1.txt \
- internals/aarch64-linux-on-qemu-HOWTO.txt
internals/arm_thumb_notes_gdbserver.txt \
internals/avx-notes.txt \
internals/BIG_APP_NOTES.txt \
@@ -48,6 +47,8 @@
internals/porting-HOWTO.txt \
internals/mpi2entries.txt \
internals/porting-to-ARM.txt \
+ internals/qemu-aarch64-linux-HOWTO.txt \
+ internals/qemu-mips64-linux-HOWTO.txt \
internals/register-uses.txt \
internals/release-HOWTO.txt \
internals/segments-seginfos.txt \
Removed: branches/ASPACEM_TWEAKS/docs/internals/aarch64-linux-on-qemu-HOWTO.txt
==============================================================================
--- branches/ASPACEM_TWEAKS/docs/internals/aarch64-linux-on-qemu-HOWTO.txt (original)
+++ branches/ASPACEM_TWEAKS/docs/internals/aarch64-linux-on-qemu-HOWTO.txt (removed)
@@ -1,102 +0,0 @@
-
-How to install and configure a QEMU aarch64-linux installation.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Last updated 30 April 2015
-
-This gives a fairly usable, and not entirely slow, arm64-linux
-install. It has the advantage that the idle loop works right and so
-when the guest becomes idle, qemu uses only very little host cpu, so
-you can leave the guest idling for long periods without bad
-performance effects on the host.
-
-More or less following
-https://gmplib.org/~tege/qemu.html, section 14 (for arm64)
-
-Build qemu-2.2.1 with --target-list including aarch64-softmmu
-
-mkdir Arm64-2
-cd Arm64-2
-
-wget http://d-i.debian.org/daily-images/arm64/daily/netboot/debian-installer/arm64/linux
-
-wget http://d-i.debian.org/daily-images/arm64/daily/netboot/debian-installer/arm64/initrd.gz
-
-# Note. 6G is easily enough to install debian and do a build of Valgrind.
-# If you envisage needing more space, now is the time to choose a larger
-# number.
-
-/path/to/Qemu221/bin/qemu-img create disk6G.img 6G
-
-/path/to/Qemu221/bin/qemu-system-aarch64 \
- -M virt -cpu cortex-a57 -m 256 \
- -drive file=disk6G.img,if=none,id=blk -device virtio-blk-device,drive=blk \
- -net user,hostfwd=tcp::5555-:22 -device virtio-net-device,vlan=0 \
- -kernel linux \
- -initrd initrd.gz \
- -append "console=ttyAMA0 --" \
- -nographic
-
-Do an install, be as vanilla as possible, allow it to create a user
-"username", and do not ask it to install any extra software. But,
-when you get to here
-
- ââââââââââââââââââââ⤠[!!] Finish the installation ââââââââââââââââââââââ
- â â
- ââ Installation complete â
- ââ Installation is complete, so it is time to boot into your new system. â
- ââ Make sure to remove the installation media (CD-ROM, floppies), so â
- ââ that you boot into the new system rather than restarting the â
- ââ installation. â
- ââ â
- ââ <Go Back> <Continue> â
- â â
- âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
-
-do "Go Back"
-then in the next menu "Execute a shell", "Continue"
-
-This gives you a root shell in the new VM. In that shell:
-
- mount -t proc proc /target/proc
- mount --rbind /sys /target/sys
- mount --rbind /dev /target/dev
- chroot /target bash
- /etc/init.d/ssh start
- mv /boot/initrd.img-3.16.0-4-arm64 /boot/initrd.img-3.16.0-4-arm64
- echo virtio-mmio >>/etc/initramfs-tools/modules
- /usr/sbin/update-initramfs -c -k 3.16.0-4-arm64
-
-Then on the host, copy out the files that the above created.
-
-cd Arm64-2
-ssh -p 5555 username@localhost \
- "tar -c -f - --exclude=lost+found /boot" | tar xf -
-
-Now back in the VM, we can finish the installation.
-
- exit
- exit
- Select "Finish the installation"
- Continue
-
-When it reboots, kill qemu from another shell, else it will try to reinstall.
-
-Now start the installation:
-
-/path/to/Qemu221/bin/qemu-system-aarch64 -M virt \
- -cpu cortex-a57 -m 1024 -drive file=disk6G.img,if=none,id=blk \
- -device virtio-blk-device,drive=blk -net user,hostfwd=tcp::5555-:22 \
- -device virtio-net-device,vlan=0 -kernel boot/vmlinuz-3.16.0-4-arm64 \
- -initrd boot/initrd.img-3.16.0-4-arm64 \
- -append "root=/dev/vda2 rw console=ttyAMA0 --" -nographic
-
-Now you can ssh into the VM and install stuff as usual:
-
-ssh -XC -p 5555 username@localhost
-
- (on the guest)
- become root
- apt-get install make gcc g++ automake autoconf emacs subversion gdb
-
-Hack on, etc.
Modified: branches/ASPACEM_TWEAKS/drd/tests/Makefile.am
==============================================================================
--- branches/ASPACEM_TWEAKS/drd/tests/Makefile.am (original)
+++ branches/ASPACEM_TWEAKS/drd/tests/Makefile.am Tue May 5 21:33:17 2015
@@ -373,7 +373,6 @@
sem_as_mutex \
sem_open \
sigalrm \
- thread_name \
threaded-fork \
trylock \
unit_bitmap \
@@ -417,7 +416,7 @@
if HAVE_PTHREAD_BARRIER
check_PROGRAMS += matinv pth_barrier pth_barrier_race pth_barrier_reinit \
- pth_barrier_thr_cr
+ pth_barrier_thr_cr thread_name
endif
if HAVE_PTHREAD_CREATE_GLIBC_2_0
Modified: branches/ASPACEM_TWEAKS/exp-bbv/tests/Makefile.am
==============================================================================
--- branches/ASPACEM_TWEAKS/exp-bbv/tests/Makefile.am (original)
+++ branches/ASPACEM_TWEAKS/exp-bbv/tests/Makefile.am Tue May 5 21:33:17 2015
@@ -5,8 +5,10 @@
# Platform-specific tests
if VGCONF_ARCHS_INCLUDE_X86
+if !VGCONF_OS_IS_DARWIN
SUBDIRS += x86
endif
+endif
if VGCONF_PLATFORMS_INCLUDE_X86_LINUX
SUBDIRS += x86-linux
endif
Modified: branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/complex_rep.vgtest
==============================================================================
--- branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/complex_rep.vgtest (original)
+++ branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/complex_rep.vgtest Tue May 5 21:33:17 2015
@@ -1,3 +1,4 @@
+prereq: test -e complex_rep
prog: complex_rep
vgopts: --interval-size=100000 --bb-out-file=complex_rep.out.bb
cleanup: rm complex_rep.out.bb
Modified: branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/fldcw_check.vgtest
==============================================================================
--- branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/fldcw_check.vgtest (original)
+++ branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/fldcw_check.vgtest Tue May 5 21:33:17 2015
@@ -1,3 +1,4 @@
+prereq: test -e fldcw_check
prog: fldcw_check
vgopts: --interval-size=10000 --bb-out-file=fldcw_check.out.bb
cleanup: rm fldcw_check.out.bb
Modified: branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/million.vgtest
==============================================================================
--- branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/million.vgtest (original)
+++ branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/million.vgtest Tue May 5 21:33:17 2015
@@ -1,4 +1,5 @@
-prog: million
+prereq: test -e million
+prog: million
vgopts: --interval-size=100000 --bb-out-file=million.out.bb --pc-out-file=million.out.pc
post: cat million.out.bb
cleanup: rm million.out.bb million.out.pc
Modified: branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/rep_prefix.vgtest
==============================================================================
--- branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/rep_prefix.vgtest (original)
+++ branches/ASPACEM_TWEAKS/exp-bbv/tests/x86/rep_prefix.vgtest Tue May 5 21:33:17 2015
@@ -1,3 +1,4 @@
+prereq: test -e rep_prefix
prog: rep_prefix
vgopts: --interval-size=100000 --bb-out-file=rep_prefix.out.bb
cleanup: rm rep_prefix.out.bb
Modified: branches/ASPACEM_TWEAKS/helgrind/hg_main.c
==============================================================================
--- branches/ASPACEM_TWEAKS/helgrind/hg_main.c (original)
+++ branches/ASPACEM_TWEAKS/helgrind/hg_main.c Tue May 5 21:33:17 2015
@@ -3420,11 +3420,6 @@
* sizeof(Bool) );
// univ_laog_seen[*] set to 0 (False) by zalloc.
- if (VG_(clo_stats))
- VG_(message)(Vg_DebugMsg,
- "univ_laog_do_GC enter cardinality %'10d\n",
- (Int)univ_laog_cardinality);
-
VG_(initIterFM)( laog );
links = NULL;
while (VG_(nextIterFM)( laog, NULL, (UWord*)&links )) {
@@ -3482,8 +3477,8 @@
if (VG_(clo_stats))
VG_(message)
(Vg_DebugMsg,
- "univ_laog_do_GC exit seen %'8d next gc at cardinality %'10d\n",
- (Int)seen, next_gc_univ_laog);
+ "univ_laog_do_GC cardinality entered %d exit %d next gc at %d\n",
+ (Int)univ_laog_cardinality, (Int)seen, next_gc_univ_laog);
}
Modified: branches/ASPACEM_TWEAKS/helgrind/libhb_core.c
==============================================================================
--- branches/ASPACEM_TWEAKS/helgrind/libhb_core.c (original)
+++ branches/ASPACEM_TWEAKS/helgrind/libhb_core.c Tue May 5 21:33:17 2015
@@ -2541,19 +2541,23 @@
If .vts == NULL, then this entry is not in use, so:
- .rc == 0
- this entry is on the freelist (unfortunately, does not imply
- any constraints on value for .freelink)
+ any constraints on value for u.freelink)
If .vts != NULL, then this entry is in use:
- .vts is findable in vts_set
- .vts->id == this entry number
- no specific value for .rc (even 0 is OK)
- - this entry is not on freelist, so .freelink == VtsID_INVALID
+ - this entry is not on freelist, so u.freelink == VtsID_INVALID
*/
typedef
struct {
VTS* vts; /* vts, in vts_set */
UWord rc; /* reference count - enough for entire aspace */
- VtsID freelink; /* chain for free entries, VtsID_INVALID at end */
- VtsID remap; /* used only during pruning */
+ union {
+ VtsID freelink; /* chain for free entries, VtsID_INVALID at end */
+ VtsID remap; /* used only during pruning, for used entries */
+ } u;
+ /* u.freelink only used when vts == NULL,
+ u.remap only used when vts != NULL, during pruning. */
}
VtsTE;
@@ -2583,8 +2587,8 @@
VtsTE* ie = VG_(indexXA)( vts_tab, ii );
tl_assert(ie->vts == NULL);
tl_assert(ie->rc == 0);
- tl_assert(ie->freelink == VtsID_INVALID);
- ie->freelink = vts_tab_freelist;
+ tl_assert(ie->u.freelink == VtsID_INVALID);
+ ie->u.freelink = vts_tab_freelist;
vts_tab_freelist = ii;
}
@@ -2600,7 +2604,7 @@
ie = VG_(indexXA)( vts_tab, ii );
tl_assert(ie->vts == NULL);
tl_assert(ie->rc == 0);
- vts_tab_freelist = ie->freelink;
+ vts_tab_freelist = ie->u.freelink;
return ii;
}
@@ -2615,8 +2619,7 @@
return ii;
te.vts = NULL;
te.rc = 0;
- te.freelink = VtsID_INVALID;
- te.remap = VtsID_INVALID;
+ te.u.freelink = VtsID_INVALID;
ii = (VtsID)VG_(addToXA)( vts_tab, &te );
return ii;
}
@@ -2669,7 +2672,7 @@
VtsTE* ie = VG_(indexXA)( vts_tab, ii );
ie->vts = in_tab;
ie->rc = 0;
- ie->freelink = VtsID_INVALID;
+ ie->u.freelink = VtsID_INVALID;
in_tab->id = ii;
return ii;
}
@@ -2717,7 +2720,7 @@
old_id = *ii;
old_te = VG_(indexXA)( old_tab, old_id );
old_te->rc--;
- new_id = old_te->remap;
+ new_id = old_te->u.remap;
new_te = VG_(indexXA)( new_tab, new_id );
new_te->rc++;
*ii = new_id;
@@ -2793,7 +2796,7 @@
VTS__delete(te->vts);
te->vts = NULL;
/* and finally put this entry on the free list */
- tl_assert(te->freelink == VtsID_INVALID); /* can't already be on it */
+ tl_assert(te->u.freelink == VtsID_INVALID); /* can't already be on it */
add_to_free_list( i );
nFreed++;
}
@@ -2857,10 +2860,10 @@
verydead_thread_table_sort_and_check (verydead_thread_table_not_pruned);
/* We will run through the old table, and create a new table and
- set, at the same time setting the .remap entries in the old
+ set, at the same time setting the u.remap entries in the old
table to point to the new entries. Then, visit every VtsID in
the system, and replace all of them with new ones, using the
- .remap entries in the old table. Finally, we can delete the old
+ u.remap entries in the old table. Finally, we can delete the old
table and set. */
XArray* /* of VtsTE */ new_tab
@@ -2898,13 +2901,13 @@
/* For each old VTS .. */
VtsTE* old_te = VG_(indexXA)( vts_tab, i );
VTS* old_vts = old_te->vts;
- tl_assert(old_te->remap == VtsID_INVALID);
/* Skip it if not in use */
if (old_te->rc == 0) {
tl_assert(old_vts == NULL);
continue;
}
+ tl_assert(old_te->u.remap == VtsID_INVALID);
tl_assert(old_vts != NULL);
tl_assert(old_vts->id == i);
tl_assert(old_vts->ts != NULL);
@@ -2960,8 +2963,7 @@
VtsTE new_te;
new_te.vts = new_vts;
new_te.rc = 0;
- new_te.freelink = VtsID_INVALID;
- new_te.remap = VtsID_INVALID;
+ new_te.u.freelink = VtsID_INVALID;
Word j = VG_(addToXA)( new_tab, &new_te );
tl_assert(j <= i);
tl_assert(j == new_VtsID_ctr - 1);
@@ -2969,7 +2971,7 @@
nAfterPruning++;
nSTSsAfter += new_vts->usedTS;
}
- old_te->remap = new_vts->id;
+ old_te->u.remap = new_vts->id;
} /* for (i = 0; i < nTab; i++) */
@@ -2989,12 +2991,12 @@
}
/* At this point, we have:
- * the old VTS table, with its .remap entries set,
+ * the old VTS table, with its u.remap entries set,
and with all .vts == NULL.
* the old VTS tree should be empty, since it and the old VTSs
it contained have been incrementally deleted was we worked
through the old table.
- * the new VTS table, with all .rc == 0, all .freelink and .remap
+ * the new VTS table, with all .rc == 0, all u.freelink and u.remap
== VtsID_INVALID.
* the new VTS tree.
*/
@@ -3009,7 +3011,7 @@
Nowhere else, AFAICS. Not in the zsm cache, because that just
got invalidated.
- Using the .remap fields in vts_tab, map each old VtsID to a new
+ Using the u.remap fields in vts_tab, map each old VtsID to a new
VtsID. For each old VtsID, dec its rc; and for each new one,
inc it. This sets up the new refcounts, and it also gives a
cheap sanity check of the old ones: all old refcounts should be
@@ -3080,8 +3082,7 @@
VtsTE* te = VG_(indexXA)( vts_tab, i );
tl_assert(te->vts == NULL);
/* This is the assert proper. Note we're also asserting
- zeroness for old entries which are unmapped (hence have
- .remap == VtsID_INVALID). That's OK. */
+ zeroness for old entries which are unmapped. That's OK. */
tl_assert(te->rc == 0);
}
@@ -3123,8 +3124,8 @@
tl_assert(te->vts);
tl_assert(te->vts->id == i);
tl_assert(te->rc > 0); /* 'cos we just GC'd */
- tl_assert(te->freelink == VtsID_INVALID); /* in use */
- tl_assert(te->remap == VtsID_INVALID); /* not relevant */
+ tl_assert(te->u.freelink == VtsID_INVALID); /* in use */
+ /* value of te->u.remap not relevant */
}
/* And we're done. Bwahahaha. Ha. Ha. Ha. */
@@ -6075,6 +6076,7 @@
stats__vts_set__focaa, stats__vts_set__focaa_a );
VG_(printf)( " libhb: VTSops: indexAt_SLOW %'lu\n",
stats__vts__indexat_slow );
+ show_vts_stats ("libhb stats");
VG_(printf)("%s","\n");
VG_(printf)(
Modified: branches/ASPACEM_TWEAKS/include/pub_tool_xarray.h
==============================================================================
--- branches/ASPACEM_TWEAKS/include/pub_tool_xarray.h (original)
+++ branches/ASPACEM_TWEAKS/include/pub_tool_xarray.h Tue May 5 21:33:17 2015
@@ -104,6 +104,13 @@
/* How elements are there in this XArray now? */
extern Word VG_(sizeXA) ( const XArray* );
+/* If you know how many elements an XArray will have, you can
+ optimise memory usage and number of reallocation needed
+ to insert these elements. The call to VG_(hintSizeXA) must be
+ done just after the call to VG_(newXA), before any element
+ has been inserted. */
+extern void VG_(hintSizeXA) ( XArray*, Word);
+
/* Index into the XArray. Checks bounds and bombs if the index is
invalid. What this returns is the address of the specified element
in the array, not (of course) the element itself. Note that the
Modified: branches/ASPACEM_TWEAKS/memcheck/mc_translate.c
==============================================================================
--- branches/ASPACEM_TWEAKS/memcheck/mc_translate.c (original)
+++ branches/ASPACEM_TWEAKS/memcheck/mc_translate.c Tue May 5 21:33:17 2015
@@ -6303,6 +6303,7 @@
mce.tmpMap = VG_(newXA)( VG_(malloc), "mc.MC_(instrument).1", VG_(free),
sizeof(TempMapEnt));
+ VG_(hintSizeXA) (mce.tmpMap, sb_in->tyenv->types_used);
for (i = 0; i < sb_in->tyenv->types_used; i++) {
TempMapEnt ent;
ent.kind = Orig;
Modified: branches/ASPACEM_TWEAKS/none/tests/libvex_test.c
==============================================================================
--- branches/ASPACEM_TWEAKS/none/tests/libvex_test.c (original)
+++ branches/ASPACEM_TWEAKS/none/tests/libvex_test.c Tue May 5 21:33:17 2015
@@ -1,6 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
+# if !defined(VGO_darwin)
#include <endian.h>
+# else
+#include <machine/endian.h>
+# endif
#include "../../VEX/pub/libvex.h"
Bool return_false(void*cb, Addr ad)
Modified: branches/ASPACEM_TWEAKS/perf/memrw.c
==============================================================================
--- branches/ASPACEM_TWEAKS/perf/memrw.c (original)
+++ branches/ASPACEM_TWEAKS/perf/memrw.c Tue May 5 21:33:17 2015
@@ -19,42 +19,44 @@
// model e.g. multiple threads, many different stack traces touching
// the memory, better working set distribution, ...
-static int nr_mb = 0; // total nr of mb used by the program
-static int nr_mb_ws = 0; // nr_mb in program working set
-static int nr_loops = 0; // nr of loops reading or writing the ws
+static int sz_b; // size of a block
+static int nr_b; // total nr of blocks used by the program
+static int nr_b_ws; // nr_b in program working set
+static int nr_loops; // nr of loops reading or writing the ws
static int nr_thr; // nr of threads (hardcoded to 1 currently)
+static int nr_repeat; // nr of times we will allocate, use, then free total+ws
-// Note: the total nr of mb is what is explicitely allocated.
+// Note: the total nr of MB is what is explicitely allocated.
// On top of that, we have the stacks, local vars, lib vars, ...
-// The working set is just the first nr_mb_ws of nr_mb.
+// The working set is just the first nr_b_ws blocks of nr_b.
static int verbose = 0;
-static unsigned char **mb;
+static unsigned char **t_b; // Pointers to all blocks
static void *memrw_fn(void *v)
{
int loops, m, b;
- int write;
+ int dowrite;
int differs = 0;
unsigned char prev = 0;
for (loops = 0; loops < nr_loops; loops++) {
- // printf("loop %d write %d\n", loops, write);
+ // printf("loop %d dowrite %d\n", loops, dowrite);
// Note: in case of multiple threads, we will have
// to add lock/unlock somewhere in the below, maybe to lock
// the MB we are reading or writing.
- for (m = 0; m < nr_mb_ws; m++) {
- for (b = 0; b < 1024 * 1024; b++) {
- write = b % 5 == 0;
+ for (m = 0; m < nr_b_ws; m++) {
+ for (b = 0; b < sz_b; b++) {
+ dowrite = b % 5 == 0;
// Do some write or read operations.
- if (write) {
- if (mb[m][b] < 255)
- mb[m][b] += differs;
+ if (dowrite) {
+ if (t_b[m][b] < 255)
+ t_b[m][b] += differs;
else
- mb[m][b] = 0;
+ t_b[m][b] = 0;
} else {
- differs = mb[m][b] != prev;
- prev = mb[m][b];
+ differs = t_b[m][b] != prev;
+ prev = t_b[m][b];
}
}
}
@@ -67,62 +69,80 @@
int a;
int ret;
int i;
+ int r;
pthread_t thr;
- // usage: memrw [-t nr_mb default 10] [-w nr_mb_ws default 10]
+ // usage: memrw [-b blocksize default 1MB ]
+ // [-t nr_b default 10] [-w nr_b_ws default 10]
// [-l nr_loops_on_ws default 3]
+ // [-r nr_repeat default 1]
// [-f fan_out default 0]
// [-v verbosity default 0]
- nr_mb = 10;
- nr_mb_ws = 10;
+ sz_b = 1024 * 1024;
+ nr_b = 10;
+ nr_b_ws = 10;
nr_loops = 3;
+ nr_repeat = 1;
verbose = 0;
for (a = 1; a < argc; a+=2) {
- if (strcmp(argv[a], "-t") == 0) {
- nr_mb = atoi(argv[a+1]);
+ if (strcmp(argv[a], "-b") == 0) {
+ sz_b = atoi(argv[a+1]);
+ } else if (strcmp(argv[a], "-t") == 0) {
+ nr_b = atoi(argv[a+1]);
} else if (strcmp(argv[a], "-w") == 0) {
- nr_mb_ws = atoi(argv[a+1]);
+ nr_b_ws = atoi(argv[a+1]);
} else if (strcmp(argv[a], "-l") == 0) {
nr_loops = atoi(argv[a+1]);
+ } else if (strcmp(argv[a], "-r") == 0) {
+ nr_repeat = atoi(argv[a+1]);
} else if (strcmp(argv[a], "-v") == 0) {
verbose = atoi(argv[a+1]);
} else {
printf("unknown arg %s\n", argv[a]);
}
}
- if (nr_mb_ws > nr_mb)
- nr_mb_ws = nr_mb; // to make it easy to do loops combining values
+ if (nr_b_ws > nr_b)
+ nr_b_ws = nr_b; // to make it easy to do loops combining values
nr_thr = 1;
printf ("total program memory -t %d MB"
- " working set -w %d MB"
- " working set R or W -l %d times"
- "\n",
- nr_mb,
- nr_mb_ws,
- nr_loops);
-
- printf ("creating and initialising the total program memory\n");
- mb = malloc(nr_mb * sizeof(char*));
- if (mb == NULL)
- perror("malloc mb");
- for (i = 0; i < nr_mb; i++) {
- mb[i] = calloc(1024*1024, 1);
- if (mb[i] == NULL)
- perror("malloc mb[i]");
+ " working set -w %d MB\n",
+ (nr_b * sz_b) / (1024*1024),
+ (nr_b_ws * sz_b) / (1024*1024));
+ printf (" working set R or W -l %d times"
+ " repeat the whole stuff -r %d times\n",
+ nr_loops,
+ nr_repeat);
+
+ for (r = 0; r < nr_repeat; r++) {
+ printf ("creating and initialising the total program memory\n");
+ t_b = malloc(nr_b * sizeof(char*));
+ if (t_b == NULL)
+ perror("malloc t_b");
+ for (i = 0; i < nr_b; i++) {
+ t_b[i] = calloc(sz_b, 1);
+ if (t_b[i] == NULL)
+ perror("malloc t_b[i]");
+ }
+
+ printf("starting thread that will read or write the working set\n");
+ ret = pthread_create(&thr, NULL, memrw_fn, &nr_thr);
+ if (ret != 0)
+ perror("pthread_create");
+ printf("waiting for thread termination\n");
+
+ ret = pthread_join(thr, NULL);
+ if (ret != 0)
+ perror("pthread_join");
+ printf("thread terminated\n");
+
+ /* Now, free the memory used, for the next repeat */
+ for (i = 0; i < nr_b; i++)
+ free (t_b[i]);
+ free (t_b);
+ printf("memory freed\n");
}
- printf("starting thread that will read or write the working set\n");
- ret = pthread_create(&thr, NULL, memrw_fn, &nr_thr);
- if (ret != 0)
- perror("pthread_create");
- printf("waiting for thread termination\n");
-
- ret = pthread_join(thr, NULL);
- if (ret != 0)
- perror("pthread_join");
- printf("thread terminated\n");
-
return 0;
}
|
|
From: <sv...@va...> - 2015-05-05 06:14:17
|
Author: florian
Date: Tue May 5 07:14:10 2015
New Revision: 15181
Log:
Simplify. The condition on line 1223 is always true.
Here's why:
The condition
if (VG_(brk_limit) > VG_(brk_base)) line 1223
is reachable iff
newbrk < VG_(brk_base) on line 1201 is false AND
newbrk < VG_(brk_limit) on line 1205 is true
Rewrite as
newbrk >= VG_(brk_base) is true AND
newbrk < VG_(brk_limit) is true
Rewrite as
newbrk >= VG_(brk_base) is true AND
newbrk <= VG_(brk_limit) - 1 is true
Combine
VG_(brk_base) <= newbrk <= VG_(brk_limit) - 1
Therefore
VG_(brk_base) <= VG_(brk_limit) - 1
Or
VG_(brk_base) < VG_(brk_limit)
Which is the same as
VG_(brk_limit) > VG_(brk_base)
qed.
Modified:
trunk/coregrind/m_syswrap/syswrap-generic.c
Modified: trunk/coregrind/m_syswrap/syswrap-generic.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-generic.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-generic.c Tue May 5 07:14:10 2015
@@ -1220,10 +1220,7 @@
and that segment is writable. */
NSegment const * seg2;
- if (VG_(brk_limit) > VG_(brk_base))
- seg2 = VG_(am_find_nsegment)( VG_(brk_limit)-1 );
- else
- seg2 = VG_(am_find_nsegment)( VG_(brk_limit) );
+ seg2 = VG_(am_find_nsegment)( VG_(brk_limit) - 1 );
vg_assert(seg2);
if (seg == seg2 && seg->hasW)
|
|
From: <sv...@va...> - 2015-05-04 20:00:57
|
Author: philippe
Date: Mon May 4 21:00:49 2015
New Revision: 15180
Log:
One more msg to use 'mmap-ed ANONYMOUS' wording
Modified:
trunk/coregrind/m_gdbserver/server.c
Modified: trunk/coregrind/m_gdbserver/server.c
==============================================================================
--- trunk/coregrind/m_gdbserver/server.c (original)
+++ trunk/coregrind/m_gdbserver/server.c Mon May 4 21:00:49 2015
@@ -386,7 +386,7 @@
VG_(gdbserver_status_output)();
break;
case 4: /* memory */
- VG_(printf) ("%llu bytes have already been allocated.\n",
+ VG_(printf) ("%llu bytes have already been mmap-ed ANONYMOUS.\n",
VG_(am_get_anonsize_total)());
VG_(print_all_arena_stats) ();
if (VG_(clo_profile_heap))
|
|
From: <sv...@va...> - 2015-05-04 12:46:52
|
Author: rhyskidd
Date: Mon May 4 13:46:44 2015
New Revision: 15179
Log:
Fix suppression for pthread_rwlock_init on OS X 10.8
bz#347151
Before:
== 593 tests, 238 stderr failures, 23 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
After:
== 593 tests, 237 stderr failures, 23 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
Modified:
trunk/NEWS
trunk/darwin12.supp
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Mon May 4 13:46:44 2015
@@ -169,6 +169,7 @@
346474 PPC64 Power 8, spr TEXASRU register not supported
346487 Compiler generates "note" about a future ABI change for PPC64
346801 Fix link error on OS X: _vgModuleLocal_sf_maybe_extend_stack
+347151 Fix suppression for pthread_rwlock_init on OS X 10.8
n-i-bz Provide implementations of certain compiler builtins to support
compilers who may not provide those
n-i-bz Old STABS code is still being compiled, but never used. Remove it.
Modified: trunk/darwin12.supp
==============================================================================
--- trunk/darwin12.supp (original)
+++ trunk/darwin12.supp Mon May 4 13:46:44 2015
@@ -237,6 +237,13 @@
fun:*ImageLoaderMachO*doModInitFunctions*
}
+# See https://bugs.kde.org/show_bug.cgi?id=196528
+{
+ macos-__pthread_rwlock_init-see-our-bug-196528
+ Memcheck:Cond
+ fun:pthread_rwlock_init
+}
+
#########################################################
## Leaks (apparently) in even hello-world style programs
|
Author: sewardj
Date: Mon May 4 09:40:11 2015
New Revision: 15178
Log:
Add a new howto for running mips64-linux on QEMU.
Rename the aarch64-linux howto accordingly.
Added:
trunk/docs/internals/qemu-aarch64-linux-HOWTO.txt
- copied, changed from r15159, trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt
trunk/docs/internals/qemu-mips64-linux-HOWTO.txt
Removed:
trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt
Modified:
trunk/docs/Makefile.am
Modified: trunk/docs/Makefile.am
==============================================================================
--- trunk/docs/Makefile.am (original)
+++ trunk/docs/Makefile.am Mon May 4 09:40:11 2015
@@ -30,7 +30,6 @@
internals/3_9_BUGSTATUS.txt \
internals/3_10_BUGSTATUS.txt \
internals/MERGE_3_10_1.txt \
- internals/aarch64-linux-on-qemu-HOWTO.txt
internals/arm_thumb_notes_gdbserver.txt \
internals/avx-notes.txt \
internals/BIG_APP_NOTES.txt \
@@ -48,6 +47,8 @@
internals/porting-HOWTO.txt \
internals/mpi2entries.txt \
internals/porting-to-ARM.txt \
+ internals/qemu-aarch64-linux-HOWTO.txt \
+ internals/qemu-mips64-linux-HOWTO.txt \
internals/register-uses.txt \
internals/release-HOWTO.txt \
internals/segments-seginfos.txt \
Removed: trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt
==============================================================================
--- trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt (original)
+++ trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt (removed)
@@ -1,102 +0,0 @@
-
-How to install and configure a QEMU aarch64-linux installation.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Last updated 30 April 2015
-
-This gives a fairly usable, and not entirely slow, arm64-linux
-install. It has the advantage that the idle loop works right and so
-when the guest becomes idle, qemu uses only very little host cpu, so
-you can leave the guest idling for long periods without bad
-performance effects on the host.
-
-More or less following
-https://gmplib.org/~tege/qemu.html, section 14 (for arm64)
-
-Build qemu-2.2.1 with --target-list including aarch64-softmmu
-
-mkdir Arm64-2
-cd Arm64-2
-
-wget http://d-i.debian.org/daily-images/arm64/daily/netboot/debian-installer/arm64/linux
-
-wget http://d-i.debian.org/daily-images/arm64/daily/netboot/debian-installer/arm64/initrd.gz
-
-# Note. 6G is easily enough to install debian and do a build of Valgrind.
-# If you envisage needing more space, now is the time to choose a larger
-# number.
-
-/path/to/Qemu221/bin/qemu-img create disk6G.img 6G
-
-/path/to/Qemu221/bin/qemu-system-aarch64 \
- -M virt -cpu cortex-a57 -m 256 \
- -drive file=disk6G.img,if=none,id=blk -device virtio-blk-device,drive=blk \
- -net user,hostfwd=tcp::5555-:22 -device virtio-net-device,vlan=0 \
- -kernel linux \
- -initrd initrd.gz \
- -append "console=ttyAMA0 --" \
- -nographic
-
-Do an install, be as vanilla as possible, allow it to create a user
-"username", and do not ask it to install any extra software. But,
-when you get to here
-
- ââââââââââââââââââââ⤠[!!] Finish the installation ââââââââââââââââââââââ
- â â
- ââ Installation complete â
- ââ Installation is complete, so it is time to boot into your new system. â
- ââ Make sure to remove the installation media (CD-ROM, floppies), so â
- ââ that you boot into the new system rather than restarting the â
- ââ installation. â
- ââ â
- ââ <Go Back> <Continue> â
- â â
- âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
-
-do "Go Back"
-then in the next menu "Execute a shell", "Continue"
-
-This gives you a root shell in the new VM. In that shell:
-
- mount -t proc proc /target/proc
- mount --rbind /sys /target/sys
- mount --rbind /dev /target/dev
- chroot /target bash
- /etc/init.d/ssh start
- mv /boot/initrd.img-3.16.0-4-arm64 /boot/initrd.img-3.16.0-4-arm64
- echo virtio-mmio >>/etc/initramfs-tools/modules
- /usr/sbin/update-initramfs -c -k 3.16.0-4-arm64
-
-Then on the host, copy out the files that the above created.
-
-cd Arm64-2
-ssh -p 5555 username@localhost \
- "tar -c -f - --exclude=lost+found /boot" | tar xf -
-
-Now back in the VM, we can finish the installation.
-
- exit
- exit
- Select "Finish the installation"
- Continue
-
-When it reboots, kill qemu from another shell, else it will try to reinstall.
-
-Now start the installation:
-
-/path/to/Qemu221/bin/qemu-system-aarch64 -M virt \
- -cpu cortex-a57 -m 1024 -drive file=disk6G.img,if=none,id=blk \
- -device virtio-blk-device,drive=blk -net user,hostfwd=tcp::5555-:22 \
- -device virtio-net-device,vlan=0 -kernel boot/vmlinuz-3.16.0-4-arm64 \
- -initrd boot/initrd.img-3.16.0-4-arm64 \
- -append "root=/dev/vda2 rw console=ttyAMA0 --" -nographic
-
-Now you can ssh into the VM and install stuff as usual:
-
-ssh -XC -p 5555 username@localhost
-
- (on the guest)
- become root
- apt-get install make gcc g++ automake autoconf emacs subversion gdb
-
-Hack on, etc.
Copied: trunk/docs/internals/qemu-aarch64-linux-HOWTO.txt (from r15159, trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt)
==============================================================================
--- trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt (original)
+++ trunk/docs/internals/qemu-aarch64-linux-HOWTO.txt Mon May 4 09:40:11 2015
@@ -63,7 +63,7 @@
mount --rbind /dev /target/dev
chroot /target bash
/etc/init.d/ssh start
- mv /boot/initrd.img-3.16.0-4-arm64 /boot/initrd.img-3.16.0-4-arm64
+ mv /boot/initrd.img-3.16.0-4-arm64 /boot/initrd.img-3.16.0-4-arm64.old
echo virtio-mmio >>/etc/initramfs-tools/modules
/usr/sbin/update-initramfs -c -k 3.16.0-4-arm64
Added: trunk/docs/internals/qemu-mips64-linux-HOWTO.txt
==============================================================================
--- trunk/docs/internals/qemu-mips64-linux-HOWTO.txt (added)
+++ trunk/docs/internals/qemu-mips64-linux-HOWTO.txt Mon May 4 09:40:11 2015
@@ -0,0 +1,111 @@
+
+How to install and configure a QEMU mips64-linux installation.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Last updated 04 May 2015
+
+This gives an apparently stable, but extremely slow, mips64-linux
+install. It has the advantage that the idle loop works right and so
+when the guest becomes idle, qemu uses only very little host cpu, so
+you can leave the guest idling for long periods without bad
+performance effects on the host.
+
+More or less following
+https://gmplib.org/~tege/qemu.html section 8 (for mips64)
+
+Build qemu-2.2.1 with --target-list including mips64-softmmu
+
+mkdir Mips64-1
+cd Mips64-1
+
+wget ftp://ftp.sunet.se/pub/Linux/distributions/debian/dists/wheezy/main/installer-mips/current/images/malta/netboot/vmlinux-3.2.0-4-4kc-malta
+
+wget ftp://ftp.sunet.se/pub/Linux/distributions/debian/dists/wheezy/main/installer-mips/current/images/malta/netboot/initrd.gz
+
+md5sum initrd.gz vmlinux-3.2.0-4-4kc-malta
+ 71f05a4aaf24671fa72e903abd76a448 initrd.gz
+ 307fc61d36cb370ea2b697d587af45a6 vmlinux-3.2.0-4-4kc-malta
+
+# Note. 4G is easily enough to install debian and do a build of Valgrind.
+# If you envisage needing more space, now is the time to choose a larger
+# number.
+
+/path/to/Qemu221/bin/qemu-img create disk4G.img 4G
+
+/path/to/Qemu221/bin/qemu-system-mips64 \
+ -M malta -cpu 5Kc -m 256 -hda disk4G.img \
+ -net nic,macaddr=52:54:00:fa:ce:08 -net user,hostfwd=tcp::5555-:22 \
+ -kernel vmlinux-3.2.0-4-4kc-malta -initrd initrd.img-3.2.0-4-4kc-malta \
+ -append "root=/dev/sda1 console=ttyS0 --" -nographic
+
+Do an install, be as vanilla as possible, allow it to create a user
+"username", and do not ask it to install any extra software. But,
+when you get to here
+
+ ââââââââââââââââââââ⤠[!!] Finish the installation ââââââââââââââââââââââ
+ â â
+ ââ Installation complete â
+ ââ Installation is complete, so it is time to boot into your new system. â
+ ââ Make sure to remove the installation media (CD-ROM, floppies), so â
+ ââ that you boot into the new system rather than restarting the â
+ ââ installation. â
+ ââ â
+ ââ <Go Back> <Continue> â
+ â â
+ âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
+
+do "Go Back"
+then in the next menu "Execute a shell", "Continue"
+
+This gives you a root shell in the new VM. In that shell:
+
+ mount -t proc proc /target/proc
+ mount --rbind /sys /target/sys
+ mount --rbind /dev /target/dev
+ chroot /target bash
+ /etc/init.d/ssh start
+ ls /boot
+ System.map-3.2.0-4-5kc-malta initrd.img-3.2.0-4-5kc-malta
+ config-3.2.0-4-5kc-malta vmlinux-3.2.0-4-5kc-malta
+
+Then on the host, copy out the vmlinux and initrd:
+
+ssh -p 5555 username@localhost \
+ "tar -c -f - --exclude=lost+found /boot" | tar xf -
+
+ exit
+ exit
+ Select "Finish the installation"
+ Continue
+
+When it reboots, kill qemu from another shell, else it will try to reinstall.
+
+Now start the installation:
+
+/path/to/Qemu221/bin/qemu-system-mips64 \
+ -M malta -cpu 5Kc -m 256 -hda disk4G.img -net nic,macaddr=52:54:00:fa:ce:08 \
+ -net user,hostfwd=tcp::5555-:22 -kernel boot/vmlinux-3.2.0-4-5kc-malta \
+ -initrd boot/initrd.img-3.2.0-4-5kc-malta \
+ -append "root=/dev/sda1 console=ttyS0" -nographic
+
+System seems to have 256MB memory no matter how much you request.
+
+This is basically a 32 bit system at this point. To get something
+that can build 64 bit executables, it is necessary to install
+gcc-multilib and g++-multilib.
+
+Now you can ssh into the VM and install stuff as usual:
+
+ssh -XC -p 5555 username@localhost
+
+ (on the guest)
+ become root
+
+ apt-get install make g++ gcc subversion emacs gdb automake autoconf
+ apt-get gcc-multilib g++-multilib
+
+Configuring V on the guest:
+
+ ./autogen.sh
+ CFLAGS="-mips64 -mabi=64" CXXFLAGS="-mips64 -mabi=64" \
+ ./configure --prefix=`pwd`/Inst
|
|
From: <sv...@va...> - 2015-05-03 21:48:21
|
Author: philippe
Date: Sun May 3 22:48:13 2015
New Revision: 15177
Log:
* Out of memory message was using 'bytes have already been allocated.'
while this nr is in fact the total anonymously mmap-ed.
Change the message so as to reflect the shown number.
* Show also the total anonymous mmaped in non OOM memory statistics
Modified:
trunk/coregrind/m_gdbserver/server.c
trunk/coregrind/m_mallocfree.c
Modified: trunk/coregrind/m_gdbserver/server.c
==============================================================================
--- trunk/coregrind/m_gdbserver/server.c (original)
+++ trunk/coregrind/m_gdbserver/server.c Sun May 3 22:48:13 2015
@@ -157,7 +157,9 @@
VG_(message)(Vg_DebugMsg,
"------ Valgrind's internal memory use stats follow ------\n" );
VG_(sanity_check_malloc_all)();
- VG_(message)(Vg_DebugMsg, "------\n" );
+ VG_(message)(Vg_DebugMsg,
+ "------ %llu bytes have already been mmap-ed ANONYMOUS.\n",
+ VG_(am_get_anonsize_total)());
VG_(print_all_arena_stats)();
if (VG_(clo_profile_heap))
VG_(print_arena_cc_analysis) ();
Modified: trunk/coregrind/m_mallocfree.c
==============================================================================
--- trunk/coregrind/m_mallocfree.c (original)
+++ trunk/coregrind/m_mallocfree.c Sun May 3 22:48:13 2015
@@ -758,7 +758,7 @@
"\n"
" Valgrind's memory management: out of memory:\n"
" %s's request for %llu bytes failed.\n"
- " %llu bytes have already been allocated.\n"
+ " %llu bytes have already been mmap-ed ANONYMOUS.\n"
" Valgrind cannot continue. Sorry.\n\n"
" There are several possible reasons for this.\n"
" - You have some kind of memory limit in place. Look at the\n"
|
|
From: <sv...@va...> - 2015-05-03 10:56:24
|
Author: philippe
Date: Sun May 3 11:56:16 2015
New Revision: 15176
Log:
Reduce nr of lines produced by laog gc --stats=yes
Modified:
trunk/helgrind/hg_main.c
Modified: trunk/helgrind/hg_main.c
==============================================================================
--- trunk/helgrind/hg_main.c (original)
+++ trunk/helgrind/hg_main.c Sun May 3 11:56:16 2015
@@ -3420,11 +3420,6 @@
* sizeof(Bool) );
// univ_laog_seen[*] set to 0 (False) by zalloc.
- if (VG_(clo_stats))
- VG_(message)(Vg_DebugMsg,
- "univ_laog_do_GC enter cardinality %'10d\n",
- (Int)univ_laog_cardinality);
-
VG_(initIterFM)( laog );
links = NULL;
while (VG_(nextIterFM)( laog, NULL, (UWord*)&links )) {
@@ -3482,8 +3477,8 @@
if (VG_(clo_stats))
VG_(message)
(Vg_DebugMsg,
- "univ_laog_do_GC exit seen %'8d next gc at cardinality %'10d\n",
- (Int)seen, next_gc_univ_laog);
+ "univ_laog_do_GC cardinality entered %d exit %d next gc at %d\n",
+ (Int)univ_laog_cardinality, (Int)seen, next_gc_univ_laog);
}
|
|
From: Julian S. <js...@ac...> - 2015-05-02 20:19:46
|
I made what I think is a clean fix for this, at https://bugs.kde.org/show_bug.cgi?id=346411#c1 Florian and Petar, can you look at the patch and see if you are happy with it? I verified it works on mips64-linux. J |
|
From: Matthias S. <zz...@ge...> - 2015-05-02 11:43:52
|
On 26.04.2015 21:12, Matthias Schwarzott wrote: > On 12.04.2015 20:53, Matthias Schwarzott wrote: >> Hi there! >> >> When executing valgrind automatically on a server, I sometimes wonder if >> a process did finish successfully or did call abort (or was killed in >> some other way). >> > > I modified valgrind to always print the info about a terminating signal > to the xml output. > > Patch is attached here: > https://bugs.kde.org/show_bug.cgi?id=191069 > > About always printing the signal to normal stderr: Maybe there should be > a cmdline option to enable this. > Hi, I suggest this behaviour: For xml and text output should always report callstack of fatal signal. Maybe xml output could also contain the exitcode in case of a normal exit. Currently a callstack is shown if the signal is from kernel and only for text output. But I think a SIGABRT should be reported always, but it does not count as kernel-generated. It might be caused by a call to abort or assert(false) and that is interesting for me. Regards Matthias |
|
From: <sv...@va...> - 2015-05-02 04:23:54
|
Author: rhyskidd
Date: Sat May 2 05:23:46 2015
New Revision: 15175
Log:
Properly guard exp-bbv/tests/x86/ on OS X. Partial fix for BZ#344416 (at least reduces required hacks).
Modified:
trunk/exp-bbv/tests/Makefile.am
trunk/exp-bbv/tests/x86/complex_rep.vgtest
trunk/exp-bbv/tests/x86/fldcw_check.vgtest
trunk/exp-bbv/tests/x86/million.vgtest
trunk/exp-bbv/tests/x86/rep_prefix.vgtest
Modified: trunk/exp-bbv/tests/Makefile.am
==============================================================================
--- trunk/exp-bbv/tests/Makefile.am (original)
+++ trunk/exp-bbv/tests/Makefile.am Sat May 2 05:23:46 2015
@@ -5,8 +5,10 @@
# Platform-specific tests
if VGCONF_ARCHS_INCLUDE_X86
+if !VGCONF_OS_IS_DARWIN
SUBDIRS += x86
endif
+endif
if VGCONF_PLATFORMS_INCLUDE_X86_LINUX
SUBDIRS += x86-linux
endif
Modified: trunk/exp-bbv/tests/x86/complex_rep.vgtest
==============================================================================
--- trunk/exp-bbv/tests/x86/complex_rep.vgtest (original)
+++ trunk/exp-bbv/tests/x86/complex_rep.vgtest Sat May 2 05:23:46 2015
@@ -1,3 +1,4 @@
+prereq: test -e complex_rep
prog: complex_rep
vgopts: --interval-size=100000 --bb-out-file=complex_rep.out.bb
cleanup: rm complex_rep.out.bb
Modified: trunk/exp-bbv/tests/x86/fldcw_check.vgtest
==============================================================================
--- trunk/exp-bbv/tests/x86/fldcw_check.vgtest (original)
+++ trunk/exp-bbv/tests/x86/fldcw_check.vgtest Sat May 2 05:23:46 2015
@@ -1,3 +1,4 @@
+prereq: test -e fldcw_check
prog: fldcw_check
vgopts: --interval-size=10000 --bb-out-file=fldcw_check.out.bb
cleanup: rm fldcw_check.out.bb
Modified: trunk/exp-bbv/tests/x86/million.vgtest
==============================================================================
--- trunk/exp-bbv/tests/x86/million.vgtest (original)
+++ trunk/exp-bbv/tests/x86/million.vgtest Sat May 2 05:23:46 2015
@@ -1,4 +1,5 @@
-prog: million
+prereq: test -e million
+prog: million
vgopts: --interval-size=100000 --bb-out-file=million.out.bb --pc-out-file=million.out.pc
post: cat million.out.bb
cleanup: rm million.out.bb million.out.pc
Modified: trunk/exp-bbv/tests/x86/rep_prefix.vgtest
==============================================================================
--- trunk/exp-bbv/tests/x86/rep_prefix.vgtest (original)
+++ trunk/exp-bbv/tests/x86/rep_prefix.vgtest Sat May 2 05:23:46 2015
@@ -1,3 +1,4 @@
+prereq: test -e rep_prefix
prog: rep_prefix
vgopts: --interval-size=100000 --bb-out-file=rep_prefix.out.bb
cleanup: rm rep_prefix.out.bb
|
|
From: <sv...@va...> - 2015-05-01 17:12:08
|
Author: philippe
Date: Fri May 1 18:12:00 2015
New Revision: 15174
Log:
This patch reduces the memory needed for a VtsTE by 25% (one word)
on 32 bits platforms. No memory reduction on 64 bits platforms,
due to alignment.
The patch also shows the vts stats when showing the helgrind stats.
The perf/memrw.c perf test gets also some new additional features
allowing e.g. to control the size of the read or written blocks.
Modified:
trunk/helgrind/libhb_core.c
trunk/perf/memrw.c
Modified: trunk/helgrind/libhb_core.c
==============================================================================
--- trunk/helgrind/libhb_core.c (original)
+++ trunk/helgrind/libhb_core.c Fri May 1 18:12:00 2015
@@ -2541,19 +2541,23 @@
If .vts == NULL, then this entry is not in use, so:
- .rc == 0
- this entry is on the freelist (unfortunately, does not imply
- any constraints on value for .freelink)
+ any constraints on value for u.freelink)
If .vts != NULL, then this entry is in use:
- .vts is findable in vts_set
- .vts->id == this entry number
- no specific value for .rc (even 0 is OK)
- - this entry is not on freelist, so .freelink == VtsID_INVALID
+ - this entry is not on freelist, so u.freelink == VtsID_INVALID
*/
typedef
struct {
VTS* vts; /* vts, in vts_set */
UWord rc; /* reference count - enough for entire aspace */
- VtsID freelink; /* chain for free entries, VtsID_INVALID at end */
- VtsID remap; /* used only during pruning */
+ union {
+ VtsID freelink; /* chain for free entries, VtsID_INVALID at end */
+ VtsID remap; /* used only during pruning, for used entries */
+ } u;
+ /* u.freelink only used when vts == NULL,
+ u.remap only used when vts != NULL, during pruning. */
}
VtsTE;
@@ -2583,8 +2587,8 @@
VtsTE* ie = VG_(indexXA)( vts_tab, ii );
tl_assert(ie->vts == NULL);
tl_assert(ie->rc == 0);
- tl_assert(ie->freelink == VtsID_INVALID);
- ie->freelink = vts_tab_freelist;
+ tl_assert(ie->u.freelink == VtsID_INVALID);
+ ie->u.freelink = vts_tab_freelist;
vts_tab_freelist = ii;
}
@@ -2600,7 +2604,7 @@
ie = VG_(indexXA)( vts_tab, ii );
tl_assert(ie->vts == NULL);
tl_assert(ie->rc == 0);
- vts_tab_freelist = ie->freelink;
+ vts_tab_freelist = ie->u.freelink;
return ii;
}
@@ -2615,8 +2619,7 @@
return ii;
te.vts = NULL;
te.rc = 0;
- te.freelink = VtsID_INVALID;
- te.remap = VtsID_INVALID;
+ te.u.freelink = VtsID_INVALID;
ii = (VtsID)VG_(addToXA)( vts_tab, &te );
return ii;
}
@@ -2669,7 +2672,7 @@
VtsTE* ie = VG_(indexXA)( vts_tab, ii );
ie->vts = in_tab;
ie->rc = 0;
- ie->freelink = VtsID_INVALID;
+ ie->u.freelink = VtsID_INVALID;
in_tab->id = ii;
return ii;
}
@@ -2717,7 +2720,7 @@
old_id = *ii;
old_te = VG_(indexXA)( old_tab, old_id );
old_te->rc--;
- new_id = old_te->remap;
+ new_id = old_te->u.remap;
new_te = VG_(indexXA)( new_tab, new_id );
new_te->rc++;
*ii = new_id;
@@ -2793,7 +2796,7 @@
VTS__delete(te->vts);
te->vts = NULL;
/* and finally put this entry on the free list */
- tl_assert(te->freelink == VtsID_INVALID); /* can't already be on it */
+ tl_assert(te->u.freelink == VtsID_INVALID); /* can't already be on it */
add_to_free_list( i );
nFreed++;
}
@@ -2857,10 +2860,10 @@
verydead_thread_table_sort_and_check (verydead_thread_table_not_pruned);
/* We will run through the old table, and create a new table and
- set, at the same time setting the .remap entries in the old
+ set, at the same time setting the u.remap entries in the old
table to point to the new entries. Then, visit every VtsID in
the system, and replace all of them with new ones, using the
- .remap entries in the old table. Finally, we can delete the old
+ u.remap entries in the old table. Finally, we can delete the old
table and set. */
XArray* /* of VtsTE */ new_tab
@@ -2898,13 +2901,13 @@
/* For each old VTS .. */
VtsTE* old_te = VG_(indexXA)( vts_tab, i );
VTS* old_vts = old_te->vts;
- tl_assert(old_te->remap == VtsID_INVALID);
/* Skip it if not in use */
if (old_te->rc == 0) {
tl_assert(old_vts == NULL);
continue;
}
+ tl_assert(old_te->u.remap == VtsID_INVALID);
tl_assert(old_vts != NULL);
tl_assert(old_vts->id == i);
tl_assert(old_vts->ts != NULL);
@@ -2960,8 +2963,7 @@
VtsTE new_te;
new_te.vts = new_vts;
new_te.rc = 0;
- new_te.freelink = VtsID_INVALID;
- new_te.remap = VtsID_INVALID;
+ new_te.u.freelink = VtsID_INVALID;
Word j = VG_(addToXA)( new_tab, &new_te );
tl_assert(j <= i);
tl_assert(j == new_VtsID_ctr - 1);
@@ -2969,7 +2971,7 @@
nAfterPruning++;
nSTSsAfter += new_vts->usedTS;
}
- old_te->remap = new_vts->id;
+ old_te->u.remap = new_vts->id;
} /* for (i = 0; i < nTab; i++) */
@@ -2989,12 +2991,12 @@
}
/* At this point, we have:
- * the old VTS table, with its .remap entries set,
+ * the old VTS table, with its u.remap entries set,
and with all .vts == NULL.
* the old VTS tree should be empty, since it and the old VTSs
it contained have been incrementally deleted was we worked
through the old table.
- * the new VTS table, with all .rc == 0, all .freelink and .remap
+ * the new VTS table, with all .rc == 0, all u.freelink and u.remap
== VtsID_INVALID.
* the new VTS tree.
*/
@@ -3009,7 +3011,7 @@
Nowhere else, AFAICS. Not in the zsm cache, because that just
got invalidated.
- Using the .remap fields in vts_tab, map each old VtsID to a new
+ Using the u.remap fields in vts_tab, map each old VtsID to a new
VtsID. For each old VtsID, dec its rc; and for each new one,
inc it. This sets up the new refcounts, and it also gives a
cheap sanity check of the old ones: all old refcounts should be
@@ -3080,8 +3082,7 @@
VtsTE* te = VG_(indexXA)( vts_tab, i );
tl_assert(te->vts == NULL);
/* This is the assert proper. Note we're also asserting
- zeroness for old entries which are unmapped (hence have
- .remap == VtsID_INVALID). That's OK. */
+ zeroness for old entries which are unmapped. That's OK. */
tl_assert(te->rc == 0);
}
@@ -3123,8 +3124,8 @@
tl_assert(te->vts);
tl_assert(te->vts->id == i);
tl_assert(te->rc > 0); /* 'cos we just GC'd */
- tl_assert(te->freelink == VtsID_INVALID); /* in use */
- tl_assert(te->remap == VtsID_INVALID); /* not relevant */
+ tl_assert(te->u.freelink == VtsID_INVALID); /* in use */
+ /* value of te->u.remap not relevant */
}
/* And we're done. Bwahahaha. Ha. Ha. Ha. */
@@ -6075,6 +6076,7 @@
stats__vts_set__focaa, stats__vts_set__focaa_a );
VG_(printf)( " libhb: VTSops: indexAt_SLOW %'lu\n",
stats__vts__indexat_slow );
+ show_vts_stats ("libhb stats");
VG_(printf)("%s","\n");
VG_(printf)(
Modified: trunk/perf/memrw.c
==============================================================================
--- trunk/perf/memrw.c (original)
+++ trunk/perf/memrw.c Fri May 1 18:12:00 2015
@@ -19,17 +19,19 @@
// model e.g. multiple threads, many different stack traces touching
// the memory, better working set distribution, ...
-static int nr_mb = 0; // total nr of mb used by the program
-static int nr_mb_ws = 0; // nr_mb in program working set
-static int nr_loops = 0; // nr of loops reading or writing the ws
+static int sz_b; // size of a block
+static int nr_b; // total nr of blocks used by the program
+static int nr_b_ws; // nr_b in program working set
+static int nr_loops; // nr of loops reading or writing the ws
static int nr_thr; // nr of threads (hardcoded to 1 currently)
+static int nr_repeat; // nr of times we will allocate, use, then free total+ws
-// Note: the total nr of mb is what is explicitely allocated.
+// Note: the total nr of MB is what is explicitely allocated.
// On top of that, we have the stacks, local vars, lib vars, ...
-// The working set is just the first nr_mb_ws of nr_mb.
+// The working set is just the first nr_b_ws blocks of nr_b.
static int verbose = 0;
-static unsigned char **mb;
+static unsigned char **t_b; // Pointers to all blocks
static void *memrw_fn(void *v)
{
@@ -43,18 +45,18 @@
// Note: in case of multiple threads, we will have
// to add lock/unlock somewhere in the below, maybe to lock
// the MB we are reading or writing.
- for (m = 0; m < nr_mb_ws; m++) {
- for (b = 0; b < 1024 * 1024; b++) {
+ for (m = 0; m < nr_b_ws; m++) {
+ for (b = 0; b < sz_b; b++) {
dowrite = b % 5 == 0;
// Do some write or read operations.
if (dowrite) {
- if (mb[m][b] < 255)
- mb[m][b] += differs;
+ if (t_b[m][b] < 255)
+ t_b[m][b] += differs;
else
- mb[m][b] = 0;
+ t_b[m][b] = 0;
} else {
- differs = mb[m][b] != prev;
- prev = mb[m][b];
+ differs = t_b[m][b] != prev;
+ prev = t_b[m][b];
}
}
}
@@ -67,62 +69,80 @@
int a;
int ret;
int i;
+ int r;
pthread_t thr;
- // usage: memrw [-t nr_mb default 10] [-w nr_mb_ws default 10]
+ // usage: memrw [-b blocksize default 1MB ]
+ // [-t nr_b default 10] [-w nr_b_ws default 10]
// [-l nr_loops_on_ws default 3]
+ // [-r nr_repeat default 1]
// [-f fan_out default 0]
// [-v verbosity default 0]
- nr_mb = 10;
- nr_mb_ws = 10;
+ sz_b = 1024 * 1024;
+ nr_b = 10;
+ nr_b_ws = 10;
nr_loops = 3;
+ nr_repeat = 1;
verbose = 0;
for (a = 1; a < argc; a+=2) {
- if (strcmp(argv[a], "-t") == 0) {
- nr_mb = atoi(argv[a+1]);
+ if (strcmp(argv[a], "-b") == 0) {
+ sz_b = atoi(argv[a+1]);
+ } else if (strcmp(argv[a], "-t") == 0) {
+ nr_b = atoi(argv[a+1]);
} else if (strcmp(argv[a], "-w") == 0) {
- nr_mb_ws = atoi(argv[a+1]);
+ nr_b_ws = atoi(argv[a+1]);
} else if (strcmp(argv[a], "-l") == 0) {
nr_loops = atoi(argv[a+1]);
+ } else if (strcmp(argv[a], "-r") == 0) {
+ nr_repeat = atoi(argv[a+1]);
} else if (strcmp(argv[a], "-v") == 0) {
verbose = atoi(argv[a+1]);
} else {
printf("unknown arg %s\n", argv[a]);
}
}
- if (nr_mb_ws > nr_mb)
- nr_mb_ws = nr_mb; // to make it easy to do loops combining values
+ if (nr_b_ws > nr_b)
+ nr_b_ws = nr_b; // to make it easy to do loops combining values
nr_thr = 1;
printf ("total program memory -t %d MB"
- " working set -w %d MB"
- " working set R or W -l %d times"
- "\n",
- nr_mb,
- nr_mb_ws,
- nr_loops);
-
- printf ("creating and initialising the total program memory\n");
- mb = malloc(nr_mb * sizeof(char*));
- if (mb == NULL)
- perror("malloc mb");
- for (i = 0; i < nr_mb; i++) {
- mb[i] = calloc(1024*1024, 1);
- if (mb[i] == NULL)
- perror("malloc mb[i]");
+ " working set -w %d MB\n",
+ (nr_b * sz_b) / (1024*1024),
+ (nr_b_ws * sz_b) / (1024*1024));
+ printf (" working set R or W -l %d times"
+ " repeat the whole stuff -r %d times\n",
+ nr_loops,
+ nr_repeat);
+
+ for (r = 0; r < nr_repeat; r++) {
+ printf ("creating and initialising the total program memory\n");
+ t_b = malloc(nr_b * sizeof(char*));
+ if (t_b == NULL)
+ perror("malloc t_b");
+ for (i = 0; i < nr_b; i++) {
+ t_b[i] = calloc(sz_b, 1);
+ if (t_b[i] == NULL)
+ perror("malloc t_b[i]");
+ }
+
+ printf("starting thread that will read or write the working set\n");
+ ret = pthread_create(&thr, NULL, memrw_fn, &nr_thr);
+ if (ret != 0)
+ perror("pthread_create");
+ printf("waiting for thread termination\n");
+
+ ret = pthread_join(thr, NULL);
+ if (ret != 0)
+ perror("pthread_join");
+ printf("thread terminated\n");
+
+ /* Now, free the memory used, for the next repeat */
+ for (i = 0; i < nr_b; i++)
+ free (t_b[i]);
+ free (t_b);
+ printf("memory freed\n");
}
- printf("starting thread that will read or write the working set\n");
- ret = pthread_create(&thr, NULL, memrw_fn, &nr_thr);
- if (ret != 0)
- perror("pthread_create");
- printf("waiting for thread termination\n");
-
- ret = pthread_join(thr, NULL);
- if (ret != 0)
- perror("pthread_join");
- printf("thread terminated\n");
-
return 0;
}
|
|
From: <sv...@va...> - 2015-05-01 16:46:47
|
Author: philippe
Date: Fri May 1 17:46:38 2015
New Revision: 15173
Log:
This patch adds a function that allows to directly properly size an xarray
when the size is known in advance.
3 places identified where this function can be used trivially.
The result is a reduction of 'realloc' operations in core
arena, and a small reduction in ttaux arena
(it is the nr of operations that decreases, the memory usage itself
stays the same (ignoring some 'rounding' effects).
E.g. for perf/bigcode 0, we change from
core 1085742/ 216745904 totalloc-blocks/bytes, 1085733 searches
ttaux 5348/ 6732560 totalloc-blocks/bytes, 5326 searches
to
core 712666/ 190998592 totalloc-blocks/bytes, 712657 searches
ttaux 5319/ 6731808 totalloc-blocks/bytes, 5296 searches
For bz2, we switch from
core 50285/ 32383664 totalloc-blocks/bytes, 50256 searches
ttaux 670/ 245160 totalloc-blocks/bytes, 669 searches
to
core 32564/ 29971984 totalloc-blocks/bytes, 32535 searches
ttaux 605/ 243280 totalloc-blocks/bytes, 604 searches
Performance wise, on amd64, this improves memcheck performance
on perf tests by 0.0, 0.1 or 0.2 seconds depending on the test.
Modified:
trunk/coregrind/m_transtab.c
trunk/coregrind/m_xarray.c
trunk/include/pub_tool_xarray.h
trunk/memcheck/mc_translate.c
Modified: trunk/coregrind/m_transtab.c
==============================================================================
--- trunk/coregrind/m_transtab.c (original)
+++ trunk/coregrind/m_transtab.c Fri May 1 17:46:38 2015
@@ -569,6 +569,7 @@
XArray *var = VG_(newXA)(ttaux_malloc, "transtab.IEA__add",
ttaux_free,
sizeof(InEdge));
+ VG_(hintSizeXA) (var, iea->n_fixed + 1);
UWord i;
for (i = 0; i < iea->n_fixed; i++) {
VG_(addToXA)(var, &iea->edges.fixed[i]);
@@ -649,6 +650,7 @@
XArray *var = VG_(newXA)(ttaux_malloc, "transtab.OEA__add",
ttaux_free,
sizeof(OutEdge));
+ VG_(hintSizeXA) (var, oea->n_fixed+1);
UWord i;
for (i = 0; i < oea->n_fixed; i++) {
VG_(addToXA)(var, &oea->edges.fixed[i]);
Modified: trunk/coregrind/m_xarray.c
==============================================================================
--- trunk/coregrind/m_xarray.c (original)
+++ trunk/coregrind/m_xarray.c Fri May 1 17:46:38 2015
@@ -133,6 +133,24 @@
return ((char*)xa->arr) + n * xa->elemSzB;
}
+void VG_(hintSizeXA) ( XArray* xa, Word n)
+{
+ /* Currently, we support giving a size hint only just after the
+ call to VG_(newXA). So, we could instead have done
+ a function VG_(newXA_with_SizeHint). The separate VG_(hintSizeXA)
+ function is however chosen as we might one day accept to
+ give a size hint after having added elements. That could be useful
+ for reducing the size of an xarray to just the size currently needed
+ or to give a size hint when it is known that a lot more elements
+ are needed or when the final nr of elements is known. */
+ vg_assert(xa);
+ vg_assert(xa->usedsizeE == 0);
+ vg_assert(xa->totsizeE == 0);
+ vg_assert(!xa->arr);
+ xa->arr = xa->alloc_fn(xa->cc, n * xa->elemSzB);
+ xa->totsizeE = n;
+}
+
static inline void ensureSpaceXA ( XArray* xa )
{
if (xa->usedsizeE == xa->totsizeE) {
Modified: trunk/include/pub_tool_xarray.h
==============================================================================
--- trunk/include/pub_tool_xarray.h (original)
+++ trunk/include/pub_tool_xarray.h Fri May 1 17:46:38 2015
@@ -104,6 +104,13 @@
/* How elements are there in this XArray now? */
extern Word VG_(sizeXA) ( const XArray* );
+/* If you know how many elements an XArray will have, you can
+ optimise memory usage and number of reallocation needed
+ to insert these elements. The call to VG_(hintSizeXA) must be
+ done just after the call to VG_(newXA), before any element
+ has been inserted. */
+extern void VG_(hintSizeXA) ( XArray*, Word);
+
/* Index into the XArray. Checks bounds and bombs if the index is
invalid. What this returns is the address of the specified element
in the array, not (of course) the element itself. Note that the
Modified: trunk/memcheck/mc_translate.c
==============================================================================
--- trunk/memcheck/mc_translate.c (original)
+++ trunk/memcheck/mc_translate.c Fri May 1 17:46:38 2015
@@ -6303,6 +6303,7 @@
mce.tmpMap = VG_(newXA)( VG_(malloc), "mc.MC_(instrument).1", VG_(free),
sizeof(TempMapEnt));
+ VG_(hintSizeXA) (mce.tmpMap, sb_in->tyenv->types_used);
for (i = 0; i < sb_in->tyenv->types_used; i++) {
TempMapEnt ent;
ent.kind = Orig;
|
|
From: <sv...@va...> - 2015-05-01 10:19:30
|
Author: rhyskidd
Date: Fri May 1 11:19:22 2015
New Revision: 15172
Log:
Properly guard drd/tests/thread_name with HAVE_PTHREAD_BARRIER. Partial fix for BZ#344416 (at least reduces required hacks).
Modified:
trunk/drd/tests/Makefile.am
Modified: trunk/drd/tests/Makefile.am
==============================================================================
--- trunk/drd/tests/Makefile.am (original)
+++ trunk/drd/tests/Makefile.am Fri May 1 11:19:22 2015
@@ -373,7 +373,6 @@
sem_as_mutex \
sem_open \
sigalrm \
- thread_name \
threaded-fork \
trylock \
unit_bitmap \
@@ -417,7 +416,7 @@
if HAVE_PTHREAD_BARRIER
check_PROGRAMS += matinv pth_barrier pth_barrier_race pth_barrier_reinit \
- pth_barrier_thr_cr
+ pth_barrier_thr_cr thread_name
endif
if HAVE_PTHREAD_CREATE_GLIBC_2_0
|
|
From: <sv...@va...> - 2015-05-01 06:29:58
|
Author: rhyskidd
Date: Fri May 1 07:29:51 2015
New Revision: 15171
Log:
Fix aspacem segment mismatch: seen with none/tests/bigcode
bz#345824
Tested on OS X 10.9 and OS X 10.10.
Before:
== 595 tests, 237 stderr failures, 23 stdout failures, 0 stderrB failures, 0 stdoutB failures, 31 post failures ==
After:
== 595 tests, 236 stderr failures, 22 stdout failures, 0 stderrB failures, 0 stdoutB failures, 31 post failures ==
Modified:
trunk/NEWS
trunk/coregrind/m_aspacemgr/aspacemgr-linux.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Fri May 1 07:29:51 2015
@@ -157,6 +157,7 @@
345394 Fix memcheck/tests/strchr on OS X
345637 Fix memcheck/tests/sendmsg on OS X
345695 Add POWERPC support for AT_DCACHESIZE and HWCAP2
+345824 Fix aspacem segment mismatch: seen with none/tests/bigcode
345887 Fix an assertion in the address space manager
346267 Compiler warnings for PPC64 code on call to LibVEX_GuestPPC64_get_XER()
and LibVEX_GuestPPC64_get_CR()
Modified: trunk/coregrind/m_aspacemgr/aspacemgr-linux.c
==============================================================================
--- trunk/coregrind/m_aspacemgr/aspacemgr-linux.c (original)
+++ trunk/coregrind/m_aspacemgr/aspacemgr-linux.c Fri May 1 07:29:51 2015
@@ -815,8 +815,9 @@
# endif
/* Some kernels on s390 provide 'r' permission even when it was not
- explicitly requested. It seems that 'x' permission implies 'r'. */
-# if defined(VGA_s390x)
+ explicitly requested. It seems that 'x' permission implies 'r'.
+ This behaviour also occurs on OS X. */
+# if defined(VGA_s390x) || defined(VGO_darwin)
sloppyRcheck = True;
# else
sloppyRcheck = False;
|
|
From: Rhys K. <rhy...@gm...> - 2015-05-01 00:03:03
|
No regressions seen on OS X for r15109. The change looks fine for this platform, good pickup. On 18 April 2015 at 20:35, Florian Krohm <fl...@ei...> wrote: > On 17.04.2015 12:57, Julian Seward wrote: > > On 17/04/15 12:47, Florian Krohm wrote: > > > >> Now, looking at the linux side of things: > >> > >> VG_TRACK( new_mem_stack_signal, addr - VG_STACK_REDZONE_SZB, > >> size + VG_STACK_REDZONE_SZB, tid ); > >> > >> With your above argument (which is platform neutral), this does not look > >> right either. > > > > I agree. It might be one of those things which has always been wrong, > but > > which nobody really noticed until now. > > > > If you're amenable to it, I'd suggest to use simply |size| in the new > > merged-up version. If we get it wrong somehow, the worst that can happen > > is that we'll get flooded with false positive errors in signal handlers > > and we'll soon know something isn't right. So it's a low-risk change > IMO. > > > > r15109. Regtested on x86-64, s390, ppc64 > > Florian > > > > ------------------------------------------------------------------------------ > BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live > exercises > http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- > event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |