This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Find out the system calls statically?


Got it. Many thanks.

Jiang

On Tue, Aug 19, 2008 at 9:13 AM, Carlos O'Donell
<carlos@systemhalted.org> wrote:
> On Sat, Aug 16, 2008 at 1:23 PM, River Wang <jwangzju@gmail.com> wrote:
>> I want to find all the system calls that will be called by a program.
>> Is there any tools to get it? I think normally a program just calls a
>> function call and the glibc actually calls the system call. How can I
>> find all the system calls in glibc? I know there are some dynamic
>> tools like strace, but I need to use static analysis tools because
>> they are more complete.
>
> As far as I know there are no static trace tools.
>
> You can never know which syscalls will be made statically, since the
> user program may call *any* syscall using the syscall function.
>
> The best you could do is this:
> 1. Build pattern matchers against syscall stubs from sysdeps.h
> 2. Run analyzer to look for syscall instruction patterns *and* syscall
> function call
> 3. Decode instructions to determine the syscall made *or* make a note
> that syscall was called and therefore any syscall could have been
> made.
>
> This is going to be target dependent, and not 100% reliable.
>
>> Another question, how can I debug glibc? I want to trace into some
>> function calls like fopen to see how it use actual system calls. My
>> distro is CentOS5, but I cannot find the package for debug info of
>> glibc.
>
> You need a glibc build with debugging information included. Your
> distribution must provide this.
>
> Cheers,
> Carlos.
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]