From: Nicholas Nethercote Date: Fri, 12 Nov 2004 14:57:34 +0000 (+0000) Subject: Converted vfork() and acct(). Properly annotated all the ones we don't handle, X-Git-Tag: svn/VALGRIND_3_0_0~1345 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=267ff3faac79eceb66f98de188e7f25acb93542b;p=thirdparty%2Fvalgrind.git Converted vfork() and acct(). Properly annotated all the ones we don't handle, plus a few we do. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2967 --- diff --git a/coregrind/vg_syscalls.c b/coregrind/vg_syscalls.c index 469164f00a..64a51c7d63 100644 --- a/coregrind/vg_syscalls.c +++ b/coregrind/vg_syscalls.c @@ -5264,10 +5264,10 @@ POST(sched_getaffinity) VG_TRACK(post_mem_write, arg3, arg2); } -PRE(acct) +PREx(sys_acct, 0) { - /* int acct(const char *filename); */ - PRINT("acct ( %p )", arg1); + PRINT("sys_acct ( %p )", arg1); + PRE_REG_READ1(long, "acct", const char *, filename); PRE_MEM_RASCIIZ( "acct(filename)", arg1 ); } @@ -5838,8 +5838,8 @@ static const struct sys_info sys_info[] = { SYSX_(__NR_mknod, sys_mknod), // 14 * P SYSX_(__NR_chmod, sys_chmod), // 15 * P - // (lchown, sys_lchown16), // 16 ## - SYSX_(__NR_break, sys_ni_syscall), // 17 * P + // (__NR_lchown, sys_lchown16), // 16 ## P + SYSX_(__NR_break, sys_ni_syscall), // 17 * P -- unimplemented // (__NR_oldstat, sys_stat), // 18 * L -- obsolete SYSX_(__NR_lseek, sys_lseek), // 19 * P @@ -5856,11 +5856,11 @@ static const struct sys_info sys_info[] = { SYSX_(__NR_pause, sys_pause), // 29 * P SYSB_(utime, MayBlock), // 30 sys_utime * - SYSX_(__NR_stty, sys_ni_syscall), // 31 * P - SYSX_(__NR_gtty, sys_ni_syscall), // 32 * P + SYSX_(__NR_stty, sys_ni_syscall), // 31 * P -- unimplemented + SYSX_(__NR_gtty, sys_ni_syscall), // 32 * P -- unimplemented SYSB_(access, 0), // 33 sys_access * SYSB_(nice, 0), // 34 sys_nice * - SYSX_(__NR_ftime, sys_ni_syscall), // 35 * P + SYSX_(__NR_ftime, sys_ni_syscall), // 35 * P -- unimplemented SYSX_(__NR_sync, sys_sync), // 36 * SYSBA(kill, 0), // 37 sys_kill * @@ -5871,43 +5871,43 @@ static const struct sys_info sys_info[] = { SYSBA(dup, 0), // 41 sys_dup * SYSBA(pipe, 0), // 42 sys_pipe SYSBA(times, 0), // 43 sys_times * - SYSX_(__NR_prof, sys_ni_syscall), // 44 * P + SYSX_(__NR_prof, sys_ni_syscall), // 44 * P -- unimplemented SYSB_(brk, Special), // 45 sys_brk * SYSB_(setgid, 0), // 46 sys_setgid16 ## - SYSX_(__NR_getgid, sys_getgid16), // 47 ## - // signal 48 sys_signal * - SYSX_(__NR_geteuid, sys_geteuid16), // 49 ## - - SYSX_(__NR_getegid, sys_getegid16), // 50 ## - SYSB_(acct, 0), // 51 sys_acct * - SYSX_(__NR_umount2, sys_umount), // 52 * L - SYSX_(__NR_lock, sys_ni_syscall), // 53 * P + SYSX_(__NR_getgid, sys_getgid16), // 47 ## P + // (__NR_signal, sys_signal), // 48 * (ANSI C?) + SYSX_(__NR_geteuid, sys_geteuid16), // 49 ## P + + SYSX_(__NR_getegid, sys_getegid16), // 50 ## (P16) + SYSX_(__NR_acct, sys_acct), // 51 * (SVR4, non-POSIX) + SYSX_(__NR_umount2, sys_umount), // 52 * L + SYSX_(__NR_lock, sys_ni_syscall), // 53 * P -- unimplemented SYSBA(ioctl, MayBlock), // 54 sys_ioctl * SYSBA(fcntl, 0), // 55 sys_fcntl * - SYSX_(__NR_mpx, sys_ni_syscall), // 56 * P + SYSX_(__NR_mpx, sys_ni_syscall), // 56 * P -- unimplemented SYSBA(setpgid, 0), // 57 sys_setpgid * - SYSX_(__NR_ulimit, sys_ni_syscall), // 58 * P - // (__NR_oldolduname, sys_olduname), // 59 (?) L -- obsolete + SYSX_(__NR_ulimit, sys_ni_syscall), // 58 * P -- unimplemented + // (__NR_oldolduname, sys_olduname), // 59 (?) L -- obsolete SYSB_(umask, 0), // 60 sys_umask * SYSB_(chroot, 0), // 61 sys_chroot * - // ustat 62 sys_ustat * + // (__NR_ustat, sys_ustat) // 62 * (SVr4, deprecated) SYSBA(dup2, 0), // 63 sys_dup2 * SYSX_(__NR_getppid, sys_getppid), // 64 * SYSX_(__NR_getpgrp, sys_getpgrp), // 65 * SYSX_(__NR_setsid, sys_setsid), // 66 * SYSBA(sigaction, SIG_SIM), // 67 sys_sigaction - // sgetmask 68 sys_sgetmask * - // ssetmask 69 sys_ssetmask * + // (__NR_sgetmask, sys_sgetmask), // 68 * (ANSI C) + // (__NR_ssetmask, sys_ssetmask), // 69 * (ANSI C) SYSB_(setreuid, 0), // 70 sys_setreuid16 ## SYSB_(setregid, 0), // 71 sys_setregid16 ## SYSB_(sigsuspend, MayBlock), // 72 sys_sigsuspend SYSBA(sigpending, NBRunInLWP), // 73 sys_sigpending * - // sethostname 74 sys_sethostname * + // (__NR_sethostname, sys_sethostname), // 74 * (almost P) SYSB_(setrlimit, 0), // 75 sys_setrlimit * SYSBA(getrlimit, 0), // 76 sys_old_getrlimit * @@ -5922,10 +5922,10 @@ static const struct sys_info sys_info[] = { // (__NR_oldlstat, sys_lstat), // 84 * L -- obsolete SYSBA(readlink, 0), // 85 sys_readlink * - // uselib 86 sys_uselib * - // swapon 87 sys_swapon * - // reboot 88 sys_reboot * - // readdir 89 old_readdir + // (__NR_uselib, sys_uselib), // 86 * L + // (__NR_swapon, sys_swapon), // 87 * L + // (__NR_reboot, sys_reboot), // 88 * L + // (__NR_readdir, old_readdir), // 89 () L -- superseded SYSB_(mmap, Special), // 90 old_mmap SYSBA(munmap, 0), // 91 sys_munmap * @@ -5936,7 +5936,7 @@ static const struct sys_info sys_info[] = { SYSB_(fchown, 0), // 95 sys_fchown16 ## SYSB_(getpriority, 0), // 96 sys_getpriority * SYSB_(setpriority, 0), // 97 sys_setpriority * - // profil 98 + // (__NR_profil, sys_ni_syscall), // 98 * P -- unimplemented SYSBA(statfs, 0), // 99 sys_statfs * SYSBA(fstatfs, 0), // 100 sys_fstatfs * @@ -5949,43 +5949,43 @@ static const struct sys_info sys_info[] = { SYSBA(stat, 0), // 106 sys_newstat * SYSBA(lstat, 0), // 107 sys_newlstat * SYSBA(fstat, 0), // 108 sys_newfstat * - // (__NR_olduname, sys_uname), // 109 (?) L -- obsolete + // (__NR_olduname, sys_uname), // 109 (?) L -- obsolete SYSB_(iopl, 0), // 110 sys_iopl - SYSX_(__NR_vhangup, sys_vhangup), // 111 * - SYSX_(__NR_idle, sys_ni_syscall), // 112 * P - // vm86old 113 sys_vm86old + SYSX_(__NR_vhangup, sys_vhangup), // 111 * L + SYSX_(__NR_idle, sys_ni_syscall), // 112 * P -- unimplemented + // (__NR_vm86old, sys_vm86old), // 113 (x86) L SYSBA(wait4, MayBlock), // 114 sys_wait4 * - // swapoff 115 sys_swapoff * + // (__NR_swapoff, sys_swapoff), // 115 * L SYSBA(sysinfo, 0), // 116 sys_sysinfo * SYSBA(ipc, 0), // 117 sys_ipc SYSB_(fsync, MayBlock), // 118 sys_fsync * - // sigreturn 119 sys_sigreturn + // (__NR_sigreturn, sys_sigreturn), // 119 () L - SYSB_(clone, Special), // 120 sys_clone (very non-gen) - // setdomainname 121 sys_setdomainname * + SYSB_(clone, Special), // 120 sys_clone (very non-gen) L + // (__NR_setdomainname, sys_setdomainname),// 121 * (non-P?) SYSXY(__NR_uname, sys_newuname), // 122 * P - SYSB_(modify_ldt, Special), // 123 sys_modify_ldt (x86,amd64) + SYSB_(modify_ldt, Special), // 123 sys_modify_ldt (x86,amd64) L SYSBA(adjtimex, 0), // 124 sys_adjtimex * SYSBA(mprotect, 0), // 125 sys_mprotect * SYSBA(sigprocmask, SIG_SIM), // 126 sys_sigprocmask * // Nb: create_module() was removed 2.4-->2.6 - SYSX_(__NR_create_module, sys_ni_syscall), // 127 * P + SYSX_(__NR_create_module, sys_ni_syscall), // 127 * P -- unimplemented SYSB_(init_module, MayBlock), // 128 sys_init_module * - // delete_module 129 sys_delete_module * + // (__NR_delete_module, sys_delete_module),// 129 () (L?) // Nb: get_kernel_syms() was removed 2.4-->2.6 - SYSX_(__NR_get_kernel_syms, sys_ni_syscall), // 130 * P + SYSX_(__NR_get_kernel_syms, sys_ni_syscall), // 130 * P -- unimplemented SYSB_(quotactl, 0), // 131 sys_quotactl * SYSB_(getpgid, 0), // 132 sys_getpgid * SYSB_(fchdir, 0), // 133 sys_fchdir * - // bdflush 134 sys_bdflush * - // sysfs 135 sys_sysfs * + // (__NR_bdflush, sys_bdflush), // 134 * L + // (__NR_sysfs, sys_sysfs), // 135 * (SVr4) SYSB_(personality, 0), // 136 sys_personality * - SYSX_(__NR_afs_syscall, sys_ni_syscall), // 137 * P + SYSX_(__NR_afs_syscall, sys_ni_syscall), // 137 * P SYSB_(setfsuid, 0), // 138 sys_setfsuid16 ## SYSB_(setfsgid, 0), // 139 sys_setfsgid16 ## @@ -6004,31 +6004,31 @@ static const struct sys_info sys_info[] = { SYSB_(mlock, MayBlock), // 150 sys_mlock * SYSB_(munlock, MayBlock), // 151 sys_unlock * SYSB_(mlockall, MayBlock), // 152 sys_mlockall * - SYSX_(__NR_munlockall, sys_munlockall), // 153 * - SYSBA(sched_setparam, 0), /* ??? */ // 154 sys_sched_setparam * + SYSX_(__NR_munlockall, sys_munlockall), // 153 * P + SYSBA(sched_setparam, 0/*???*/), // 154 sys_sched_setparam * - SYSBA(sched_getparam, 0), /* ??? */ // 155 sys_sched_getparam * - SYSB_(sched_setscheduler, 0), /* ??? */ // 156 sys_sched_setscheduler * - SYSB_(sched_getscheduler, 0), /* ??? */ // 157 sys_sched_getscheduler * - SYSB_(sched_yield, 0), /* ??? */ // 158 sys_sched_yield * - SYSB_(sched_get_priority_max, 0), /* ??? */ // 159 sys_sched_get_priority_max * + SYSBA(sched_getparam, 0/*???*/), // 155 sys_sched_getparam * + SYSB_(sched_setscheduler, 0/*???*/), // 156 sys_sched_setscheduler * + SYSB_(sched_getscheduler, 0/*???*/), // 157 sys_sched_getscheduler * + SYSB_(sched_yield, 0/*???*/), // 158 sys_sched_yield * + SYSB_(sched_get_priority_max,0/*???*/), // 159 sys_sched_get_priority_max * - SYSB_(sched_get_priority_min, 0), /* ??? */ // 160 sys_sched_get_priority_min * - // sched_rr_get_interval 161 sys_sched_rr_get_interval * + SYSB_(sched_get_priority_min,0/*???*/), // 160 sys_sched_get_priority_min * + // (__NR_sched_rr_get_interval, sys_sched_rr_get_interval), // 161 * SYSBA(nanosleep, MayBlock|PostOnFail), // 162 sys_nanosleep * SYSB_(mremap, Special), // 163 sys_mremap * SYSB_(setresuid, 0), // 164 sys_setresuid16 ## SYSBA(getresuid, 0), // 165 sys_getresuid16 ## - // vm86 166 sys_vm86 - SYSX_(__NR_query_module, sys_ni_syscall), // 167 * P + // (__NR_vm86, sys_vm86), // 166 (x86) L + SYSX_(__NR_query_module, sys_ni_syscall), // 167 * P -- unimplemented SYSBA(poll, MayBlock), // 168 sys_poll * - // nfsservctl 169 sys_nfsservctl * + // (__NR_nfsservctl, sys_nfsservctl), // 169 * L SYSB_(setresgid, 0), // 170 sys_setresgid16 ## SYSBA(getresgid, 0), // 171 sys_getresgid16 ## SYSB_(prctl, MayBlock), // 172 sys_prctl * - // rt_sigreturn 173 sys_rt_sigreturn + // (__NR_rt_sigreturn, sys_rt_sigreturn), // 173 () () SYSBA(rt_sigaction, SIG_SIM), // 174 sys_rt_sigaction SYSBA(rt_sigprocmask, SIG_SIM), // 175 sys_rt_sigprocmask * @@ -6049,7 +6049,8 @@ static const struct sys_info sys_info[] = { SYSBA(getpmsg, MayBlock), // 188 sys_ni_syscall ... SYSB_(putpmsg, MayBlock), // 189 sys_ni_syscall ... - // vfork 190 sys_vfork + // Nb: we convert vfork() to fork() in VG_(pre_syscall)(). + // (__NR_vfork, sys_vfork), // 190 -- Valgrind avoids SYSBA(ugetrlimit, 0), // 191 sys_getrlimit * SYSBA(mmap2, 0), // 192 sys_mmap2 SYSB_(truncate64, MayBlock), // 193 sys_truncate64 %% @@ -6081,38 +6082,36 @@ static const struct sys_info sys_info[] = { SYSB_(setfsuid32, 0), // 215 sys_setfsuid * SYSB_(setfsgid32, 0), // 216 sys_setfsgid * - // pivot_root 217 sys_pivot_root * + // (__NR_pivot_root, sys_pivot_root), // 217 * L SYSBA(mincore, 0), // 218 sys_mincore * - SYSB_(madvise, MayBlock), // 219 /* Also called __NR_madvise1 */ sys_madvise * + SYSB_(madvise, MayBlock), // 219 sys_madvise * SYSBA(getdents64, MayBlock), // 220 sys_getdents64 * // XXX: This wrapped in a "#if BITS_PER_LONG == 32" in // include/linux/syscalls.h... SYSBA(fcntl64, 0), // 221 sys_fcntl64 * - // Nb: 222 is reserved for TUX (whatever that means --njn) - SYSX_(222, sys_ni_syscall), // 222 * P - // Nb: 223 is unused - SYSX_(223, sys_ni_syscall), // 223 * P - // gettid 224 sys_gettid * - - // readahead 225 sys_readahead * - SYSB_(setxattr, MayBlock), // 226 sys_setxattr * - SYSB_(lsetxattr, MayBlock), // 227 sys_lsetxattr * - SYSB_(fsetxattr, MayBlock), // 228 sys_fsetxattr * - SYSBA(getxattr, MayBlock), // 229 sys_getxattr * - - SYSBA(lgetxattr, MayBlock), // 230 sys_lgetxattr * - SYSBA(fgetxattr, MayBlock), // 231 sys_fgetxattr * - SYSBA(listxattr, MayBlock), // 232 sys_listxattr * - SYSBA(llistxattr, MayBlock), // 233 sys_llistxattr * - SYSBA(flistxattr, MayBlock), // 234 sys_flistxattr * - - SYSB_(removexattr, MayBlock), // 235 sys_removexattr * - SYSB_(lremovexattr, MayBlock), // 236 sys_lremovexattr * - SYSB_(fremovexattr, MayBlock), // 237 sys_fremovexattr * - // tkill 238 sys_tkill * + SYSX_(222, sys_ni_syscall), // 222 * P -- reserved + SYSX_(223, sys_ni_syscall), // 223 * P -- unused + // (__NR_gettid, sys_gettid), // 224 * L + + // (__NR_readahead, sys_readahead), // 225 * () + SYSB_(setxattr, MayBlock), // 226 sys_setxattr * L? + SYSB_(lsetxattr, MayBlock), // 227 sys_lsetxattr * L? + SYSB_(fsetxattr, MayBlock), // 228 sys_fsetxattr * L? + SYSBA(getxattr, MayBlock), // 229 sys_getxattr * L? + + SYSBA(lgetxattr, MayBlock), // 230 sys_lgetxattr * L? + SYSBA(fgetxattr, MayBlock), // 231 sys_fgetxattr * L? + SYSBA(listxattr, MayBlock), // 232 sys_listxattr * L? + SYSBA(llistxattr, MayBlock), // 233 sys_llistxattr * L? + SYSBA(flistxattr, MayBlock), // 234 sys_flistxattr * L? + + SYSB_(removexattr, MayBlock), // 235 sys_removexattr * L? + SYSB_(lremovexattr, MayBlock), // 236 sys_lremovexattr * L? + SYSB_(fremovexattr, MayBlock), // 237 sys_fremovexattr * L? + // (__NR_tkill, sys_tkill), // 238 * L SYSBA(sendfile64, MayBlock), // 239 sys_sendfile64 * SYSBA(futex, MayBlock), // 240 sys_futex * @@ -6127,7 +6126,7 @@ static const struct sys_info sys_info[] = { SYSB_(io_submit, 0), // 248 sys_io_submit * SYSBA(io_cancel, 0), // 249 sys_io_cancel * - // fadvise64 250 sys_fadvise64 * + // (__NR_fadvise64, sys_fadvise64), // 250 * () // Nb: 251 is unused SYSX_(251, sys_ni_syscall), // 251 * P SYSX_(__NR_exit_group, sys_exit_group), // 252 * @@ -6136,7 +6135,7 @@ static const struct sys_info sys_info[] = { SYSB_(epoll_ctl, 0), // 255 sys_epoll_ctl * SYSBA(epoll_wait, MayBlock), // 256 sys_epoll_wait * - // remap_file_pages 257 sys_remap_file_pages * + // (__NR_remap_file_pages, sys_remap_file_pages), // 257 * L SYSB_(set_tid_address, Special), // 258 sys_set_tid_address * SYSBA(timer_create, 0), // 259 sys_timer_create @@ -6148,19 +6147,20 @@ static const struct sys_info sys_info[] = { SYSBA(clock_gettime, 0), // (timer_create+6) sys_clock_gettime * SYSBA(clock_getres, 0), // (timer_create+7) sys_clock_getres * - // clock_nanosleep (timer_create+8) sys_clock_nanosleep * + // (__NR_clock_nanosleep, sys_clock_nanosleep), // (timer_create+8) * P? + SYSBA(statfs64, 0), // 268 sys_statfs64 * SYSBA(fstatfs64, 0), // 269 sys_fstatfs64 * - // tgkill 270 sys_tgkill * + // (__NR_tgkill, sys_tgkill), // 270 * () SYSB_(utimes, 0), // 271 sys_utimes * - // fadvise64_64 272 sys_fadvise64_64 * - SYSX_(__NR_vserver, sys_ni_syscall), // 273 * P - // mbind 274 sys_mbind + // (__NR_fadvise64_64, sys_fadvise64_64), // 272 * () + SYSX_(__NR_vserver, sys_ni_syscall), // 273 * P -- unimplemented + // (__NR_mbind, sys_mbind), // 274 () () - // get_mempolicy 275 sys_get_mempolicy - // set_mempolicy 276 sys_set_mempolicy + // (__NR_get_mempolicy, sys_get_mempolicy), // 275 () () + // (__NR_set_mempolicy, sys_set_mempolicy), // 276 () () SYSBA(mq_open, 0), // 277 sys_mq_open * SYSB_(mq_unlink, 0), // (mq_open+1) sys_mq_unlink * SYSB_(mq_timedsend, MayBlock), // (mq_open+2) sys_mq_timedsend * diff --git a/memcheck/tests/.cvsignore b/memcheck/tests/.cvsignore index c2af08fb56..abd462a97a 100644 --- a/memcheck/tests/.cvsignore +++ b/memcheck/tests/.cvsignore @@ -51,6 +51,7 @@ realloc3 scalar scalar_fork scalar_supp +scalar_vfork sigaltstack signal2 str_tester diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index 81bce31738..2d7bdf42ee 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -56,6 +56,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ scalar.stderr.exp scalar.vgtest scalar.supp \ scalar_fork.stderr.exp scalar_fork.vgtest \ scalar_supp.stderr.exp scalar_supp.vgtest \ + scalar_vfork.stderr.exp scalar_vfork.vgtest \ sigaltstack.stderr.exp sigaltstack.vgtest \ signal2.stderr.exp \ signal2.stdout.exp signal2.vgtest \ @@ -85,7 +86,7 @@ check_PROGRAMS = \ nanoleak new_nothrow \ null_socket overlap \ realloc1 realloc2 realloc3 scalar scalar_fork \ - scalar_supp sigaltstack signal2 \ + scalar_supp scalar_vfork sigaltstack signal2 \ str_tester supp1 supp2 suppfree \ trivialleak weirdioctl \ mismatches new_override metadata threadederrno \ @@ -140,6 +141,7 @@ realloc3_SOURCES = realloc3.c scalar_SOURCES = scalar.c scalar_fork_SOURCES = scalar_fork.c scalar_supp_SOURCES = scalar_supp.c +scalar_vfork_SOURCES = scalar_vfork.c signal2_SOURCES = signal2.c supp1_SOURCES = supp.c supp2_SOURCES = supp.c diff --git a/memcheck/tests/scalar.c b/memcheck/tests/scalar.c index afc27dc384..0c7d88132e 100644 --- a/memcheck/tests/scalar.c +++ b/memcheck/tests/scalar.c @@ -162,9 +162,11 @@ int main(void) GO(__NR_getegid, "0e"); SY(__NR_getegid); - // __NR_acct 51 + // __NR_acct 51 --> sys_acct() + GO(__NR_acct, "1s 1m"); + SY(__NR_acct, s0); - // __NR_umount2 52 + // __NR_umount2 52 --> sys_umount() GO(__NR_umount2, "2s 1m"); SY(__NR_umount2, s0, i0); diff --git a/memcheck/tests/scalar.stderr.exp b/memcheck/tests/scalar.stderr.exp index 4ed7ef2ab3..48a0db356d 100644 --- a/memcheck/tests/scalar.stderr.exp +++ b/memcheck/tests/scalar.stderr.exp @@ -361,6 +361,20 @@ Syscall param setuid16(uid) contains uninitialised byte(s) ----------------------------------------------------- 50: __NR_getegid 0e ----------------------------------------------------- +----------------------------------------------------- + 51: __NR_acct 1s 1m +----------------------------------------------------- + +Syscall param acct(filename) contains uninitialised byte(s) + at 0x........: syscall (in /...libc...) + by 0x........: __libc_start_main (...libc...) + by 0x........: ... + +Syscall param acct(filename) points to unaddressable byte(s) + at 0x........: syscall (in /...libc...) + by 0x........: __libc_start_main (...libc...) + by 0x........: ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd ----------------------------------------------------- 52: __NR_umount2 2s 1m ----------------------------------------------------- diff --git a/memcheck/tests/scalar_vfork.c b/memcheck/tests/scalar_vfork.c new file mode 100644 index 0000000000..2158e58b2b --- /dev/null +++ b/memcheck/tests/scalar_vfork.c @@ -0,0 +1,13 @@ +#include "scalar.h" + +int main(void) +{ + // All __NR_xxx numbers are taken from x86 + + // __NR_vfork 190 --> arch/sys_fork() [we can't use sys_vfork()] + GO(__NR_vfork, "0e"); + SY(__NR_vfork); + + return(0); +} + diff --git a/memcheck/tests/scalar_vfork.stderr.exp b/memcheck/tests/scalar_vfork.stderr.exp new file mode 100644 index 0000000000..1849c77b66 --- /dev/null +++ b/memcheck/tests/scalar_vfork.stderr.exp @@ -0,0 +1,3 @@ +----------------------------------------------------- +190: __NR_vfork 0e +----------------------------------------------------- diff --git a/memcheck/tests/scalar_vfork.vgtest b/memcheck/tests/scalar_vfork.vgtest new file mode 100644 index 0000000000..3ddad70a40 --- /dev/null +++ b/memcheck/tests/scalar_vfork.vgtest @@ -0,0 +1,2 @@ +prog: scalar_vfork +vgopts: -q