Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[linux] fill in rest of system call table #92

Open
derekbruening opened this issue Nov 28, 2014 · 1 comment
Open

[linux] fill in rest of system call table #92

derekbruening opened this issue Nov 28, 2014 · 1 comment

Comments

@derekbruening
Copy link
Contributor

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

     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. SYS_ipc 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.
  • PR 519781 covers testing the corner cases here

Original issue: http://code.google.com/p/drmemory/issues/detail?id=92

@derekbruening
Copy link
Contributor Author

From bruen...@google.com on February 17, 2013 08:11:12

Labels: GoodContrib GoodFirstBug

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant