|
From: <sv...@va...> - 2005-06-08 23:39:16
|
Author: sewardj
Date: 2005-06-09 00:38:32 +0100 (Thu, 09 Jun 2005)
New Revision: 3854
Log:
Clean up after m_syscalls changes: reinstate about half the syscalls
needed to make memcheck/tests/x86/scalar work again.
Modified:
trunk/coregrind/m_syscalls/syscalls-generic.c
trunk/coregrind/m_syscalls/syscalls-linux.c
trunk/coregrind/m_syscalls/syscalls-x86-linux.c
Modified: trunk/coregrind/m_syscalls/syscalls-generic.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_syscalls/syscalls-generic.c 2005-06-08 10:46:56 UTC=
(rev 3853)
+++ trunk/coregrind/m_syscalls/syscalls-generic.c 2005-06-08 23:38:32 UTC=
(rev 3854)
@@ -1684,12 +1684,12 @@
SET_STATUS_Failure( VKI_ENOSYS );
}
=20
-//zz PRE(sys_iopl, 0)
-//zz {
-//zz PRINT("sys_iopl ( %d )", ARG1);
-//zz PRE_REG_READ1(long, "iopl", unsigned long, level);
-//zz }
-//zz=20
+PRE(sys_iopl)
+{
+ PRINT("sys_iopl ( %d )", ARG1);
+ PRE_REG_READ1(long, "iopl", unsigned long, level);
+}
+
//zz PRE(sys_setxattr, SfMayBlock)
//zz {
//zz PRINT("sys_setxattr ( %p, %p, %p, %llu, %d )",
@@ -1842,16 +1842,16 @@
//zz PRE_REG_READ2(long, "fremovexattr", int, fd, char *, name);
//zz PRE_MEM_RASCIIZ( "fremovexattr(name)", ARG2 );
//zz }
-//zz=20
-//zz PRE(sys_quotactl, 0)
-//zz {
-//zz PRINT("sys_quotactl (0x%x, %p, 0x%x, 0x%x )", ARG1,ARG2,ARG3, AR=
G4);
-//zz PRE_REG_READ4(long, "quotactl",
-//zz unsigned int, cmd, const char *, special, vki_qid_=
t, id,
-//zz void *, addr);
-//zz PRE_MEM_RASCIIZ( "quotactl(special)", ARG2 );
-//zz }
-//zz=20
+
+PRE(sys_quotactl)
+{
+ PRINT("sys_quotactl (0x%x, %p, 0x%x, 0x%x )", ARG1,ARG2,ARG3, ARG4);
+ PRE_REG_READ4(long, "quotactl",
+ unsigned int, cmd, const char *, special, vki_qid_t, id=
,
+ void *, addr);
+ PRE_MEM_RASCIIZ( "quotactl(special)", ARG2 );
+}
+
//zz // XXX: this wrapper is only suitable for 32-bit platforms
//zz PRE(sys_lookup_dcookie, 0)
//zz {
@@ -1875,20 +1875,22 @@
PRE_REG_READ1(long, "fsync", unsigned int, fd);
}
=20
-//zz PRE(sys_fdatasync, SfMayBlock)
-//zz {
-//zz PRINT("sys_fdatasync ( %d )", ARG1);
-//zz PRE_REG_READ1(long, "fdatasync", unsigned int, fd);
-//zz }
-//zz=20
-//zz PRE(sys_msync, SfMayBlock)
-//zz {
-//zz PRINT("sys_msync ( %p, %llu, %d )", ARG1,(ULong)ARG2,ARG3);
-//zz PRE_REG_READ3(long, "msync",
-//zz unsigned long, start, vki_size_t, length, int, fla=
gs);
-//zz PRE_MEM_READ( "msync(start)", ARG1, ARG2 );
-//zz }
-//zz=20
+PRE(sys_fdatasync)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_fdatasync ( %d )", ARG1);
+ PRE_REG_READ1(long, "fdatasync", unsigned int, fd);
+}
+
+PRE(sys_msync)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_msync ( %p, %llu, %d )", ARG1,(ULong)ARG2,ARG3);
+ PRE_REG_READ3(long, "msync",
+ unsigned long, start, vki_size_t, length, int, flags);
+ PRE_MEM_READ( "msync(start)", ARG1, ARG2 );
+}
+
//zz // Nb: getpmsg() and putpmsg() are special additional syscalls used=
in early
//zz // versions of LiS (Linux Streams). They are not part of the kerne=
l.
//zz // Therefore, we have to provide this type ourself, rather than get=
ting it
@@ -1951,47 +1953,47 @@
//zz if (data && data->len > 0)
//zz PRE_MEM_READ( "putpmsg(data)", (Addr)data->buf, data->len);
//zz }
-//zz=20
-//zz PRE(sys_getitimer, 0)
-//zz {
-//zz PRINT("sys_getitimer ( %d, %p )", ARG1, ARG2);
-//zz PRE_REG_READ2(long, "getitimer", int, which, struct itimerval *,=
value);
-//zz PRE_MEM_WRITE( "getitimer(value)", ARG2, sizeof(struct vki_itime=
rval) );
-//zz }
-//zz=20
-//zz POST(sys_getitimer)
-//zz {
-//zz if (ARG2 !=3D (Addr)NULL) {
-//zz POST_MEM_WRITE(ARG2, sizeof(struct vki_itimerval));
-//zz }
-//zz }
-//zz=20
-//zz PRE(sys_setitimer, 0)
-//zz {
-//zz PRINT("sys_setitimer ( %d, %p, %p )", ARG1,ARG2,ARG3);
-//zz PRE_REG_READ3(long, "setitimer",=20
-//zz int, which,
-//zz struct itimerval *, value, struct itimerval *, ova=
lue);
-//zz if (ARG2 !=3D (Addr)NULL)
-//zz PRE_MEM_READ( "setitimer(value)", ARG2, sizeof(struct vki_iti=
merval) );
-//zz if (ARG3 !=3D (Addr)NULL)
-//zz PRE_MEM_WRITE( "setitimer(ovalue)", ARG3, sizeof(struct vki_i=
timerval));
-//zz }
-//zz=20
-//zz POST(sys_setitimer)
-//zz {
-//zz if (ARG3 !=3D (Addr)NULL) {
-//zz POST_MEM_WRITE(ARG3, sizeof(struct vki_itimerval));
-//zz }
-//zz }
-//zz=20
-//zz PRE(sys_chroot, 0)
-//zz {
-//zz PRINT("sys_chroot ( %p )", ARG1);
-//zz PRE_REG_READ1(long, "chroot", const char *, path);
-//zz PRE_MEM_RASCIIZ( "chroot(path)", ARG1 );
-//zz }
=20
+PRE(sys_getitimer)
+{
+ PRINT("sys_getitimer ( %d, %p )", ARG1, ARG2);
+ PRE_REG_READ2(long, "getitimer", int, which, struct itimerval *, valu=
e);
+ PRE_MEM_WRITE( "getitimer(value)", ARG2, sizeof(struct vki_itimerval)=
);
+}
+
+POST(sys_getitimer)
+{
+ if (ARG2 !=3D (Addr)NULL) {
+ POST_MEM_WRITE(ARG2, sizeof(struct vki_itimerval));
+ }
+}
+
+PRE(sys_setitimer)
+{
+ PRINT("sys_setitimer ( %d, %p, %p )", ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "setitimer",=20
+ int, which,
+ struct itimerval *, value, struct itimerval *, ovalue);
+ if (ARG2 !=3D (Addr)NULL)
+ PRE_MEM_READ( "setitimer(value)", ARG2, sizeof(struct vki_itimerva=
l) );
+ if (ARG3 !=3D (Addr)NULL)
+ PRE_MEM_WRITE( "setitimer(ovalue)", ARG3, sizeof(struct vki_itimer=
val));
+}
+
+POST(sys_setitimer)
+{
+ if (ARG3 !=3D (Addr)NULL) {
+ POST_MEM_WRITE(ARG3, sizeof(struct vki_itimerval));
+ }
+}
+
+PRE(sys_chroot)
+{
+ PRINT("sys_chroot ( %p )", ARG1);
+ PRE_REG_READ1(long, "chroot", const char *, path);
+ PRE_MEM_RASCIIZ( "chroot(path)", ARG1 );
+}
+
PRE(sys_madvise)
{
*flags |=3D SfMayBlock;
@@ -2037,30 +2039,34 @@
ARG3, sizeof(struct vki_sched_param));
}
=20
-//zz PRE(sys_mlock, SfMayBlock)
-//zz {
-//zz PRINT("sys_mlock ( %p, %llu )", ARG1, (ULong)ARG2);
-//zz PRE_REG_READ2(long, "mlock", unsigned long, addr, vki_size_t, le=
n);
-//zz }
-//zz=20
-//zz PRE(sys_munlock, SfMayBlock)
-//zz {
-//zz PRINT("sys_munlock ( %p, %llu )", ARG1, (ULong)ARG2);
-//zz PRE_REG_READ2(long, "munlock", unsigned long, addr, vki_size_t, =
len);
-//zz }
-//zz=20
-//zz PRE(sys_mlockall, SfMayBlock)
-//zz {
-//zz PRINT("sys_mlockall ( %x )", ARG1);
-//zz PRE_REG_READ1(long, "mlockall", int, flags);
-//zz }
-//zz=20
-//zz PRE(sys_munlockall, SfMayBlock)
-//zz {
-//zz PRINT("sys_munlockall ( )");
-//zz PRE_REG_READ0(long, "munlockall");
-//zz }
+PRE(sys_mlock)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_mlock ( %p, %llu )", ARG1, (ULong)ARG2);
+ PRE_REG_READ2(long, "mlock", unsigned long, addr, vki_size_t, len);
+}
=20
+PRE(sys_munlock)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_munlock ( %p, %llu )", ARG1, (ULong)ARG2);
+ PRE_REG_READ2(long, "munlock", unsigned long, addr, vki_size_t, len);
+}
+
+PRE(sys_mlockall)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_mlockall ( %x )", ARG1);
+ PRE_REG_READ1(long, "mlockall", int, flags);
+}
+
+PRE(sys_munlockall)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_munlockall ( )");
+ PRE_REG_READ0(long, "munlockall");
+}
+
PRE(sys_sched_get_priority_max)
{
PRINT("sched_get_priority_max ( %d )", ARG1);
@@ -2073,24 +2079,24 @@
PRE_REG_READ1(long, "sched_get_priority_min", int, policy);
}
=20
-//zz PRE(sys_setpriority, 0)
-//zz {
-//zz PRINT("sys_setpriority ( %d, %d, %d )", ARG1, ARG2, ARG3);
-//zz PRE_REG_READ3(long, "setpriority", int, which, int, who, int, pr=
io);
-//zz }
-//zz=20
-//zz PRE(sys_getpriority, 0)
-//zz {
-//zz PRINT("sys_getpriority ( %d, %d )", ARG1, ARG2);
-//zz PRE_REG_READ2(long, "getpriority", int, which, int, who);
-//zz }
-//zz=20
-//zz PRE(sys_setregid16, 0)
-//zz {
-//zz PRINT("sys_setregid16 ( %d, %d )", ARG1, ARG2);
-//zz PRE_REG_READ2(long, "setregid16", vki_old_gid_t, rgid, vki_old_g=
id_t, egid);
-//zz }
-//zz=20
+PRE(sys_setpriority)
+{
+ PRINT("sys_setpriority ( %d, %d, %d )", ARG1, ARG2, ARG3);
+ PRE_REG_READ3(long, "setpriority", int, which, int, who, int, prio);
+}
+
+PRE(sys_getpriority)
+{
+ PRINT("sys_getpriority ( %d, %d )", ARG1, ARG2);
+ PRE_REG_READ2(long, "getpriority", int, which, int, who);
+}
+
+PRE(sys_setregid16)
+{
+ PRINT("sys_setregid16 ( %d, %d )", ARG1, ARG2);
+ PRE_REG_READ2(long, "setregid16", vki_old_gid_t, rgid, vki_old_gid_t,=
egid);
+}
+
//zz // XXX: only for 32-bit archs
//zz PRE(sys_pwrite64, SfMayBlock)
//zz {
@@ -2109,19 +2115,19 @@
PRE_REG_READ0(long, "sync");
}
=20
-//zz PRE(sys_fstatfs, 0)
-//zz {
-//zz PRINT("sys_fstatfs ( %d, %p )",ARG1,ARG2);
-//zz PRE_REG_READ2(long, "fstatfs",
-//zz unsigned int, fd, struct statfs *, buf);
-//zz PRE_MEM_WRITE( "fstatfs(buf)", ARG2, sizeof(struct vki_statfs) )=
;
-//zz }
-//zz=20
-//zz POST(sys_fstatfs)
-//zz {
-//zz POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs) );
-//zz }
-//zz=20
+PRE(sys_fstatfs)
+{
+ PRINT("sys_fstatfs ( %d, %p )",ARG1,ARG2);
+ PRE_REG_READ2(long, "fstatfs",
+ unsigned int, fd, struct statfs *, buf);
+ PRE_MEM_WRITE( "fstatfs(buf)", ARG2, sizeof(struct vki_statfs) );
+}
+
+POST(sys_fstatfs)
+{
+ POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs) );
+}
+
//zz PRE(sys_fstatfs64, 0)
//zz {
//zz PRINT("sys_fstatfs64 ( %d, %llu, %p )",ARG1,(ULong)ARG2,ARG3);
@@ -2134,13 +2140,13 @@
//zz {
//zz POST_MEM_WRITE( ARG3, ARG2 );
//zz }
-//zz=20
-//zz PRE(sys_getsid, 0)
-//zz {
-//zz PRINT("sys_getsid ( %d )", ARG1);
-//zz PRE_REG_READ1(long, "getsid", vki_pid_t, pid);
-//zz }
-//zz=20
+
+PRE(sys_getsid)
+{
+ PRINT("sys_getsid ( %d )", ARG1);
+ PRE_REG_READ1(long, "getsid", vki_pid_t, pid);
+}
+
//zz // XXX: only for 32-bit archs
//zz PRE(sys_pread64, SfMayBlock)
//zz {
@@ -2167,21 +2173,24 @@
PRE_MEM_RASCIIZ( "mknod(pathname)", ARG1 );
}
=20
-//zz PRE(sys_flock, SfMayBlock)
-//zz {
-//zz PRINT("sys_flock ( %d, %d )", ARG1, ARG2 );
-//zz PRE_REG_READ2(long, "flock", unsigned int, fd, unsigned int, ope=
ration);
-//zz }
-//zz=20
-//zz PRE(sys_init_module, SfMayBlock)
-//zz {
-//zz PRINT("sys_init_module ( %p, %llu, %p )", ARG1, (ULong)ARG2, ARG=
3 );
-//zz PRE_REG_READ3(long, "init_module",
-//zz void *, umod, unsigned long, len, const char *, ua=
rgs);
-//zz PRE_MEM_READ( "init_module(umod)", ARG1, ARG2 );
-//zz PRE_MEM_RASCIIZ( "init_module(uargs)", ARG3 );
-//zz }
-//zz=20
+PRE(sys_flock)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_flock ( %d, %d )", ARG1, ARG2 );
+ PRE_REG_READ2(long, "flock", unsigned int, fd, unsigned int, operatio=
n);
+}
+
+/* This surely isn't remotely generic -- move to linux-specifics? */
+PRE(sys_init_module)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_init_module ( %p, %llu, %p )", ARG1, (ULong)ARG2, ARG3 );
+ PRE_REG_READ3(long, "init_module",
+ void *, umod, unsigned long, len, const char *, uargs);
+ PRE_MEM_READ( "init_module(umod)", ARG1, ARG2 );
+ PRE_MEM_RASCIIZ( "init_module(uargs)", ARG3 );
+}
+
//zz PRE(sys_capget, 0)
//zz {
//zz PRINT("sys_capget ( %p, %p )", ARG1, ARG2 );
@@ -2514,92 +2523,93 @@
VG_(record_fd_open)(tid, RES, VG_(resolve_filename)(RES));
}
=20
-//zz PRE(sys_fchdir, 0)
-//zz {
-//zz PRINT("sys_fchdir ( %d )", ARG1);
-//zz PRE_REG_READ1(long, "fchdir", unsigned int, fd);
-//zz }
-//zz=20
-//zz PRE(sys_fchown16, 0)
-//zz {
-//zz PRINT("sys_fchown16 ( %d, %d, %d )", ARG1,ARG2,ARG3);
-//zz PRE_REG_READ3(long, "fchown16",
-//zz unsigned int, fd, vki_old_uid_t, owner, vki_old_gi=
d_t, group);
-//zz }
-//zz=20
+PRE(sys_fchdir)
+{
+ PRINT("sys_fchdir ( %d )", ARG1);
+ PRE_REG_READ1(long, "fchdir", unsigned int, fd);
+}
+
+PRE(sys_fchown16)
+{
+ PRINT("sys_fchown16 ( %d, %d, %d )", ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "fchown16",
+ unsigned int, fd, vki_old_uid_t, owner, vki_old_gid_t, =
group);
+}
+
//zz PRE(sys_fchown, 0)
//zz {
//zz PRINT("sys_fchown ( %d, %d, %d )", ARG1,ARG2,ARG3);
//zz PRE_REG_READ3(long, "fchown",
//zz unsigned int, fd, vki_uid_t, owner, vki_gid_t, gro=
up);
//zz }
-//zz=20
-//zz PRE(sys_fchmod, 0)
-//zz {
-//zz PRINT("sys_fchmod ( %d, %d )", ARG1,ARG2);
-//zz PRE_REG_READ2(long, "fchmod", unsigned int, fildes, vki_mode_t, =
mode);
-//zz }
-//zz=20
-//zz PRE(sys_fcntl, 0)
-//zz {
-//zz switch (ARG2) {
-//zz // These ones ignore ARG3.
-//zz case VKI_F_GETFD:
-//zz case VKI_F_GETFL:
-//zz case VKI_F_GETOWN:
-//zz case VKI_F_SETOWN:
-//zz case VKI_F_GETSIG:
-//zz case VKI_F_SETSIG:
-//zz case VKI_F_GETLEASE:
-//zz PRINT("sys_fcntl ( %d, %d )", ARG1,ARG2);
-//zz PRE_REG_READ2(long, "fcntl", unsigned int, fd, unsigned int, =
cmd);
-//zz break;
-//zz=20
-//zz // These ones use ARG3 as "arg".
-//zz case VKI_F_DUPFD:
-//zz case VKI_F_SETFD:
-//zz case VKI_F_SETFL:
-//zz case VKI_F_SETLEASE:
-//zz case VKI_F_NOTIFY:
-//zz PRINT("sys_fcntl[ARG3=3D=3D'arg'] ( %d, %d, %d )", ARG1,ARG2,=
ARG3);
-//zz PRE_REG_READ3(long, "fcntl",
-//zz unsigned int, fd, unsigned int, cmd, unsigned l=
ong, arg);
-//zz break;
-//zz=20
-//zz // These ones use ARG3 as "lock".
-//zz case VKI_F_GETLK:
-//zz case VKI_F_SETLK:
-//zz case VKI_F_SETLKW:
-//zz #ifndef __amd64__
-//zz case VKI_F_GETLK64:
-//zz case VKI_F_SETLK64:
-//zz case VKI_F_SETLKW64:
-//zz #else
-//zz #endif
-//zz PRINT("sys_fcntl[ARG3=3D=3D'lock'] ( %d, %d, %p )", ARG1,ARG2=
,ARG3);
-//zz PRE_REG_READ3(long, "fcntl",
-//zz unsigned int, fd, unsigned int, cmd,
-//zz struct flock64 *, lock);
-//zz break;
-//zz }
-//zz=20
-//zz //if (ARG2 =3D=3D VKI_F_SETLKW)
-//zz // tst->sys_flags |=3D SfMayBlock;
-//zz }
-//zz=20
-//zz POST(sys_fcntl)
-//zz {
-//zz if (ARG2 =3D=3D VKI_F_DUPFD) {
-//zz if (!VG_(fd_allowed)(RES, "fcntl(DUPFD)", tid, True)) {
-//zz VG_(close)(RES);
-//zz SET_STATUS_( -VKI_EMFILE );
-//zz } else {
-//zz if (VG_(clo_track_fds))
-//zz VG_(record_fd_open)(tid, RES, VG_(resolve_filename)(RES=
));
-//zz }
-//zz }
-//zz }
=20
+PRE(sys_fchmod)
+{
+ PRINT("sys_fchmod ( %d, %d )", ARG1,ARG2);
+ PRE_REG_READ2(long, "fchmod", unsigned int, fildes, vki_mode_t, mode)=
;
+}
+
+PRE(sys_fcntl)
+{
+ switch (ARG2) {
+ // These ones ignore ARG3.
+ case VKI_F_GETFD:
+ case VKI_F_GETFL:
+ case VKI_F_GETOWN:
+ case VKI_F_SETOWN:
+ case VKI_F_GETSIG:
+ case VKI_F_SETSIG:
+ case VKI_F_GETLEASE:
+ PRINT("sys_fcntl ( %d, %d )", ARG1,ARG2);
+ PRE_REG_READ2(long, "fcntl", unsigned int, fd, unsigned int, cmd);
+ break;
+
+ // These ones use ARG3 as "arg".
+ case VKI_F_DUPFD:
+ case VKI_F_SETFD:
+ case VKI_F_SETFL:
+ case VKI_F_SETLEASE:
+ case VKI_F_NOTIFY:
+ PRINT("sys_fcntl[ARG3=3D=3D'arg'] ( %d, %d, %d )", ARG1,ARG2,ARG3)=
;
+ PRE_REG_READ3(long, "fcntl",
+ unsigned int, fd, unsigned int, cmd, unsigned long, =
arg);
+ break;
+
+ // These ones use ARG3 as "lock".
+ case VKI_F_GETLK:
+ case VKI_F_SETLK:
+ case VKI_F_SETLKW:
+# if defined(VGP_amd64_linux)
+ case VKI_F_GETLK64:
+ case VKI_F_SETLK64:
+ case VKI_F_SETLKW64:
+# else
+# endif
+ PRINT("sys_fcntl[ARG3=3D=3D'lock'] ( %d, %d, %p )", ARG1,ARG2,ARG3=
);
+ PRE_REG_READ3(long, "fcntl",
+ unsigned int, fd, unsigned int, cmd,
+ struct flock64 *, lock);
+ break;
+ }
+
+ if (ARG2 =3D=3D VKI_F_SETLKW)
+ *flags |=3D SfMayBlock;
+}
+
+POST(sys_fcntl)
+{
+ vg_assert(SUCCESS);
+ if (ARG2 =3D=3D VKI_F_DUPFD) {
+ if (!VG_(fd_allowed)(RES, "fcntl(DUPFD)", tid, True)) {
+ VG_(close)(RES);
+ SET_STATUS_Failure( VKI_EMFILE );
+ } else {
+ if (VG_(clo_track_fds))
+ VG_(record_fd_open)(tid, RES, VG_(resolve_filename)(RES));
+ }
+ }
+}
+
// XXX: wrapper only suitable for 32-bit systems
PRE(sys_fcntl64)
{
@@ -2667,18 +2677,18 @@
}
}
=20
-//zz PRE(sys_newfstat, 0)
-//zz {
-//zz PRINT("sys_newfstat ( %d, %p )", ARG1,ARG2);
-//zz PRE_REG_READ2(long, "fstat", unsigned int, fd, struct stat *, bu=
f);
-//zz PRE_MEM_WRITE( "fstat(buf)", ARG2, sizeof(struct vki_stat) );
-//zz }
-//zz=20
-//zz POST(sys_newfstat)
-//zz {
-//zz POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) );
-//zz }
+PRE(sys_newfstat)
+{
+ PRINT("sys_newfstat ( %d, %p )", ARG1,ARG2);
+ PRE_REG_READ2(long, "fstat", unsigned int, fd, struct stat *, buf);
+ PRE_MEM_WRITE( "fstat(buf)", ARG2, sizeof(struct vki_stat) );
+}
=20
+POST(sys_newfstat)
+{
+ POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) );
+}
+
static vki_sigset_t fork_saved_mask;
=20
// In Linux, the sys_fork() function varies across architectures, but we
@@ -2723,14 +2733,15 @@
PRE_REG_READ2(long, "ftruncate", unsigned int, fd, unsigned long, len=
gth);
}
=20
-//zz PRE(sys_truncate, SfMayBlock)
-//zz {
-//zz PRINT("sys_truncate ( %p(%s), %d )", ARG1,ARG1,ARG2);
-//zz PRE_REG_READ2(long, "truncate",=20
-//zz const char *, path, unsigned long, length);
-//zz PRE_MEM_RASCIIZ( "truncate(path)", ARG1 );
-//zz }
-//zz=20
+PRE(sys_truncate)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_truncate ( %p(%s), %d )", ARG1,ARG1,ARG2);
+ PRE_REG_READ2(long, "truncate",=20
+ const char *, path, unsigned long, length);
+ PRE_MEM_RASCIIZ( "truncate(path)", ARG1 );
+}
+
//zz // XXX: this wrapper is only suitable for 32-bit platforms
//zz PRE(sys_ftruncate64, SfMayBlock)
//zz {
@@ -2785,20 +2796,21 @@
POST_MEM_WRITE( ARG2, RES );
}
=20
-//zz PRE(sys_getgroups16, 0)
-//zz {
-//zz PRINT("sys_getgroups16 ( %d, %p )", ARG1, ARG2);
-//zz PRE_REG_READ2(long, "getgroups16", int, size, vki_old_gid_t *, l=
ist);
-//zz if (ARG1 > 0)
-//zz PRE_MEM_WRITE( "getgroups16(list)", ARG2, ARG1 * sizeof(vki_o=
ld_gid_t) );
-//zz }
-//zz=20
-//zz POST(sys_getgroups16)
-//zz {
-//zz if (ARG1 > 0 && RES > 0)
-//zz POST_MEM_WRITE( ARG2, RES * sizeof(vki_old_gid_t) );
-//zz }
+PRE(sys_getgroups16)
+{
+ PRINT("sys_getgroups16 ( %d, %p )", ARG1, ARG2);
+ PRE_REG_READ2(long, "getgroups16", int, size, vki_old_gid_t *, list);
+ if (ARG1 > 0)
+ PRE_MEM_WRITE( "getgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gi=
d_t) );
+}
=20
+POST(sys_getgroups16)
+{
+ vg_assert(SUCCESS);
+ if (ARG1 > 0 && RES > 0)
+ POST_MEM_WRITE( ARG2, RES * sizeof(vki_old_gid_t) );
+}
+
PRE(sys_getgroups)
{
PRINT("sys_getgroups ( %d, %p )", ARG1, ARG2);
@@ -2842,11 +2854,11 @@
PRE_REG_READ0(long, "geteuid");
}
=20
-//zz PRE(sys_getegid16, 0)
-//zz {
-//zz PRINT("sys_getegid16 ( )");
-//zz PRE_REG_READ0(long, "getegid16");
-//zz }
+PRE(sys_getegid16)
+{
+ PRINT("sys_getegid16 ( )");
+ PRE_REG_READ0(long, "getegid16");
+}
=20
PRE(sys_getegid)
{
@@ -2872,11 +2884,11 @@
PRE_REG_READ0(long, "getpid");
}
=20
-//zz PRE(sys_getpgid, 0)
-//zz {
-//zz PRINT("sys_getpgid ( %d )", ARG1);
-//zz PRE_REG_READ1(long, "getpgid", vki_pid_t, pid);
-//zz }
+PRE(sys_getpgid)
+{
+ PRINT("sys_getpgid ( %d )", ARG1);
+ PRE_REG_READ1(long, "getpgid", vki_pid_t, pid);
+}
=20
PRE(sys_getpgrp)
{
@@ -2910,19 +2922,19 @@
}
}
=20
-//zz PRE(sys_old_getrlimit, 0)
-//zz {
-//zz PRINT("sys_old_getrlimit ( %d, %p )", ARG1,ARG2);
-//zz PRE_REG_READ2(long, "old_getrlimit",
-//zz unsigned int, resource, struct rlimit *, rlim);
-//zz PRE_MEM_WRITE( "old_getrlimit(rlim)", ARG2, sizeof(struct vki_rl=
imit) );
-//zz }
-//zz=20
-//zz POST(sys_old_getrlimit)
-//zz {
-//zz common_post_getrlimit(tid, ARG1, ARG2);
-//zz }
+PRE(sys_old_getrlimit)
+{
+ PRINT("sys_old_getrlimit ( %d, %p )", ARG1,ARG2);
+ PRE_REG_READ2(long, "old_getrlimit",
+ unsigned int, resource, struct rlimit *, rlim);
+ PRE_MEM_WRITE( "old_getrlimit(rlim)", ARG2, sizeof(struct vki_rlimit)=
);
+}
=20
+POST(sys_old_getrlimit)
+{
+ common_post_getrlimit(tid, ARG1, ARG2);
+}
+
PRE(sys_getrlimit)
{
PRINT("sys_getrlimit ( %d, %p )", ARG1,ARG2);
@@ -2936,20 +2948,21 @@
common_post_getrlimit(tid, ARG1, ARG2);
}
=20
-//zz PRE(sys_getrusage, 0)
-//zz {
-//zz /* int getrusage (int who, struct rusage *usage); */
-//zz PRINT("sys_getrusage ( %d, %p )", ARG1,ARG2);
-//zz PRE_REG_READ2(long, "getrusage", int, who, struct rusage *, usag=
e);
-//zz PRE_MEM_WRITE( "getrusage(usage)", ARG2, sizeof(struct vki_rusag=
e) );
-//zz }
-//zz=20
-//zz POST(sys_getrusage)
-//zz {
-//zz if (RES =3D=3D 0)
-//zz POST_MEM_WRITE( ARG2, sizeof(struct vki_rusage) );
-//zz }
+PRE(sys_getrusage)
+{
+ /* int getrusage (int who, struct rusage *usage); */
+ PRINT("sys_getrusage ( %d, %p )", ARG1,ARG2);
+ PRE_REG_READ2(long, "getrusage", int, who, struct rusage *, usage);
+ PRE_MEM_WRITE( "getrusage(usage)", ARG2, sizeof(struct vki_rusage) );
+}
=20
+POST(sys_getrusage)
+{
+ vg_assert(SUCCESS);
+ if (RES =3D=3D 0)
+ POST_MEM_WRITE( ARG2, sizeof(struct vki_rusage) );
+}
+
PRE(sys_gettimeofday)
{
PRINT("sys_gettimeofday ( %p, %p )", ARG1,ARG2);
@@ -2970,17 +2983,17 @@
}
}
=20
-//zz PRE(sys_settimeofday, 0)
-//zz {
-//zz PRINT("sys_settimeofday ( %p, %p )", ARG1,ARG2);
-//zz PRE_REG_READ2(long, "settimeofday",
-//zz struct timeval *, tv, struct timezone *, tz);
-//zz PRE_MEM_READ( "settimeofday(tv)", ARG1, sizeof(struct vki_timeva=
l) );
-//zz if (ARG2 !=3D 0) {
-//zz PRE_MEM_READ( "settimeofday(tz)", ARG2, sizeof(struct vki_tim=
ezone) );
-//zz /* maybe should warn if tz->tz_dsttime is non-zero? */
-//zz }
-//zz }
+PRE(sys_settimeofday)
+{
+ PRINT("sys_settimeofday ( %p, %p )", ARG1,ARG2);
+ PRE_REG_READ2(long, "settimeofday",
+ struct timeval *, tv, struct timezone *, tz);
+ PRE_MEM_READ( "settimeofday(tv)", ARG1, sizeof(struct vki_timeval) );
+ if (ARG2 !=3D 0) {
+ PRE_MEM_READ( "settimeofday(tz)", ARG2, sizeof(struct vki_timezone=
) );
+ /* maybe should warn if tz->tz_dsttime is non-zero? */
+ }
+}
=20
PRE(sys_getuid16)
{
@@ -4359,21 +4372,22 @@
unsigned int, fd, vki_off_t, offset, unsigned int, when=
ce);
}
=20
-//zz PRE(sys_newlstat, 0)
-//zz {
-//zz PRINT("sys_newlstat ( %p(%s), %p )", ARG1,ARG1,ARG2);
-//zz PRE_REG_READ2(long, "lstat", char *, file_name, struct stat *, b=
uf);
-//zz PRE_MEM_RASCIIZ( "lstat(file_name)", ARG1 );
-//zz PRE_MEM_WRITE( "lstat(buf)", ARG2, sizeof(struct vki_stat) );
-//zz }
-//zz=20
-//zz POST(sys_newlstat)
-//zz {
-//zz if (RES =3D=3D 0) {
-//zz POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) );
-//zz }
-//zz }
+PRE(sys_newlstat)
+{
+ PRINT("sys_newlstat ( %p(%s), %p )", ARG1,ARG1,ARG2);
+ PRE_REG_READ2(long, "lstat", char *, file_name, struct stat *, buf);
+ PRE_MEM_RASCIIZ( "lstat(file_name)", ARG1 );
+ PRE_MEM_WRITE( "lstat(buf)", ARG2, sizeof(struct vki_stat) );
+}
=20
+POST(sys_newlstat)
+{
+ vg_assert(SUCCESS);
+ if (RES =3D=3D 0) {
+ POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) );
+ }
+}
+
PRE(sys_mkdir)
{
*flags |=3D SfMayBlock;
@@ -4805,21 +4819,21 @@
//zz PRINT("sys_setgid ( %d )", ARG1);
//zz PRE_REG_READ1(long, "setgid", vki_gid_t, gid);
//zz }
-//zz=20
-//zz PRE(sys_setsid, 0)
-//zz {
-//zz PRINT("sys_setsid ( )");
-//zz PRE_REG_READ0(long, "setsid");
-//zz }
-//zz=20
-//zz PRE(sys_setgroups16, 0)
-//zz {
-//zz PRINT("sys_setgroups16 ( %llu, %p )", (ULong)ARG1, ARG2);
-//zz PRE_REG_READ2(long, "setgroups16", int, size, vki_old_gid_t *, l=
ist);
-//zz if (ARG1 > 0)
-//zz PRE_MEM_READ( "setgroups16(list)", ARG2, ARG1 * sizeof(vki_ol=
d_gid_t) );
-//zz }
-//zz=20
+
+PRE(sys_setsid)
+{
+ PRINT("sys_setsid ( )");
+ PRE_REG_READ0(long, "setsid");
+}
+
+PRE(sys_setgroups16)
+{
+ PRINT("sys_setgroups16 ( %llu, %p )", (ULong)ARG1, ARG2);
+ PRE_REG_READ2(long, "setgroups16", int, size, vki_old_gid_t *, list);
+ if (ARG1 > 0)
+ PRE_MEM_READ( "setgroups16(list)", ARG2, ARG1 * sizeof(vki_old_gid=
_t) );
+}
+
//zz PRE(sys_setgroups, 0)
//zz {
//zz PRINT("setgroups ( %llu, %p )", (ULong)ARG1, ARG2);
@@ -4827,25 +4841,25 @@
//zz if (ARG1 > 0)
//zz PRE_MEM_READ( "setgroups(list)", ARG2, ARG1 * sizeof(vki_gid_=
t) );
//zz }
-//zz=20
-//zz PRE(sys_setpgid, 0)
-//zz {
-//zz PRINT("setpgid ( %d, %d )", ARG1, ARG2);
-//zz PRE_REG_READ2(long, "setpgid", vki_pid_t, pid, vki_pid_t, pgid);
-//zz }
-//zz=20
-//zz PRE(sys_setregid, 0)
-//zz {
-//zz PRINT("sys_setregid ( %d, %d )", ARG1, ARG2);
-//zz PRE_REG_READ2(long, "setregid", vki_gid_t, rgid, vki_gid_t, egid=
);
-//zz }
-//zz=20
-//zz PRE(sys_setreuid16, 0)
-//zz {
-//zz PRINT("setreuid16 ( 0x%x, 0x%x )", ARG1, ARG2);
-//zz PRE_REG_READ2(long, "setreuid16", vki_old_uid_t, ruid, vki_old_u=
id_t, euid);
-//zz }
-//zz=20
+
+PRE(sys_setpgid)
+{
+ PRINT("setpgid ( %d, %d )", ARG1, ARG2);
+ PRE_REG_READ2(long, "setpgid", vki_pid_t, pid, vki_pid_t, pgid);
+}
+
+PRE(sys_setregid)
+{
+ PRINT("sys_setregid ( %d, %d )", ARG1, ARG2);
+ PRE_REG_READ2(long, "setregid", vki_gid_t, rgid, vki_gid_t, egid);
+}
+
+PRE(sys_setreuid16)
+{
+ PRINT("setreuid16 ( 0x%x, 0x%x )", ARG1, ARG2);
+ PRE_REG_READ2(long, "setreuid16", vki_old_uid_t, ruid, vki_old_uid_t,=
euid);
+}
+
//zz PRE(sys_setreuid, 0)
//zz {
//zz PRINT("sys_setreuid ( 0x%x, 0x%x )", ARG1, ARG2);
@@ -4904,32 +4918,32 @@
//zz PRE_REG_READ1(long, "setuid", vki_uid_t, uid);
//zz }
=20
-//zz PRE(sys_newstat, 0)
-//zz {
-//zz PRINT("sys_newstat ( %p(%s), %p )", ARG1,ARG1,ARG2);
-//zz PRE_REG_READ2(long, "stat", char *, file_name, struct stat *, bu=
f);
-//zz PRE_MEM_RASCIIZ( "stat(file_name)", ARG1 );
-//zz PRE_MEM_WRITE( "stat(buf)", ARG2, sizeof(struct vki_stat) );
-//zz }
-//zz=20
-//zz POST(sys_newstat)
-//zz {
-//zz POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) );
-//zz }
-//zz=20
-//zz PRE(sys_statfs, 0)
-//zz {
-//zz PRINT("sys_statfs ( %p, %p )",ARG1,ARG2);
-//zz PRE_REG_READ2(long, "statfs", const char *, path, struct statfs =
*, buf);
-//zz PRE_MEM_RASCIIZ( "statfs(path)", ARG1 );
-//zz PRE_MEM_WRITE( "statfs(buf)", ARG2, sizeof(struct vki_statfs) );
-//zz }
-//zz=20
-//zz POST(sys_statfs)
-//zz {
-//zz POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs) );
-//zz }
-//zz=20
+PRE(sys_newstat)
+{
+ PRINT("sys_newstat ( %p(%s), %p )", ARG1,ARG1,ARG2);
+ PRE_REG_READ2(long, "stat", char *, file_name, struct stat *, buf);
+ PRE_MEM_RASCIIZ( "stat(file_name)", ARG1 );
+ PRE_MEM_WRITE( "stat(buf)", ARG2, sizeof(struct vki_stat) );
+}
+
+POST(sys_newstat)
+{
+ POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) );
+}
+
+PRE(sys_statfs)
+{
+ PRINT("sys_statfs ( %p, %p )",ARG1,ARG2);
+ PRE_REG_READ2(long, "statfs", const char *, path, struct statfs *, bu=
f);
+ PRE_MEM_RASCIIZ( "statfs(path)", ARG1 );
+ PRE_MEM_WRITE( "statfs(buf)", ARG2, sizeof(struct vki_statfs) );
+}
+
+POST(sys_statfs)
+{
+ POST_MEM_WRITE( ARG2, sizeof(struct vki_statfs) );
+}
+
//zz PRE(sys_statfs64, 0)
//zz {
//zz PRINT("sys_statfs64 ( %p, %llu, %p )",ARG1,(ULong)ARG2,ARG3);
@@ -5114,14 +5128,14 @@
//zz {
//zz POST_MEM_WRITE(ARG3, ARG2);
//zz }
-//zz=20
-//zz PRE(sys_acct, 0)
-//zz {
-//zz PRINT("sys_acct ( %p )", ARG1);
-//zz PRE_REG_READ1(long, "acct", const char *, filename);
-//zz PRE_MEM_RASCIIZ( "acct(filename)", ARG1 );
-//zz }
=20
+PRE(sys_acct)
+{
+ PRINT("sys_acct ( %p )", ARG1);
+ PRE_REG_READ1(long, "acct", const char *, filename);
+ PRE_MEM_RASCIIZ( "acct(filename)", ARG1 );
+}
+
PRE(sys_pause)
{
*flags |=3D SfMayBlock;
@@ -5346,18 +5360,18 @@
POST_MEM_WRITE( ARG3, sizeof(vki_sigset_t));
}
=20
-//zz PRE(sys_sigpending, 0)
-//zz {
-//zz PRINT( "sys_sigpending ( %p )", ARG1 );
-//zz PRE_REG_READ1(long, "sigpending", vki_old_sigset_t *, set);
-//zz PRE_MEM_WRITE( "sigpending(set)", ARG1, sizeof(vki_old_sigset_t)=
);
-//zz }
-//zz=20
-//zz POST(sys_sigpending)
-//zz {
-//zz POST_MEM_WRITE( ARG1, sizeof(vki_old_sigset_t) ) ;
-//zz }
-//zz=20
+PRE(sys_sigpending)
+{
+ PRINT( "sys_sigpending ( %p )", ARG1 );
+ PRE_REG_READ1(long, "sigpending", vki_old_sigset_t *, set);
+ PRE_MEM_WRITE( "sigpending(set)", ARG1, sizeof(vki_old_sigset_t));
+}
+
+POST(sys_sigpending)
+{
+ POST_MEM_WRITE( ARG1, sizeof(vki_old_sigset_t) ) ;
+}
+
//zz PRE(sys_rt_sigpending, 0)
//zz {
//zz PRINT( "sys_rt_sigpending ( %p )", ARG1 );
Modified: trunk/coregrind/m_syscalls/syscalls-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_syscalls/syscalls-linux.c 2005-06-08 10:46:56 UTC (=
rev 3853)
+++ trunk/coregrind/m_syscalls/syscalls-linux.c 2005-06-08 23:38:32 UTC (=
rev 3854)
@@ -162,25 +162,25 @@
//zz {
//zz POST_MEM_WRITE( ARG1, sizeof(struct vki_timex) );
//zz }
-//zz=20
-//zz PRE(sys_setfsuid16, 0)
-//zz {
-//zz PRINT("sys_setfsuid16 ( %d )", ARG1);
-//zz PRE_REG_READ1(long, "setfsuid16", vki_old_uid_t, uid);
-//zz }
-//zz=20
+
+PRE(sys_setfsuid16)
+{
+ PRINT("sys_setfsuid16 ( %d )", ARG1);
+ PRE_REG_READ1(long, "setfsuid16", vki_old_uid_t, uid);
+}
+
//zz PRE(sys_setfsuid, 0)
//zz {
//zz PRINT("sys_setfsuid ( %d )", ARG1);
//zz PRE_REG_READ1(long, "setfsuid", vki_uid_t, uid);
//zz }
-//zz=20
-//zz PRE(sys_setfsgid16, 0)
-//zz {
-//zz PRINT("sys_setfsgid16 ( %d )", ARG1);
-//zz PRE_REG_READ1(long, "setfsgid16", vki_old_gid_t, gid);
-//zz }
-//zz=20
+
+PRE(sys_setfsgid16)
+{
+ PRINT("sys_setfsgid16 ( %d )", ARG1);
+ PRE_REG_READ1(long, "setfsgid16", vki_old_gid_t, gid);
+}
+
//zz PRE(sys_setfsgid, 0)
//zz {
//zz PRINT("sys_setfsgid ( %d )", ARG1);
@@ -295,63 +295,64 @@
}
}
=20
-//zz PRE(sys_ioperm, 0)
-//zz {
-//zz PRINT("sys_ioperm ( %d, %d, %d )", ARG1, ARG2, ARG3 );
-//zz PRE_REG_READ3(long, "ioperm",
-//zz unsigned long, from, unsigned long, num, int, turn=
_on);
-//zz }
-//zz=20
-//zz PRE(sys_syslog, MayBlock)
-//zz {
-//zz PRINT("sys_syslog (%d, %p, %d)", ARG1,ARG2,ARG3);
-//zz PRE_REG_READ3(long, "syslog", int, type, char *, bufp, int, len)=
;
-//zz switch (ARG1) {
-//zz // The kernel uses magic numbers here, rather than named constan=
ts,
-//zz // therefore so do we.
-//zz case 2: case 3: case 4:
-//zz PRE_MEM_WRITE( "syslog(bufp)", ARG2, ARG3);
-//zz break;
-//zz default:=20
-//zz break;
-//zz }
-//zz }
-//zz=20
-//zz POST(sys_syslog)
-//zz {
-//zz switch (ARG1) {
-//zz case 2: case 3: case 4:
-//zz POST_MEM_WRITE( ARG2, ARG3 );
-//zz break;
-//zz default:
-//zz break;
-//zz }
-//zz }
-//zz=20
-//zz PRE(sys_vhangup, 0)
-//zz {
-//zz PRINT("sys_vhangup ( )");
-//zz PRE_REG_READ0(long, "vhangup");
-//zz }
-//zz=20
-//zz PRE(sys_sysinfo, 0)
-//zz {
-//zz PRINT("sys_sysinfo ( %p )",ARG1);
-//zz PRE_REG_READ1(long, "sysinfo", struct sysinfo *, info);
-//zz PRE_MEM_WRITE( "sysinfo(info)", ARG1, sizeof(struct vki_sysinfo)=
);
-//zz }
-//zz=20
-//zz POST(sys_sysinfo)
-//zz {
-//zz POST_MEM_WRITE( ARG1, sizeof(struct vki_sysinfo) );
-//zz }
-//zz=20
-//zz PRE(sys_personality, 0)
-//zz {
-//zz PRINT("sys_personality ( %llu )", (ULong)ARG1);
-//zz PRE_REG_READ1(long, "personality", vki_u_long, persona);
-//zz }
+PRE(sys_ioperm)
+{
+ PRINT("sys_ioperm ( %d, %d, %d )", ARG1, ARG2, ARG3 );
+ PRE_REG_READ3(long, "ioperm",
+ unsigned long, from, unsigned long, num, int, turn_on);
+}
=20
+PRE(sys_syslog)
+{
+ *flags |=3D SfMayBlock;
+ PRINT("sys_syslog (%d, %p, %d)", ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "syslog", int, type, char *, bufp, int, len);
+ switch (ARG1) {
+ // The kernel uses magic numbers here, rather than named constants,
+ // therefore so do we.
+ case 2: case 3: case 4:
+ PRE_MEM_WRITE( "syslog(bufp)", ARG2, ARG3);
+ break;
+ default:=20
+ break;
+ }
+}
+
+POST(sys_syslog)
+{
+ switch (ARG1) {
+ case 2: case 3: case 4:
+ POST_MEM_WRITE( ARG2, ARG3 );
+ break;
+ default:
+ break;
+ }
+}
+
+PRE(sys_vhangup)
+{
+ PRINT("sys_vhangup ( )");
+ PRE_REG_READ0(long, "vhangup");
+}
+
+PRE(sys_sysinfo)
+{
+ PRINT("sys_sysinfo ( %p )",ARG1);
+ PRE_REG_READ1(long, "sysinfo", struct sysinfo *, info);
+ PRE_MEM_WRITE( "sysinfo(info)", ARG1, sizeof(struct vki_sysinfo) );
+}
+
+POST(sys_sysinfo)
+{
+ POST_MEM_WRITE( ARG1, sizeof(struct vki_sysinfo) );
+}
+
+PRE(sys_personality)
+{
+ PRINT("sys_personality ( %llu )", (ULong)ARG1);
+ PRE_REG_READ1(long, "personality", vki_u_long, persona);
+}
+
PRE(sys_sysctl)
{
struct __vki_sysctl_args *argz;
Modified: trunk/coregrind/m_syscalls/syscalls-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_syscalls/syscalls-x86-linux.c 2005-06-08 10:46:56 U=
TC (rev 3853)
+++ trunk/coregrind/m_syscalls/syscalls-x86-linux.c 2005-06-08 23:38:32 U=
TC (rev 3854)
@@ -951,40 +951,42 @@
DECL_TEMPLATE(x86_linux, sys_modify_ldt);
DECL_TEMPLATE(x86_linux, sys_set_thread_area);
DECL_TEMPLATE(x86_linux, sys_ptrace);
+DECL_TEMPLATE(x86_linux, sys_sigaction);
+DECL_TEMPLATE(x86_linux, old_select);
=20
-//zz PRE(old_select, MayBlock)
-//zz {
-//zz /* struct sel_arg_struct {
-//zz unsigned long n;
-//zz fd_set *inp, *outp, *exp;
-//zz struct timeval *tvp;
-//zz };
-//zz */
-//zz PRE_REG_READ1(long, "old_select", struct sel_arg_struct *, args)=
;
-//zz PRE_MEM_READ( "old_select(args)", ARG1, 5*sizeof(UWord) );
-//zz=20
-//zz {
-//zz UInt* arg_struct =3D (UInt*)ARG1;
-//zz UInt a1, a2, a3, a4, a5;
-//zz=20
-//zz a1 =3D arg_struct[0];
-//zz a2 =3D arg_struct[1];
-//zz a3 =3D arg_struct[2];
-//zz a4 =3D arg_struct[3];
-//zz a5 =3D arg_struct[4];
-//zz=20
-//zz PRINT("old_select ( %d, %p, %p, %p, %p )", a1,a2,a3,a4,a5);
-//zz if (a2 !=3D (Addr)NULL)
-//zz PRE_MEM_READ( "old_select(readfds)", a2, a1/8 /* __FD_SE=
TSIZE/8 */ );
-//zz if (a3 !=3D (Addr)NULL)
-//zz PRE_MEM_READ( "old_select(writefds)", a3, a1/8 /* __FD_SE=
TSIZE/8 */ );
-//zz if (a4 !=3D (Addr)NULL)
-//zz PRE_MEM_READ( "old_select(exceptfds)", a4, a1/8 /* __FD_SE=
TSIZE/8 */ );
-//zz if (a5 !=3D (Addr)NULL)
-//zz PRE_MEM_READ( "old_select(timeout)", a5, sizeof(struct vki=
_timeval) );
-//zz }
-//zz }
+PRE(old_select)
+{
+ /* struct sel_arg_struct {
+ unsigned long n;
+ fd_set *inp, *outp, *exp;
+ struct timeval *tvp;
+ };
+ */
+ PRE_REG_READ1(long, "old_select", struct sel_arg_struct *, args);
+ PRE_MEM_READ( "old_select(args)", ARG1, 5*sizeof(UWord) );
+ *flags |=3D SfMayBlock;
+ {
+ UInt* arg_struct =3D (UInt*)ARG1;
+ UInt a1, a2, a3, a4, a5;
=20
+ a1 =3D arg_struct[0];
+ a2 =3D arg_struct[1];
+ a3 =3D arg_struct[2];
+ a4 =3D arg_struct[3];
+ a5 =3D arg_struct[4];
+
+ PRINT("old_select ( %d, %p, %p, %p, %p )", a1,a2,a3,a4,a5);
+ if (a2 !=3D (Addr)NULL)
+ PRE_MEM_READ( "old_select(readfds)", a2, a1/8 /* __FD_SETSIZE=
/8 */ );
+ if (a3 !=3D (Addr)NULL)
+ PRE_MEM_READ( "old_select(writefds)", a3, a1/8 /* __FD_SETSIZE=
/8 */ );
+ if (a4 !=3D (Addr)NULL)
+ PRE_MEM_READ( "old_select(exceptfds)", a4, a1/8 /* __FD_SETSIZE=
/8 */ );
+ if (a5 !=3D (Addr)NULL)
+ PRE_MEM_READ( "old_select(timeout)", a5, sizeof(struct vki_time=
val) );
+ }
+}
+
PRE(sys_clone)
{
UInt cloneflags;
@@ -1820,82 +1822,70 @@
# undef ARG2_5
}
=20
-//zz // jrs 20050207: this is from the svn branch
-//zz //PRE(sys_sigaction, Special)
-//zz //{
-//zz // PRINT("sys_sigaction ( %d, %p, %p )", ARG1,ARG2,ARG3);
-//zz // PRE_REG_READ3(int, "sigaction",
-//zz // int, signum, const struct old_sigaction *, act,
-//zz // struct old_sigaction *, oldact)
-//zz // if (ARG2 !=3D 0)
-//zz // PRE_MEM_READ( "sigaction(act)", ARG2, sizeof(struct vki_old=
_sigaction));
-//zz // if (ARG3 !=3D 0)
-//zz // PRE_MEM_WRITE( "sigaction(oldact)", ARG3, sizeof(struct vki=
_old_sigaction));
-//zz //
-//zz // VG_(do_sys_sigaction)(tid);
-//zz //}
-//zz=20
-//zz /* Convert from non-RT to RT sigset_t's */
-//zz static void convert_sigset_to_rt(const vki_old_sigset_t *oldset, vk=
i_sigset_t *set)
-//zz {
-//zz VG_(sigemptyset)(set);
-//zz set->sig[0] =3D *oldset;
-//zz }
-//zz PRE(sys_sigaction, Special)
-//zz {
-//zz struct vki_sigaction new, old;
-//zz struct vki_sigaction *newp, *oldp;
-//zz=20
-//zz PRINT("sys_sigaction ( %d, %p, %p )", ARG1,ARG2,ARG3);
-//zz PRE_REG_READ3(int, "sigaction",
-//zz int, signum, const struct old_sigaction *, act,
-//zz struct old_sigaction *, oldact);
-//zz=20
-//zz newp =3D oldp =3D NULL;
-//zz=20
-//zz if (ARG2 !=3D 0)
-//zz PRE_MEM_READ( "sigaction(act)", ARG2, sizeof(struct vki_old_s=
igaction));
-//zz=20
-//zz if (ARG3 !=3D 0) {
-//zz PRE_MEM_WRITE( "sigaction(oldact)", ARG3, sizeof(struct vki_o=
ld_sigaction));
-//zz oldp =3D &old;
-//zz }
-//zz=20
-//zz //jrs 20050207: what?! how can this make any sense?
-//zz //if (VG_(is_kerror)(SYSRES))
-//zz // return;
-//zz=20
-//zz if (ARG2 !=3D 0) {
-//zz struct vki_old_sigaction *oldnew =3D (struct vki_old_sigactio=
n *)ARG2;
-//zz=20
-//zz new.ksa_handler =3D oldnew->ksa_handler;
-//zz new.sa_flags =3D oldnew->sa_flags;
-//zz new.sa_restorer =3D oldnew->sa_restorer;
-//zz convert_sigset_to_rt(&oldnew->sa_mask, &new.sa_mask);
-//zz newp =3D &new;
-//zz }
-//zz=20
-//zz SET_STATUS_( VG_(do_sys_sigaction)(ARG1, newp, oldp) );
-//zz=20
-//zz if (ARG3 !=3D 0 && RES =3D=3D 0) {
-//zz struct vki_old_sigaction *oldold =3D (struct vki_old_sigactio=
n *)ARG3;
-//zz=20
-//zz oldold->ksa_handler =3D oldp->ksa_handler;
-//zz oldold->sa_flags =3D oldp->sa_flags;
-//zz oldold->sa_restorer =3D oldp->sa_restorer;
-//zz oldold->sa_mask =3D oldp->sa_mask.sig[0];
-//zz }
-//zz }
-//zz=20
-//zz POST(sys_sigaction)
-//zz {
-//zz if (RES =3D=3D 0 && ARG3 !=3D 0)
-//zz POST_MEM_WRITE( ARG3, sizeof(struct vki_old_sigaction));
-//zz }
-//zz=20
-//zz #undef PRE
-//zz #undef POST
+/* Convert from non-RT to RT sigset_t's */
+static=20
+void convert_sigset_to_rt(const vki_old_sigset_t *oldset, vki_sigset_t *=
set)
+{
+ VG_(sigemptyset)(set);
+ set->sig[0] =3D *oldset;
+}
+PRE(sys_sigaction)
+{
+ struct vki_sigaction new, old;
+ struct vki_sigaction *newp, *oldp;
=20
+ PRINT("sys_sigaction ( %d, %p, %p )", ARG1,ARG2,ARG3);
+ PRE_REG_READ3(int, "sigaction",
+ int, signum, const struct old_sigaction *, act,
+ struct old_sigaction *, oldact);
+
+ newp =3D oldp =3D NULL;
+
+ if (ARG2 !=3D 0)
+ PRE_MEM_READ( "sigaction(act)", ARG2, sizeof(struct vki_old_sigact=
ion));
+
+ if (ARG3 !=3D 0) {
+ PRE_MEM_WRITE( "sigaction(oldact)", ARG3, sizeof(struct vki_old_si=
gaction));
+ oldp =3D &old;
+ }
+
+ //jrs 20050207: what?! how can this make any sense?
+ //if (VG_(is_kerror)(SYSRES))
+ // return;
+
+ if (ARG2 !=3D 0) {
+ struct vki_old_sigaction *oldnew =3D (struct vki_old_sigaction *)A=
RG2;
+
+ new.ksa_handler =3D oldnew->ksa_handler;
+ new.sa_flags =3D oldnew->sa_flags;
+ new.sa_restorer =3D oldnew->sa_restorer;
+ convert_sigset_to_rt(&oldnew->sa_mask, &new.sa_mask);
+ newp =3D &new;
+ }
+
+ SET_STATUS_from_SysRes( VG_(do_sys_sigaction)(ARG1, newp, oldp) );
+
+ if (ARG3 !=3D 0 && SUCCESS && RES =3D=3D 0) {
+ struct vki_old_sigaction *oldold =3D (struct vki_old_sigaction *)A=
RG3;
+
+ oldold->ksa_handler =3D oldp->ksa_handler;
+ oldold->sa_flags =3D oldp->sa_flags;
+ oldold->sa_restorer =3D oldp->sa_restorer;
+ oldold->sa_mask =3D oldp->sa_mask.sig[0];
+ }
+}
+
+POST(sys_sigaction)
+{
+ vg_assert(SUCCESS);
+ if (RES =3D=3D 0 && ARG3 !=3D 0)
+ POST_MEM_WRITE( ARG3, sizeof(struct vki_old_sigaction));
+}
+
+#undef PRE
+#undef POST
+
+
/* ---------------------------------------------------------------------
The x86/Linux syscall table
------------------------------------------------------------------ */
@@ -1974,46 +1964,46 @@
GENX_(__NR_getgid, sys_getgid16), // 47
//zz // (__NR_signal, sys_signal), // 48 */* (AN=
SI C)
GENX_(__NR_geteuid, sys_geteuid16), // 49
-//zz=20
-//zz GENX_(__NR_getegid, sys_getegid16), // 50
-//zz GENX_(__NR_acct, sys_acct), // 51
-//zz LINX_(__NR_umount2, sys_umount), // 52
+
+ 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
-//zz=20
-//zz GENXY(__NR_fcntl, sys_fcntl), // 55
+
+ GENXY(__NR_fcntl, sys_fcntl), // 55
GENX_(__NR_mpx, sys_ni_syscall), // 56
-//zz GENX_(__NR_setpgid, sys_setpgid), // 57
+ GENX_(__NR_setpgid, sys_setpgid), // 57
GENX_(__NR_ulimit, sys_ni_syscall), // 58
//zz // (__NR_oldolduname, sys_olduname), // 59 Linux -=
- obsolete
//zz=20
GENX_(__NR_umask, sys_umask), // 60
-//zz GENX_(__NR_chroot, sys_chroot), // 61
+ GENX_(__NR_chroot, sys_chroot), // 61
//zz // (__NR_ustat, sys_ustat) // 62 SVr4 --=
deprecated
GENXY(__NR_dup2, sys_dup2), // 63
GENX_(__NR_getppid, sys_getppid), // 64
=20
GENX_(__NR_getpgrp, sys_getpgrp), // 65
-//zz GENX_(__NR_setsid, sys_setsid), // 66
-//zz PLAXY(__NR_sigaction, sys_sigaction), // 67
+ GENX_(__NR_setsid, sys_setsid), // 66
+ PLAXY(__NR_sigaction, sys_sigaction), // 67
//zz // (__NR_sgetmask, sys_sgetmask), // 68 */* (AN=
SI C)
//zz // (__NR_ssetmask, sys_ssetmask), // 69 */* (AN=
SI C)
//zz=20
-//zz GENX_(__NR_setreuid, sys_setreuid16), // 70
-//zz GENX_(__NR_setregid, sys_setregid16), // 71
+ GENX_(__NR_setreuid, sys_setreuid16), // 70
+ GENX_(__NR_setregid, sys_setregid16), // 71
//zz GENX_(__NR_sigsuspend, sys_sigsuspend), // 72
-//zz GENXY(__NR_sigpending, sys_sigpending), // 73
+ GENXY(__NR_sigpending, sys_sigpending), // 73
//zz // (__NR_sethostname, sys_sethostname), // 74 */*
//zz=20
GENX_(__NR_setrlimit, sys_setrlimit), // 75
-//zz GENXY(__NR_getrlimit, sys_old_getrlimit), // 76
-//zz GENXY(__NR_getrusage, sys_getrusage), // 77
+ GENXY(__NR_getrlimit, sys_old_getrlimit), // 76
+ GENXY(__NR_getrusage, sys_getrusage), // 77
GENXY(__NR_gettimeofday, sys_gettimeofday), // 78
-//zz GENX_(__NR_settimeofday, sys_settimeofday), // 79
-//zz=20
-//zz GENXY(__NR_getgroups, sys_getgroups16), // 80
-//zz GENX_(__NR_setgroups, sys_setgroups16), // 81
-//zz PLAX_(__NR_select, old_select), // 82
+ GENX_(__NR_settimeofday, sys_settimeofday), // 79
+
+ GENXY(__NR_getgroups, sys_getgroups16), // 80
+ GENX_(__NR_setgroups, sys_setgroups16), // 81
+ PLAX_(__NR_select, old_select), // 82
GENX_(__NR_symlink, sys_symlink), // 83
//zz // (__NR_oldlstat, sys_lstat), // 84 -- obso=
lete
//zz=20
@@ -2025,36 +2015,36 @@
//zz=20
PLAX_(__NR_mmap, old_mmap), // 90
GENXY(__NR_munmap, sys_munmap), // 91
-//zz GENX_(__NR_truncate, sys_truncate), // 92
+ GENX_(__NR_truncate, sys_truncate), // 92
GENX_(__NR_ftruncate, sys_ftruncate), // 93
-//zz GENX_(__NR_fchmod, sys_fchmod), // 94
-//zz=20
-//zz GENX_(__NR_fchown, sys_fchown16), // 95
-//zz GENX_(__NR_getpriority, sys_getpriority), // 96
-//zz GENX_(__NR_setpriority, sys_setpriority), // 97
+ GENX_(__NR_fchmod, sys_fchmod), // 94
+
+ GENX_(__NR_fchown, sys_fchown16), // 95
+ GENX_(__NR_getpriority, sys_getpriority), // 96
+ GENX_(__NR_setpriority, sys_setpriority), // 97
GENX_(__NR_profil, sys_ni_syscall), // 98
-//zz GENXY(__NR_statfs, sys_statfs), // 99
-//zz=20
-//zz GENXY(__NR_fstatfs, sys_fstatfs), // 100
-//zz LINX_(__NR_ioperm, sys_ioperm), // 101
+ GENXY(__NR_statfs, sys_statfs), // 99
+
+ GENXY(__NR_fstatfs, sys_fstatfs), // 100
+ LINX_(__NR_ioperm, sys_ioperm), // 101
PLAXY(__NR_socketcall, sys_socketcall), // 102 x86/Linux-o=
nly
-//zz LINXY(__NR_syslog, sys_syslog), // 103
-//zz GENXY(__NR_setitimer, sys_setitimer), // 104
-//zz=20
-//zz GENXY(__NR_getitimer, sys_getitimer), // 105
-//zz GENXY(__NR_stat, sys_newstat), // 106
-//zz GENXY(__NR_lstat, sys_newlstat), // 107
-//zz GENXY(__NR_fstat, sys_newfstat), // 108
+ LINXY(__NR_syslog, sys_syslog), // 103
+ GENXY(__NR_setitimer, sys_setitimer), // 104
+
+ GENXY(__NR_getitimer, sys_getitimer), // 105
+ GENXY(__NR_stat, sys_newstat), // 106
+ GENXY(__NR_lstat, sys_newlstat), // 107
+ GENXY(__NR_fstat, sys_newfstat), // 108
//zz // (__NR_olduname, sys_uname), // 109 -- obs=
olete
//zz=20
-//zz GENX_(__NR_iopl, sys_iopl), // 110
-//zz LINX_(__NR_vhangup, sys_vhangup), // 111
+ GENX_(__NR_iopl, sys_iopl), // 110
+ LINX_(__NR_vhangup, sys_vhangup), // 111
GENX_(__NR_idle, sys_ni_syscall), // 112
//zz // (__NR_vm86old, sys_vm86old), // 113 x86/Li=
nux-only
GENXY(__NR_wait4, sys_wait4), // 114
//zz=20
//zz // (__NR_swapoff, sys_swapoff), // 115 */Linu=
x=20
-//zz LINXY(__NR_sysinfo, sys_sysinfo), // 116
+ LINXY(__NR_sysinfo, sys_sysinfo), // 116
PLAXY(__NR_ipc, sys_ipc), // 117
GENX_(__NR_fsync, sys_fsync), // 118
PLAX_(__NR_sigreturn, sys_sigreturn), // 119 ?/Linux
@@ -2069,38 +2059,38 @@
GENXY(__NR_sigprocmask, sys_sigprocmask), // 126
//zz // Nb: create_module() was removed 2.4-->2.6
GENX_(__NR_create_module, sys_ni_syscall), // 127
-//zz GENX_(__NR_init_module, sys_init_module), // 128
+ GENX_(__NR_init_module, sys_init_module), // 128
//zz // (__NR_delete_module, sys_delete_module), // 129 (*/Lin=
ux)?
//zz=20
//zz // Nb: get_kernel_syms() was removed 2.4-->2.6
GENX_(__NR_get_kernel_syms, sys_ni_syscall), // 130
-//zz GENX_(__NR_quotactl, sys_quotactl), // 131
-//zz GENX_(__NR_getpgid, sys_getpgid), // 132
-//zz GENX_(__NR_fchdir, sys_fchdir), // 133
+ GENX_(__NR_quotactl, sys_quotactl), // 131
+ GENX_(__NR_getpgid, sys_getpgid), // 132
+ GENX_(__NR_fchdir, sys_fchdir), // 133
//zz // (__NR_bdflush, sys_bdflush), // 134 */Linu=
x
//zz=20
//zz // (__NR_sysfs, sys_sysfs), // 135 SVr4
-//zz LINX_(__NR_personality, sys_personality), // 136
+ LINX_(__NR_personality, sys_personality), // 136
GENX_(__NR_afs_syscall, sys_ni_syscall), // 137
-//zz LINX_(__NR_setfsuid, sys_setfsuid16), // 138
-//zz LINX_(__NR_setfsgid, sys_setfsgid16), // 139
-//zz=20
+ LINX_(__NR_setfsuid, sys_setfsuid16), // 138
+ LINX_(__NR_setfsgid, sys_setfsgid16), // 139
+=20
LINXY(__NR__llseek, sys_llseek), // 140
GENXY(__NR_getdents, sys_getdents), // 141
GENX_(__NR__newselect, sys_select), // 142
-//zz GENX_(__NR_flock, sys_flock), // 143
-//zz GENX_(__NR_msync, sys_msync), // 144
-//zz=20
+ GENX_(__NR_flock, sys_flock), // 143
+ GENX_(__NR_msync, sys_msync), // 144
+
GENXY(__NR_readv, sys_readv), // 145
GENX_(__NR_writev, sys_writev), // 146
-//zz GENX_(__NR_getsid, sys_getsid), // 147
-//zz GENX_(__NR_fdatasync, sys_fdatasync), // 148
+ GENX_(__NR_getsid, sys_getsid), // 147
+ GENX_(__NR_fdatasync, sys_fdatasync), // 148
LINXY(__NR__sysctl, sys_sysctl), // 149
-//zz=20
-//zz GENX_(__NR_mlock, sys_mlock), // 150
-//zz GENX_(__NR_munlock, sys_munlock), // 151
-//zz GENX_(__NR_mlockall, sys_mlockall), // 152
-//zz GENX_(__NR_munlockall, sys_munlockall), // 153
+
+ GENX_(__NR_mlock, sys_mlock), // 150
+ GENX_(__NR_munlock, sys_munlock), // 151
+ GENX_(__NR_mlockall, sys_mlockall), // 152
+ GENX_(__NR_munlockall, sys_munlockall), // 153
//zz GENXY(__NR_sched_setparam, sys_sched_setparam), // 154
//zz=20
GENXY(__NR_sched_getparam, sys_sched_getparam), // 155
|