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
(13) |
2
(33) |
3
(25) |
4
(22) |
5
(22) |
6
(21) |
7
(19) |
|
8
(29) |
9
(34) |
10
(29) |
11
(37) |
12
(36) |
13
(28) |
14
(25) |
|
15
(28) |
16
(23) |
17
(36) |
18
(21) |
19
(12) |
20
(14) |
21
(10) |
|
22
(7) |
23
(15) |
24
(41) |
25
(15) |
26
(9) |
27
(7) |
28
(6) |
|
29
(16) |
30
(24) |
31
(22) |
|
|
|
|
|
From: <sv...@va...> - 2005-05-08 02:05:13
|
Author: njn
Date: 2005-05-08 03:04:49 +0100 (Sun, 08 May 2005)
New Revision: 3630
Modified:
trunk/coregrind/amd64-linux/core_platform.h
trunk/coregrind/arm-linux/core_platform.h
trunk/coregrind/core.h
trunk/coregrind/m_sigframe/sigframe-amd64-linux.c
trunk/coregrind/m_sigframe/sigframe-arm-linux.c
trunk/coregrind/m_sigframe/sigframe-x86-linux.c
trunk/coregrind/vg_scheduler.c
trunk/coregrind/vg_signals.c
trunk/coregrind/vg_syscalls.c
trunk/coregrind/x86-linux/core_platform.h
Log:
Cleanups of syscall-related macros:
- Got rid of SET_THREAD_REG and some of the related macros, hallelujah.
Replaced SET_SYSCALL_RETVAL with VGP_TRACK_SYSCALL_RETVAL, which avoids
the redundant resetting of the syscall's return value. The other
remaining two related macros, SET_CLREQ_RETVAL and SET_CLCALL_RETVAL, w=
ere
able to be moved to vg_scheduler.c rather than being global, hoorah.
- Passed the required syscall args to VG_(do_sys_sigaltstack)(), rather t=
han
grabbing them from within, removing its reliance on SYSCALL_ARG[12].
It also makes the VG_(do_sys_sig*)() functions more consistent.
- As a result of these changes, was able to remove the SYSCALL_NUM,
SYSCALL_RET and SYSCALL_ARG[123456] macros, yay.
- Replaced the implementations of VG_(set_return_from_syscall_shadow)() a=
nd
VG_(get_exit_status_shadow)() with shorter ones that avoid using arch-s=
tate
offsets.
Modified: trunk/coregrind/amd64-linux/core_platform.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/amd64-linux/core_platform.h 2005-05-08 00:45:11 UTC (=
rev 3629)
+++ trunk/coregrind/amd64-linux/core_platform.h 2005-05-08 02:04:49 UTC (=
rev 3630)
@@ -52,10 +52,9 @@
// Setting a syscall result
#define VGP_SET_SYSCALL_RESULT(regs, val) ((regs).vex.guest_RAX =3D (=
val))
=20
-// Setting thread regs and shadow regs from within the core
-#define SET_SYSCALL_RETVAL(zztid, zzval) \
- SET_THREAD_REG(zztid, zzval, SYSCALL_RET, post_reg_write, \
- Vg_CoreSysCall, zztid, O_SYSCALL_RET, sizeof(UWord))
+// For informing tools that a syscall result has been set.
+#define VGP_TRACK_SYSCALL_RETVAL(zztid) \
+ VG_TRACK( post_reg_write, Vg_CoreSysCall, zztid, O_SYSCALL_RET, sizeo=
f(UWord) );
=20
/* ---------------------------------------------------------------------
Exports of vg_ldt.c
Modified: trunk/coregrind/arm-linux/core_platform.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/arm-linux/core_platform.h 2005-05-08 00:45:11 UTC (re=
v 3629)
+++ trunk/coregrind/arm-linux/core_platform.h 2005-05-08 02:04:49 UTC (re=
v 3630)
@@ -52,11 +52,10 @@
// ToDo XXX ????????
#define VGP_SET_SYSCALL_RESULT(regs, val) ((regs).vex.guest_R0 =3D (v=
al))
=20
-// Setting thread regs and shadow regs from within the core
+// For informing tools that a syscall result has been set.
// XXX ToDo: not sure about this
-#define SET_SYSCALL_RETVAL(zztid, zzval) \
- SET_THREAD_REG(zztid, zzval, SYSCALL_RET, post_reg_write, \
- Vg_CoreSysCall, zztid, O_SYSCALL_RET, sizeof(UWord))
+#define VGP_TRACK_SYSCALL_RETVAL(zztid) \
+ VG_TRACK( post_reg_write, Vg_CoreSysCall, zztid, O_SYSCALL_RET, sizeo=
f(UWord) );
=20
/* ---------------------------------------------------------------------
ucontext stuff
Modified: trunk/coregrind/core.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/core.h 2005-05-08 00:45:11 UTC (rev 3629)
+++ trunk/coregrind/core.h 2005-05-08 02:04:49 UTC (rev 3630)
@@ -703,22 +703,6 @@
/* If true, a fault is Valgrind-internal (ie, a bug) */
extern Bool VG_(my_fault);
=20
-// Write a value to a client's thread register, and shadow (if necessary=
).
-// Note that there are some further similar macros in the arch- and
-// platform-specific parts; these ones are the totally generic ones.
-#define SET_THREAD_REG( zztid, zzval, zzGETREG, zzevent, zzargs... ) \
- do { zzGETREG(VG_(threads)[zztid].arch) =3D (zzval); \
- VG_TRACK( zzevent, ##zzargs ); \
- } while (0)
-
-#define SET_CLREQ_RETVAL(zztid, zzval) \
- SET_THREAD_REG(zztid, zzval, CLREQ_RET, post_reg_write, \
- Vg_CoreClientReq, zztid, O_CLREQ_RET, sizeof(UWord))
-
-#define SET_CLCALL_RETVAL(zztid, zzval, f) \
- SET_THREAD_REG(zztid, zzval, CLREQ_RET, post_reg_write_clientcall_ret=
urn, \
- zztid, O_CLREQ_RET, sizeof(UWord), f)
-
/* ---------------------------------------------------------------------
Exports of vg_signals.c
------------------------------------------------------------------ */
@@ -738,13 +722,14 @@
extern void VG_(poll_signals) ( ThreadId );
=20
/* Fake system calls for signal handling. */
-extern Int VG_(do_sys_sigaltstack) ( ThreadId tid );
-extern Int VG_(do_sys_sigaction) ( Int signo,=20
- const struct vki_sigaction *new_a=
ct,=20
- struct vki_sigaction *old_act );
-extern Int VG_(do_sys_sigprocmask) ( ThreadId tid, Int how,=20
- vki_sigset_t* set,
- vki_sigset_t* oldset );
+extern Int VG_(do_sys_sigaltstack) ( ThreadId tid, vki_stack_t* ss,
+ vki_stack_t* oss );
+extern Int VG_(do_sys_sigaction) ( Int signo,=20
+ const struct vki_sigaction *new_act=
,=20
+ struct vki_sigaction *old_act );
+extern Int VG_(do_sys_sigprocmask) ( ThreadId tid, Int how,=20
+ vki_sigset_t* set,
+ vki_sigset_t* oldset );
=20
/* Handy utilities to block/restore all host signals. */
extern void VG_(block_all_host_signals)=20
@@ -1064,15 +1049,15 @@
#define GENX_(const, name) SYS_WRAPPER_ENTRY_X_(vgArch_gen, const, na=
me)
#define GENXY(const, name) SYS_WRAPPER_ENTRY_XY(vgArch_gen, const, na=
me)
=20
-// Space-saving macros for syscall wrappers
-#define SYSNO SYSCALL_NUM(tst->arch) // in PRE(x)
-#define RES SYSCALL_RET(tst->arch) // in POST(x)
-#define ARG1 SYSCALL_ARG1(tst->arch)
-#define ARG2 SYSCALL_ARG2(tst->arch)
-#define ARG3 SYSCALL_ARG3(tst->arch)
-#define ARG4 SYSCALL_ARG4(tst->arch)
-#define ARG5 SYSCALL_ARG5(tst->arch)
-#define ARG6 SYSCALL_ARG6(tst->arch)
+// Space-saving macros for syscall PRE() and POST() wrappers
+#define RES ((tst->arch).vex.VGP_SYSCALL_RET)
+#define SYSNO ((tst->arch).vex.VGP_SYSCALL_NUM)
+#define ARG1 ((tst->arch).vex.VGP_SYSCALL_ARG1)
+#define ARG2 ((tst->arch).vex.VGP_SYSCALL_ARG2)
+#define ARG3 ((tst->arch).vex.VGP_SYSCALL_ARG3)
+#define ARG4 ((tst->arch).vex.VGP_SYSCALL_ARG4)
+#define ARG5 ((tst->arch).vex.VGP_SYSCALL_ARG5)
+#define ARG6 ((tst->arch).vex.VGP_SYSCALL_ARG6)
=20
// For setting the result of a syscall in a wrapper
#define SET_RESULT(val) \
@@ -1602,16 +1587,6 @@
// Platform-specific things defined in eg. x86/*.c
// ---------------------------------------------------------------------
=20
-// Accessors for the ThreadArchState
-#define SYSCALL_NUM(regs) ((regs).vex.VGP_SYSCALL_NUM)
-#define SYSCALL_ARG1(regs) ((regs).vex.VGP_SYSCALL_ARG1)
-#define SYSCALL_ARG2(regs) ((regs).vex.VGP_SYSCALL_ARG2)
-#define SYSCALL_ARG3(regs) ((regs).vex.VGP_SYSCALL_ARG3)
-#define SYSCALL_ARG4(regs) ((regs).vex.VGP_SYSCALL_ARG4)
-#define SYSCALL_ARG5(regs) ((regs).vex.VGP_SYSCALL_ARG5)
-#define SYSCALL_ARG6(regs) ((regs).vex.VGP_SYSCALL_ARG6)
-#define SYSCALL_RET(regs) ((regs).vex.VGP_SYSCALL_RET)
-
// Offsets for the shadow state
#define O_SYSCALL_NUM (offsetof(VexGuestArchState, VGP_SYSCALL_NUM))
#define O_SYSCALL_ARG1 (offsetof(VexGuestArchState, VGP_SYSCALL_ARG1))
Modified: trunk/coregrind/m_sigframe/sigframe-amd64-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_sigframe/sigframe-amd64-linux.c 2005-05-08 00:45:11=
UTC (rev 3629)
+++ trunk/coregrind/m_sigframe/sigframe-amd64-linux.c 2005-05-08 02:04:49=
UTC (rev 3630)
@@ -361,11 +361,6 @@
}
=20
=20
-#define SET_SIGNAL_RSP(zztid, zzval) \
- SET_THREAD_REG(zztid, zzval, STACK_PTR, post_reg_write, \
- Vg_CoreSignal, zztid, O_STACK_PTR, sizeof(Addr))
-
-
/* Extend the stack segment downwards if needed so as to ensure the
new signal frames are mapped to something. Return a Bool
indicating whether or not the operation was successful.
@@ -494,8 +489,9 @@
frame =3D (struct rt_sigframe *)rsp;
=20
/* Set the thread so it will next run the handler. */
- /* tst->m_rsp =3D rsp; */
- SET_SIGNAL_RSP(tid, rsp);
+ /* tst->m_rsp =3D rsp; also notify the tool we've updated RSP */
+ STACK_PTR(VG_(threads)[tid].arch) =3D rsp;
+ VG_TRACK( post_reg_write, Vg_CoreSignal, tid, O_STACK_PTR, sizeof(Add=
r));
=20
//VG_(printf)("handler =3D %p\n", handler);
tst->arch.vex.guest_RIP =3D (Addr) handler;
Modified: trunk/coregrind/m_sigframe/sigframe-arm-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_sigframe/sigframe-arm-linux.c 2005-05-08 00:45:11 U=
TC (rev 3629)
+++ trunk/coregrind/m_sigframe/sigframe-arm-linux.c 2005-05-08 02:04:49 U=
TC (rev 3630)
@@ -150,12 +150,6 @@
}
#endif
=20
-#if 0
-#define SET_SIGNAL_ESP(zztid, zzval) \
- SET_THREAD_REG(zztid, zzval, VGA_STACK_PTR, VGA_R_STACK_PTR, \
- post_reg_write_deliver_signal)
-#endif
-
void VGA_(push_signal_frame)(ThreadId tid, Addr esp_top_of_frame,
const vki_siginfo_t *siginfo,
void *handler, UInt flags,
@@ -248,8 +242,9 @@
/* Ensure 'tid' and 'tst' correspond */
vg_assert(& VG_(threads)[tid] =3D=3D tst);
/* Set the thread so it will next run the handler. */
- /* tst->m_esp =3D esp; */
- SET_SIGNAL_ESP(tid, esp);
+ /* tst->m_esp =3D esp; also notify the tool we've updated ESP */
+ STACK_PTR(VG_(threads)[tid].arch) =3D esp;
+ VG_TRACK( post_reg_write, Vg_CoreSignal, tid, O_STACK_PTR, sizeof(Add=
r));
=20
tst->arch.vex.guest_EIP =3D (Addr) handler;
/* This thread needs to be marked runnable, but we leave that the
Modified: trunk/coregrind/m_sigframe/sigframe-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_sigframe/sigframe-x86-linux.c 2005-05-08 00:45:11 U=
TC (rev 3629)
+++ trunk/coregrind/m_sigframe/sigframe-x86-linux.c 2005-05-08 02:04:49 U=
TC (rev 3630)
@@ -382,11 +382,6 @@
}
=20
=20
-#define SET_SIGNAL_ESP(zztid, zzval) \
- SET_THREAD_REG(zztid, zzval, STACK_PTR, post_reg_write, \
- Vg_CoreSignal, zztid, O_STACK_PTR, sizeof(Addr))
-
-
/* Extend the stack segment downwards if needed so as to ensure the
new signal frames are mapped to something. Return a Bool
indicating whether or not the operation was successful.
@@ -572,8 +567,9 @@
siginfo, handler, flags, mask, restorer)=
;
=20
/* Set the thread so it will next run the handler. */
- /* tst->m_esp =3D esp; */
- SET_SIGNAL_ESP(tid, esp);
+ /* tst->m_esp =3D esp; also notify the tool we've updated ESP */
+ STACK_PTR(VG_(threads)[tid].arch) =3D esp;
+ VG_TRACK( post_reg_write, Vg_CoreSignal, tid, O_STACK_PTR, sizeof(Add=
r));
=20
//VG_(printf)("handler =3D %p\n", handler);
tst->arch.vex.guest_EIP =3D (Addr) handler;
Modified: trunk/coregrind/vg_scheduler.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/vg_scheduler.c 2005-05-08 00:45:11 UTC (rev 3629)
+++ trunk/coregrind/vg_scheduler.c 2005-05-08 02:04:49 UTC (rev 3630)
@@ -891,6 +891,21 @@
Specifying shadow register values
------------------------------------------------------------------ */
=20
+// These macros write a value to a client's thread register, and tell th=
e
+// tool that it's happened (if necessary).
+
+#define SET_CLREQ_RETVAL(zztid, zzval) \
+ do { CLREQ_RET(VG_(threads)[zztid].arch) =3D (zzval); \
+ VG_TRACK( post_reg_write, \
+ Vg_CoreClientReq, zztid, O_CLREQ_RET, sizeof(UWord)); =
\
+ } while (0)
+
+#define SET_CLCALL_RETVAL(zztid, zzval, f) \
+ do { CLREQ_RET(VG_(threads)[zztid].arch) =3D (zzval); \
+ VG_TRACK( post_reg_write_clientcall_return, \
+ zztid, O_CLREQ_RET, sizeof(UWord), f); \
+ } while (0)
+
void VG_(set_shadow_regs_area) ( ThreadId tid, OffT offset, SizeT size,
const UChar* area )
{
@@ -924,16 +939,12 @@
=20
void VG_(set_return_from_syscall_shadow) ( ThreadId tid, UWord ret_shado=
w )
{
- VG_(set_shadow_regs_area)(tid, O_SYSCALL_RET, sizeof(UWord),
- (UChar*)&ret_shadow);
+ VG_(threads)[tid].arch.vex_shadow.VGP_SYSCALL_RET =3D ret_shadow;
}
=20
UInt VG_(get_exit_status_shadow) ( ThreadId tid )
{
- UInt ret;
- VG_(get_shadow_regs_area)(tid, O_SYSCALL_ARG1, sizeof(UInt),
- (UChar*)&ret);
- return ret;
+ return VG_(threads)[tid].arch.vex_shadow.VGP_SYSCALL_ARG1;
}
=20
=20
Modified: trunk/coregrind/vg_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/vg_signals.c 2005-05-08 00:45:11 UTC (rev 3629)
+++ trunk/coregrind/vg_signals.c 2005-05-08 02:04:49 UTC (rev 3630)
@@ -429,15 +429,11 @@
}
=20
=20
-Int VG_(do_sys_sigaltstack) ( ThreadId tid )
+Int VG_(do_sys_sigaltstack) ( ThreadId tid, vki_stack_t* ss, vki_stack_t=
* oss )
{
- vki_stack_t* ss;
- vki_stack_t* oss;
- Addr m_SP;
+ Addr m_SP;
=20
vg_assert(VG_(is_valid_tid)(tid));
- ss =3D (vki_stack_t*)SYSCALL_ARG1(VG_(threads)[tid].arch);
- oss =3D (vki_stack_t*)SYSCALL_ARG2(VG_(threads)[tid].arch);
m_SP =3D STACK_PTR(VG_(threads)[tid].arch);
=20
if (VG_(clo_trace_signals))
Modified: trunk/coregrind/vg_syscalls.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/vg_syscalls.c 2005-05-08 00:45:11 UTC (rev 3629)
+++ trunk/coregrind/vg_syscalls.c 2005-05-08 02:04:49 UTC (rev 3630)
@@ -5608,7 +5608,8 @@
PRE_MEM_WRITE( "sigaltstack(oss)", ARG2, sizeof(vki_stack_t) );
}
=20
- SET_RESULT( VG_(do_sys_sigaltstack) (tid) );
+ SET_RESULT( VG_(do_sys_sigaltstack) (tid, (vki_stack_t*)ARG1,=20
+ (vki_stack_t*)ARG2) );
}
=20
POST(sys_sigaltstack)
@@ -6165,10 +6166,9 @@
=20
vg_assert(VG_(is_running_thread)(tid));
=20
- // The RES part is redundant -- we're assigning the value to itself -=
-
- // but we need this call to tell the tool that the assignment has
- // occurred.
- SET_SYSCALL_RETVAL(tid, RES);
+ // Tell the tool that the assignment has occurred, so it can update
+ // shadow regs as necessary.
+ VGP_TRACK_SYSCALL_RETVAL(tid);
=20
VG_(post_syscall)(tid);
=20
Modified: trunk/coregrind/x86-linux/core_platform.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/x86-linux/core_platform.h 2005-05-08 00:45:11 UTC (re=
v 3629)
+++ trunk/coregrind/x86-linux/core_platform.h 2005-05-08 02:04:49 UTC (re=
v 3630)
@@ -52,11 +52,9 @@
// Setting a syscall result
#define VGP_SET_SYSCALL_RESULT(regs, val) ((regs).vex.guest_EAX =3D (=
val))
=20
-// For setting thread regs and shadow regs from within the core, once a
-// syscall has completed.
-#define SET_SYSCALL_RETVAL(zztid, zzval) \
- SET_THREAD_REG(zztid, zzval, SYSCALL_RET, post_reg_write, \
- Vg_CoreSysCall, zztid, O_SYSCALL_RET, sizeof(UWord))
+// For informing tools that a syscall result has been set.
+#define VGP_TRACK_SYSCALL_RETVAL(zztid) \
+ VG_TRACK( post_reg_write, Vg_CoreSysCall, zztid, O_SYSCALL_RET, sizeo=
f(UWord) );
=20
/* ---------------------------------------------------------------------
Exports of vg_ldt.c
@@ -107,7 +105,7 @@
} while (0)
=20
#define VGP_GET_MMAP_ARGS(tst, a1, a2, a3, a4, a5, a6) do { \
- UInt *arg_block =3D (UInt*)SYSCALL_ARG1(tst->arch); \
+ UInt *arg_block =3D (UInt*)(tst->arch.vex.VGP_SYSCALL_ARG1); \
PRE_MEM_READ( "old_mmap(args)", (Addr)arg_block, 6*sizeof(UWord) );\
a1 =3D arg_block[0]; \
a2 =3D arg_block[1]; \
|
|
From: Tom H. <th...@cy...> - 2005-05-08 02:04:52
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-05-08 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 == 150 tests, 77 stderr failures, 3 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/writev (stderr) memcheck/tests/zeropage (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_creat (stderr) corecheck/tests/fdleak_dup (stderr) corecheck/tests/fdleak_dup2 (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_open (stderr) corecheck/tests/fdleak_pipe (stderr) corecheck/tests/fdleak_socketpair (stderr) massif/tests/toobig-allocs (stderr) none/tests/faultstatus (stderr) none/tests/selfrun (stdout) none/tests/selfrun (stderr) |
|
From: Michael P. <md...@tr...> - 2005-05-08 00:59:26
|
The following patch enables the amd64-linux epoll_*() syscalls, which
are used by one app I regularly run under valgrind on x86-linux. The
choices of LINXY() vs LINX_() are copied from x86-linux/syscalls.c Is
anything else (test cases, etc) required for this kind of patch to go
in?
Michael Poole
Index: coregrind/amd64-linux/syscalls.c
===================================================================
--- coregrind/amd64-linux/syscalls.c (revision 3628)
+++ coregrind/amd64-linux/syscalls.c (working copy)
@@ -1156,7 +1156,7 @@
LINXY(__NR_io_cancel, sys_io_cancel), // 210
// (__NR_get_thread_area, sys_ni_syscall), // 211
// (__NR_lookup_dcookie, sys_lookup_dcookie), // 212
- // (__NR_epoll_create, sys_epoll_create), // 213
+ LINXY(__NR_epoll_create, sys_epoll_create), // 213
// (__NR_epoll_ctl_old, sys_ni_syscall), // 214
// (__NR_epoll_wait_old, sys_ni_syscall), // 215
@@ -1179,8 +1179,8 @@
// (__NR_clock_nanosleep, sys_clock_nanosleep),// 230
LINX_(__NR_exit_group, sys_exit_group), // 231
- // (__NR_epoll_wait, sys_epoll_wait), // 232
- // (__NR_epoll_ctl, sys_epoll_ctl), // 233
+ LINXY(__NR_epoll_wait, sys_epoll_wait), // 232
+ LINX_(__NR_epoll_ctl, sys_epoll_ctl), // 233
LINXY(__NR_tgkill, sys_tgkill), // 234
// (__NR_utimes, sys_utimes), // 235
|
|
From: <sv...@va...> - 2005-05-08 00:45:19
|
Author: njn
Date: 2005-05-08 01:45:11 +0100 (Sun, 08 May 2005)
New Revision: 3629
Modified:
trunk/coregrind/core.h
trunk/coregrind/vg_signals.c
trunk/coregrind/vg_syscalls.c
trunk/coregrind/x86-linux/core_platform.h
Log:
Cleared up some confusion and redundant actions involving the SET_RESULT =
and
SET_SYSCALL_RETVAL macros, and made the VG_(do_sys_*)() functions behave
more consistently.
Also deleted some code that's been commented out of vg_syscalls.c for a l=
ong
time.
Modified: trunk/coregrind/core.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/core.h 2005-05-07 17:57:39 UTC (rev 3628)
+++ trunk/coregrind/core.h 2005-05-08 00:45:11 UTC (rev 3629)
@@ -738,13 +738,13 @@
extern void VG_(poll_signals) ( ThreadId );
=20
/* Fake system calls for signal handling. */
-extern void VG_(do_sys_sigaltstack) ( ThreadId tid );
-extern Int VG_(do_sys_sigaction) ( Int signo,=20
- const struct vki_sigaction *new_act,=20
- struct vki_sigaction *old_act );
-extern void VG_(do_sys_sigprocmask) ( ThreadId tid, Int how,=20
- vki_sigset_t* set,
- vki_sigset_t* oldset );
+extern Int VG_(do_sys_sigaltstack) ( ThreadId tid );
+extern Int VG_(do_sys_sigaction) ( Int signo,=20
+ const struct vki_sigaction *new_a=
ct,=20
+ struct vki_sigaction *old_act );
+extern Int VG_(do_sys_sigprocmask) ( ThreadId tid, Int how,=20
+ vki_sigset_t* set,
+ vki_sigset_t* oldset );
=20
/* Handy utilities to block/restore all host signals. */
extern void VG_(block_all_host_signals)=20
@@ -1074,6 +1074,7 @@
#define ARG5 SYSCALL_ARG5(tst->arch)
#define ARG6 SYSCALL_ARG6(tst->arch)
=20
+// For setting the result of a syscall in a wrapper
#define SET_RESULT(val) \
do { VGP_SET_SYSCALL_RESULT(tst->arch, (val)); \
tst->syscall_result_set =3D True; \
Modified: trunk/coregrind/vg_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/vg_signals.c 2005-05-07 17:57:39 UTC (rev 3628)
+++ trunk/coregrind/vg_signals.c 2005-05-08 00:45:11 UTC (rev 3629)
@@ -429,7 +429,7 @@
}
=20
=20
-void VG_(do_sys_sigaltstack) ( ThreadId tid )
+Int VG_(do_sys_sigaltstack) ( ThreadId tid )
{
vki_stack_t* ss;
vki_stack_t* oss;
@@ -454,21 +454,18 @@
=20
if (ss !=3D NULL) {
if (on_sig_stack(tid, STACK_PTR(VG_(threads)[tid].arch))) {
- SET_SYSCALL_RETVAL(tid, -VKI_EPERM);
- return;
+ return -VKI_EPERM;
}
if (ss->ss_flags !=3D VKI_SS_DISABLE=20
&& ss->ss_flags !=3D VKI_SS_ONSTACK=20
&& ss->ss_flags !=3D 0) {
- SET_SYSCALL_RETVAL(tid, -VKI_EINVAL);
- return;
+ return -VKI_EINVAL;
}
if (ss->ss_flags =3D=3D VKI_SS_DISABLE) {
VG_(threads)[tid].altstack.ss_flags =3D VKI_SS_DISABLE;
} else {
if (ss->ss_size < VKI_MINSIGSTKSZ) {
- SET_SYSCALL_RETVAL(tid, -VKI_ENOMEM);
- return;
+ return -VKI_ENOMEM;
}
=20
VG_(threads)[tid].altstack.ss_sp =3D ss->ss_sp;
@@ -476,7 +473,7 @@
VG_(threads)[tid].altstack.ss_flags =3D 0;
}
}
- SET_SYSCALL_RETVAL(tid, 0);
+ return 0;
}
=20
=20
@@ -701,7 +698,7 @@
}
=20
=20
-void VG_(do_sys_sigprocmask) ( ThreadId tid,
+int VG_(do_sys_sigprocmask) ( ThreadId tid,
Int how,=20
vki_sigset_t* set,
vki_sigset_t* oldset )
@@ -712,15 +709,13 @@
case VKI_SIG_SETMASK:
vg_assert(VG_(is_valid_tid)(tid));
do_setmask ( tid, how, set, oldset );
- SET_SYSCALL_RETVAL(tid, 0);
VG_(poll_signals)(tid); /* look for any newly deliverable signals =
*/
- break;
+ return 0;
=20
default:
VG_(message)(Vg_DebugMsg,=20
"sigprocmask: unknown `how' field %d", how);
- SET_SYSCALL_RETVAL(tid, -VKI_EINVAL);
- break;
+ return -VKI_EINVAL;
}
}
=20
Modified: trunk/coregrind/vg_syscalls.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/vg_syscalls.c 2005-05-07 17:57:39 UTC (rev 3628)
+++ trunk/coregrind/vg_syscalls.c 2005-05-08 00:45:11 UTC (rev 3629)
@@ -4512,8 +4512,9 @@
}
=20
if (RES !=3D -VKI_ENOMEM) {
- VGP_DO_MMAP(RES, a1, a2, a3, a4, a5, a6);
- SET_RESULT(RES);
+ int res;
+ VGP_DO_MMAP(res, a1, a2, a3, a4, a5, a6);
+ SET_RESULT(res);
=20
if (!VG_(is_kerror)(RES)) {
vg_assert(VG_(valid_client_addr)(RES, a2, tid, "old_mmap"));
@@ -5607,8 +5608,7 @@
PRE_MEM_WRITE( "sigaltstack(oss)", ARG2, sizeof(vki_stack_t) );
}
=20
- VG_(do_sys_sigaltstack) (tid);
- SET_RESULT(RES); /* sigh */
+ SET_RESULT( VG_(do_sys_sigaltstack) (tid) );
}
=20
POST(sys_sigaltstack)
@@ -5675,11 +5675,11 @@
if (set)
bigger_set.sig[0] =3D *(vki_old_sigset_t*)set;
=20
- VG_(do_sys_sigprocmask) ( tid,=20
- ARG1 /*how*/,=20
- set ? &bigger_set : NULL,
- oldset ? &bigger_oldset : NULL);
- SET_RESULT(RES);
+ SET_RESULT(
+ VG_(do_sys_sigprocmask) ( tid, ARG1 /*how*/,=20
+ set ? &bigger_set : NULL,
+ oldset ? &bigger_oldset : NULL)
+ );
=20
if (oldset)
*oldset =3D bigger_oldset.sig[0];
@@ -5707,12 +5707,10 @@
if (sizeof(vki_sigset_t) !=3D ARG4)
SET_RESULT( -VKI_EMFILE );
else {
- VG_(do_sys_sigprocmask) ( tid,=20
- ARG1 /*how*/,=20
- (vki_sigset_t*) ARG2,
- (vki_sigset_t*) ARG3 );
- /* Mark that the result is set. */
- SET_RESULT(RES);
+ SET_RESULT( VG_(do_sys_sigprocmask) ( tid, ARG1 /*how*/,=20
+ (vki_sigset_t*) ARG2,
+ (vki_sigset_t*) ARG3 )
+ );
}
}
=20
@@ -6167,6 +6165,9 @@
=20
vg_assert(VG_(is_running_thread)(tid));
=20
+ // The RES part is redundant -- we're assigning the value to itself -=
-
+ // but we need this call to tell the tool that the assignment has
+ // occurred.
SET_SYSCALL_RETVAL(tid, RES);
=20
VG_(post_syscall)(tid);
@@ -6183,95 +6184,6 @@
VGP_POPCC(VgpCoreSysWrap);
}
=20
-//static void restart_syscall(ThreadId tid)
-//{
-// ThreadState* tst;
-// tst =3D VG_(get_ThreadState)(tid);
-//
-// vg_assert(tst !=3D NULL);
-// vg_assert(tst->status =3D=3D VgTs_WaitSys);
-// vg_assert(tst->syscallno !=3D -1);
-//
-// SYSNO =3D tst->syscallno;
-// VGA_(restart_syscall)(&tst->arch);
-//}
-
-// svn version of post_syscall
-//void VG_(post_syscall) ( ThreadId tid, Bool restart )
-//{
-// ThreadState* tst;
-// UInt syscallno, flags;
-// const struct SyscallTableEntry *sys;
-// Bool isSpecial =3D False;
-// Bool restarted =3D False;
-//
-// VGP_PUSHCC(VgpCoreSysWrap);
-//
-// tst =3D VG_(get_ThreadState)(tid);
-// vg_assert(tst->tid =3D=3D tid);
-//
-// /* Tell the tool about the syscall return value */
-// SET_SYSCALL_RETVAL(tst->tid, RES);
-//
-// syscallno =3D tst->syscallno;
-//
-// vg_assert(syscallno !=3D -1); /* must be a current syscall */
-//
-// if (syscallno < VGA_(syscall_table_size) &&
-// VGA_(syscall_table)[syscallno].before !=3D NULL)
-// {
-// sys =3D &VGA_(syscall_table)[syscallno];
-// } else {
-// sys =3D &bad_sys;
-// }
-// flags =3D *(sys->flags_ptr);
-//
-// isSpecial =3D flags & Special;
-//
-// if (RES =3D=3D -VKI_ERESTARTSYS) {
-// /* Applications never expect to see this, so we should either
-// restart the syscall or fail it with EINTR, depending on what
-// our caller wants. Generally they'll want to restart, but if
-// client set the signal state to not restart, then we fail with
-// EINTR. Either way, ERESTARTSYS means the syscall made no
-// progress, and so can be failed or restarted without
-// consequence. */
-// if (0)
-// VG_(printf)("syscall %d returned ERESTARTSYS; restart=3D%d\n",
-// syscallno, restart);
-//
-// if (restart) {
-// restarted =3D True;
-// restart_syscall(tid);
-// } else
-// RES =3D -VKI_EINTR;
-// }=20
-//
-// if (!restarted) {
-// if (sys->after !=3D NULL &&
-// ((tst->sys_flags & PostOnFail) !=3D 0 || !VG_(is_kerror)(RES=
)))
-// (sys->after)(tst->tid, tst);
-//
-// /* Do any post-syscall actions
-//
-// NOTE: this is only called if the syscall completed. If the
-// syscall was restarted, then it will call the Tool's
-// pre_syscall again, without calling post_syscall (ie, more
-// pre's than post's)
-// */
-// if (VG_(needs).syscall_wrapper) {
-// VGP_PUSHCC(VgpToolSysWrap);
-// TL_(post_syscall)(tid, syscallno, RES);
-// VGP_POPCC(VgpToolSysWrap);
-// }
-// }
-//
-// tst->status =3D VgTs_Runnable; /* runnable again */
-// tst->syscallno =3D -1; /* no current syscall */
-//
-// VGP_POPCC(VgpCoreSysWrap);
-//}
-
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/x86-linux/core_platform.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/x86-linux/core_platform.h 2005-05-07 17:57:39 UTC (re=
v 3628)
+++ trunk/coregrind/x86-linux/core_platform.h 2005-05-08 00:45:11 UTC (re=
v 3629)
@@ -52,7 +52,8 @@
// Setting a syscall result
#define VGP_SET_SYSCALL_RESULT(regs, val) ((regs).vex.guest_EAX =3D (=
val))
=20
-// Setting thread regs and shadow regs from within the core
+// For setting thread regs and shadow regs from within the core, once a
+// syscall has completed.
#define SET_SYSCALL_RETVAL(zztid, zzval) \
SET_THREAD_REG(zztid, zzval, SYSCALL_RET, post_reg_write, \
Vg_CoreSysCall, zztid, O_SYSCALL_RET, sizeof(UWord))
|