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
(11) |
2
(13) |
3
(7) |
|
4
(9) |
5
(23) |
6
(19) |
7
(18) |
8
(2) |
9
(7) |
10
(21) |
|
11
(13) |
12
|
13
(8) |
14
(17) |
15
(19) |
16
(25) |
17
(43) |
|
18
(22) |
19
(12) |
20
(19) |
21
(12) |
22
(9) |
23
(12) |
24
(5) |
|
25
(16) |
26
(25) |
27
(24) |
28
(19) |
29
(26) |
30
(25) |
31
(6) |
|
From: Tom H. <to...@co...> - 2004-07-30 02:25:08
|
Nightly build on dunsmere ( Fedora Core 2 ) started at 2004-07-30 03:20:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow shorts: valgrind ./shorts smc1: valgrind ./smc1 susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 174 tests, 7 stderr failures, 1 stdout failure ================= corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_socketpair (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/execve (stderr) memcheck/tests/writev (stderr) none/tests/exec-sigmask (stdout) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2004-07-30 02:20:41
|
Nightly build on audi ( Red Hat 9 ) started at 2004-07-30 03:15:03 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow shortpush: valgrind ./shortpush shorts: valgrind ./shorts smc1: valgrind ./smc1 susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 174 tests, 7 stderr failures, 0 stdout failures ================= corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_socketpair (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/execve (stderr) memcheck/tests/writev (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2004-07-30 02:13:21
|
Nightly build on ginetta ( Red Hat 8.0 ) started at 2004-07-30 03:10:04 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow seg_override: valgrind ./seg_override sem: valgrind ./sem semlimit: valgrind ./semlimit sha1_test: valgrind ./sha1_test shortpush: valgrind ./shortpush shorts: valgrind ./shorts smc1: valgrind ./smc1 susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 174 tests, 3 stderr failures, 0 stdout failures ================= helgrind/tests/race (stderr) helgrind/tests/race2 (stderr) memcheck/tests/writev (stderr) make: *** [regtest] Error 1 |
|
From: Nicholas N. <nj...@ca...> - 2004-07-30 02:11:00
|
Hi, Why are AT_UCACHEBSIZE, AT_SYSINFO, AT_SYSINFO_EHDR, AT_ICACHEBSIZE, AT_DCACHEBSIZE, and AT_SECURE defined in vg_main.c, rather than vg_kerneliface.h? I recall these are recent additions, but I didn't pay attention/understand at the time and now it's of interest to me :) N |
|
From: Tom H. <th...@cy...> - 2004-07-30 02:08:17
|
Nightly build on alvis ( Red Hat 7.3 ) started at 2004-07-30 03:05:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 174 tests, 9 stderr failures, 1 stdout failure ================= addrcheck/tests/toobig-allocs (stderr) helgrind/tests/deadlock (stderr) helgrind/tests/race (stderr) helgrind/tests/race2 (stderr) memcheck/tests/badjump (stderr) memcheck/tests/brk (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/new_nothrow (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/writev (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2004-07-30 02:07:44
|
Nightly build on standard ( Red Hat 7.2 ) started at 2004-07-30 03:00:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow rcrl: valgrind ./rcrl readline1: valgrind ./readline1 resolv: valgrind ./resolv rlimit_nofile: valgrind ./rlimit_nofile seg_override: valgrind ./seg_override sem: valgrind ./sem semlimit: valgrind ./semlimit sha1_test: valgrind ./sha1_test shortpush: valgrind ./shortpush shorts: valgrind ./shorts smc1: valgrind ./smc1 susphello: valgrind ./susphello syscall-restart1: valgrind ./syscall-restart1 syscall-restart2: valgrind ./syscall-restart2 system: valgrind ./system yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 174 tests, 0 stderr failures, 0 stdout failures ================= |
|
From: Tom H. <th...@cy...> - 2004-07-29 22:53:37
|
In message <Pin...@he...>
Nicholas Nethercote <nj...@ca...> wrote:
> On Thu, 29 Jul 2004, Jeremy Fitzhardinge wrote:
>
> > I think we should probably strictly use the stdint types in
> > vg_kerneliface, so that we're explicit about the sizes of everything.
>
> What are "stdint types"? You mean like 'int' and 'short' rather than our
> 'Int' and 'Short'? Yes, I agree keeping the definitions as close as
> possible to the originals is a good idea.
I think he meant the types in the stdint.h header.
Tom
--
Tom Hughes (th...@cy...)
Software Engineer, Cyberscience Corporation
http://www.cyberscience.com/
|
|
From: Nicholas N. <nj...@ca...> - 2004-07-29 22:44:36
|
On Thu, 29 Jul 2004, Jeremy Fitzhardinge wrote: > The libc headers are only vaguely related to the kernel interface > headers. We could include linux/* headers, but that could into a pretty > messy tarpit. Why is that a messy tarpit? N |
|
From: Nicholas N. <nj...@ca...> - 2004-07-29 22:43:44
|
On Thu, 29 Jul 2004, Nicholas Nethercote wrote: > eg: > > -Ix86/ -Ilinux/ -Ix86-linux/ or symlinks, as Jeremy says. N |
|
From: Nicholas N. <nj...@ca...> - 2004-07-29 22:43:28
|
On Thu, 29 Jul 2004, Jeremy Fitzhardinge wrote: >> - Are the types all meant to match exactly the "real" types? >> vki_ksigaction doesn't match sigaction, for one. (I've only looked at >> a few so far.) > > They're only supposed to match the syscall interface types. Ignore > anything in /usr/include (except /usr/include/(linux,asm)/, since that > will just mislead you. Ok... this is exactly the sort of thing I would really like to see explained in comments. I'm not a kernel hacker and I find a lot of the kernel-interface stuff, especially signals and threads, quite bewildering. Do you get your type definitions from /usr/include/linux and /usr/include/asm? Actually, I guess you get them from include/asm-whatever in the Linux source, right? > The kernel interface is fixed for all time (well, it extends), so > there's no serious problem with having our own copy of all this - like > glibc does - but it does cause duplicated effort. Ok, that makes me feel slightly better. But it's still not great. > I think we should probably strictly use the stdint types in > vg_kerneliface, so that we're explicit about the sizes of everything. What are "stdint types"? You mean like 'int' and 'short' rather than our 'Int' and 'Short'? Yes, I agree keeping the definitions as close as possible to the originals is a good idea. N |
|
From: Tom H. <th...@cy...> - 2004-07-29 22:40:14
|
CVS commit by thughes:
Modify the ipc system call so that only those calls which may block
are treated as blocking.
This fixes bug #86000 because shmat is no longer treated as blocking
and it is therefore no longer possible for two threads to try and use
the same address for the shared memory segment.
M +9 -1 coregrind/vg_syscalls.c 1.115
M +8 -0 include/vg_kerneliface.h 1.21
--- valgrind/coregrind/vg_syscalls.c #1.114:1.115
@@ -2554,4 +2554,5 @@ PRE(ipc)
SYSCALL_TRACK( pre_mem_read, tid, "semop(sops)", arg5,
arg3 * sizeof(struct sembuf) );
+ tst->sys_flags |= MayBlock;
break;
case 2: /* IPCOP_semget */
@@ -2564,4 +2565,5 @@ PRE(ipc)
SYSCALL_TRACK( pre_mem_read, tid, "semtimedop(timeout)", arg5,
sizeof(struct timespec) );
+ tst->sys_flags |= MayBlock;
break;
case 11: /* IPCOP_msgsnd */
@@ -2574,4 +2576,7 @@ PRE(ipc)
SYSCALL_TRACK( pre_mem_read, tid, "msgsnd(msgp->mtext)",
(UInt)msgp->mtext, msgsz );
+
+ if ((arg4 & VKI_IPC_NOWAIT) == 0)
+ tst->sys_flags |= MayBlock;
break;
}
@@ -2589,4 +2594,7 @@ PRE(ipc)
SYSCALL_TRACK( pre_mem_write, tid, "msgrcv(msgp->mtext)",
(UInt)msgp->mtext, msgsz );
+
+ if ((arg4 & VKI_IPC_NOWAIT) == 0)
+ tst->sys_flags |= MayBlock;
break;
}
@@ -5685,5 +5693,5 @@ static const struct sys_info sys_info[]
SYSB_(getuid, 0),
SYSB_(getuid32, 0),
- SYSBA(ipc, MayBlock),
+ SYSBA(ipc, 0),
SYSBA(ioctl, MayBlock),
SYSBA(kill, 0),
--- valgrind/include/vg_kerneliface.h #1.20:1.21
@@ -771,4 +771,12 @@ struct vki_statfs64 {
/*
+ * linux/ipc.h
+ */
+
+#define VKI_IPC_CREAT 00001000 /* create if key is nonexistent */
+#define VKI_IPC_EXCL 00002000 /* fail if key exists */
+#define VKI_IPC_NOWAIT 00004000 /* return error on wait */
+
+/*
* linux/elfcore.h
*/
|
|
From: Nicholas N. <nj...@ca...> - 2004-07-29 22:33:58
|
On Thu, 29 Jul 2004, Paul Mackerras wrote: >> This whole file is a dirty hack. So is vg_unistd.h. Is there a better >> way to do the same thing? > > I have been wondering the same thing, in the context of the PPC port > (yes I am still working on abstracting all the x86-specific stuff). > > My best idea at the moment is a set of arch-specific directories under > include/, like we have under coregrind/. But we end up with an awful > lot of -I flags on the compile commands though. Anybody got a better > idea? There are two different issues here -- how to know about kernel structures, and how to abstract out the arch/OS details. For the latter, I think arch- and OS-specific directories is the right way to go. That's how the Linux kernel does it, AFAICT. You'd need at most three -I flags, ie: -Iarch/ -IOS/ -Iarch-OS/ eg: -Ix86/ -Ilinux/ -Ix86-linux/ for the arch-specific code, OS-specific code, and arch+OS specific code. N |
|
From: Tom H. <th...@cy...> - 2004-07-29 21:20:18
|
CVS commit by thughes:
Modified the fcntl system call so that only those reason codes which
can block (ie F_SETLKW) are treated as blocking.
This resolves the F_SETOWN problem described in bug #85969.
A none/tests/fcntl_setown.c 1.1 [no copyright]
A none/tests/fcntl_setown.stderr.exp 1.1
A none/tests/fcntl_setown.stdout.exp 1.1
A none/tests/fcntl_setown.vgtest 1.1
M +6 -2 coregrind/vg_syscalls.c 1.114
M +6 -0 include/vg_kerneliface.h 1.20
M +1 -0 none/tests/.cvsignore 1.18
M +3 -1 none/tests/Makefile.am 1.42
--- valgrind/coregrind/vg_syscalls.c #1.113:1.114
@@ -2118,4 +2118,6 @@ PRE(fcntl)
/* int fcntl(int fd, int cmd, int arg); */
MAYBE_PRINTF("fcntl ( %d, %d, %d )\n",arg1,arg2,arg3);
+ if (arg2 == VKI_F_SETLKW)
+ tst->sys_flags |= MayBlock;
}
@@ -2157,4 +2159,6 @@ PRE(fcntl64)
/* int fcntl64(int fd, int cmd, int arg); */
MAYBE_PRINTF("fcntl64 ( %d, %d, %d )\n", arg1,arg2,arg3);
+ if (arg2 == VKI_F_SETLKW || arg2 == VKI_F_SETLKW64)
+ tst->sys_flags |= MayBlock;
}
@@ -5645,10 +5649,10 @@ static const struct sys_info sys_info[]
SYSBA(dup, 0),
SYSBA(dup2, 0),
- SYSBA(fcntl, MayBlock),
+ SYSBA(fcntl, 0),
SYSB_(fchdir, 0),
SYSB_(fchown32, 0),
SYSB_(fchown, 0),
SYSB_(fchmod, 0),
- SYSBA(fcntl64, MayBlock),
+ SYSBA(fcntl64, 0),
SYSBA(fstat, 0),
SYSBA(fork, 0),
--- valgrind/include/vg_kerneliface.h #1.19:1.20
@@ -547,4 +547,10 @@ struct vki_timeval {
#define VKI_F_GETFL 3 /* get file->f_flags */
#define VKI_F_SETFL 4 /* set file->f_flags */
+#define VKI_F_GETLK 5
+#define VKI_F_SETLK 6
+#define VKI_F_SETLKW 7
+#define VKI_F_GETLK64 12 /* using 'struct flock64' */
+#define VKI_F_SETLK64 13
+#define VKI_F_SETLKW64 14
/* for F_[GET|SET]FL */
--- valgrind/none/tests/.cvsignore #1.17:1.18
@@ -14,4 +14,5 @@
exec-sigmask
execve
+fcntl_setown
floored
fork
--- valgrind/none/tests/Makefile.am #1.41:1.42
@@ -29,4 +29,5 @@
exec-sigmask.vgtest exec-sigmask.stdout.exp exec-sigmask.stderr.exp \
execve.vgtest execve.stdout.exp execve.stderr.exp \
+ fcntl_setown.vgtest fcntl_setown.stdout.exp fcntl_setown.stderr.exp \
floored.stderr.exp floored.stdout.exp \
floored.vgtest \
@@ -69,5 +70,5 @@
check_PROGRAMS = \
args badseg bitfield1 bt_everything bt_literal closeall coolo_strlen \
- cpuid dastest discard exec-sigmask execve floored fork \
+ cpuid dastest discard exec-sigmask execve fcntl_setown floored fork \
fpu_lazy_eflags fucomip $(INSN_TESTS) \
int munmap_exe map_unmap mremap rcl_assert rcrl readline1 \
@@ -93,4 +94,5 @@
exec_sigmask_SOURCES = exec-sigmask.c
execve_SOURCES = execve.c
+fcntl_setown_SOURCES = fcntl_setown.c
fork_SOURCES = fork.c
floored_SOURCES = floored.c
|
|
From: Tom H. <th...@cy...> - 2004-07-29 17:44:34
|
CVS commit by thughes:
Add support for allowing the POST function for a system call to be called
even when the system call fails, and allow the PRE function to modify the
system call flags.
Also fix nanosleep so that it only marks the returned time as defined
if the system call exited with EINTR due to be interrupted.
M +3 -0 vg_include.h 1.203
M +1 -0 vg_scheduler.c 1.157
M +243 -238 vg_syscalls.c 1.113
--- valgrind/coregrind/vg_include.h #1.202:1.203
@@ -806,4 +806,7 @@ typedef
Int syscallno;
+ /* If VgTs_WaitSys, this is the syscall flags */
+ UInt sys_flags;
+
/* Details about this thread's proxy LWP */
ProxyLWP *proxy;
--- valgrind/coregrind/vg_scheduler.c #1.156:1.157
@@ -573,4 +573,5 @@ void mostly_clear_thread_record ( Thread
VG_(threads)[tid].syscallno = -1;
+ VG_(threads)[tid].sys_flags = 0;
VG_(threads)[tid].sys_pre_res = NULL;
--- valgrind/coregrind/vg_syscalls.c #1.112:1.113
@@ -1044,4 +1044,6 @@ static Bool fd_allowed(Int fd, const Cha
------------------------------------------------------------------ */
+#define MayBlock (1 << 0)
+#define PostOnFail (1 << 1)
#define PRE(x) \
@@ -4077,7 +4079,5 @@ PRE(nanosleep)
POST(nanosleep)
{
- /* Somewhat bogus ... is only written by the kernel if
- res == -1 && errno == EINTR. */
- if (arg2 != (UInt)NULL)
+ if (arg2 != (UInt)NULL && res == -VKI_EINTR)
VG_TRACK( post_mem_write, arg2, sizeof(struct timespec) );
}
@@ -5505,10 +5505,10 @@ POST(io_cancel)
struct sys_info {
- Bool may_block; /* is a potentially blocking syscall */
+ UInt flags;
void (*before)(ThreadId tid, ThreadState *tst);
void (*after)(ThreadId tid, ThreadState *tst);
};
-#define SYSB_(name, blk) [__NR_##name] = { blk, before_##name, NULL }
-#define SYSBA(name, blk) [__NR_##name] = { blk, before_##name, after_##name }
+#define SYSB_(name, flags) [__NR_##name] = { flags, before_##name, NULL }
+#define SYSBA(name, flags) [__NR_##name] = { flags, before_##name, after_##name }
static void bad_before(ThreadId tid, ThreadState *tst)
@@ -5536,27 +5536,27 @@ static const struct sys_info bad_sys = {
static const struct sys_info special_sys[] = {
/* special */
- SYSB_(exit_group, False),
- SYSB_(exit, False),
- SYSB_(clone, False),
+ SYSB_(exit_group, 0),
+ SYSB_(exit, 0),
+ SYSB_(clone, 0),
- SYSB_(modify_ldt, False),
- SYSB_(set_thread_area, False),
- SYSB_(get_thread_area, False),
- SYSB_(set_tid_address, False),
+ SYSB_(modify_ldt, 0),
+ SYSB_(set_thread_area, 0),
+ SYSB_(get_thread_area, 0),
+ SYSB_(set_tid_address, 0),
- SYSB_(execve, False),
- SYSB_(brk, False),
- SYSB_(mmap, False),
- SYSB_(mremap, False),
+ SYSB_(execve, 0),
+ SYSB_(brk, 0),
+ SYSB_(mmap, 0),
+ SYSB_(mremap, 0),
- SYSB_(io_setup, False),
- SYSB_(io_destroy, False),
+ SYSB_(io_setup, 0),
+ SYSB_(io_destroy, 0),
#if SIGNAL_SIMULATION
- SYSBA(sigaltstack, False),
- SYSBA(rt_sigaction, False),
- SYSBA(sigaction, False),
- SYSBA(rt_sigprocmask, False),
- SYSBA(sigprocmask, False),
+ SYSBA(sigaltstack, 0),
+ SYSBA(rt_sigaction, 0),
+ SYSBA(sigaction, 0),
+ SYSBA(rt_sigprocmask, 0),
+ SYSBA(sigprocmask, 0),
#endif /* SIGNAL_SIMULATION */
};
@@ -5564,215 +5564,215 @@ static const struct sys_info special_sys
static const struct sys_info sys_info[] = {
- SYSBA(ptrace, False),
- SYSB_(mount, True),
- SYSB_(umount, False),
+ SYSBA(ptrace, 0),
+ SYSB_(mount, MayBlock),
+ SYSB_(umount, 0),
- SYSB_(setresgid, False),
- SYSB_(vhangup, False),
- SYSB_(iopl, False),
+ SYSB_(setresgid, 0),
+ SYSB_(vhangup, 0),
+ SYSB_(iopl, 0),
- SYSB_(setxattr, True),
- SYSB_(lsetxattr, True),
- SYSB_(fsetxattr, True),
- SYSBA(getxattr, True),
- SYSBA(lgetxattr, True),
- SYSBA(fgetxattr, True),
- SYSBA(listxattr, True),
- SYSBA(llistxattr, True),
- SYSBA(flistxattr, True),
- SYSB_(removexattr, True),
- SYSB_(lremovexattr, True),
- SYSB_(fremovexattr, True),
+ SYSB_(setxattr, MayBlock),
+ SYSB_(lsetxattr, MayBlock),
+ SYSB_(fsetxattr, MayBlock),
+ SYSBA(getxattr, MayBlock),
+ SYSBA(lgetxattr, MayBlock),
+ SYSBA(fgetxattr, MayBlock),
+ SYSBA(listxattr, MayBlock),
+ SYSBA(llistxattr, MayBlock),
+ SYSBA(flistxattr, MayBlock),
+ SYSB_(removexattr, MayBlock),
+ SYSB_(lremovexattr, MayBlock),
+ SYSB_(fremovexattr, MayBlock),
- SYSB_(quotactl, False),
- SYSBA(lookup_dcookie, False),
+ SYSB_(quotactl, 0),
+ SYSBA(lookup_dcookie, 0),
- SYSB_(truncate64, True),
- SYSB_(fdatasync, True),
- SYSB_(msync, True),
+ SYSB_(truncate64, MayBlock),
+ SYSB_(fdatasync, MayBlock),
+ SYSB_(msync, MayBlock),
- SYSBA(getpmsg, True),
- SYSB_(putpmsg, True),
+ SYSBA(getpmsg, MayBlock),
+ SYSB_(putpmsg, MayBlock),
- SYSBA(syslog, True),
- SYSB_(personality, False),
- SYSB_(chroot, False),
- SYSB_(madvise, True),
- SYSB_(nice, False),
- SYSB_(setresgid32, False),
- SYSB_(setfsuid32, False),
- SYSBA(_sysctl, False),
+ SYSBA(syslog, MayBlock),
+ SYSB_(personality, 0),
+ SYSB_(chroot, 0),
+ SYSB_(madvise, MayBlock),
+ SYSB_(nice, 0),
+ SYSB_(setresgid32, 0),
+ SYSB_(setfsuid32, 0),
+ SYSBA(_sysctl, 0),
- SYSB_(sched_getscheduler, False), /* ??? */
- SYSB_(sched_setscheduler, False), /* ??? */
+ SYSB_(sched_getscheduler, 0), /* ??? */
+ SYSB_(sched_setscheduler, 0), /* ??? */
- SYSB_(mlock, True),
- SYSB_(munlock, True),
- SYSB_(mlockall, True),
- SYSB_(munlockall, True),
+ SYSB_(mlock, MayBlock),
+ SYSB_(munlock, MayBlock),
+ SYSB_(mlockall, MayBlock),
+ SYSB_(munlockall, MayBlock),
- SYSB_(sched_get_priority_max, False), /* ??? */
- SYSB_(sched_get_priority_min, False), /* ??? */
+ SYSB_(sched_get_priority_max, 0), /* ??? */
+ SYSB_(sched_get_priority_min, 0), /* ??? */
- SYSB_(setpriority, False),
- SYSB_(getpriority, False),
+ SYSB_(setpriority, 0),
+ SYSB_(getpriority, 0),
- SYSB_(setfsgid, False),
- SYSB_(setregid, False),
- SYSB_(setresuid, False),
- SYSB_(setfsuid, False),
+ SYSB_(setfsgid, 0),
+ SYSB_(setregid, 0),
+ SYSB_(setresuid, 0),
+ SYSB_(setfsuid, 0),
- SYSBA(sendfile, True),
- SYSBA(sendfile64, True),
- SYSB_(pwrite64, True),
- SYSB_(sync, True),
- SYSBA(fstatfs, False),
- SYSB_(getsid, False),
- SYSBA(pread64, True),
- SYSB_(mknod, False),
- SYSB_(flock, True),
- SYSB_(init_module, True),
- SYSB_(ioperm, False),
- SYSBA(capget, False),
- SYSB_(capset, False),
- SYSB_(access, False),
- SYSB_(chdir, False),
- SYSB_(chmod, False),
- SYSB_(chown32, False),
- SYSB_(lchown32, False),
- SYSB_(chown, False),
- SYSBA(close, False),
- SYSBA(dup, False),
- SYSBA(dup2, False),
- SYSBA(fcntl, True),
- SYSB_(fchdir, False),
- SYSB_(fchown32, False),
- SYSB_(fchown, False),
- SYSB_(fchmod, False),
- SYSBA(fcntl64, True),
- SYSBA(fstat, False),
- SYSBA(fork, False),
- SYSB_(fsync, True),
- SYSB_(ftruncate, True),
- SYSB_(ftruncate64, True),
- SYSBA(getdents, True),
- SYSBA(getdents64, True),
- SYSBA(getgroups32, True),
- SYSBA(getgroups, False),
- SYSBA(getcwd, False),
- SYSB_(geteuid, False),
- SYSB_(geteuid32, False),
- SYSB_(getegid, False),
- SYSB_(getegid32, False),
- SYSB_(getgid, False),
- SYSB_(getgid32, False),
- SYSB_(getpid, False),
- SYSB_(getpgid, False),
- SYSB_(getpgrp, False),
- SYSB_(getppid, False),
- SYSBA(getresgid, False),
- SYSBA(getresgid32, False),
- SYSBA(getresuid, False),
- SYSBA(getresuid32, False),
- SYSBA(ugetrlimit, False),
- SYSBA(getrlimit, False),
- SYSBA(getrusage, False),
- SYSBA(gettimeofday, False),
- SYSB_(getuid, False),
- SYSB_(getuid32, False),
- SYSBA(ipc, True),
- SYSBA(ioctl, True),
- SYSBA(kill, False),
- SYSB_(link, True),
- SYSB_(lseek, False),
- SYSBA(_llseek, False),
- SYSBA(lstat, False),
- SYSBA(lstat64, False),
- SYSB_(mkdir, True),
- SYSBA(mprotect, False),
- SYSBA(munmap, False),
- SYSBA(mincore, False),
- SYSBA(nanosleep, True),
- SYSB_(_newselect, True),
- SYSBA(open, True),
- SYSBA(read, True),
- SYSB_(write, True),
- SYSBA(creat, True),
- SYSBA(pipe, False),
- SYSBA(poll, True),
- SYSBA(epoll_create, False),
- SYSB_(epoll_ctl, False),
- SYSBA(epoll_wait, True),
- SYSBA(readlink, False),
- SYSBA(readv, True),
- SYSB_(rename, False),
- SYSB_(rmdir, True),
- SYSBA(sched_setparam, False), /* ??? */
- SYSBA(sched_getparam, False), /* ??? */
- SYSB_(sched_yield, False), /* ??? */
- SYSB_(select, True),
- SYSB_(setfsgid32, False),
- SYSB_(setgid32, False),
- SYSB_(setgid, False),
- SYSB_(setsid, False),
- SYSB_(setgroups32, False),
- SYSB_(setgroups, False),
- SYSBA(setpgid, False),
- SYSB_(setregid32, False),
- SYSB_(setresuid32, False),
- SYSB_(setreuid32, False),
- SYSB_(setreuid, False),
- SYSB_(setrlimit, False),
- SYSB_(setuid32, False),
- SYSB_(setuid, False),
- SYSBA(socketcall, True),
- SYSBA(stat, False),
- SYSBA(statfs, False),
- SYSBA(statfs64, False),
- SYSB_(symlink, True),
- SYSBA(stat64, False),
- SYSBA(fstat64, False),
- SYSBA(sysinfo, False),
- SYSBA(time, False),
- SYSBA(times, False),
- SYSB_(truncate, True),
- SYSB_(umask, False),
- SYSB_(unlink, True),
- SYSBA(uname, False),
- SYSB_(utime, True),
- SYSB_(utimes, False),
- SYSBA(waitpid, True),
- SYSBA(wait4, True),
- SYSB_(writev, True),
- SYSB_(prctl, True),
- SYSBA(adjtimex, False),
- SYSBA(mmap2, False),
- SYSBA(clock_gettime, False),
- SYSBA(futex, True),
- SYSB_(acct, False),
+ SYSBA(sendfile, MayBlock),
+ SYSBA(sendfile64, MayBlock),
+ SYSB_(pwrite64, MayBlock),
+ SYSB_(sync, MayBlock),
+ SYSBA(fstatfs, 0),
+ SYSB_(getsid, 0),
+ SYSBA(pread64, MayBlock),
+ SYSB_(mknod, 0),
+ SYSB_(flock, MayBlock),
+ SYSB_(init_module, MayBlock),
+ SYSB_(ioperm, 0),
+ SYSBA(capget, 0),
+ SYSB_(capset, 0),
+ SYSB_(access, 0),
+ SYSB_(chdir, 0),
+ SYSB_(chmod, 0),
+ SYSB_(chown32, 0),
+ SYSB_(lchown32, 0),
+ SYSB_(chown, 0),
+ SYSBA(close, 0),
+ SYSBA(dup, 0),
+ SYSBA(dup2, 0),
+ SYSBA(fcntl, MayBlock),
+ SYSB_(fchdir, 0),
+ SYSB_(fchown32, 0),
+ SYSB_(fchown, 0),
+ SYSB_(fchmod, 0),
+ SYSBA(fcntl64, MayBlock),
+ SYSBA(fstat, 0),
+ SYSBA(fork, 0),
+ SYSB_(fsync, MayBlock),
+ SYSB_(ftruncate, MayBlock),
+ SYSB_(ftruncate64, MayBlock),
+ SYSBA(getdents, MayBlock),
+ SYSBA(getdents64, MayBlock),
+ SYSBA(getgroups32, MayBlock),
+ SYSBA(getgroups, 0),
+ SYSBA(getcwd, 0),
+ SYSB_(geteuid, 0),
+ SYSB_(geteuid32, 0),
+ SYSB_(getegid, 0),
+ SYSB_(getegid32, 0),
+ SYSB_(getgid, 0),
+ SYSB_(getgid32, 0),
+ SYSB_(getpid, 0),
+ SYSB_(getpgid, 0),
+ SYSB_(getpgrp, 0),
+ SYSB_(getppid, 0),
+ SYSBA(getresgid, 0),
+ SYSBA(getresgid32, 0),
+ SYSBA(getresuid, 0),
+ SYSBA(getresuid32, 0),
+ SYSBA(ugetrlimit, 0),
+ SYSBA(getrlimit, 0),
+ SYSBA(getrusage, 0),
+ SYSBA(gettimeofday, 0),
+ SYSB_(getuid, 0),
+ SYSB_(getuid32, 0),
+ SYSBA(ipc, MayBlock),
+ SYSBA(ioctl, MayBlock),
+ SYSBA(kill, 0),
+ SYSB_(link, MayBlock),
+ SYSB_(lseek, 0),
+ SYSBA(_llseek, 0),
+ SYSBA(lstat, 0),
+ SYSBA(lstat64, 0),
+ SYSB_(mkdir, MayBlock),
+ SYSBA(mprotect, 0),
+ SYSBA(munmap, 0),
+ SYSBA(mincore, 0),
+ SYSBA(nanosleep, MayBlock|PostOnFail),
+ SYSB_(_newselect, MayBlock),
+ SYSBA(open, MayBlock),
+ SYSBA(read, MayBlock),
+ SYSB_(write, MayBlock),
+ SYSBA(creat, MayBlock),
+ SYSBA(pipe, 0),
+ SYSBA(poll, MayBlock),
+ SYSBA(epoll_create, 0),
+ SYSB_(epoll_ctl, 0),
+ SYSBA(epoll_wait, MayBlock),
+ SYSBA(readlink, 0),
+ SYSBA(readv, MayBlock),
+ SYSB_(rename, 0),
+ SYSB_(rmdir, MayBlock),
+ SYSBA(sched_setparam, 0), /* ??? */
+ SYSBA(sched_getparam, 0), /* ??? */
+ SYSB_(sched_yield, 0), /* ??? */
+ SYSB_(select, MayBlock),
+ SYSB_(setfsgid32, 0),
+ SYSB_(setgid32, 0),
+ SYSB_(setgid, 0),
+ SYSB_(setsid, 0),
+ SYSB_(setgroups32, 0),
+ SYSB_(setgroups, 0),
+ SYSBA(setpgid, 0),
+ SYSB_(setregid32, 0),
+ SYSB_(setresuid32, 0),
+ SYSB_(setreuid32, 0),
+ SYSB_(setreuid, 0),
+ SYSB_(setrlimit, 0),
+ SYSB_(setuid32, 0),
+ SYSB_(setuid, 0),
+ SYSBA(socketcall, MayBlock),
+ SYSBA(stat, 0),
+ SYSBA(statfs, 0),
+ SYSBA(statfs64, 0),
+ SYSB_(symlink, MayBlock),
+ SYSBA(stat64, 0),
+ SYSBA(fstat64, 0),
+ SYSBA(sysinfo, 0),
+ SYSBA(time, 0),
+ SYSBA(times, 0),
+ SYSB_(truncate, MayBlock),
+ SYSB_(umask, 0),
+ SYSB_(unlink, MayBlock),
+ SYSBA(uname, 0),
+ SYSB_(utime, MayBlock),
+ SYSB_(utimes, 0),
+ SYSBA(waitpid, MayBlock),
+ SYSBA(wait4, MayBlock),
+ SYSB_(writev, MayBlock),
+ SYSB_(prctl, MayBlock),
+ SYSBA(adjtimex, 0),
+ SYSBA(mmap2, 0),
+ SYSBA(clock_gettime, 0),
+ SYSBA(futex, MayBlock),
+ SYSB_(acct, 0),
/* new signal handling makes these normal blocking syscalls */
- SYSB_(pause, True),
- SYSB_(sigsuspend, True),
- SYSB_(rt_sigsuspend, True),
- SYSBA(rt_sigtimedwait, True),
- SYSBA(rt_sigqueueinfo, False),
+ SYSB_(pause, MayBlock),
+ SYSB_(sigsuspend, MayBlock),
+ SYSB_(rt_sigsuspend, MayBlock),
+ SYSBA(rt_sigtimedwait, MayBlock),
+ SYSBA(rt_sigqueueinfo, 0),
- SYSBA(sigpending, True), /* not blocking, but must run in LWP context */
- SYSBA(rt_sigpending, True), /* not blocking, but must run in LWP context */
- SYSB_(alarm, True), /* not blocking, but must run in LWP context */
- SYSBA(setitimer, True), /* not blocking, but must run in LWP context */
- SYSBA(getitimer, True), /* not blocking, but must run in LWP context */
+ SYSBA(sigpending, MayBlock), /* not blocking, but must run in LWP context */
+ SYSBA(rt_sigpending, MayBlock), /* not blocking, but must run in LWP context */
+ SYSB_(alarm, MayBlock), /* not blocking, but must run in LWP context */
+ SYSBA(setitimer, MayBlock), /* not blocking, but must run in LWP context */
+ SYSBA(getitimer, MayBlock), /* not blocking, but must run in LWP context */
- SYSBA(io_getevents, True),
- SYSB_(io_submit, False),
- SYSBA(io_cancel, False),
+ SYSBA(io_getevents, MayBlock),
+ SYSB_(io_submit, 0),
+ SYSBA(io_cancel, 0),
#if !SIGNAL_SIMULATION
- SYSBA(sigaltstack, False),
- SYSBA(rt_sigaction, False),
- SYSBA(sigaction, False),
- SYSBA(rt_sigprocmask, False),
- SYSBA(sigprocmask, False),
+ SYSBA(sigaltstack, 0),
+ SYSBA(rt_sigaction, 0),
+ SYSBA(sigaction, 0),
+ SYSBA(rt_sigprocmask, 0),
+ SYSBA(sigprocmask, 0),
#endif /* !SIGNAL_SIMULATION */
};
@@ -5836,8 +5836,10 @@ Bool VG_(pre_syscall) ( ThreadId tid )
}
+ tst->sys_flags = sys->flags;
+
/* Do any pre-syscall actions */
if (VG_(needs).syscall_wrapper) {
VGP_PUSHCC(VgpSkinSysWrap);
- tst->sys_pre_res = SK_(pre_syscall)(tid, syscallno, /*isBlocking*/sys->may_block);
+ tst->sys_pre_res = SK_(pre_syscall)(tid, syscallno, /*isBlocking*/(sys->flags & MayBlock) != 0);
VGP_POPCC(VgpSkinSysWrap);
}
@@ -5846,5 +5848,5 @@ Bool VG_(pre_syscall) ( ThreadId tid )
VG_(getpid)(), tid, syscallno,
special ? " special" : "",
- sys->may_block ? " blocking" : "");
+ (sys->flags & MayBlock) != 0 ? " blocking" : "");
if (special) {
@@ -5854,8 +5856,10 @@ Bool VG_(pre_syscall) ( ThreadId tid )
appropriate tests, but also performs the syscall itself and
sets the result. Special syscalls cannot block. */
- vg_assert(sys->may_block == False);
+ vg_assert((tst->sys_flags & MayBlock) == 0);
(sys->before)(tst->tid, tst);
+ vg_assert(tst->sys_flags == sys->flags);
+
syscall_done = True;
} else {
@@ -5866,5 +5870,5 @@ Bool VG_(pre_syscall) ( ThreadId tid )
anything - just pretend the syscall happened. */
syscall_done = True;
- } else if (sys->may_block) {
+ } else if ((tst->sys_flags & MayBlock) != 0) {
/* Issue to worker. If we're waiting on the syscall because
it's in the hands of the ProxyLWP, then set the thread
@@ -5945,5 +5949,6 @@ void VG_(post_syscall) ( ThreadId tid, B
if (!restarted) {
- if (!VG_(is_kerror)(tst->m_eax) && sys->after != NULL)
+ if (sys->after != NULL &&
+ ((tst->sys_flags & PostOnFail) != 0 || !VG_(is_kerror)(tst->m_eax)))
(sys->after)(tst->tid, tst);
|
|
From: Jeremy F. <je...@go...> - 2004-07-29 17:30:50
|
On Thu, 2004-07-29 at 11:20 -0500, Paul Mackerras wrote: > I have been wondering the same thing, in the context of the PPC port > (yes I am still working on abstracting all the x86-specific stuff). > > My best idea at the moment is a set of arch-specific directories under > include/, like we have under coregrind/. But we end up with an awful > lot of -I flags on the compile commands though. Anybody got a better > idea? We could copy the kernel build process and use a symlink. J |
|
From: Jeremy F. <je...@go...> - 2004-07-29 17:30:20
|
On Thu, 2004-07-29 at 16:08 +0100, Nicholas Nethercote wrote: > I fixed this; problem was that one of the signal structs (can't remember > which one, now) in vg_kerneliface.h was the wrong size -- one of the > fields is 32-bits on x86, but 64-bits on x86-64. > > Seeing this, I've been looking through vg_kerneliface.h for similar > examples. There are a few. This raises a few questions about this file > in general: > > - I'm unclear about its exact use. It's there because we can't #include > the real headers, right? Can someone remind me why that is? The libc headers are only vaguely related to the kernel interface headers. We could include linux/* headers, but that could into a pretty messy tarpit. My plan was to have separate vg_kerneliface headers for each arch/OS combination, since they are all separately defined. > - Are the types all meant to match exactly the "real" types? > vki_ksigaction doesn't match sigaction, for one. (I've only looked at > a few so far.) They're only supposed to match the syscall interface types. Ignore anything in /usr/include (except /usr/include/(linux,asm)/, since that will just mislead you. > - Our definitions use a mix of built-in types (eg. unsigned long) and our > types (eg. ULong). This is ugly. > > This whole file is a dirty hack. So is vg_unistd.h. Is there a better > way to do the same thing? The kernel interface is fixed for all time (well, it extends), so there's no serious problem with having our own copy of all this - like glibc does - but it does cause duplicated effort. I think we should probably strictly use the stdint types in vg_kerneliface, so that we're explicit about the sizes of everything. J |
|
From: Paul M. <pa...@sa...> - 2004-07-29 16:21:54
|
Nicholas Nethercote writes: > This whole file is a dirty hack. So is vg_unistd.h. Is there a better > way to do the same thing? I have been wondering the same thing, in the context of the PPC port (yes I am still working on abstracting all the x86-specific stuff). My best idea at the moment is a set of arch-specific directories under include/, like we have under coregrind/. But we end up with an awful lot of -I flags on the compile commands though. Anybody got a better idea? Paul. |
|
From: Nicholas N. <nj...@ca...> - 2004-07-29 15:08:30
|
On Thu, 29 Jul 2004, Nicholas Nethercote wrote:
> Unfortunately, the FATAL SIGNAL error is not the correct response -- when I
> make x86-Valgrind throw a signl from generated code (by embedding a 'ud2' in
> there) it dies with a much nicer "Process terminating with default action of
> signal 4 (SIGILL): dumping core". So something's screwy with signals.
I fixed this; problem was that one of the signal structs (can't remember
which one, now) in vg_kerneliface.h was the wrong size -- one of the
fields is 32-bits on x86, but 64-bits on x86-64.
Seeing this, I've been looking through vg_kerneliface.h for similar
examples. There are a few. This raises a few questions about this file
in general:
- I'm unclear about its exact use. It's there because we can't #include
the real headers, right? Can someone remind me why that is?
- Are the types all meant to match exactly the "real" types?
vki_ksigaction doesn't match sigaction, for one. (I've only looked at
a few so far.)
- Our definitions use a mix of built-in types (eg. unsigned long) and our
types (eg. ULong). This is ugly.
This whole file is a dirty hack. So is vg_unistd.h. Is there a better
way to do the same thing?
N
|
|
From: Nicholas N. <nj...@ca...> - 2004-07-29 09:34:59
|
On Thu, 29 Jul 2004, Tom Hughes wrote:
>> I've got Opteron working up to the point where the first BB is being
>> translated. This means the entire startup procedure works, or at
>> least is un-broken enough to get that far; also the dispatch loop
>> must be working at least partially.
>
> I just tried it on our box and it seems to get to about the same
> point, then dies with a fatal signal delivered on wrong stack error.
That's what I get too, so at least that's consistent; thanks, Tom.
I think the generated code is doing something bad that causes the signal.
I haven't made any changes to the code generated other than accounting for
8-byte words in the baseBlock, so it's probably seg faulting somehow.
Doing vg_{to,from}_ucode.c is going to be tricky.
Unfortunately, the FATAL SIGNAL error is not the correct response -- when
I make x86-Valgrind throw a signl from generated code (by embedding a
'ud2' in there) it dies with a much nicer "Process terminating with
default action of signal 4 (SIGILL): dumping core". So something's screwy
with signals.
N
|
|
From: Tom H. <th...@cy...> - 2004-07-29 09:23:03
|
In message <Pin...@he...>
Nicholas Nethercote <nj...@ca...> wrote:
> I've got Opteron working up to the point where the first BB is being
> translated. This means the entire startup procedure works, or at
> least is un-broken enough to get that far; also the dispatch loop
> must be working at least partially.
I just tried it on our box and it seems to get to about the same
point, then dies with a fatal signal delivered on wrong stack error.
> The code isn't very pretty. I'm taking the most direct route, just
> commenting out all the x86/32-bit-specific code and replacing it with
> x86-64/64-bit code. Each such place is marked with "OOO" (three
> capital Os, not three zeroes). It prints a whole lot of debugging
> output at startup.
There's one in vg_include.h that is OOö actually ;-)
Tom
--
Tom Hughes (th...@cy...)
Software Engineer, Cyberscience Corporation
http://www.cyberscience.com/
|
|
From: Nicholas N. <nj...@ca...> - 2004-07-29 09:02:40
|
Hi, I've got Opteron working up to the point where the first BB is being translated. This means the entire startup procedure works, or at least is un-broken enough to get that far; also the dispatch loop must be working at least partially. If anyone wants a look, grab www.cl.cam.ac.uk/~njn25/vg-opteron.tar.bz2 It's just a tarball of my workspace. It unpacks into a directory called 'head6'. Do the usual autogen.sh/configure/make sequence. I did a test, and it worked for me, but it's possible something will go wrong on other machines. I don't want to make a branch yet, it is too premature. The code isn't very pretty. I'm taking the most direct route, just commenting out all the x86/32-bit-specific code and replacing it with x86-64/64-bit code. Each such place is marked with "OOO" (three capital Os, not three zeroes). It prints a whole lot of debugging output at startup. If anyone wants to look at this seriously, I recommend reading at least parts of the AMD64 ABI available at http://www.x86-64.org/documentation. I'd love to hear feedback, and particularly bug fixes :) Hmm, if a diff against the current CVS HEAD would be an easier way of obtaining this, let me know and I'll put that up (although I'll need to sync with the HEAD first). N |
|
From: Tom H. <th...@cy...> - 2004-07-29 08:59:38
|
In message <Pin...@he...>
Nicholas Nethercote <nj...@ca...> wrote:
> On Thu, 29 Jul 2004, Tom Hughes wrote:
>
>> I'm not sure that we have any other solution that works. If we're
>> going to allow the flags to be changed by the PRE routine then we have
>> to save the changed flags somewhere that is visible to VG_(post_syscall)
>> which may be called some time later in a completely different context
>> when the syscall completes.
>
> Does PRE have to be able to change the flags?
If it does it we want so solve the shmat problem so that shmat gets
the POST routine called on failure without it being called for all
the sub-reasons of the IPC system call.
Likewise if we want to stop all fcntl calls being treated as blocking
even when they aren't really.
Tom
--
Tom Hughes (th...@cy...)
Software Engineer, Cyberscience Corporation
http://www.cyberscience.com/
|
|
From: Nicholas N. <nj...@ca...> - 2004-07-29 08:43:31
|
On Thu, 29 Jul 2004, Tom Hughes wrote: > I'm not sure that we have any other solution that works. If we're > going to allow the flags to be changed by the PRE routine then we have > to save the changed flags somewhere that is visible to VG_(post_syscall) > which may be called some time later in a completely different context > when the syscall completes. Does PRE have to be able to change the flags? N |
|
From: Tom H. <th...@cy...> - 2004-07-29 08:41:55
|
In message <Pin...@he...>
Nicholas Nethercote <nj...@ca...> wrote:
> I'd prefer it if you didn't have to do this -- the ThreadState is
> already very big and this is just one more piece of state lying
> around, something we already have too much of. But if you're certain
> that it makes things easier than any non-sys_flags-state approach,
> then do it.
I'm not sure that we have any other solution that works. If we're
going to allow the flags to be changed by the PRE routine then we have
to save the changed flags somewhere that is visible to VG_(post_syscall)
which may be called some time later in a completely different context
when the syscall completes.
Tom
--
Tom Hughes (th...@cy...)
Software Engineer, Cyberscience Corporation
http://www.cyberscience.com/
|
|
From: Nicholas N. <nj...@ca...> - 2004-07-29 08:36:46
|
On Wed, 28 Jul 2004, Tom Hughes wrote: > I've also added sys_flags to the thread state. The flags word for > the active system call is copied into that before the PRE routine > is called, and all subsequent tests are done on that flags word > rather than the one in the static table. I'd prefer it if you didn't have to do this -- the ThreadState is already very big and this is just one more piece of state lying around, something we already have too much of. But if you're certain that it makes things easier than any non-sys_flags-state approach, then do it. N |