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: <sv...@va...> - 2015-05-16 16:24:26
|
Author: florian
Date: Sat May 16 17:24:19 2015
New Revision: 15244
Log:
Add VG_(am_stack_limits) and use it in VG_(stack_limits).
With this change the implementation detail call "reservation
segment" is hidden in the address space manager.
Modified:
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_stacks.c
branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h
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 Sat May 16 17:24:19 2015
@@ -1307,6 +1307,48 @@
}
}
+
+/* If ADDR is located in a stack segment return True and set return via
+ START and END the address limits of that segment. Otherwise, return
+ False and set the limts to 0. */
+Bool VG_(am_stack_limits)( Addr addr, /*OUT*/Addr *start, /*OUT*/Addr *end )
+{
+ const NSegment *seg = nsegments + find_nsegment_idx(addr);
+
+ switch (seg->kind) {
+ case SkFree:
+ goto bad;
+
+ case SkAnonC:
+ case SkFileC:
+ case SkShmC:
+ case SkAnonV:
+ case SkFileV:
+ if (!seg->hasR || !seg->hasW) goto bad;
+ *start = seg->start;
+ *end = seg->end;
+ return True;
+
+ case SkResvn:
+ /* If ADDR is an unmapped address in an extensible client stack
+ then this is OK. */
+ if (seg->smode != SmUpper) goto bad;
+ *start = seg->start;
+ seg = VG_(am_next_nsegment)(seg, /*forward*/ True);
+ if (!seg || seg->kind != SkAnonC || !seg->hasR || !seg->hasW) goto bad;
+ *end = seg->end;
+ return True;
+
+ default:
+ aspacem_assert(0);
+ }
+
+ bad:
+ *start = *end = 0;
+ return False;
+}
+
+
/*-----------------------------------------------------------------*/
/*--- ---*/
/*--- Modifying the segment array, and constructing segments. ---*/
Modified: branches/ASPACEM_TWEAKS/coregrind/m_stacks.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_stacks.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_stacks.c Sat May 16 17:24:19 2015
@@ -270,73 +270,43 @@
void VG_(stack_limits)(Addr SP, Addr *start, Addr *end )
{
Stack* stack = find_stack_by_addr(SP);
- NSegment const *stackseg = VG_(am_find_nsegment) (SP);
if (LIKELY(stack)) {
*start = stack->start;
*end = stack->end;
}
- /* SP is assumed to be in a RW segment or in the SkResvn segment of an
- extensible stack (normally, only the main thread has an extensible
- stack segment).
+ /* SP is assumed to be in a stack segment.
If no such segment is found, assume we have no valid
stack for SP, and set *start and *end to 0.
Otherwise, possibly reduce the stack limits using the boundaries of
- the RW segment/SkResvn segments containing SP. */
- if (UNLIKELY(stackseg == NULL)) {
+ the stack segment containing SP. */
+ Addr stackseg_start, stackseg_end;
+ if (UNLIKELY(! VG_(am_stack_limits)(SP, &stackseg_start, &stackseg_end))) {
VG_(debugLog)(2, "stacks",
- "no addressable segment for SP %p\n",
- (void*)SP);
+ "SP %p is not located in a stack segment or stack segment "
+ "has wrong permissions\n", (void*)SP);
*start = 0;
*end = 0;
return;
}
- if (UNLIKELY((!stackseg->hasR || !stackseg->hasW)
- && (stackseg->kind != SkResvn || stackseg->smode != SmUpper))) {
- VG_(debugLog)(2, "stacks",
- "segment for SP %p is not RW or not a SmUpper Resvn\n",
- (void*)SP);
- *start = 0;
- *end = 0;
- return;
- }
-
- /* SP is in a RW segment, or in the SkResvn of an extensible stack.
- We can use the seg start as the stack start limit. */
- if (UNLIKELY(*start < stackseg->start)) {
+ /* SP is located in a stack segment */
+ if (UNLIKELY(*start < stackseg_start)) {
VG_(debugLog)(2, "stacks",
"segment for SP %p changed stack start limit"
" from %p to %p\n",
- (void*)SP, (void*)*start, (void*)stackseg->start);
- *start = stackseg->start;
- }
-
- /* Now, determine the stack end limit. If the stackseg is SkResvn,
- we need to get the neighbour segment (towards higher addresses).
- This segment must be anonymous and RW. */
- if (UNLIKELY(stackseg->kind == SkResvn)) {
- stackseg = VG_(am_next_nsegment)(stackseg, /*forward*/ True);
- if (!stackseg || !stackseg->hasR || !stackseg->hasW
- || stackseg->kind != SkAnonC) {
- VG_(debugLog)(2, "stacks",
- "Next forward segment for SP %p Resvn segment"
- " is not RW or not AnonC\n",
- (void*)SP);
- *start = 0;
- *end = 0;
- return;
- }
+ (void*)SP, (void*)*start, (void*)stackseg_start);
+ *start = stackseg_start;
}
/* Limit the stack end limit, using the found segment. */
- if (UNLIKELY(*end > stackseg->end)) {
+ if (UNLIKELY(*end > stackseg_end)) {
VG_(debugLog)(2, "stacks",
"segment for SP %p changed stack end limit"
" from %p to %p\n",
- (void*)SP, (void*)*end, (void*)stackseg->end);
- *end = stackseg->end;
+ (void*)SP, (void*)*end, (void*)stackseg_end);
+ *end = stackseg_end;
}
/* If reducing start and/or end to the SP segment gives an
Modified: branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h (original)
+++ branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h Sat May 16 17:24:19 2015
@@ -92,6 +92,11 @@
extensible client stack segment. */
extern Bool VG_(am_addr_is_in_extensible_client_stack)( Addr addr, HChar kind );
+/* If ADDR is located in a segment that looks like a stack segment, return
+ the start and end addresses of that segment. */
+extern Bool VG_(am_stack_limits)( Addr addr, /*OUT*/Addr *start,
+ /*OUT*/Addr *end );
+
/* Trivial fn: return the total amount of space in anonymous mappings,
both for V and the client. Is used for printing stats in
out-of-memory messages. */
|
|
From: <sv...@va...> - 2015-05-16 16:18:01
|
Author: florian
Date: Sat May 16 17:17:52 2015
New Revision: 15243
Log:
Enable a few more compiler warnings.
Modified:
trunk/Makefile.all.am
trunk/configure.ac
trunk/coregrind/m_signals.c
trunk/memcheck/tests/vbit-test/vtest.h
Modified: trunk/Makefile.all.am
==============================================================================
--- trunk/Makefile.all.am (original)
+++ trunk/Makefile.all.am Sat May 16 17:17:52 2015
@@ -110,6 +110,9 @@
@FLAG_W_WRITE_STRINGS@ \
@FLAG_W_FORMAT@ \
@FLAG_W_FORMAT_SECURITY@ \
+ @FLAG_W_IGNORED_QUALIFIERS@ \
+ @FLAG_W_MISSING_PARAMETER_TYPE@ \
+ @FLAG_W_OLD_STYLE_DECLARATION@ \
@FLAG_FNO_STACK_PROTECTOR@ \
@FLAG_FSANITIZE@ \
-fno-strict-aliasing \
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Sat May 16 17:17:52 2015
@@ -1760,7 +1760,9 @@
AC_GCC_WARNING_SUBST([format], [FLAG_W_FORMAT])
AC_GCC_WARNING_SUBST([format-security], [FLAG_W_FORMAT_SECURITY])
AC_GCC_WARNING_SUBST([cast-qual], [FLAG_W_CAST_QUAL])
-
+AC_GCC_WARNING_SUBST([old-style-declaration], [FLAG_W_OLD_STYLE_DECLARATION])
+AC_GCC_WARNING_SUBST([ignored-qualifiers], [FLAG_W_IGNORED_QUALIFIERS])
+AC_GCC_WARNING_SUBST([missing-parameter-type], [FLAG_W_MISSING_PARAMETER_TYPE])
# does this compiler support -Wextra or the older -W ?
Modified: trunk/coregrind/m_signals.c
==============================================================================
--- trunk/coregrind/m_signals.c (original)
+++ trunk/coregrind/m_signals.c Sat May 16 17:17:52 2015
@@ -1794,7 +1794,7 @@
}
if (core) {
- const static struct vki_rlimit zero = { 0, 0 };
+ static const struct vki_rlimit zero = { 0, 0 };
VG_(make_coredump)(tid, info, corelim.rlim_cur);
Modified: trunk/memcheck/tests/vbit-test/vtest.h
==============================================================================
--- trunk/memcheck/tests/vbit-test/vtest.h (original)
+++ trunk/memcheck/tests/vbit-test/vtest.h Sat May 16 17:17:52 2015
@@ -125,7 +125,7 @@
void typeof_primop(IROp, IRType *t_dst, IRType *t_arg1, IRType *t_arg2,
IRType *t_arg3, IRType *t_arg4);
-static unsigned __inline__ bitsof_irtype(IRType type)
+static __inline__ unsigned bitsof_irtype(IRType type)
{
return type == Ity_I1 ? 1 : sizeof_irtype(type) * 8;
}
|
|
From: <sv...@va...> - 2015-05-16 16:16:44
|
Author: florian
Date: Sat May 16 17:16:37 2015
New Revision: 3146
Log:
Cleanups to allow compilation with -Wold-style-declaration.
Modified:
trunk/priv/guest_s390_toIR.c
trunk/priv/ir_inject.c
Modified: trunk/priv/guest_s390_toIR.c
==============================================================================
--- trunk/priv/guest_s390_toIR.c (original)
+++ trunk/priv/guest_s390_toIR.c Sat May 16 17:16:37 2015
@@ -235,7 +235,7 @@
}
/* Add a statement that stores DATA at ADDR. This is a big-endian machine. */
-static void __inline__
+static __inline__ void
store(IRExpr *addr, IRExpr *data)
{
stmt(IRStmt_Store(Iend_BE, addr, data));
Modified: trunk/priv/ir_inject.c
==============================================================================
--- trunk/priv/ir_inject.c (original)
+++ trunk/priv/ir_inject.c Sat May 16 17:16:37 2015
@@ -141,7 +141,7 @@
/* Store a value to memory. If a value requires more than 8 bytes a series
of 8-byte stores will be generated. */
-static void __inline__
+static __inline__ void
store(IRSB *irsb, IREndness endian, HWord haddr, IRExpr *data)
{
IROp high, low;
|
Author: rhyskidd
Date: Sat May 16 15:48:08 2015
New Revision: 15242
Log:
Fix unhandled syscall: unix:132 (mkfifo) on OS X. bz#212291.
Modified:
trunk/NEWS
trunk/coregrind/m_syswrap/priv_syswrap-darwin.h
trunk/coregrind/m_syswrap/syswrap-darwin.c
trunk/memcheck/tests/darwin/scalar.c
trunk/memcheck/tests/darwin/scalar.stderr.exp
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Sat May 16 15:48:08 2015
@@ -76,6 +76,8 @@
201435 Fix Darwin: -v does not show kernel version
211256 Fixed an outdated comment regarding the default platform.
211926 Avoid compilation warnings in valgrind.h with -pedantic
+212291 Fix unhandled syscall: unix:132 (mkfifo) on OS X
+ == 263119
226609 Crediting upstream authors in man page
231257 Valgrind omits path when executing script from shebang line
254164 OS X task_info: UNKNOWN task message [id 3405, to mach_task_self(),
Modified: trunk/coregrind/m_syswrap/priv_syswrap-darwin.h
==============================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-darwin.h (original)
+++ trunk/coregrind/m_syswrap/priv_syswrap-darwin.h Sat May 16 15:48:08 2015
@@ -189,7 +189,7 @@
// old truncate
// old ftruncate
// GEN flock 131
-// NYI mkfifo 132
+DECL_TEMPLATE(darwin, mkfifo); // 132
DECL_TEMPLATE(darwin, sendto); // 133
DECL_TEMPLATE(darwin, shutdown); // 134
DECL_TEMPLATE(darwin, socketpair); // 135
Modified: trunk/coregrind/m_syswrap/syswrap-darwin.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-darwin.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-darwin.c Sat May 16 15:48:08 2015
@@ -3590,6 +3590,25 @@
SET_STATUS_from_SysRes(r);
}
+PRE(mkfifo)
+{
+ *flags |= SfMayBlock;
+ PRINT("mkfifo ( %#lx(%s), %ld )",ARG1,(char *)ARG1,(vki_mode_t)ARG2);
+ PRE_REG_READ2(long, "mkfifo", const char *, path, vki_mode_t, mode);
+ PRE_MEM_RASCIIZ( "mkfifo(path)", ARG1 );
+}
+
+POST(mkfifo)
+{
+ vg_assert(SUCCESS);
+ if (!ML_(fd_allowed)(RES, "mkfifo", tid, True)) {
+ VG_(close)(RES);
+ SET_STATUS_Failure( VKI_EMFILE );
+ } else {
+ if (VG_(clo_track_fds))
+ ML_(record_fd_open_with_given_name)(tid, RES, (Char*)ARG1);
+ }
+}
PRE(sendto)
{
@@ -9479,7 +9498,7 @@
_____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(129)), // old truncate
_____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(130)), // old ftruncate
GENX_(__NR_flock, sys_flock),
-// _____(__NR_mkfifo),
+ MACX_(__NR_mkfifo, mkfifo),
MACX_(__NR_sendto, sendto),
MACX_(__NR_shutdown, shutdown),
MACXY(__NR_socketpair, socketpair),
Modified: trunk/memcheck/tests/darwin/scalar.c
==============================================================================
--- trunk/memcheck/tests/darwin/scalar.c (original)
+++ trunk/memcheck/tests/darwin/scalar.c Sat May 16 15:48:08 2015
@@ -259,7 +259,10 @@
GO_UNIMP(130, "old ftruncate");
// __NR_flock 131
- // __NR_mkfifo 132
+
+ GO(__NR_mkfifo, 132, "2s 1m");
+ SY(__NR_mkfifo, x0, x0); FAIL;
+
// __NR_sendto 133
// __NR_shutdown 134
// __NR_socketpair 135
Modified: trunk/memcheck/tests/darwin/scalar.stderr.exp
==============================================================================
--- trunk/memcheck/tests/darwin/scalar.stderr.exp (original)
+++ trunk/memcheck/tests/darwin/scalar.stderr.exp Sat May 16 15:48:08 2015
@@ -386,6 +386,19 @@
(130): old ftruncate
-----------------------------------------------------
-----------------------------------------------------
+x2000084(132): __NR_mkfifo 2s 1m
+-----------------------------------------------------
+Syscall param mkfifo(mode) contains uninitialised byte(s)
+ ...
+ by 0x........: main (in ./scalar)
+
+Syscall param mkfifo(path) points to unaddressable byte(s)
+ ...
+ by 0x........: main (in ./scalar)
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+-----------------------------------------------------
+-----------------------------------------------------
(141): old getpeername
-----------------------------------------------------
-----------------------------------------------------
|
|
From: <sv...@va...> - 2015-05-16 14:18:44
|
Author: rhyskidd
Date: Sat May 16 15:18:36 2015
New Revision: 15241
Log:
Add (presently) failing test case for bz#212291.
Added:
trunk/memcheck/tests/darwin/mkfifo.c
trunk/memcheck/tests/darwin/mkfifo.stderr.exp
trunk/memcheck/tests/darwin/mkfifo.vgtest
Modified:
trunk/memcheck/tests/darwin/ (props changed)
trunk/memcheck/tests/darwin/Makefile.am
Modified: trunk/memcheck/tests/darwin/Makefile.am
==============================================================================
--- trunk/memcheck/tests/darwin/Makefile.am (original)
+++ trunk/memcheck/tests/darwin/Makefile.am Sat May 16 15:18:36 2015
@@ -11,6 +11,7 @@
env.stderr.exp env.vgtest \
pth-supp.stderr.exp pth-supp.vgtest \
pth-undocumented.stderr.exp pth-undocumented.stdout.exp pth-undocumented.vgtest \
+ mkfifo.stderr.exp mkfifo.vgtest \
scalar.stderr.exp scalar.vgtest \
scalar_fork.stderr.exp scalar_fork.vgtest \
scalar_nocancel.stderr.exp scalar_nocancel.vgtest \
@@ -22,6 +23,7 @@
env \
pth-supp \
pth-undocumented \
+ mkfifo \
scalar \
scalar_fork \
scalar_nocancel \
Added: trunk/memcheck/tests/darwin/mkfifo.c
==============================================================================
--- trunk/memcheck/tests/darwin/mkfifo.c (added)
+++ trunk/memcheck/tests/darwin/mkfifo.c Sat May 16 15:18:36 2015
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sys/syscall.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#ifndef SYS_mkfifo
+# define SYS_mkfifo 132
+#endif
+
+static char f_name[]="mkfifo_data_file";
+
+int mkfifo(const char *path)
+{
+ return syscall(SYS_mkfifo, path);
+}
+
+int main(void)
+{
+ int fd;
+
+ fd = mkfifo(f_name);
+
+ if (fd == -1)
+ perror("mkfifo"), exit(1);
+
+ unlink(f_name);
+
+ return 0;
+}
Added: trunk/memcheck/tests/darwin/mkfifo.stderr.exp
==============================================================================
(empty)
Added: trunk/memcheck/tests/darwin/mkfifo.vgtest
==============================================================================
--- trunk/memcheck/tests/darwin/mkfifo.vgtest (added)
+++ trunk/memcheck/tests/darwin/mkfifo.vgtest Sat May 16 15:18:36 2015
@@ -0,0 +1,2 @@
+prog: mkfifo
+vgopts: -q
|
Author: florian
Date: Sat May 16 13:23:29 2015
New Revision: 15240
Log:
Merge from trunk
Added:
branches/ASPACEM_TWEAKS/helgrind/tests/pth_cond_destroy_busy.stderr.exp-ppc64
- copied unchanged from r15239, trunk/helgrind/tests/pth_cond_destroy_busy.stderr.exp-ppc64
branches/ASPACEM_TWEAKS/massif/tests/big-alloc.post.exp-ppc64
- copied unchanged from r15239, trunk/massif/tests/big-alloc.post.exp-ppc64
branches/ASPACEM_TWEAKS/massif/tests/deep-D.post.exp-ppc64
- copied unchanged from r15239, trunk/massif/tests/deep-D.post.exp-ppc64
Modified:
branches/ASPACEM_TWEAKS/ (props changed)
branches/ASPACEM_TWEAKS/NEWS
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-common.c
branches/ASPACEM_TWEAKS/coregrind/m_gdbserver/server.c
branches/ASPACEM_TWEAKS/coregrind/m_libcassert.c
branches/ASPACEM_TWEAKS/coregrind/m_libcfile.c
branches/ASPACEM_TWEAKS/coregrind/m_stacks.c
branches/ASPACEM_TWEAKS/coregrind/m_xarray.c
branches/ASPACEM_TWEAKS/helgrind/hg_main.c
branches/ASPACEM_TWEAKS/helgrind/libhb_core.c
branches/ASPACEM_TWEAKS/helgrind/tests/Makefile.am
branches/ASPACEM_TWEAKS/include/vki/vki-scnums-tilegx-linux.h
branches/ASPACEM_TWEAKS/massif/tests/Makefile.am
branches/ASPACEM_TWEAKS/memcheck/mc_leakcheck.c
branches/ASPACEM_TWEAKS/memcheck/tests/filter_strchr
branches/ASPACEM_TWEAKS/memcheck/tests/supp_unknown.supp
branches/ASPACEM_TWEAKS/memcheck/tests/supp_unknown.vgtest
branches/ASPACEM_TWEAKS/shared/vg_replace_strmem.c
branches/ASPACEM_TWEAKS/tests/filter_libc
Modified: branches/ASPACEM_TWEAKS/NEWS
==============================================================================
--- branches/ASPACEM_TWEAKS/NEWS (original)
+++ branches/ASPACEM_TWEAKS/NEWS Sat May 16 13:23:29 2015
@@ -48,6 +48,14 @@
* Valgrind can be built with Intel's ICC compiler. The required
compiler version is 14.0 or later.
+* New and modified GDB server monitor features:
+
+ - With recent GDB (>= 7.9.50.20150514-cvs), the command 'target remote'
+ will automatically load the executable file of the process running
+ under Valgrind. This means you do not need to specify the executable
+ file yourself, GDB will discover it itself.
+ See GDB documentation about 'qXfer:exec-file:read' packet for more info.
+
* ==================== FIXED BUGS ====================
The following bugs have been fixed or resolved. Note that "n-i-bz"
@@ -173,6 +181,7 @@
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
+347233 Fix memcheck/tests/strchr on OS X 10.10 (Haswell)
347379 valgrind --leak-check=full memleak errors from system libraries on OS X 10.8
== 217236
347389 unhandled syscall: 373 (Linux ARM syncfs)
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-common.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-common.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-common.c Sat May 16 13:23:29 2015
@@ -247,7 +247,7 @@
SysRes res = VG_(do_syscall4)(__NR_openat,
VKI_AT_FDCWD, (UWord)pathname, flags, mode);
# elif defined(VGP_tilegx_linux)
- SysRes res = VG_(do_syscall4)(__NR_openat, AT_FDCWD, (UWord)pathname,
+ SysRes res = VG_(do_syscall4)(__NR_openat, VKI_AT_FDCWD, (UWord)pathname,
flags, mode);
# else
SysRes res = VG_(do_syscall3)(__NR_open, (UWord)pathname, flags, mode);
@@ -273,8 +273,8 @@
res = VG_(do_syscall4)(__NR_readlinkat, VKI_AT_FDCWD,
(UWord)path, (UWord)buf, bufsiz);
# elif defined(VGP_tilegx_linux)
- res = VG_(do_syscall4)(__NR_readlinkat, AT_FDCWD, (UWord)path, (UWord)buf,
- bufsiz);
+ res = VG_(do_syscall4)(__NR_readlinkat, VKI_AT_FDCWD, (UWord)path,
+ (UWord)buf, bufsiz);
# else
res = VG_(do_syscall3)(__NR_readlink, (UWord)path, (UWord)buf, bufsiz);
# endif
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 Sat May 16 13:23:29 2015
@@ -916,6 +916,63 @@
return;
}
+ if (strncmp ("qXfer:exec-file:read:", arg_own_buf, 21) == 0) {
+ unsigned char *data;
+ int n;
+ CORE_ADDR ofs;
+ unsigned int len;
+ const char *annex;
+ unsigned long pid;
+ const HChar *name;
+
+ /* Reject any annex; grab the offset and length. */
+ if (decode_xfer_read (arg_own_buf + 21, &annex, &ofs, &len) < 0) {
+ strcpy (arg_own_buf, "E00");
+ return;
+ }
+
+ if (strlen(annex) > 0)
+ pid = strtoul (annex, NULL, 16);
+ else
+ pid = 0;
+ if ((int)pid != VG_(getpid)() && pid != 0) {
+ VG_(sprintf) (arg_own_buf,
+ "E.Valgrind gdbserver pid is %d."
+ " Cannot give info for pid %d",
+ VG_(getpid)(), (int) pid);
+ return;
+ }
+
+ if (len > PBUFSIZ - 2)
+ len = PBUFSIZ - 2;
+ data = malloc (len);
+
+ if (!VG_(resolve_filename)(VG_(cl_exec_fd), &name)) {
+ VG_(sprintf) (arg_own_buf,
+ "E.Valgrind gdbserver could not"
+ " resolve pid %d exec filename.",
+ VG_(getpid)());
+ return;
+ }
+
+ if (ofs >= strlen(name))
+ n = -1;
+ else {
+ n = strlen(name) - ofs;
+ VG_(memcpy) (data, name, n);
+ }
+
+ if (n < 0)
+ write_enn (arg_own_buf);
+ else if (n > len)
+ *new_packet_len_p = write_qxfer_response (arg_own_buf, data, len, 1);
+ else
+ *new_packet_len_p = write_qxfer_response (arg_own_buf, data, n, 0);
+
+ free (data);
+
+ return;
+ }
/* Protocol features query. */
if (strncmp ("qSupported", arg_own_buf, 10) == 0
@@ -923,7 +980,7 @@
VG_(sprintf) (arg_own_buf, "PacketSize=%x", PBUFSIZ - 1);
/* Note: max packet size including frame and checksum, but without
trailing null byte, which is not sent/received. */
-
+
strcat (arg_own_buf, ";QStartNoAckMode+");
strcat (arg_own_buf, ";QPassSignals+");
if (VG_(client_auxv))
@@ -942,6 +999,7 @@
not properly connect. */
initialize_shadow_low(False);
}
+ strcat (arg_own_buf, ";qXfer:exec-file:read+");
return;
}
Modified: branches/ASPACEM_TWEAKS/coregrind/m_libcassert.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_libcassert.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_libcassert.c Sat May 16 13:23:29 2015
@@ -369,8 +369,9 @@
has exited, then valgrind_stack_base points to the stack base. */
if (VG_(threads)[i].status == VgTs_Empty
&& (!exited_threads || stack == 0)) continue;
- VG_(printf)("\nThread %d: status = %s\n", i,
- VG_(name_of_ThreadStatus)(VG_(threads)[i].status) );
+ VG_(printf)("\nThread %d: status = %s (lwpid %d)\n", i,
+ VG_(name_of_ThreadStatus)(VG_(threads)[i].status),
+ VG_(threads)[i].os_state.lwpid);
if (VG_(threads)[i].status != VgTs_Empty)
VG_(get_and_pp_StackTrace)( i, BACKTRACE_DEPTH );
if (stack_usage && VG_(threads)[i].client_stack_highest_byte != 0 ) {
@@ -388,8 +389,8 @@
if (stack_usage && stack != 0)
VG_(printf)("valgrind stack top usage: %ld of %ld\n",
VG_(clo_valgrind_stacksize)
- - VG_(am_get_VgStack_unused_szB)(stack,
- VG_(clo_valgrind_stacksize)),
+ - VG_(am_get_VgStack_unused_szB)
+ (stack, VG_(clo_valgrind_stacksize)),
(SizeT) VG_(clo_valgrind_stacksize));
}
VG_(printf)("\n");
Modified: branches/ASPACEM_TWEAKS/coregrind/m_libcfile.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_libcfile.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_libcfile.c Sat May 16 13:23:29 2015
@@ -435,7 +435,7 @@
Int VG_(rename) ( const HChar* old_name, const HChar* new_name )
{
# if defined(VGP_tilegx_linux)
- SysRes res = VG_(do_syscall3)(__NR_renameat, AT_FDCWD,
+ SysRes res = VG_(do_syscall3)(__NR_renameat, VKI_AT_FDCWD,
(UWord)old_name, (UWord)new_name);
# else
SysRes res = VG_(do_syscall2)(__NR_rename, (UWord)old_name, (UWord)new_name);
Modified: branches/ASPACEM_TWEAKS/coregrind/m_stacks.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_stacks.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_stacks.c Sat May 16 13:23:29 2015
@@ -272,7 +272,7 @@
Stack* stack = find_stack_by_addr(SP);
NSegment const *stackseg = VG_(am_find_nsegment) (SP);
- if (stack) {
+ if (LIKELY(stack)) {
*start = stack->start;
*end = stack->end;
}
@@ -284,7 +284,7 @@
stack for SP, and set *start and *end to 0.
Otherwise, possibly reduce the stack limits using the boundaries of
the RW segment/SkResvn segments containing SP. */
- if (stackseg == NULL) {
+ if (UNLIKELY(stackseg == NULL)) {
VG_(debugLog)(2, "stacks",
"no addressable segment for SP %p\n",
(void*)SP);
@@ -293,8 +293,8 @@
return;
}
- if ((!stackseg->hasR || !stackseg->hasW)
- && (stackseg->kind != SkResvn || stackseg->smode != SmUpper)) {
+ if (UNLIKELY((!stackseg->hasR || !stackseg->hasW)
+ && (stackseg->kind != SkResvn || stackseg->smode != SmUpper))) {
VG_(debugLog)(2, "stacks",
"segment for SP %p is not RW or not a SmUpper Resvn\n",
(void*)SP);
@@ -303,8 +303,9 @@
return;
}
- // SP is in a RW segment, or in the SkResvn of an extensible stack.
- if (*start < stackseg->start) {
+ /* SP is in a RW segment, or in the SkResvn of an extensible stack.
+ We can use the seg start as the stack start limit. */
+ if (UNLIKELY(*start < stackseg->start)) {
VG_(debugLog)(2, "stacks",
"segment for SP %p changed stack start limit"
" from %p to %p\n",
@@ -312,7 +313,10 @@
*start = stackseg->start;
}
- if (stackseg->kind == SkResvn) {
+ /* Now, determine the stack end limit. If the stackseg is SkResvn,
+ we need to get the neighbour segment (towards higher addresses).
+ This segment must be anonymous and RW. */
+ if (UNLIKELY(stackseg->kind == SkResvn)) {
stackseg = VG_(am_next_nsegment)(stackseg, /*forward*/ True);
if (!stackseg || !stackseg->hasR || !stackseg->hasW
|| stackseg->kind != SkAnonC) {
@@ -326,7 +330,8 @@
}
}
- if (*end > stackseg->end) {
+ /* Limit the stack end limit, using the found segment. */
+ if (UNLIKELY(*end > stackseg->end)) {
VG_(debugLog)(2, "stacks",
"segment for SP %p changed stack end limit"
" from %p to %p\n",
@@ -336,7 +341,7 @@
/* If reducing start and/or end to the SP segment gives an
empty range, return 'empty' limits */
- if (*start > *end) {
+ if (UNLIKELY(*start > *end)) {
VG_(debugLog)(2, "stacks",
"stack for SP %p start %p after end %p\n",
(void*)SP, (void*)*start, (void*)end);
Modified: branches/ASPACEM_TWEAKS/coregrind/m_xarray.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_xarray.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_xarray.c Sat May 16 13:23:29 2015
@@ -128,9 +128,10 @@
inline void* VG_(indexXA) ( const XArray* xa, Word n )
{
vg_assert(xa);
- // vg_assert(n >= 0); If n negative, the UWord conversion will make
- // it bigger than usedsizeE.
- vg_assert((UWord)n < xa->usedsizeE);
+ /* vg_assert(n >= 0); If n negative, the UWord conversion will make
+ it bigger than usedsizeE, which is verified to be non negative when
+ xa is modified. */
+ vg_assert((UWord)n < (UWord)xa->usedsizeE);
return ((char*)xa->arr) + n * xa->elemSzB;
}
Modified: branches/ASPACEM_TWEAKS/helgrind/hg_main.c
==============================================================================
--- branches/ASPACEM_TWEAKS/helgrind/hg_main.c (original)
+++ branches/ASPACEM_TWEAKS/helgrind/hg_main.c Sat May 16 13:23:29 2015
@@ -5568,7 +5568,11 @@
VG_(track_die_mem_stack_signal)( evh__die_mem );
VG_(track_die_mem_brk) ( evh__die_mem_munmap );
VG_(track_die_mem_munmap) ( evh__die_mem_munmap );
- VG_(track_die_mem_stack) ( evh__die_mem );
+
+ /* evh__die_mem calls at the end libhb_srange_noaccess_NoFX
+ which has no effect. We do not use VG_(track_die_mem_stack),
+ as this would be an expensive way to do nothing. */
+ // VG_(track_die_mem_stack) ( evh__die_mem );
// FIXME: what is this for?
VG_(track_ban_mem_stack) (NULL);
Modified: branches/ASPACEM_TWEAKS/helgrind/libhb_core.c
==============================================================================
--- branches/ASPACEM_TWEAKS/helgrind/libhb_core.c (original)
+++ branches/ASPACEM_TWEAKS/helgrind/libhb_core.c Sat May 16 13:23:29 2015
@@ -899,6 +899,34 @@
}
}
+/* Returns the nr of linesF which are in use. Note: this is scanning
+ the secmap wordFM. So, this is to be used for statistics only. */
+__attribute__((noinline))
+static UWord shmem__SecMap_used_linesF(void)
+{
+ UWord secmapW = 0;
+ Addr gaKey;
+ UWord inUse = 0;
+ UWord total = 0;
+
+ VG_(initIterFM)( map_shmem );
+ while (VG_(nextIterFM)( map_shmem, &gaKey, &secmapW )) {
+ UWord i;
+ SecMap* sm = (SecMap*)secmapW;
+ tl_assert(sm->magic == SecMap_MAGIC);
+
+ for (i = 0; i < sm->linesF_size; i++) {
+ LineF* lineF = &sm->linesF[i];
+ if (lineF->inUse)
+ inUse++;
+ total++;
+ }
+ }
+ VG_(doneIterFM)( map_shmem );
+ tl_assert (stats__secmap_linesF_allocd == total);
+
+ return inUse;
+}
/* ------------ LineF and LineZ related ------------ */
@@ -1647,7 +1675,7 @@
if (address_in_range(cache_shmem.tags0[ga_ix], ga, szB))
cache_shmem.tags0[ga_ix] = 1/*INVALID*/;
ga_ix++;
- if (ga_ix == N_WAY_NENT)
+ if (UNLIKELY(ga_ix == N_WAY_NENT))
ga_ix = 0;
}
}
@@ -3568,9 +3596,12 @@
}
}
-static void Filter__clear_range ( Filter* fi, Addr a, UWord len )
+/* Only used to verify the fast Filter__clear_range */
+__attribute__((unused))
+static void Filter__clear_range_SLOW ( Filter* fi, Addr a, UWord len )
{
- //VG_(printf)("%lu ", len);
+ tl_assert (CHECK_ZSM);
+
/* slowly do part preceding 8-alignment */
while (UNLIKELY(!VG_IS_8_ALIGNED(a)) && LIKELY(len > 0)) {
Filter__clear_1byte( fi, a );
@@ -3591,6 +3622,151 @@
}
}
+static void Filter__clear_range ( Filter* fi, Addr a, UWord len )
+{
+# if CHECK_ZSM > 0
+ /* We check the below more complex algorithm with the simple one.
+ This check is very expensive : we do first the slow way on a
+ copy of the data, then do it the fast way. On RETURN, we check
+ the two values are equal. */
+ Filter fi_check = *fi;
+ Filter__clear_range_SLOW(&fi_check, a, len);
+# define RETURN goto check_and_return
+# else
+# define RETURN return
+# endif
+
+ Addr begtag = FI_GET_TAG(a); /* tag of range begin */
+
+ Addr end = a + len - 1;
+ Addr endtag = FI_GET_TAG(end); /* tag of range end. */
+
+ UWord rlen = len; /* remaining length to clear */
+
+ Addr c = a; /* Current position we are clearing. */
+ UWord clineno = FI_GET_LINENO(c); /* Current lineno we are clearing */
+ FiLine* cline; /* Current line we are clearing */
+ UWord cloff; /* Current offset in line we are clearing, when clearing
+ partial lines. */
+
+ UShort u16;
+
+ STATIC_ASSERT (FI_LINE_SZB == 32);
+ // Below assumes filter lines are 32 bytes
+
+ if (LIKELY(fi->tags[clineno] == begtag)) {
+ /* LIKELY for the heavy caller VG_(unknown_SP_update). */
+ /* First filter line matches begtag.
+ If c is not at the filter line begin, the below will clear
+ the filter line bytes starting from c. */
+ cline = &fi->lines[clineno];
+ cloff = (c - begtag) / 8;
+
+ /* First the byte(s) needed to reach 8-alignment */
+ if (UNLIKELY(!VG_IS_8_ALIGNED(c))) {
+ /* hiB is the nr of bytes (higher addresses) from c to reach
+ 8-aligment. */
+ UWord hiB = 8 - (c & 7);
+ /* Compute 2-bit/byte mask representing hiB bytes [c..c+hiB[
+ mask is C000 , F000, FC00, FF00, FFC0, FFF0 or FFFC for the byte
+ range 7..7 6..7 5..7 4..7 3..7 2..7 1..7 */
+ UShort mask = 0xFFFF << (16 - 2*hiB);
+
+ u16 = cline->u16s[cloff];
+ if (LIKELY(rlen >= hiB)) {
+ cline->u16s[cloff] = u16 & ~mask; /* clear all hiB from c */
+ rlen -= hiB;
+ c += hiB;
+ cloff += 1;
+ } else {
+ /* Only have the bits for rlen bytes bytes. */
+ mask = mask & ~(0xFFFF << (16 - 2*(hiB-rlen)));
+ cline->u16s[cloff] = u16 & ~mask; /* clear rlen bytes from c. */
+ RETURN; // We have cleared all what we can.
+ }
+ }
+ /* c is now 8 aligned. Clear by 8 aligned bytes,
+ till c is filter-line aligned */
+ while (!VG_IS_32_ALIGNED(c) && rlen >= 8) {
+ cline->u16s[cloff] = 0;
+ c += 8;
+ rlen -= 8;
+ cloff += 1;
+ }
+ } else {
+ c = begtag + FI_LINE_SZB;
+ if (c > end)
+ RETURN; // We have cleared all what we can.
+ rlen -= c - a;
+ }
+ // We have changed c, so re-establish clineno.
+ clineno = FI_GET_LINENO(c);
+
+ if (rlen >= FI_LINE_SZB) {
+ /* Here, c is filter line-aligned. Clear all full lines that
+ overlap with the range starting at c, made of a full lines */
+ UWord nfull = rlen / FI_LINE_SZB;
+ UWord full_len = nfull * FI_LINE_SZB;
+ rlen -= full_len;
+ if (nfull > FI_NUM_LINES)
+ nfull = FI_NUM_LINES; // no need to check several times the same entry.
+
+ for (UWord n = 0; n < nfull; n++) {
+ if (UNLIKELY(address_in_range(fi->tags[clineno], c, full_len))) {
+ cline = &fi->lines[clineno];
+ cline->u16s[0] = 0;
+ cline->u16s[1] = 0;
+ cline->u16s[2] = 0;
+ cline->u16s[3] = 0;
+ STATIC_ASSERT (4 == sizeof(cline->u16s)/sizeof(cline->u16s[0]));
+ }
+ clineno++;
+ if (UNLIKELY(clineno == FI_NUM_LINES))
+ clineno = 0;
+ }
+
+ c += full_len;
+ clineno = FI_GET_LINENO(c);
+ }
+
+ if (CHECK_ZSM) {
+ tl_assert(VG_IS_8_ALIGNED(c));
+ tl_assert(clineno == FI_GET_LINENO(c));
+ }
+
+ /* Do the last filter line, if it was not cleared as a full filter line */
+ if (UNLIKELY(rlen > 0) && fi->tags[clineno] == endtag) {
+ cline = &fi->lines[clineno];
+ cloff = (c - endtag) / 8;
+ if (CHECK_ZSM) tl_assert(FI_GET_TAG(c) == endtag);
+
+ /* c is 8 aligned. Clear by 8 aligned bytes, till we have less than
+ 8 bytes. */
+ while (rlen >= 8) {
+ cline->u16s[cloff] = 0;
+ c += 8;
+ rlen -= 8;
+ cloff += 1;
+ }
+ /* Then the remaining byte(s) */
+ if (rlen > 0) {
+ /* nr of bytes from c to reach end. */
+ UWord loB = rlen;
+ /* Compute mask representing loB bytes [c..c+loB[ :
+ mask is 0003, 000F, 003F, 00FF, 03FF, 0FFF or 3FFF */
+ UShort mask = 0xFFFF >> (16 - 2*loB);
+
+ u16 = cline->u16s[cloff];
+ cline->u16s[cloff] = u16 & ~mask; /* clear all loB from c */
+ }
+ }
+
+# if CHECK_ZSM > 0
+ check_and_return:
+ tl_assert (VG_(memcmp)(&fi_check, fi, sizeof(fi_check)) == 0);
+# endif
+# undef RETURN
+}
/* ------ Read handlers for the filter. ------ */
@@ -6186,9 +6362,10 @@
VG_(printf)(" linesZ: %'10lu allocd (%'12lu bytes occupied)\n",
stats__secmap_linesZ_allocd,
stats__secmap_linesZ_bytes);
- VG_(printf)(" linesF: %'10lu allocd (%'12lu bytes occupied)\n",
- stats__secmap_linesF_allocd,
- stats__secmap_linesF_bytes);
+ VG_(printf)(" linesF: %'10lu allocd (%'12lu bytes occupied)"
+ " (%'10lu used)\n",
+ stats__secmap_linesF_allocd, stats__secmap_linesF_bytes,
+ shmem__SecMap_used_linesF());
VG_(printf)(" secmaps: %'10lu in map (can be scanGCed %'5lu)"
" #%lu scanGC \n",
stats__secmaps_in_map_shmem,
@@ -6786,7 +6963,7 @@
if (CHECK_ZSM) tl_assert(is_sane_SecMap(sm));
for (UInt lz = 0; lz < N_SECMAP_ZLINES; lz++) {
- if (sm->linesZ[lz].dict[0] != SVal_INVALID)
+ if (LIKELY(sm->linesZ[lz].dict[0] != SVal_INVALID))
rcdec_LineZ(&sm->linesZ[lz]);
}
for (UInt lf = 0; lf < sm->linesF_size; lf++) {
Modified: branches/ASPACEM_TWEAKS/helgrind/tests/Makefile.am
==============================================================================
--- branches/ASPACEM_TWEAKS/helgrind/tests/Makefile.am (original)
+++ branches/ASPACEM_TWEAKS/helgrind/tests/Makefile.am Sat May 16 13:23:29 2015
@@ -46,6 +46,7 @@
pth_destroy_cond.vgtest \
pth_destroy_cond.stdout.exp pth_destroy_cond.stderr.exp \
pth_cond_destroy_busy.vgtest pth_cond_destroy_busy.stderr.exp \
+ pth_cond_destroy_busy.stderr.exp-ppc64 \
pth_spinlock.vgtest pth_spinlock.stdout.exp pth_spinlock.stderr.exp \
rwlock_race.vgtest rwlock_race.stdout.exp rwlock_race.stderr.exp \
rwlock_test.vgtest rwlock_test.stdout.exp rwlock_test.stderr.exp \
Modified: branches/ASPACEM_TWEAKS/include/vki/vki-scnums-tilegx-linux.h
==============================================================================
--- branches/ASPACEM_TWEAKS/include/vki/vki-scnums-tilegx-linux.h (original)
+++ branches/ASPACEM_TWEAKS/include/vki/vki-scnums-tilegx-linux.h Sat May 16 13:23:29 2015
@@ -33,8 +33,6 @@
#ifndef __VKI_SCNUMS_TILEGX_LINUX_H
#define __VKI_SCNUMS_TILEGX_LINUX_H
-#define AT_FDCWD -100
-
/* From tilegx linux/include/asm-generic/unistd.h */
#define __NR_io_setup 0
Modified: branches/ASPACEM_TWEAKS/massif/tests/Makefile.am
==============================================================================
--- branches/ASPACEM_TWEAKS/massif/tests/Makefile.am (original)
+++ branches/ASPACEM_TWEAKS/massif/tests/Makefile.am Sat May 16 13:23:29 2015
@@ -8,12 +8,13 @@
alloc-fns-B.post.exp alloc-fns-B.stderr.exp alloc-fns-B.vgtest \
basic.post.exp basic.stderr.exp basic.vgtest \
basic2.post.exp basic2.stderr.exp basic2.vgtest \
- big-alloc.post.exp big-alloc.post.exp-64bit \
+ big-alloc.post.exp big-alloc.post.exp-64bit big-alloc.post.exp-ppc64 \
big-alloc.stderr.exp big-alloc.vgtest \
deep-A.post.exp deep-A.stderr.exp deep-A.vgtest \
deep-B.post.exp deep-B.stderr.exp deep-B.vgtest \
deep-C.post.exp deep-C.stderr.exp deep-C.vgtest \
deep-D.post.exp deep-D.stderr.exp deep-D.vgtest \
+ deep-D.post.exp-ppc64 \
culling1.stderr.exp culling1.vgtest \
culling2.stderr.exp culling2.vgtest \
custom_alloc.post.exp custom_alloc.stderr.exp custom_alloc.vgtest \
Modified: branches/ASPACEM_TWEAKS/memcheck/mc_leakcheck.c
==============================================================================
--- branches/ASPACEM_TWEAKS/memcheck/mc_leakcheck.c (original)
+++ branches/ASPACEM_TWEAKS/memcheck/mc_leakcheck.c Sat May 16 13:23:29 2015
@@ -648,9 +648,9 @@
if (pot_fn == 0)
continue; // NULL fn pointer. Seems it can happen in vtable.
seg = VG_(am_find_nsegment) (pot_fn);
-#if defined(VGA_ppc64be) || defined(VGA_ppc64le)
- // ppc64 use a thunk table. So, we have one more level of indirection
- // to follow.
+#if defined(VGA_ppc64be)
+ // ppc64BE uses a thunk table (function descriptors), so we have one
+ // more level of indirection to follow.
if (seg == NULL
|| seg->kind != SkFileC
|| !seg->hasR
Modified: branches/ASPACEM_TWEAKS/memcheck/tests/filter_strchr
==============================================================================
--- branches/ASPACEM_TWEAKS/memcheck/tests/filter_strchr (original)
+++ branches/ASPACEM_TWEAKS/memcheck/tests/filter_strchr Sat May 16 13:23:29 2015
@@ -5,4 +5,5 @@
sed -e "s/: strchr (vg_replace_strmem.c:/: index (vg_replace_strmem.c:/;
s/: _platform_strchr (vg_replace_strmem.c:/: index (vg_replace_strmem.c:/;
s/: _platform_strchr\$VARIANT\$Generic (vg_replace_strmem.c:/: index (vg_replace_strmem.c:/;
+ s/: _platform_strchr\$VARIANT\$Haswell (vg_replace_strmem.c:/: index (vg_replace_strmem.c:/;
s/: strrchr (vg_replace_strmem.c:/: rindex (vg_replace_strmem.c:/"
Modified: branches/ASPACEM_TWEAKS/memcheck/tests/supp_unknown.supp
==============================================================================
--- branches/ASPACEM_TWEAKS/memcheck/tests/supp_unknown.supp (original)
+++ branches/ASPACEM_TWEAKS/memcheck/tests/supp_unknown.supp Sat May 16 13:23:29 2015
@@ -13,3 +13,10 @@
fun:main
}
+{
+ <insert_a_suppression_name_here>
+ Memcheck:Jump
+ obj:*
+ fun:generic_start_main.isra.0
+ fun:(below main)
+}
Modified: branches/ASPACEM_TWEAKS/memcheck/tests/supp_unknown.vgtest
==============================================================================
--- branches/ASPACEM_TWEAKS/memcheck/tests/supp_unknown.vgtest (original)
+++ branches/ASPACEM_TWEAKS/memcheck/tests/supp_unknown.vgtest Sat May 16 13:23:29 2015
@@ -1,4 +1,4 @@
vgopts: -q --suppressions=supp_unknown.supp
-prog: badjump
+prog: supp_unknown
cleanup: rm -f vgcore.*
stderr_filter_args: badjump.c
Modified: branches/ASPACEM_TWEAKS/shared/vg_replace_strmem.c
==============================================================================
--- branches/ASPACEM_TWEAKS/shared/vg_replace_strmem.c (original)
+++ branches/ASPACEM_TWEAKS/shared/vg_replace_strmem.c Sat May 16 13:23:29 2015
@@ -248,6 +248,7 @@
# if DARWIN_VERS == DARWIN_10_10
/* _platform_strchr$VARIANT$Generic */
STRCHR(libsystemZuplatformZddylib, _platform_strchr$VARIANT$Generic)
+ STRCHR(libsystemZuplatformZddylib, _platform_strchr$VARIANT$Haswell)
# endif
#endif
Modified: branches/ASPACEM_TWEAKS/tests/filter_libc
==============================================================================
--- branches/ASPACEM_TWEAKS/tests/filter_libc (original)
+++ branches/ASPACEM_TWEAKS/tests/filter_libc Sat May 16 13:23:29 2015
@@ -22,6 +22,9 @@
# libc, on some (eg. Darwin) it will be in the main executable.
s/\(below main\) \(.+\)$/(below main)/;
+ # filter out the exact libc-start.c:### line number. (ppc64*)
+ s/\(libc-start.c:[0-9]*\)$/(in \/...libc...)/;
+
# Merge the different C++ operator variations.
s/(at.*)__builtin_new/$1...operator new.../;
s/(at.*)operator new\(unsigned(| int| long)\)/$1...operator new.../;
|