I wrote a new script to lay out an initial linux system call table but there are many details missing.
For the missing writes we can add them lazily as they'll show up as false positives.
But the missing reads will be false negatives and we should proactively add those.
xref PR 416456 driving completion of some syscall entries
of particular note from that case is fcntl64: even when the sys_ declaration shows an arg
it may be optional (xref PR 406355)
Update on 2009/07/07 20:39:04
PR 406302: fill in more of linux syscall table
* added SYS__sysctl special-case handling
* added SYS_fcntl* 3rd arg being ignored in certain cases
PR 425498: sbb reg,reg defines reg even if undefined previously
* from PR 416456 though turned out not to cause false pos there
* fix here will have to be more sophisticated once we have PR 425622
Update on 2009/07/14 09:43:51
PR 406302: [linux] fill in rest of system call table
* added stats on syscalls executed so we can approach false positives
from that angle
Update on 2009/07/14 15:43:55
PR 406302: [linux] fill in rest of system call table
Filled in data for 7 syscalls that were incomplete.
* ioctl: very painful
* socketcall: painful
* poll
* rt_sigaction
* mmap2
* stat64
* lstat64
Update on 2009/07/23 12:36:08
Fixed errors that have cropped up on spec bmarks:
PR 447413: 75 UNADDR on spec bmarks: mmap merged w/ DR bss
* mem walk looks for region that starts inside DR lib but extends beyond
(merged by kernel) and splits it up
PR 406302: [linux] fill in rest of system call table
* sigaction struct often doesn't have sa_restorer set if flags doesn't have
SA_RESTORER => special-cased it
Update on 2010/02/03 07:15:31
PR 406302: [linux] fill in rest of system call table
SYS_socketcall was not correctly accounting for all memory read and
written by the kernel:
sockaddr defined fields vary by family
sockaddr write length not known until post-syscall
read/readfrom data length not known until post-syscall
msg_iov was ignored
msg_name was ignored
msg_control was ignored
added SYS_ipc support. SYSipc is a multiplexing syscall for sem, msg_,
and shm* ipc features, essentially containing quite a few syscalls inside
it
added MEMREF_CHECK_UNADDRESSABLE for pre-write checks
I tested a few client-server sample apps, but do not have
tests for all the syscall paths here. I filed PR 519781 to cover adding
syscall tests.
Update on 2010/02/18 20:11:48
PR 406302: [linux] fill in rest of system call table
SYS_select and SYS_prctl: added support for them,
in addition to SYS_pselect6 since nearly identical to SYS_select.
From derek.br...@gmail.com on December 10, 2010 17:57:32
PR 406302
I wrote a new script to lay out an initial linux system call table but there are many details missing. For the missing writes we can add them lazily as they'll show up as false positives. But the missing reads will be false negatives and we should proactively add those.
xref PR 416456 driving completion of some syscall entries of particular note from that case is fcntl64: even when the sys_ declaration shows an arg it may be optional (xref PR 406355)
Update on 2009/07/07 20:39:04
Update on 2009/07/14 09:43:51
Update on 2009/07/14 15:43:55
Update on 2009/07/23 12:36:08
Update on 2010/02/03 07:15:31
PR 406302: [linux] fill in rest of system call table
I tested a few client-server sample apps, but do not have tests for all the syscall paths here. I filed PR 519781 to cover adding syscall tests.
Update on 2010/02/18 20:11:48
PR 406302: [linux] fill in rest of system call table
Original issue: http://code.google.com/p/drmemory/issues/detail?id=92