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
(21) |
2
(18) |
3
(19) |
4
(17) |
|
5
(6) |
6
(5) |
7
(9) |
8
(21) |
9
(16) |
10
(21) |
11
(22) |
|
12
(19) |
13
(19) |
14
(8) |
15
(16) |
16
(17) |
17
(16) |
18
(33) |
|
19
(33) |
20
(34) |
21
(32) |
22
(26) |
23
(23) |
24
(16) |
25
(21) |
|
26
(19) |
27
(7) |
28
(29) |
29
(27) |
30
(55) |
|
|
|
From: <sv...@va...> - 2005-06-24 22:17:48
|
Author: njn
Date: 2005-06-24 23:17:38 +0100 (Fri, 24 Jun 2005)
New Revision: 4015
Log:
Moved the mman VG_(*_native)() functions into m_aspacemgr, and removed
the unused init_shadow_page() function. As a result, m_aspacemgr no long=
er
depends on m_libcmman, breaking a circular module dependency, good!
Modified:
trunk/coregrind/m_aspacemgr/aspacemgr.c
trunk/coregrind/m_libcmman.c
trunk/coregrind/m_signals.c
trunk/coregrind/m_tooliface.c
trunk/coregrind/pub_core_aspacemgr.h
trunk/coregrind/pub_core_libcmman.h
trunk/coregrind/pub_core_tooliface.h
trunk/include/pub_tool_aspacemgr.h
trunk/include/pub_tool_tooliface.h
Modified: trunk/coregrind/m_aspacemgr/aspacemgr.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_aspacemgr/aspacemgr.c 2005-06-24 21:41:28 UTC (rev =
4014)
+++ trunk/coregrind/m_aspacemgr/aspacemgr.c 2005-06-24 22:17:38 UTC (rev =
4015)
@@ -36,7 +36,6 @@
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
#include "pub_core_libcfile.h" // For VG_(fstat), VG_(resolve_filename=
_nodup)
-#include "pub_core_libcmman.h"
#include "pub_core_libcprint.h"
#include "pub_core_syscall.h"
#include "pub_core_tooliface.h"
@@ -74,6 +73,47 @@
Addr VG_(valgrind_last);
=20
/*--------------------------------------------------------------*/
+/*--- The raw mman syscalls ---*/
+/*--------------------------------------------------------------*/
+
+SysRes VG_(mmap_native)(void *start, SizeT length, UInt prot, UInt flags=
,
+ UInt fd, OffT offset)
+{
+ SysRes res;
+#if defined(VGP_x86_linux)
+ {=20
+ UWord args[6];
+ args[0] =3D (UWord)start;
+ args[1] =3D length;
+ args[2] =3D prot;
+ args[3] =3D flags;
+ args[4] =3D fd;
+ args[5] =3D offset;
+ res =3D VG_(do_syscall1)(__NR_mmap, (UWord)args );
+ }
+#elif defined(VGP_amd64_linux)
+ res =3D VG_(do_syscall6)(__NR_mmap, (UWord)start, length,=20
+ prot, flags, fd, offset);
+#elif defined(VGP_ppc32_linux)
+ res =3D VG_(do_syscall6)(__NR_mmap, (UWord)(start), (length),
+ prot, flags, fd, offset);
+#else
+# error Unknown platform
+#endif
+ return res;
+}
+
+SysRes VG_(munmap_native)(void *start, SizeT length)
+{
+ return VG_(do_syscall2)(__NR_munmap, (UWord)start, length );
+}
+
+SysRes VG_(mprotect_native)( void *start, SizeT length, UInt prot )
+{
+ return VG_(do_syscall3)(__NR_mprotect, (UWord)start, length, prot );
+}
+
+/*--------------------------------------------------------------*/
/*--- A simple, self-contained ordered array of segments. ---*/
/*--------------------------------------------------------------*/
=20
@@ -1021,6 +1061,7 @@
=20
while (s && addr <=3D VG_(valgrind_last)) {
if (addr < s->addr) {
+ //ret =3D VG_(do_syscall2)(__NR_munmap, addr, s->addr - addr);
ret =3D VG_(do_syscall2)(__NR_munmap, addr, s->addr - addr);
}
addr =3D s->addr + s->len;
@@ -1153,30 +1194,6 @@
/*--- Handling shadow memory ---*/
/*--------------------------------------------------------------------*/
=20
-void VG_(init_shadow_range)(Addr p, UInt sz, Bool call_init)
-{
-vg_assert(0);
- if (0)
- VG_(printf)("init_shadow_range(%p, %d)\n", p, sz);
-
- vg_assert(VG_(needs).shadow_memory);
- vg_assert(VG_(tdict).track_init_shadow_page);
-
- sz =3D VG_PGROUNDUP(p+sz) - VG_PGROUNDDN(p);
- p =3D VG_PGROUNDDN(p);
-
- VG_(mprotect)((void *)p, sz, VKI_PROT_READ|VKI_PROT_WRITE);
- =20
- if (call_init)=20
- while(sz) {
- /* ask the tool to initialize each page */
- VG_TRACK( init_shadow_page, VG_PGROUNDDN(p) );
- =20
- p +=3D VKI_PAGE_SIZE;
- sz -=3D VKI_PAGE_SIZE;
- }
-}
-
void *VG_(shadow_alloc)(UInt size)
{
static Addr shadow_alloc =3D 0;
@@ -1186,7 +1203,6 @@
if (0) show_segments("shadow_alloc(before)");
=20
vg_assert(VG_(needs).shadow_memory);
- vg_assert(!VG_(tdict).track_init_shadow_page);
=20
size =3D VG_PGROUNDUP(size);
=20
Modified: trunk/coregrind/m_libcmman.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_libcmman.c 2005-06-24 21:41:28 UTC (rev 4014)
+++ trunk/coregrind/m_libcmman.c 2005-06-24 22:17:38 UTC (rev 4015)
@@ -38,33 +38,6 @@
#include "pub_core_syscall.h"
#include "vki_unistd.h"
=20
-SysRes VG_(mmap_native)(void *start, SizeT length, UInt prot, UInt flags=
,
- UInt fd, OffT offset)
-{
- SysRes res;
-#if defined(VGP_x86_linux)
- {=20
- UWord args[6];
- args[0] =3D (UWord)start;
- args[1] =3D length;
- args[2] =3D prot;
- args[3] =3D flags;
- args[4] =3D fd;
- args[5] =3D offset;
- res =3D VG_(do_syscall1)(__NR_mmap, (UWord)args );
- }
-#elif defined(VGP_amd64_linux)
- res =3D VG_(do_syscall6)(__NR_mmap, (UWord)start, length,=20
- prot, flags, fd, offset);
-#elif defined(VGP_ppc32_linux)
- res =3D VG_(do_syscall6)(__NR_mmap, (UWord)(start), (length),
- prot, flags, fd, offset);
-#else
-# error Unknown platform
-#endif
- return res;
-}
-
/* Returns -1 on failure. */
void* VG_(mmap)( void* start, SizeT length,
UInt prot, UInt flags, UInt sf_flags, UInt fd, OffT off=
set)
@@ -106,11 +79,6 @@
return res.isError ? (void*)-1 : (void*)res.val;
}
=20
-SysRes VG_(munmap_native)(void *start, SizeT length)
-{
- return VG_(do_syscall2)(__NR_munmap, (UWord)start, length );
-}
-
/* Returns -1 on failure. */
Int VG_(munmap)( void* start, SizeT length )
{
@@ -123,11 +91,6 @@
}
}
=20
-SysRes VG_(mprotect_native)( void *start, SizeT length, UInt prot )
-{
- return VG_(do_syscall3)(__NR_mprotect, (UWord)start, length, prot );
-}
-
Int VG_(mprotect)( void *start, SizeT length, UInt prot )
{
SysRes res =3D VG_(mprotect_native)(start, length, prot);
Modified: trunk/coregrind/m_signals.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_signals.c 2005-06-24 21:41:28 UTC (rev 4014)
+++ trunk/coregrind/m_signals.c 2005-06-24 22:17:38 UTC (rev 4015)
@@ -1885,28 +1885,8 @@
} else
VG_(message)(Vg_UserMsg, "Stack overflow in thread %d: can't grow s=
tack to %p",=20
tid, fault);
-
- /* Fall into normal signal handling for all other cases */
- } else if (info->si_code =3D=3D 2 && /* SEGV_ACCERR */
- VG_(needs).shadow_memory &&
- VG_(is_shadow_addr)(fault)) {
- /* If there's a fault within the shadow memory range, and it
- is a permissions fault, then it means that the client is
- using some memory which had not previously been used.
- This catches those faults, makes the memory accessible,
- and calls the tool to initialize that page.
- */
- static Int recursion =3D 0;
-
- if (recursion++ =3D=3D 0) {
- VG_(init_shadow_range)(VG_PGROUNDDN(fault), VKI_PAGE_SIZE, True);
- recursion--;
- return;
- } else {
- /* otherwise fall into normal SEGV handling */ =20
- recursion--;
- }
}
+ /* Fall into normal signal handling for all other cases */
}
=20
/* OK, this is a signal we really have to deal with. If it came
Modified: trunk/coregrind/m_tooliface.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_tooliface.c 2005-06-24 21:41:28 UTC (rev 4014)
+++ trunk/coregrind/m_tooliface.c 2005-06-24 22:17:38 UTC (rev 4015)
@@ -322,8 +322,6 @@
DEF(track_pre_deliver_signal, ThreadId, Int sigNo, Bool)
DEF(track_post_deliver_signal, ThreadId, Int sigNo)
=20
-DEF(track_init_shadow_page, Addr)
-
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/pub_core_aspacemgr.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/pub_core_aspacemgr.h 2005-06-24 21:41:28 UTC (rev 401=
4)
+++ trunk/coregrind/pub_core_aspacemgr.h 2005-06-24 22:17:38 UTC (rev 401=
5)
@@ -59,6 +59,12 @@
extern Addr VG_(valgrind_base); // valgrind's address range
extern Addr VG_(valgrind_last); // Nb: last byte, rather than one past =
the end
=20
+// Direct access to these system calls.
+extern SysRes VG_(mmap_native) ( void* start, SizeT length, UInt pro=
t,
+ UInt flags, UInt fd, OffT offset );
+extern SysRes VG_(munmap_native) ( void* start, SizeT length );
+extern SysRes VG_(mprotect_native) ( void *start, SizeT length, UInt pro=
t );
+
/* A Segment is mapped piece of client memory. This covers all kinds
of mapped memory (exe, brk, mmap, .so, shm, stack, etc)
=20
Modified: trunk/coregrind/pub_core_libcmman.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/pub_core_libcmman.h 2005-06-24 21:41:28 UTC (rev 4014=
)
+++ trunk/coregrind/pub_core_libcmman.h 2005-06-24 22:17:38 UTC (rev 4015=
)
@@ -43,11 +43,6 @@
extern Int VG_(munmap) ( void* start, SizeT length );
extern Int VG_(mprotect) ( void *start, SizeT length, UInt prot );
=20
-extern SysRes VG_(mmap_native) ( void* start, SizeT length, UInt pro=
t,
- UInt flags, UInt fd, OffT offset );
-extern SysRes VG_(munmap_native) ( void* start, SizeT length );
-extern SysRes VG_(mprotect_native) ( void *start, SizeT length, UInt pro=
t );
-
extern Addr VG_(get_memory_from_mmap_for_client)
(Addr base, SizeT len, UInt prot, UInt flags);
=20
Modified: trunk/coregrind/pub_core_tooliface.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/pub_core_tooliface.h 2005-06-24 21:41:28 UTC (rev 401=
4)
+++ trunk/coregrind/pub_core_tooliface.h 2005-06-24 22:17:38 UTC (rev 401=
5)
@@ -201,8 +201,6 @@
void (*track_pre_deliver_signal) (ThreadId, Int sigNo, Bool);
void (*track_post_deliver_signal)(ThreadId, Int sigNo);
=20
- void (*track_init_shadow_page)(Addr);
-
} VgToolInterface;
=20
extern VgToolInterface VG_(tdict);
Modified: trunk/include/pub_tool_aspacemgr.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/include/pub_tool_aspacemgr.h 2005-06-24 21:41:28 UTC (rev 4014)
+++ trunk/include/pub_tool_aspacemgr.h 2005-06-24 22:17:38 UTC (rev 4015)
@@ -39,12 +39,6 @@
=20
extern Bool VG_(is_addressable)(Addr p, SizeT sz, UInt prot);
=20
-/* initialize shadow pages in the range [p, p+sz) This calls
- init_shadow_page for each one. It should be a lot more efficient
- for bulk-initializing shadow pages than faulting on each one.=20
-*/
-extern void VG_(init_shadow_range)(Addr p, UInt sz, Bool call_init);
-
/* Calls into the core used by leak-checking */
=20
/* Calls "add_rootrange" with each range of memory which looks like a
Modified: trunk/include/pub_tool_tooliface.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/include/pub_tool_tooliface.h 2005-06-24 21:41:28 UTC (rev 4014)
+++ trunk/include/pub_tool_tooliface.h 2005-06-24 22:17:38 UTC (rev 4015)
@@ -398,9 +398,7 @@
=20
/* Others... condition variables...
...
- Shadow memory management
*/
-void VG_(track_init_shadow_page)(void(*f)(Addr p));
=20
#endif // __PUB_TOOL_TOOLIFACE_H
=20
|
|
From: <sv...@va...> - 2005-06-24 21:42:04
|
Author: njn
Date: 2005-06-24 22:41:28 +0100 (Fri, 24 Jun 2005)
New Revision: 4014
Log:
Fix bug #107524 -- epoll_ctl does not access 'events' if it's a
EPOLL_CTL_DEL invocation.
Also renamed our "struct epoll_event" to "struct vki_epoll_event" as it
should be called.
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/include/vki-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2005-06-24 15:40:01 UTC (re=
v 4013)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2005-06-24 21:41:28 UTC (re=
v 4014)
@@ -567,8 +567,9 @@
PRINT("sys_epoll_ctl ( %d, %s, %d, %p )",=20
ARG1, ( ARG2<3 ? epoll_ctl_s[ARG2] : "?" ), ARG3, ARG4);
PRE_REG_READ4(long, "epoll_ctl",
- int, epfd, int, op, int, fd, struct epoll_event *, even=
t);
- PRE_MEM_READ( "epoll_ctl(event)", ARG4, sizeof(struct epoll_event) );
+ int, epfd, int, op, int, fd, struct vki_epoll_event *, =
event);
+ if (ARG2 !=3D VKI_EPOLL_CTL_DEL)
+ PRE_MEM_READ( "epoll_ctl(event)", ARG4, sizeof(struct vki_epoll_ev=
ent) );
}
=20
PRE(sys_epoll_wait)
@@ -576,15 +577,15 @@
*flags |=3D SfMayBlock;
PRINT("sys_epoll_wait ( %d, %p, %d, %d )", ARG1, ARG2, ARG3, ARG4);
PRE_REG_READ4(long, "epoll_wait",
- int, epfd, struct epoll_event *, events,
+ int, epfd, struct vki_epoll_event *, events,
int, maxevents, int, timeout);
- PRE_MEM_WRITE( "epoll_wait(events)", ARG2, sizeof(struct epoll_event)=
*ARG3);
+ PRE_MEM_WRITE( "epoll_wait(events)", ARG2, sizeof(struct vki_epoll_ev=
ent)*ARG3);
}
POST(sys_epoll_wait)
{
vg_assert(SUCCESS);
if (RES > 0)
- POST_MEM_WRITE( ARG2, sizeof(struct epoll_event)*RES ) ;
+ POST_MEM_WRITE( ARG2, sizeof(struct vki_epoll_event)*RES ) ;
}
=20
PRE(sys_gettid)
Modified: trunk/include/vki-linux.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/include/vki-linux.h 2005-06-24 15:40:01 UTC (rev 4013)
+++ trunk/include/vki-linux.h 2005-06-24 21:41:28 UTC (rev 4014)
@@ -845,16 +845,21 @@
};
=20
//----------------------------------------------------------------------
-// From linux-2.6.8.1/include/linux/eventpoll.h
+// From linux-2.6.12.1/include/linux/eventpoll.h
//----------------------------------------------------------------------
=20
+/* Valid opcodes to issue to sys_epoll_ctl() */
+#define VKI_EPOLL_CTL_ADD 1
+#define VKI_EPOLL_CTL_DEL 2
+#define VKI_EPOLL_CTL_MOD 3
+
#ifdef __x86_64__
#define VKI_EPOLL_PACKED __attribute__((packed))
#else
#define VKI_EPOLL_PACKED
#endif
=20
-struct epoll_event {
+struct vki_epoll_event {
__vki_u32 events;
__vki_u64 data;
} VKI_EPOLL_PACKED;
|
|
From: <sv...@va...> - 2005-06-24 15:40:03
|
Author: njn
Date: 2005-06-24 16:40:01 +0100 (Fri, 24 Jun 2005)
New Revision: 4013
Log:
Remove out-of-date comments.
Modified:
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/m_syswrap/syswrap-x86-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-06-24 15:26:49 U=
TC (rev 4012)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-06-24 15:40:01 U=
TC (rev 4013)
@@ -1261,7 +1261,6 @@
return *a_p;
}
=20
-// XXX: should use the constants here (eg. SHMAT), not the numbers direc=
tly!
PRE(sys_ipc)
{
PRINT("sys_ipc ( %d, %d, %d, %d, %p, %d )", ARG1,ARG2,ARG3,ARG4,ARG5,A=
RG6);
Modified: trunk/coregrind/m_syswrap/syswrap-x86-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2005-06-24 15:26:49 UTC=
(rev 4012)
+++ trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2005-06-24 15:40:01 UTC=
(rev 4013)
@@ -1332,7 +1332,6 @@
return *a_p;
}
=20
-// XXX: should use the constants here (eg. SHMAT), not the numbers direc=
tly!
PRE(sys_ipc)
{
PRINT("sys_ipc ( %d, %d, %d, %d, %p, %d )", ARG1,ARG2,ARG3,ARG4,ARG5,=
ARG6);
|
|
From: <sv...@va...> - 2005-06-24 15:26:56
|
Author: cerion
Date: 2005-06-24 16:26:49 +0100 (Fri, 24 Jun 2005)
New Revision: 4012
Log:
Enabled a bunch more syscalls
A few simple progs make it through memcheck now - bzip2, gzip, xfontsel
Modified:
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/vki_unistd-ppc32-linux.h
trunk/include/vki-ppc32-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-06-24 15:20:52 U=
TC (rev 4011)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-06-24 15:26:49 U=
TC (rev 4012)
@@ -946,9 +946,269 @@
aren't visible outside this file, but that requires even more macro
magic. */
=20
+DECL_TEMPLATE(ppc32_linux, sys_socketcall);
DECL_TEMPLATE(ppc32_linux, sys_stat64);
+DECL_TEMPLATE(ppc32_linux, sys_lstat64);
DECL_TEMPLATE(ppc32_linux, sys_fstat64);
+DECL_TEMPLATE(ppc32_linux, sys_ipc);
=20
+PRE(sys_socketcall)
+{
+# define ARG2_0 (((UWord*)ARG2)[0])
+# define ARG2_1 (((UWord*)ARG2)[1])
+# define ARG2_2 (((UWord*)ARG2)[2])
+# define ARG2_3 (((UWord*)ARG2)[3])
+# define ARG2_4 (((UWord*)ARG2)[4])
+# define ARG2_5 (((UWord*)ARG2)[5])
+
+ *flags |=3D SfMayBlock;
+ PRINT("sys_socketcall ( %d, %p )",ARG1,ARG2);
+ PRE_REG_READ2(long, "socketcall", int, call, unsigned long *, args);
+
+ switch (ARG1 /* request */) {
+
+ case VKI_SYS_SOCKETPAIR:
+ /* int socketpair(int d, int type, int protocol, int sv[2]); */
+ PRE_MEM_READ( "socketcall.socketpair(args)", ARG2, 4*sizeof(Addr) =
);
+ ML_(generic_PRE_sys_socketpair)( tid, ARG2_0, ARG2_1, ARG2_2, ARG2=
_3 );
+ break;
+
+ case VKI_SYS_SOCKET:
+ /* int socket(int domain, int type, int protocol); */
+ PRE_MEM_READ( "socketcall.socket(args)", ARG2, 3*sizeof(Addr) );
+ break;
+
+ case VKI_SYS_BIND:
+ /* int bind(int sockfd, struct sockaddr *my_addr,
+ int addrlen); */
+ PRE_MEM_READ( "socketcall.bind(args)", ARG2, 3*sizeof(Addr) );
+ ML_(generic_PRE_sys_bind)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_LISTEN:
+ /* int listen(int s, int backlog); */
+ PRE_MEM_READ( "socketcall.listen(args)", ARG2, 2*sizeof(Addr) );
+ break;
+
+ case VKI_SYS_ACCEPT: {
+ /* int accept(int s, struct sockaddr *addr, int *addrlen); */
+ PRE_MEM_READ( "socketcall.accept(args)", ARG2, 3*sizeof(Addr) );
+ ML_(generic_PRE_sys_accept)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+ }
+
+ case VKI_SYS_SENDTO:
+ /* int sendto(int s, const void *msg, int len,
+ unsigned int flags,
+ const struct sockaddr *to, int tolen); */
+ PRE_MEM_READ( "socketcall.sendto(args)", ARG2, 6*sizeof(Addr) );
+ ML_(generic_PRE_sys_sendto)( tid, ARG2_0, ARG2_1, ARG2_2,
+ ARG2_3, ARG2_4, ARG2_5 );
+ break;
+
+ case VKI_SYS_SEND:
+ /* int send(int s, const void *msg, size_t len, int flags); */
+ PRE_MEM_READ( "socketcall.send(args)", ARG2, 4*sizeof(Addr) );
+ ML_(generic_PRE_sys_send)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_RECVFROM:
+ /* int recvfrom(int s, void *buf, int len, unsigned int flags,
+ struct sockaddr *from, int *fromlen); */
+ PRE_MEM_READ( "socketcall.recvfrom(args)", ARG2, 6*sizeof(Addr) );
+ ML_(generic_PRE_sys_recvfrom)( tid, ARG2_0, ARG2_1, ARG2_2,
+ ARG2_3, ARG2_4, ARG2_5 );
+ break;
+
+ case VKI_SYS_RECV:
+ /* int recv(int s, void *buf, int len, unsigned int flags); */
+ /* man 2 recv says:
+ The recv call is normally used only on a connected socket
+ (see connect(2)) and is identical to recvfrom with a NULL
+ from parameter.
+ */
+ PRE_MEM_READ( "socketcall.recv(args)", ARG2, 4*sizeof(Addr) );
+ ML_(generic_PRE_sys_recv)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_CONNECT:
+ /* int connect(int sockfd,
+ struct sockaddr *serv_addr, int addrlen ); */
+ PRE_MEM_READ( "socketcall.connect(args)", ARG2, 3*sizeof(Addr) );
+ ML_(generic_PRE_sys_connect)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_SETSOCKOPT:
+ /* int setsockopt(int s, int level, int optname,
+ const void *optval, int optlen); */
+ PRE_MEM_READ( "socketcall.setsockopt(args)", ARG2, 5*sizeof(Addr) )=
;
+ ML_(generic_PRE_sys_setsockopt)( tid, ARG2_0, ARG2_1, ARG2_2,
+ ARG2_3, ARG2_4 );
+ break;
+
+ case VKI_SYS_GETSOCKOPT:
+ /* int getsockopt(int s, int level, int optname,
+ void *optval, socklen_t *optlen); */
+ PRE_MEM_READ( "socketcall.getsockopt(args)", ARG2, 5*sizeof(Addr) )=
;
+ ML_(generic_PRE_sys_getsockopt)( tid, ARG2_0, ARG2_1, ARG2_2,
+ ARG2_3, ARG2_4 );
+ break;
+
+ case VKI_SYS_GETSOCKNAME:
+ /* int getsockname(int s, struct sockaddr* name, int* namelen) */
+ PRE_MEM_READ( "socketcall.getsockname(args)", ARG2, 3*sizeof(Addr) =
);
+ ML_(generic_PRE_sys_getsockname)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_GETPEERNAME:
+ /* int getpeername(int s, struct sockaddr* name, int* namelen) */
+ PRE_MEM_READ( "socketcall.getpeername(args)", ARG2, 3*sizeof(Addr) =
);
+ ML_(generic_PRE_sys_getpeername)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_SHUTDOWN:
+ /* int shutdown(int s, int how); */
+ PRE_MEM_READ( "socketcall.shutdown(args)", ARG2, 2*sizeof(Addr) );
+ break;
+
+ case VKI_SYS_SENDMSG: {
+ /* int sendmsg(int s, const struct msghdr *msg, int flags); */
+
+ /* this causes warnings, and I don't get why. glibc bug?
+ * (after all it's glibc providing the arguments array)
+ PRE_MEM_READ( "socketcall.sendmsg(args)", ARG2, 3*sizeof(Addr) );
+ */
+ ML_(generic_PRE_sys_sendmsg)( tid, ARG2_0, ARG2_1 );
+ break;
+ }
+
+ case VKI_SYS_RECVMSG: {
+ /* int recvmsg(int s, struct msghdr *msg, int flags); */
+
+ /* this causes warnings, and I don't get why. glibc bug?
+ * (after all it's glibc providing the arguments array)
+ PRE_MEM_READ("socketcall.recvmsg(args)", ARG2, 3*sizeof(Addr) );
+ */
+ ML_(generic_PRE_sys_recvmsg)( tid, ARG2_0, ARG2_1 );
+ break;
+ }
+
+ default:
+ VG_(message)(Vg_DebugMsg,"Warning: unhandled socketcall 0x%x",ARG1)=
;
+ SET_STATUS_Failure( VKI_EINVAL );
+ break;
+ }
+# undef ARG2_0
+# undef ARG2_1
+# undef ARG2_2
+# undef ARG2_3
+# undef ARG2_4
+# undef ARG2_5
+}
+
+POST(sys_socketcall)
+{
+# define ARG2_0 (((UWord*)ARG2)[0])
+# define ARG2_1 (((UWord*)ARG2)[1])
+# define ARG2_2 (((UWord*)ARG2)[2])
+# define ARG2_3 (((UWord*)ARG2)[3])
+# define ARG2_4 (((UWord*)ARG2)[4])
+# define ARG2_5 (((UWord*)ARG2)[5])
+
+ SysRes r;
+ vg_assert(SUCCESS);
+ switch (ARG1 /* request */) {
+
+ case VKI_SYS_SOCKETPAIR:
+ r =3D ML_(generic_POST_sys_socketpair)(
+ tid, VG_(mk_SysRes_Success)(RES),
+ ARG2_0, ARG2_1, ARG2_2, ARG2_3
+ );
+ SET_STATUS_from_SysRes(r);
+ break;
+
+ case VKI_SYS_SOCKET:
+ r =3D ML_(generic_POST_sys_socket)( tid, VG_(mk_SysRes_Success)(RES)=
);
+ SET_STATUS_from_SysRes(r);
+ break;
+
+ case VKI_SYS_BIND:
+ /* int bind(int sockfd, struct sockaddr *my_addr,
+ int addrlen); */
+ break;
+
+ case VKI_SYS_LISTEN:
+ /* int listen(int s, int backlog); */
+ break;
+
+ case VKI_SYS_ACCEPT:
+ /* int accept(int s, struct sockaddr *addr, int *addrlen); */
+ r =3D ML_(generic_POST_sys_accept)( tid, VG_(mk_SysRes_Success)(RES)=
,
+ ARG2_0, ARG2_1, ARG2_2 );
+ SET_STATUS_from_SysRes(r);
+ break;
+
+ case VKI_SYS_SENDTO:
+ break;
+
+ case VKI_SYS_SEND:
+ break;
+
+ case VKI_SYS_RECVFROM:
+ ML_(generic_POST_sys_recvfrom)( tid, VG_(mk_SysRes_Success)(RES),
+ ARG2_0, ARG2_1, ARG2_2,
+ ARG2_3, ARG2_4, ARG2_5 );
+ break;
+
+ case VKI_SYS_RECV:
+ ML_(generic_POST_sys_recv)( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_CONNECT:
+ break;
+
+ case VKI_SYS_SETSOCKOPT:
+ break;
+
+ case VKI_SYS_GETSOCKOPT:
+ ML_(generic_POST_sys_getsockopt)( tid, VG_(mk_SysRes_Success)(RES),
+ ARG2_0, ARG2_1,
+ ARG2_2, ARG2_3, ARG2_4 );
+ break;
+
+ case VKI_SYS_GETSOCKNAME:
+ ML_(generic_POST_sys_getsockname)( tid, VG_(mk_SysRes_Success)(RES),
+ ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_GETPEERNAME:
+ ML_(generic_POST_sys_getpeername)( tid, VG_(mk_SysRes_Success)(RES),
+ ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_SHUTDOWN:
+ break;
+
+ case VKI_SYS_SENDMSG:
+ break;
+
+ case VKI_SYS_RECVMSG:
+ ML_(generic_POST_sys_recvmsg)( tid, ARG2_0, ARG2_1 );
+ break;
+
+ default:
+ VG_(message)(Vg_DebugMsg,"FATAL: unhandled socketcall 0x%x",ARG1);
+ VG_(core_panic)("... bye!\n");
+ break; /*NOTREACHED*/
+ }
+# undef ARG2_0
+# undef ARG2_1
+# undef ARG2_2
+# undef ARG2_3
+# undef ARG2_4
+# undef ARG2_5
+}
+
// XXX: lstat64/fstat64/stat64 are generic, but not necessarily
// applicable to every architecture -- I think only to 32-bit archs.
// We're going to need something like linux/core_os32.h for such
@@ -966,19 +1226,193 @@
POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) );
}
=20
+PRE(sys_lstat64)
+{
+ PRINT("sys_lstat64 ( %p(%s), %p )",ARG1,ARG1,ARG2);
+ PRE_REG_READ2(long, "lstat64", char *, file_name, struct stat64 *, bu=
f);
+ PRE_MEM_RASCIIZ( "lstat64(file_name)", ARG1 );
+ PRE_MEM_WRITE( "lstat64(buf)", ARG2, sizeof(struct vki_stat64) );
+}
+
+POST(sys_lstat64)
+{
+ vg_assert(SUCCESS);
+ if (RES =3D=3D 0) {
+ POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) );
+ }
+}
+
PRE(sys_fstat64)
{
PRINT("sys_fstat64 ( %d, %p )",ARG1,ARG2);
PRE_REG_READ2(long, "fstat64", unsigned long, fd, struct stat64 *, buf=
);
PRE_MEM_WRITE( "fstat64(buf)", ARG2, sizeof(struct vki_stat64) );
}
+
POST(sys_fstat64)
{
POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) );
}
=20
+static Addr deref_Addr ( ThreadId tid, Addr a, Char* s )
+{
+ Addr* a_p =3D (Addr*)a;
+ PRE_MEM_READ( s, (Addr)a_p, sizeof(Addr) );
+ return *a_p;
+}
=20
+// XXX: should use the constants here (eg. SHMAT), not the numbers direc=
tly!
+PRE(sys_ipc)
+{
+ PRINT("sys_ipc ( %d, %d, %d, %d, %p, %d )", ARG1,ARG2,ARG3,ARG4,ARG5,A=
RG6);
+ // XXX: this is simplistic -- some args are not used in all circumstan=
ces.
+ PRE_REG_READ6(int, "ipc",
+ vki_uint, call, int, first, int, second, int, third,
+ void *, ptr, long, fifth)
=20
+ switch (ARG1 /* call */) {
+ case VKI_SEMOP:
+ ML_(generic_PRE_sys_semop)( tid, ARG2, ARG5, ARG3 );
+ *flags |=3D SfMayBlock;
+ break;
+ case VKI_SEMGET:
+ break;
+ case VKI_SEMCTL:
+ {
+ UWord arg =3D deref_Addr( tid, ARG5, "semctl(arg)" );
+ ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
+ break;
+ }
+ case VKI_SEMTIMEDOP:
+ ML_(generic_PRE_sys_semtimedop)( tid, ARG2, ARG5, ARG3, ARG6 );
+ *flags |=3D SfMayBlock;
+ break;
+ case VKI_MSGSND:
+ ML_(generic_PRE_sys_msgsnd)( tid, ARG2, ARG5, ARG3, ARG4 );
+ if ((ARG4 & VKI_IPC_NOWAIT) =3D=3D 0)
+ *flags |=3D SfMayBlock;
+ break;
+ case VKI_MSGRCV:
+ {
+ Addr msgp;
+ Word msgtyp;
+
+ msgp =3D deref_Addr( tid,
+ (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
+ "msgrcv(msgp)" );
+ msgtyp =3D deref_Addr( tid,
+ (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
+ "msgrcv(msgp)" );
+
+ ML_(generic_PRE_sys_msgrcv)( tid, ARG2, msgp, ARG3, msgtyp, ARG4 );
+
+ if ((ARG4 & VKI_IPC_NOWAIT) =3D=3D 0)
+ *flags |=3D SfMayBlock;
+ break;
+ }
+ case VKI_MSGGET:
+ break;
+ case VKI_MSGCTL:
+ ML_(generic_PRE_sys_msgctl)( tid, ARG2, ARG3, ARG5 );
+ break;
+ case VKI_SHMAT:
+ {
+ UWord w;
+ PRE_MEM_WRITE( "shmat(raddr)", ARG4, sizeof(Addr) );
+ w =3D ML_(generic_PRE_sys_shmat)( tid, ARG2, ARG5, ARG3 );
+ if (w =3D=3D 0)
+ SET_STATUS_Failure( VKI_EINVAL );
+ else
+ ARG5 =3D w;
+ break;
+ }
+ case VKI_SHMDT:
+ if (!ML_(generic_PRE_sys_shmdt)(tid, ARG5))
+ SET_STATUS_Failure( VKI_EINVAL );
+ break;
+ case VKI_SHMGET:
+ break;
+ case VKI_SHMCTL: /* IPCOP_shmctl */
+ ML_(generic_PRE_sys_shmctl)( tid, ARG2, ARG3, ARG5 );
+ break;
+ default:
+ VG_(message)(Vg_DebugMsg, "FATAL: unhandled syscall(ipc) %d", ARG1=
);
+ VG_(core_panic)("... bye!\n");
+ break; /*NOTREACHED*/
+ }
+}
+
+POST(sys_ipc)
+{
+ vg_assert(SUCCESS);
+ switch (ARG1 /* call */) {
+ case VKI_SEMOP:
+ case VKI_SEMGET:
+ break;
+ case VKI_SEMCTL:
+ {
+ UWord arg =3D deref_Addr( tid, ARG5, "semctl(arg)" );
+ ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
+ break;
+ }
+ case VKI_SEMTIMEDOP:
+ case VKI_MSGSND:
+ break;
+ case VKI_MSGRCV:
+ {
+ Addr msgp;
+ Word msgtyp;
+
+ msgp =3D deref_Addr( tid,
+ (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp)=
,
+ "msgrcv(msgp)" );
+ msgtyp =3D deref_Addr( tid,
+ (Addr) (&((struct vki_ipc_kludge *)ARG5)->msg=
typ),
+ "msgrcv(msgp)" );
+
+ ML_(generic_POST_sys_msgrcv)( tid, RES, ARG2, msgp, ARG3, msgtyp, =
ARG4 );
+ break;
+ }
+ case VKI_MSGGET:
+ break;
+ case VKI_MSGCTL:
+ ML_(generic_POST_sys_msgctl)( tid, RES, ARG2, ARG3, ARG5 );
+ break;
+ case VKI_SHMAT:
+ {
+ Addr addr;
+
+ /* force readability. before the syscall it is
+ * indeed uninitialized, as can be seen in
+ * glibc/sysdeps/unix/sysv/linux/shmat.c */
+ POST_MEM_WRITE( ARG4, sizeof( Addr ) );
+
+ addr =3D deref_Addr ( tid, ARG4, "shmat(addr)" );
+ if ( addr > 0 ) {
+ ML_(generic_POST_sys_shmat)( tid, addr, ARG2, ARG5, ARG3 );
+ }
+ break;
+ }
+ case VKI_SHMDT:
+ ML_(generic_POST_sys_shmdt)( tid, RES, ARG5 );
+ break;
+ case VKI_SHMGET:
+ break;
+ case VKI_SHMCTL:
+ ML_(generic_POST_sys_shmctl)( tid, RES, ARG2, ARG3, ARG5 );
+ break;
+ default:
+ VG_(message)(Vg_DebugMsg,
+ "FATAL: unhandled syscall(ipc) %d",
+ ARG1 );
+ VG_(core_panic)("... bye!\n");
+ break; /*NOTREACHED*/
+ }
+}
+
+
+
+
//.. PRE(old_select, MayBlock)
//.. {
//.. /* struct sel_arg_struct {
@@ -1510,23 +1944,23 @@
//.. GENXY(__NR_creat, sys_creat), // 8
//.. GENX_(__NR_link, sys_link), // 9
//..=20
-//.. GENX_(__NR_unlink, sys_unlink), // 10
+ GENX_(__NR_unlink, sys_unlink), // 10
//.. GENX_(__NR_execve, sys_execve), // 11
//.. GENX_(__NR_chdir, sys_chdir), // 12
//.. GENXY(__NR_time, sys_time), // 13
//.. GENX_(__NR_mknod, sys_mknod), // 14
//..=20
-//.. GENX_(__NR_chmod, sys_chmod), // 15
+ GENX_(__NR_chmod, sys_chmod), // 15
//.. // (__NR_lchown, sys_lchown16), // 16 ## P
//.. GENX_(__NR_break, sys_ni_syscall), // 17
//.. // (__NR_oldstat, sys_stat), // 18 (obs=
olete)
//.. GENX_(__NR_lseek, sys_lseek), // 19
//..=20
-//.. GENX_(__NR_getpid, sys_getpid), // 20
+ GENX_(__NR_getpid, sys_getpid), // 20
//.. LINX_(__NR_mount, sys_mount), // 21
//.. LINX_(__NR_umount, sys_oldumount), // 22
-//.. GENX_(__NR_setuid, sys_setuid16), // 23 ## P
-//.. GENX_(__NR_getuid, sys_getuid16), // 24 ## P
+ GENX_(__NR_setuid, sys_setuid16), // 23 ## P
+ GENX_(__NR_getuid, sys_getuid16), // 24 ## P
//..=20
//.. // (__NR_stime, sys_stime), // 25 * (S=
Vr4,SVID,X/OPEN)
//.. PLAXY(__NR_ptrace, sys_ptrace), // 26
@@ -1534,7 +1968,7 @@
//.. // (__NR_oldfstat, sys_fstat), // 28 * L =
-- obsolete
//.. GENX_(__NR_pause, sys_pause), // 29
//..=20
-//.. GENX_(__NR_utime, sys_utime), // 30
+ GENX_(__NR_utime, sys_utime), // 30
//.. GENX_(__NR_stty, sys_ni_syscall), // 31
//.. GENX_(__NR_gtty, sys_ni_syscall), // 32
GENX_(__NR_access, sys_access), // 33
@@ -1556,17 +1990,17 @@
//.. GENX_(__NR_setgid, sys_setgid16), // 46
//.. GENX_(__NR_getgid, sys_getgid16), // 47
//.. // (__NR_signal, sys_signal), // 48 */* =
(ANSI C)
-//.. GENX_(__NR_geteuid, sys_geteuid16), // 49
-//..=20
-//.. GENX_(__NR_getegid, sys_getegid16), // 50
+ GENX_(__NR_geteuid, sys_geteuid16), // 49
+
+ GENX_(__NR_getegid, sys_getegid16), // 50
//.. GENX_(__NR_acct, sys_acct), // 51
//.. LINX_(__NR_umount2, sys_umount), // 52
//.. GENX_(__NR_lock, sys_ni_syscall), // 53
- GENXY(__NR_ioctl, sys_ioctl), // 54
+ GENXY(__NR_ioctl, sys_ioctl), // 54
//..=20
//.. GENXY(__NR_fcntl, sys_fcntl), // 55
//.. GENX_(__NR_mpx, sys_ni_syscall), // 56
-//.. GENX_(__NR_setpgid, sys_setpgid), // 57
+ GENX_(__NR_setpgid, sys_setpgid), // 57
//.. GENX_(__NR_ulimit, sys_ni_syscall), // 58
//.. // (__NR_oldolduname, sys_olduname), // 59 Linu=
x -- obsolete
//..=20
@@ -1588,10 +2022,10 @@
//.. GENXY(__NR_sigpending, sys_sigpending), // 73
//.. // (__NR_sethostname, sys_sethostname), // 74 */*
//..=20
-//.. GENX_(__NR_setrlimit, sys_setrlimit), // 75
+ GENX_(__NR_setrlimit, sys_setrlimit), // 75
//.. GENXY(__NR_getrlimit, sys_old_getrlimit), // 76
//.. GENXY(__NR_getrusage, sys_getrusage), // 77
-//.. GENXY(__NR_gettimeofday, sys_gettimeofday), // 78
+ GENXY(__NR_gettimeofday, sys_gettimeofday), // 78
//.. GENX_(__NR_settimeofday, sys_settimeofday), // 79
//..=20
//.. GENXY(__NR_getgroups, sys_getgroups16), // 80
@@ -1600,14 +2034,14 @@
//.. GENX_(__NR_symlink, sys_symlink), // 83
//.. // (__NR_oldlstat, sys_lstat), // 84 -- o=
bsolete
//..=20
-//.. GENX_(__NR_readlink, sys_readlink), // 85
+ GENX_(__NR_readlink, sys_readlink), // 85
//.. // (__NR_uselib, sys_uselib), // 86 */Li=
nux
//.. // (__NR_swapon, sys_swapon), // 87 */Li=
nux
//.. // (__NR_reboot, sys_reboot), // 88 */Li=
nux
//.. // (__NR_readdir, old_readdir), // 89 -- s=
uperseded
=20
GENXY(__NR_mmap, sys_mmap2), // 90
- GENXY(__NR_munmap, sys_munmap), // 91
+ GENXY(__NR_munmap, sys_munmap), // 91
//.. GENX_(__NR_truncate, sys_truncate), // 92
//.. GENX_(__NR_ftruncate, sys_ftruncate), // 93
//.. GENX_(__NR_fchmod, sys_fchmod), // 94
@@ -1620,9 +2054,9 @@
//..=20
//.. GENXY(__NR_fstatfs, sys_fstatfs), // 100
//.. LINX_(__NR_ioperm, sys_ioperm), // 101
-//.. GENXY(__NR_socketcall, sys_socketcall), // 102
+ PLAXY(__NR_socketcall, sys_socketcall), // 102
//.. LINXY(__NR_syslog, sys_syslog), // 103
-//.. GENXY(__NR_setitimer, sys_setitimer), // 104
+ GENXY(__NR_setitimer, sys_setitimer), // 104
//..=20
//.. GENXY(__NR_getitimer, sys_getitimer), // 105
GENXY(__NR_stat, sys_newstat), // 106
@@ -1638,7 +2072,7 @@
//..=20
//.. // (__NR_swapoff, sys_swapoff), // 115 */L=
inux=20
//.. LINXY(__NR_sysinfo, sys_sysinfo), // 116
-//.. PLAXY(__NR_ipc, sys_ipc), // 117
+ PLAXY(__NR_ipc, sys_ipc), // 117
//.. GENX_(__NR_fsync, sys_fsync), // 118
//.. PLAX_(__NR_sigreturn, sys_sigreturn), // 119 ?/L=
inux
//..=20
@@ -1658,7 +2092,7 @@
//.. // Nb: get_kernel_syms() was removed 2.4-->2.6
//.. GENX_(__NR_get_kernel_syms, sys_ni_syscall), // 130
//.. GENX_(__NR_quotactl, sys_quotactl), // 131
-//.. GENX_(__NR_getpgid, sys_getpgid), // 132
+ GENX_(__NR_getpgid, sys_getpgid), // 132
//.. GENX_(__NR_fchdir, sys_fchdir), // 133
//.. // (__NR_bdflush, sys_bdflush), // 134 */L=
inux
//..=20
@@ -1668,17 +2102,17 @@
//.. LINX_(__NR_setfsuid, sys_setfsuid16), // 138
//.. LINX_(__NR_setfsgid, sys_setfsgid16), // 139
//..=20
-//.. LINXY(__NR__llseek, sys_llseek), // 140
+ LINXY(__NR__llseek, sys_llseek), // 140
//.. GENXY(__NR_getdents, sys_getdents), // 141
-//.. GENX_(__NR__newselect, sys_select), // 142
+ GENX_(__NR__newselect, sys_select), // 142
//.. GENX_(__NR_flock, sys_flock), // 143
//.. GENX_(__NR_msync, sys_msync), // 144
//..=20
-//.. GENXY(__NR_readv, sys_readv), // 145
+ GENXY(__NR_readv, sys_readv), // 145
GENX_(__NR_writev, sys_writev), // 146
//.. GENX_(__NR_getsid, sys_getsid), // 147
//.. GENX_(__NR_fdatasync, sys_fdatasync), // 148
- LINXY(__NR__sysctl, sys_sysctl), // 149
+ LINXY(__NR__sysctl, sys_sysctl), // 149
//..=20
//.. GENX_(__NR_mlock, sys_mlock), // 150
//.. GENX_(__NR_munlock, sys_munlock), // 151
@@ -1708,9 +2142,9 @@
//.. LINXY(__NR_getresgid, sys_getresgid16), // 170
//.. LINX_(__NR_prctl, sys_prctl), // 171
//.. PLAX_(__NR_rt_sigreturn, sys_rt_sigreturn), // 172
- GENXY(__NR_rt_sigaction, sys_rt_sigaction), // 173
+ GENXY(__NR_rt_sigaction, sys_rt_sigaction), // 173
=20
- GENXY(__NR_rt_sigprocmask, sys_rt_sigprocmask), // 174
+ GENXY(__NR_rt_sigprocmask, sys_rt_sigprocmask), // 174
//.. GENXY(__NR_rt_sigpending, sys_rt_sigpending), // 175
//.. GENXY(__NR_rt_sigtimedwait, sys_rt_sigtimedwait), // 176
//.. GENXY(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo), // 177
@@ -1718,7 +2152,7 @@
//..=20
//.. GENXY(__NR_pread64, sys_pread64), // 179
//.. GENX_(__NR_pwrite64, sys_pwrite64), // 180
-//.. GENX_(__NR_chown, sys_chown16), // 181
+ GENX_(__NR_chown, sys_chown16), // 181
//.. GENXY(__NR_getcwd, sys_getcwd), // 182
//.. GENXY(__NR_capget, sys_capget), // 183
//..=20
@@ -1730,15 +2164,15 @@
//..=20
//.. // Nb: we treat vfork as fork
//.. GENX_(__NR_vfork, sys_fork), // 189
- GENXY(__NR_ugetrlimit, sys_getrlimit), // 190
+ GENXY(__NR_ugetrlimit, sys_getrlimit), // 190
//__NR_readahead // 191 ppc/Linux only?
- GENXY(__NR_mmap2, sys_mmap2), // 192
+ GENXY(__NR_mmap2, sys_mmap2), // 192
//.. GENX_(__NR_truncate64, sys_truncate64), // 193
//.. GENX_(__NR_ftruncate64, sys_ftruncate64), // 194
//.. =20
=20
PLAXY(__NR_stat64, sys_stat64), // 195
-//.. GENXY(__NR_lstat64, sys_lstat64), // 196
+ PLAXY(__NR_lstat64, sys_lstat64), // 196
PLAXY(__NR_fstat64, sys_fstat64), // 197
=20
// __NR_pciconfig_read // 198
@@ -1746,9 +2180,9 @@
// __NR_pciconfig_iobase // 200
// __NR_multiplexer // 201
=20
- GENXY(__NR_getdents64, sys_getdents64), // 202
+ GENXY(__NR_getdents64, sys_getdents64), // 202
//.. // (__NR_pivot_root, sys_pivot_root), // 203 */L=
inux
- GENXY(__NR_fcntl64, sys_fcntl64), // 204
+ GENXY(__NR_fcntl64, sys_fcntl64), // 204
//.. GENX_(__NR_madvise, sys_madvise), // 205
//.. GENXY(__NR_mincore, sys_mincore), // 206
//.. LINX_(__NR_gettid, sys_gettid), // 207
@@ -1766,7 +2200,7 @@
//.. GENX_(__NR_lremovexattr, sys_lremovexattr), // 219
//.. GENX_(__NR_fremovexattr, sys_fremovexattr), // 220
=20
- LINXY(__NR_futex, sys_futex), // 221
+ LINXY(__NR_futex, sys_futex), // 221
//.. GENX_(__NR_sched_setaffinity, sys_sched_setaffinity), // 222
//.. GENXY(__NR_sched_getaffinity, sys_sched_getaffinity), // 223
/* 224 currently unused */
@@ -1781,7 +2215,7 @@
//.. LINX_(__NR_io_submit, sys_io_submit), // 230
//.. LINXY(__NR_io_cancel, sys_io_cancel), // 231
//..=20
- LINX_(__NR_set_tid_address, sys_set_tid_address), // 232
+ LINX_(__NR_set_tid_address, sys_set_tid_address), // 232
=20
//.. LINX_(__NR_fadvise64, sys_fadvise64), // 233 */(=
Linux?)
LINX_(__NR_exit_group, sys_exit_group), // 234
@@ -1797,7 +2231,7 @@
//.. GENX_(__NR_timer_getoverrun, sys_timer_getoverrun), // 243
//.. GENX_(__NR_timer_delete, sys_timer_delete), // 244
//.. GENX_(__NR_clock_settime, sys_clock_settime), // 245
-//.. GENXY(__NR_clock_gettime, sys_clock_gettime), // 246
+ GENXY(__NR_clock_gettime, sys_clock_gettime), // 246
//.. GENXY(__NR_clock_getres, sys_clock_getres), // 247
//.. // (__NR_clock_nanosleep, sys_clock_nanosleep), // 248
=20
Modified: trunk/coregrind/vki_unistd-ppc32-linux.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vki_unistd-ppc32-linux.h 2005-06-24 15:20:52 UTC (rev=
4011)
+++ trunk/coregrind/vki_unistd-ppc32-linux.h 2005-06-24 15:26:49 UTC (rev=
4012)
@@ -44,22 +44,22 @@
//#define __NR_chdir 12
//#define __NR_time 13
//#define __NR_mknod 14
-//#define __NR_chmod 15
-//#define __NR_lchown 16
+#define __NR_chmod 15
+#define __NR_lchown 16
//#define __NR_break 17
//#define __NR_oldstat 18
#define __NR_lseek 19
#define __NR_getpid 20
//#define __NR_mount 21
//#define __NR_umount 22
-//#define __NR_setuid 23
-//#define __NR_getuid 24
+#define __NR_setuid 23
+#define __NR_getuid 24
//#define __NR_stime 25
//#define __NR_ptrace 26
//#define __NR_alarm 27
//#define __NR_oldfstat 28
//#define __NR_pause 29
-//#define __NR_utime 30
+#define __NR_utime 30
//#define __NR_stty 31
//#define __NR_gtty 32
#define __NR_access 33
@@ -78,8 +78,8 @@
//#define __NR_setgid 46
//#define __NR_getgid 47
//#define __NR_signal 48
-//#define __NR_geteuid 49
-//#define __NR_getegid 50
+#define __NR_geteuid 49
+#define __NR_getegid 50
//#define __NR_acct 51
//#define __NR_umount2 52
//#define __NR_lock 53
@@ -133,7 +133,7 @@
//#define __NR_ioperm 101
#define __NR_socketcall 102
//#define __NR_syslog 103
-//#define __NR_setitimer 104
+#define __NR_setitimer 104
//#define __NR_getitimer 105
#define __NR_stat 106
//#define __NR_lstat 107
@@ -161,7 +161,7 @@
//#define __NR_delete_module 129
//#define __NR_get_kernel_syms 130
//#define __NR_quotactl 131
-//#define __NR_getpgid 132
+#define __NR_getpgid 132
//#define __NR_fchdir 133
//#define __NR_bdflush 134
//#define __NR_sysfs 135
@@ -169,12 +169,12 @@
//#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
//#define __NR_setfsuid 138
//#define __NR_setfsgid 139
-//#define __NR__llseek 140
+#define __NR__llseek 140
#define __NR_getdents 141
-//#define __NR__newselect 142
+#define __NR__newselect 142
//#define __NR_flock 143
//#define __NR_msync 144
-//#define __NR_readv 145
+#define __NR_readv 145
#define __NR_writev 146
//#define __NR_getsid 147
//#define __NR_fdatasync 148
@@ -210,7 +210,7 @@
//#define __NR_rt_sigsuspend 178
//#define __NR_pread64 179
//#define __NR_pwrite64 180
-//#define __NR_chown 181
+#define __NR_chown 181
#define __NR_getcwd 182
//#define __NR_capget 183
//#define __NR_capset 184
@@ -225,7 +225,7 @@
//#define __NR_truncate64 193
//#define __NR_ftruncate64 194
#define __NR_stat64 195
-//#define __NR_lstat64 196
+#define __NR_lstat64 196
#define __NR_fstat64 197
//#define __NR_pciconfig_read 198
//#define __NR_pciconfig_write 199
@@ -275,7 +275,7 @@
//#define __NR_timer_getoverrun 243
//#define __NR_timer_delete 244
//#define __NR_clock_settime 245
-//#define __NR_clock_gettime 246
+#define __NR_clock_gettime 246
//#define __NR_clock_getres 247
//#define __NR_clock_nanosleep 248
//#define __NR_swapcontext 249
Modified: trunk/include/vki-ppc32-linux.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/include/vki-ppc32-linux.h 2005-06-24 15:20:52 UTC (rev 4011)
+++ trunk/include/vki-ppc32-linux.h 2005-06-24 15:26:49 UTC (rev 4012)
@@ -789,28 +789,28 @@
unsigned long __unused5;
};
=20
-//.. //-----------------------------------------------------------------=
-----
-//.. // From linux-2.6.8.1/include/asm-i386/ipc.h
-//.. //-----------------------------------------------------------------=
-----
-//..=20
-//.. struct vki_ipc_kludge {
-//.. struct vki_msgbuf __user *msgp;
-//.. long msgtyp;
-//.. };
-//..=20
-//.. #define VKI_SEMOP 1
-//.. #define VKI_SEMGET 2
-//.. #define VKI_SEMCTL 3
-//.. #define VKI_SEMTIMEDOP 4
-//.. #define VKI_MSGSND 11
-//.. #define VKI_MSGRCV 12
-//.. #define VKI_MSGGET 13
-//.. #define VKI_MSGCTL 14
-//.. #define VKI_SHMAT 21
-//.. #define VKI_SHMDT 22
-//.. #define VKI_SHMGET 23
-//.. #define VKI_SHMCTL 24
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-ppc/ipc.h
+//----------------------------------------------------------------------
=20
+struct vki_ipc_kludge {
+ struct vki_msgbuf __user *msgp;
+ long msgtyp;
+};
+
+#define VKI_SEMOP 1
+#define VKI_SEMGET 2
+#define VKI_SEMCTL 3
+#define VKI_SEMTIMEDOP 4
+#define VKI_MSGSND 11
+#define VKI_MSGRCV 12
+#define VKI_MSGGET 13
+#define VKI_MSGCTL 14
+#define VKI_SHMAT 21
+#define VKI_SHMDT 22
+#define VKI_SHMGET 23
+#define VKI_SHMCTL 24
+
//----------------------------------------------------------------------
// From linux-2.6.9/include/asm-ppc/shmbuf.h
//----------------------------------------------------------------------
|
|
From: <sv...@va...> - 2005-06-24 15:20:59
|
Author: njn Date: 2005-06-24 16:20:52 +0100 (Fri, 24 Jun 2005) New Revision: 4011 Log: Another "make dist" fix from Ralf Wildenhues. Modified: trunk/configure.in Modified: trunk/configure.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/configure.in 2005-06-24 13:45:56 UTC (rev 4010) +++ trunk/configure.in 2005-06-24 15:20:52 UTC (rev 4011) @@ -24,6 +24,23 @@ ]) AC_SUBST(VEX_DIR) =20 +# "make distcheck" first builds a tarball, then extracts it. +# Then it creates a build directory different from the extracted sources +# (called _build), and issues +# +# ../configure $(DISTCHECK_CONFIGURE_FLAGS) +# +# and then builds, runs "make check", installs using DESTDIR, runs make +# installcheck, uninstalls, checks whether the installed base is empty +# again, then does yet another "make dist" and compares the resulting +# tarball with the one it started off with for identical content. Then = it +# tests "make distclean" for no leftover files. =20 +# +# So this line means: when doing "make dist", use the same --with-vex v= alue +# that you used when running configure to configure this tree in the fir= st +# place. +AC_SUBST([DISTCHECK_CONFIGURE_FLAGS], [--with-vex=3D$VEX_DIR]) + # Checks for programs. CFLAGS=3D"-Wno-long-long" =20 |
|
From: Craig C. <cc...@us...> - 2005-06-24 13:47:24
|
Hi, As I've been looking into the last few remaining regression test failures for Paul's ppc port of Valgrind 2.4, I came across a couple of issues that I can't see an easy resolution for. The issues are minor and are not likely to have a very big impact on real-life valgrind use. But it would be nice to find a simple way to fix them. Issue 1: Sometimes, when the client program calls VALGRIND_DO_LEAK_CHECK, valgrind can miss some leaked memory blocks. This will happen when "dead" registers (i.e. registers that will never be read before being overwritten) still contain memory addresses of the blocks that are leaked. I found this with the leak-cycle and leak-tree regression tests. Since the memory walking algorithm includes all of the gprs in its root set, valgrind believes that there are live pointers to these blocks. I suppose it would be possible to find at least some of the "dead" registers by analyzing upcoming instructions. But that sounds like way too much complexity for something that is unlikely to occur in the real world. The leak-cycle and leak-tree tests are perhaps anomalous because they purposefully null out the pointer variables immediately before the call to VALGRIND_DO_LEAK_CHECK. Has this ever come up on x86? (Or perhaps with fewer registers it's less likely there.) Is there another way to handle this? Issue 2: The code that handles the cache for the dynamic loader (i.e. the code that mmap's /etc/ld.so.cache) frees the cache memory shortly before the client program's main() begins. The algorithm that operates on that cache utilizes a global pointer variable which points to addresses in the cache. That variable is left dangling when the cache is freed. Not really a bug, since it's never referenced again. But, the pointer happens to point to a memory area that gets reused later for mallocs (at least on ppc). This leads to minor inaccuracies when looking for leaked blocks. If you're really unlucky, the dangling ld pointer will point to the beginning of a leaked malloc block, causing the leak to go undetected. If you're only slightly unlucky, it will point to somewhere in the middle of a leaked memory block, causing valgrind to report the block as "possibly leaked" rather than "definitely leaked". So, not too big a deal, but something that might cause confusion. Is there an easy way to work around something like this? Thanks, Craig -- Craig Chaney cc...@us... |
|
From: <sv...@va...> - 2005-06-24 13:46:55
|
Author: njn Date: 2005-06-24 14:45:56 +0100 (Fri, 24 Jun 2005) New Revision: 4010 Log: "make dist" fixes from Ralf Wildenhues. Modified: trunk/Makefile.am trunk/corecheck/tests/Makefile.am trunk/coregrind/Makefile.am trunk/include/Makefile.am Modified: trunk/Makefile.am =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/Makefile.am 2005-06-24 03:28:30 UTC (rev 4009) +++ trunk/Makefile.am 2005-06-24 13:45:56 UTC (rev 4010) @@ -14,10 +14,11 @@ ## addrcheck \ =20 # Temporary: we want to compile Helgrind, but not regtest it. +# And we want to include Addrcheck in the distro, but not compile/test i= t. # Put docs last because building the HTML is slow and we want to get # everything else working before we try it. SUBDIRS =3D include coregrind . tests auxprogs $(TOOLS) helgrind docs -##DIST_SUBDIRS =3D $(SUBDIRS) helgrind +DIST_SUBDIRS =3D $(SUBDIRS) addrcheck =20 SUPP_FILES =3D \ glibc-2.1.supp glibc-2.2.supp glibc-2.3.supp \ Modified: trunk/corecheck/tests/Makefile.am =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/corecheck/tests/Makefile.am 2005-06-24 03:28:30 UTC (rev 4009) +++ trunk/corecheck/tests/Makefile.am 2005-06-24 13:45:56 UTC (rev 4010) @@ -54,7 +54,7 @@ stack_changes vgprintf =20 AM_CFLAGS =3D $(WERROR) -Winline -Wall -Wshadow -g -O0 -AM_CPPFLAGS =3D -I$(top_builddir)/include +AM_CPPFLAGS =3D -I$(top_srcdir)/include AM_CXXFLAGS =3D $(AM_CFLAGS) =20 vgprintf_SOURCES =3D vgprintf.c Modified: trunk/coregrind/Makefile.am =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/Makefile.am 2005-06-24 03:28:30 UTC (rev 4009) +++ trunk/coregrind/Makefile.am 2005-06-24 13:45:56 UTC (rev 4010) @@ -65,6 +65,7 @@ pub_core_skiplist.h \ pub_core_stacks.h \ pub_core_stacktrace.h \ + pub_core_syscall.h \ pub_core_syswrap.h \ pub_core_threadmodel.h \ pub_core_threadstate.h \ Modified: trunk/include/Makefile.am =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/include/Makefile.am 2005-06-24 03:28:30 UTC (rev 4009) +++ trunk/include/Makefile.am 2005-06-24 13:45:56 UTC (rev 4010) @@ -6,6 +6,7 @@ pub_tool_basics_asm.h \ pub_tool_aspacemgr.h \ pub_tool_cpuid.h \ + pub_tool_debuginfo.h \ pub_tool_errormgr.h \ pub_tool_execontext.h \ pub_tool_hashtable.h \ @@ -22,8 +23,10 @@ pub_tool_profile.h \ pub_tool_redir.h \ pub_tool_replacemalloc.h \ + pub_tool_signals.h \ pub_tool_skiplist.h \ pub_tool_stacktrace.h \ + pub_tool_threadstate.h \ pub_tool_tooliface.h \ valgrind.h \ vki-linux.h \ |
|
From: <sv...@va...> - 2005-06-24 11:25:52
|
Author: cerion
Date: 2005-06-24 12:25:46 +0100 (Fri, 24 Jun 2005)
New Revision: 1223
Log:
fixed sign-extension bug for branches
Modified:
trunk/priv/guest-ppc32/toIR.c
Modified: trunk/priv/guest-ppc32/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-ppc32/toIR.c 2005-06-23 22:38:45 UTC (rev 1222)
+++ trunk/priv/guest-ppc32/toIR.c 2005-06-24 11:25:46 UTC (rev 1223)
@@ -477,9 +477,9 @@
return (UInt)((((Int)x) << 16) >> 16);
}
=20
-static UInt extend_s_24to32 ( UInt x )
+static UInt extend_s_26to32 ( UInt x )
{
- return (UInt)((((Int)x) << 8) >> 8);
+ return (UInt)((((Int)x) << 6) >> 6);
}
=20
/* Do a big-endian load of a 32-bit word, regardless of the endianness
@@ -2441,7 +2441,7 @@
UChar flag_LK =3D toUChar((theInstr >> 0) & 1); /* theInstr[0=
] */
=20
Int exts_BD =3D (Int)extend_s_16to32(BD << 2);
- Int exts_LI =3D (Int)extend_s_24to32(LI_24 << 2);
+ Int exts_LI =3D (Int)extend_s_26to32(LI_24 << 2);
=20
Addr32 nia =3D 0;
=20
|
|
From: <sv...@va...> - 2005-06-24 03:27:04
|
Author: njn
Date: 2005-06-24 04:26:54 +0100 (Fri, 24 Jun 2005)
New Revision: 4008
Log:
Broaden a couple of suppressions so vgtest_ume passes on my machine.
(I wrote this in a commit message the other day, but I'd actually
edited the generated default.supp file rather than the glibc-2.2.supp.)
Modified:
trunk/glibc-2.2.supp
Modified: trunk/glibc-2.2.supp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/glibc-2.2.supp 2005-06-23 22:37:56 UTC (rev 4007)
+++ trunk/glibc-2.2.supp 2005-06-24 03:26:54 UTC (rev 4008)
@@ -418,12 +418,17 @@
=20
#-------- glibc 2.2.5/ Debian 3.0
{
- _dl_start/ld-2.2.5.so(Cond)
+ _dl_start(Cond)
Memcheck:Cond
fun:_dl_start
- obj:/lib/ld-2.2.5.so
}
=20
+{
+ _dl_start(Cond)
+ Memcheck:Cond
+ fun:_dl_relocate_object
+}
+
#-------------------
{
socketcall.connect(serv_addr)/connect/*
|
|
From: Tom H. <th...@cy...> - 2005-06-24 03:00:38
|
Nightly build on audi ( i686, Red Hat 9 ) started at 2005-06-24 03:25:02 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 177 tests, 11 stderr failures, 3 stdout failures ================= memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/xml1 (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/pth_cancel1 (stdout) corecheck/tests/pth_cancel1 (stderr) corecheck/tests/pth_cancel2 (stderr) none/tests/faultstatus (stderr) none/tests/pth_blockedsig (stderr) none/tests/x86/int (stderr) none/tests/yield (stdout) |
|
From: <js...@ac...> - 2005-06-24 02:40:16
|
Nightly build on phoenix ( SuSE 9.1 ) started at 2005-06-24 03:30:00 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 175 tests, 4 stderr failures, 1 stdout failure ================= memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-tree (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <to...@co...> - 2005-06-24 02:36:11
|
Nightly build on dunsmere ( athlon, Fedora Core 3 ) started at 2005-06-24 03:30:03 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 178 tests, 8 stderr failures, 2 stdout failures ================= memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/selfrun (stdout) none/tests/selfrun (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-06-24 02:21:11
|
Nightly build on dellow ( x86_64, Fedora Core 3 ) started at 2005-06-24 03:10:05 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 157 tests, 12 stderr failures, 3 stdout failures ================= memcheck/tests/brk (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) massif/tests/toobig-allocs (stderr) none/tests/faultstatus (stderr) none/tests/selfrun (stdout) none/tests/selfrun (stderr) none/tests/yield (stdout) |
|
From: Tom H. <th...@cy...> - 2005-06-24 02:20:47
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-06-24 03:15:03 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 176 tests, 13 stderr failures, 1 stdout failure ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/xml1 (stderr) corecheck/tests/fdleak_cmsg (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-06-24 02:05:27
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-06-24 03:00:03 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 157 tests, 13 stderr failures, 2 stdout failures ================= memcheck/tests/brk (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) corecheck/tests/fdleak_fcntl (stderr) massif/tests/toobig-allocs (stderr) none/tests/faultstatus (stderr) none/tests/selfrun (stdout) none/tests/selfrun (stderr) |