| # See ltrace.conf(5) for description of syntax of this file. |
| |
| # XXX ltrace misses long double and long long support |
| typedef ldouble = double; |
| typedef llong = long; |
| typedef ullong = ulong; |
| |
| void __libc_start_main(hide(void*), hide(int), array(string, arg2)); |
| |
| # arpa/inet.h |
| typedef in_addr = struct(hex(uint)); |
| int inet_aton(string, +in_addr*); |
| hex(uint) inet_addr(string); |
| hex(uint) inet_network(string); |
| string inet_ntoa(in_addr); |
| in_addr inet_makeaddr(hex(int), hex(int)); |
| hex(uint) inet_lnaof(in_addr); |
| hex(uint) inet_netof(in_addr); |
| |
| # bfd.h |
| void bfd_init(); |
| int bfd_set_default_target(string); |
| addr bfd_scan_vma(string, addr, int); |
| addr bfd_openr(string,string); |
| int bfd_check_format(addr,int); |
| |
| # ctype.h |
| char tolower(char); |
| char toupper(char); |
| addr __ctype_b_loc(); |
| addr __ctype_tolower_loc(); |
| addr __ctype_toupper_loc(); |
| ulong __ctype_get_mb_cur_max(); |
| |
| # curses.h |
| int waddch(addr, char); |
| int mvprintw(int, int, format); |
| int wmove(addr, int, int); |
| int waddnstr(addr, string, int); |
| string tgoto(string, int, int); |
| |
| # dirent.h |
| |
| # We can't portably rely on DIR internals at all. Ideally this would |
| # be implemented in a per-OS config file, but even on Linux, we don't |
| # know whether there's a lock in the structure or not. Luckily the |
| # one interesting datum, file descriptor, we can access reliably. |
| # Having the structure half-defined like this is potentially |
| # problematic as structure size influences parameter passing. But |
| # POSIX always uses pointer to the structure, so it's fine. |
| |
| typedef DIR = struct(int); |
| typedef FILE = addr; |
| |
| # XXX We can't represent the following portably without having either |
| # uulong, or directly uint64_t.' |
| |
| typedef ino_t = ulong; |
| typedef ino_t64 = ulong; |
| typedef off_t = ulong; |
| typedef off_t64 = ulong; |
| |
| typedef dirent = struct(ino_t, hide(off_t), hide(ushort), hide(char), string(array(char, zero(256)))); |
| typedef dirent64 = struct(ino_t64, hide(off_t64), hide(ushort), hide(char), string(array(char, zero(256)))); |
| |
| dirent *readdir(DIR *); |
| dirent64 *readdir64(DIR *); |
| int closedir(DIR *); |
| DIR *opendir(string); |
| DIR *fdopendir(int); |
| int dirfd(DIR *); |
| void rewinddir(DIR *); |
| long telldir(DIR *); |
| void seekdir(DIR *, long); |
| |
| # dlfcn.h |
| addr dlopen(string, int); |
| string dlerror(); |
| addr dlsym(addr, string); |
| int dlclose(addr); |
| |
| # errno.h |
| addr __errno_location(); |
| |
| # fcntl.h |
| int open(string,int,octal); ; WARNING: 3rd argument may not be there |
| int open64(string,int,octal); ; WARNING: 3rd argument may not be there |
| |
| # fnmatch.h |
| int fnmatch(string, string, int); |
| |
| # getopt.h |
| int getopt_long(int,addr,string,addr,int*); |
| int getopt_long_only(int,addr,string,addr,addr); |
| |
| # grp.h |
| void endgrent(); |
| addr getgrnam(string); |
| void setgrent(); |
| addr getgrent(); |
| |
| # libintl.h |
| string __dcgettext(string,string,int); |
| string bindtextdomain(string, string); |
| string textdomain(string); |
| |
| # libio.h |
| char _IO_getc(file); |
| int _IO_putc(char,file); |
| |
| # locale.h |
| string setlocale(enum(LC_CTYPE=0, LC_NUMERIC=1, LC_TIME=2, LC_COLLATE=3, LC_MONETARY=4, LC_MESSAGES=5, LC_ALL=6, LC_PAPER=7, LC_NAME=8, LC_ADDRESS=9, LC_TELEPHONE=10, LC_MEASUREMENT=11, LC_IDENTIFICATION=12), string); |
| |
| # mcheck.h |
| void mtrace(); |
| void muntrace(); |
| |
| # mqueue.h |
| int mq_open(string, int, octal, addr); ; WARNING: 3rd and 4th arguments may not be there |
| int mq_close(int); |
| int mq_unlink(string); |
| int mq_getattr(int, addr); |
| int mq_setattr(int, addr, addr); |
| int mq_notify(int, addr); |
| int mq_send(int, string3, ulong, uint); |
| int mq_timedsend(int, string3, ulong, uint, addr); |
| long mq_receive(int, +string0, ulong, addr); |
| long mq_timedreceive(int, +string0, ulong, addr, addr); |
| |
| # netdb.h |
| void endhostent(); |
| void endnetent(); |
| void endnetgrent(); |
| void endprotoent(); |
| void endservent(); |
| void freeaddrinfo(addr); |
| string gai_strerror(int); |
| int getaddrinfo(string, string, addr, addr); |
| addr gethostbyaddr(string, uint, int); |
| addr gethostbyname(string); |
| addr gethostent(); |
| int getnameinfo(addr, uint, string, uint, string, uint, uint); |
| addr getnetbyaddr(uint, int); |
| addr getnetbyname(string); |
| addr getnetent(); |
| int getnetgrent(addr, addr, addr); |
| addr getprotobyname(string); |
| addr getprotobynumber(int); |
| addr getprotoent(); |
| addr getservbyname(string, string); |
| addr getservbyport(int, string); |
| addr getservent(); |
| void herror(string); |
| string hstrerror(int); |
| int rcmd(addr, ushort, string, string, string, addr); |
| int rcmd_af(addr, ushort, string, string, string, addr, int); |
| int rexec(addr, int, string, string, string, addr); |
| int rexec_af(addr, int, string, string, string, addr, int); |
| int rresvport (addr); |
| int rresvport_af (addr, int); |
| int ruserok(string, int, string, string); |
| int ruserok_af(string, int, string, string, int); |
| void sethostent(int); |
| void setnetent(int); |
| int setnetgrent(string); |
| void setprotoent(int); |
| void setservent(int); |
| |
| # netinet/in.h |
| uint ntohs(uint); |
| |
| # pcap.h |
| string pcap_lookupdev(addr); |
| addr pcap_open_live(string, int, int, int, addr); |
| int pcap_snapshot(addr); |
| int pcap_lookupnet(string, addr, addr, addr); |
| int pcap_compile(addr, addr, string, int, addr); |
| |
| # pwd.h |
| string getpass(string); |
| void endpwent(); |
| addr getpwnam(string); |
| void setpwent(); |
| |
| # readline/readline.h |
| string readline(string); |
| |
| # signal.h |
| typedef signum = enum(SIGHUP=1, SIGINT=2, SIGQUIT=3, SIGILL=4, SIGTRAP=5, SIGABRT=6, SIGBUS=7, SIGFPE=8, SIGKILL=9, SIGUSR1=10, SIGSEGV=11, SIGUSR2=12, SIGPIPE=13, SIGALRM=14, SIGTERM=15, SIGSTKFLT=16, SIGCHLD=17, SIGCONT=18, SIGSTOP=19, SIGTSTP=20, SIGTTIN=21, SIGTTOU=22, SIGURG=23, SIGXCPU=24, SIGXFSZ=25, SIGVTALRM=26, SIGPROF=27, SIGWINCH=28, SIGIO=29, SIGPWR=30, SIGSYS=31, SIGRTMIN_0=32, SIGRTMIN_1=33, SIGRTMIN_2=34, SIGRTMIN_3=35, SIGRTMIN_4=36, SIGRTMIN_5=37, SIGRTMIN_6=38, SIGRTMIN_7=39, SIGRTMIN_8=40, SIGRTMIN_9=41, SIGRTMIN_10=42, SIGRTMIN_11=43, SIGRTMIN_12=44, SIGRTMIN_13=45, SIGRTMIN_14=46, SIGRTMIN_15=47, SIGRTMIN_16=48, SIGRTMIN_17=49, SIGRTMIN_18=50, SIGRTMIN_19=51, SIGRTMIN_20=52, SIGRTMIN_21=53, SIGRTMIN_22=54, SIGRTMIN_23=55, SIGRTMIN_24=56, SIGRTMIN_25=57, SIGRTMIN_26=58, SIGRTMIN_27=59, SIGRTMIN_28=60, SIGRTMIN_29=61, SIGRTMIN_30=62, SIGRTMIN_31=63); |
| typedef sigset_t = bitvec(ulong); |
| # elm3 should be flags |
| typedef sigaction = struct(addr, sigset_t, hex(int), addr); |
| int kill(int, signum); |
| int sigemptyset(+sigset_t*); |
| int sigaddset(+sigset_t*, signum); |
| int sigdelset(+sigset_t*, signum); |
| int sigfillset(+sigset_t*); |
| int sigismember(sigset_t*, signum); |
| addr signal(signum,addr); |
| int sigaction(signum, sigaction*, +sigaction*); |
| int sigprocmask(enum(SIG_BLOCK=1, SIG_UNBLOCK=2, SIG_SETMASK=3), sigset_t*, +sigset_t*); |
| int sigpending(+sigset_t*); |
| int sigsuspend(sigset_t*); |
| int sigisemptyset(sigset_t*); |
| int sigorset(+sigset_t*, sigset_t*, sigset_t*); |
| int sigandset(+sigset_t*, sigset_t*, sigset_t*); |
| |
| # stdio.h |
| int fclose(file); |
| int feof(file); |
| int ferror(file); |
| int fflush(file); |
| char fgetc(file); |
| addr fgets(+string, int, file); |
| int fileno(file); |
| file fopen(string,string); |
| file fopen64(string,string); |
| file fdopen(int, string); |
| int fprintf(file,format); |
| int fputc(char,file); |
| int fputs(string,file); |
| ulong fread(addr,ulong,ulong,file); |
| ulong fread_unlocked(addr,ulong,ulong,file); |
| ulong fwrite(string,ulong,ulong,file); |
| ulong fwrite_unlocked(string,ulong,ulong,file); |
| int pclose(addr); |
| void perror(string); |
| addr popen(string, string); |
| int printf(format); |
| int puts(string); |
| int remove(string); |
| int snprintf(+string2,ulong,format); |
| int sprintf(+string,format); |
| string tempnam(string,string); |
| int vfprintf(file,string,addr); |
| int vsnprintf(+string2,ulong,string,addr); |
| int setvbuf(file,addr,int,ulong); |
| void setbuf(file,addr); |
| void setbuffer(file,addr,ulong); |
| void setlinebuf(file); |
| int rename(string,string); |
| |
| # xlocale.h |
| typedef locale_t = void*; |
| locale_t newlocale(hex(int), string, locale_t); |
| |
| # stdlib.h |
| long __strtol_internal(string, +string*, int); |
| ulong __strtoul_internal(string, +string*, int); |
| |
| double strtod(string, +string*); |
| float strtof(string, +string*); |
| ldouble strtold(string, +string*); |
| |
| double strtod_l(string, +string*, locale_t); |
| float strtof_l(string, +string*, locale_t); |
| ldouble strtold_l(string, +string*, locale_t); |
| |
| int atexit(addr); |
| addr bsearch(string, addr, ulong, ulong, addr); |
| addr calloc(ulong, ulong); |
| void exit(int); |
| void free(addr); |
| string getenv(string); |
| int putenv(string); |
| int setenv(string,string,int); |
| void unsetenv(string); |
| addr malloc(ulong); |
| void qsort(addr,ulong,ulong,addr); |
| addr realloc(addr,ulong); |
| int system(string); |
| |
| int rand(); |
| int rand_r(uint*); |
| void srand(uint); |
| long random(); |
| void srandom(uint); |
| void* initstate(uint, void*, ulong); |
| void* setstate(void*); |
| int random_r(void*, +int*); |
| int srandom_r(uint, void*); |
| int initstate_r(uint, void*, ulong, void*); |
| int setstate_r(void*, void*); |
| double drand48(); |
| double erand48(+array(ushort,3)*); |
| long lrand48(); |
| long nrand48(+array(ushort,3)*); |
| long mrand48(); |
| long jrand48(+array(ushort,3)*); |
| void srand48(long); |
| array(ushort,3)* seed48(array(ushort,3)*); |
| void lcong48(array(ushort,7)*); |
| |
| # string.h |
| void bcopy(addr,addr,ulong); |
| void bzero(addr,ulong); |
| string basename(string); |
| string index(string,char); |
| addr memchr(string,char,ulong); |
| addr memcpy(addr,string(array(char, arg3)*),ulong); |
| addr memmove(addr,string(array(char, arg3)*),ulong); |
| addr memset(addr,char,long); |
| string rindex(string,char); |
| addr stpcpy(addr,string); |
| int strcasecmp(string, string); |
| string strcat(string, string); |
| string strchr(string,char); |
| int strcoll(string,string); |
| ulong strlen(string); |
| int strcmp(string,string); |
| addr strcpy(addr,string); |
| addr strdup(string); |
| string strerror(int); |
| int strncmp(string,string,ulong); |
| addr strncpy(addr,string3,ulong); |
| string strrchr(string,char); |
| string strsep(addr,string); |
| ulong strspn(string,string); |
| ulong strcspn(string,string); |
| string strstr(string,string); |
| string strtok(string, string); |
| |
| # sys/ioctl.h |
| int ioctl(int, int, addr); |
| |
| # sys/socket.h |
| int socket(int,int,int); |
| |
| # sys/stat.h |
| int __fxstat(int,int,addr); |
| int __xstat(int,string,addr); |
| int __lxstat(int,string,addr); |
| int __fxstat64(int,int,addr); |
| int __xstat64(int,string,addr); |
| int __lxstat64(int,string,addr); |
| int chmod(string,octal); |
| int fchmod(int,octal); |
| int mkfifo(string,octal); |
| octal umask(octal); |
| |
| # sys/utsname.h |
| int uname(addr); |
| |
| # sys/vfs.h |
| int statfs(string,addr); |
| |
| # syslog.h |
| void closelog(); |
| void openlog(string,int,int); |
| void syslog(int,format); |
| |
| # term.h |
| int tputs(string, int, addr); |
| |
| # termios.h |
| int tcgetattr(int,addr); |
| int tcsetattr(int,int,addr); |
| |
| # time.h |
| string ctime(addr); |
| int gettimeofday(addr, addr); |
| addr gmtime(addr); |
| addr localtime(addr); |
| ulong strftime(+string2,ulong,string,addr); |
| long time(addr); |
| # XXX in fact (time_t, long), which may be (llong, long) on 32-bit |
| # arches. We don't have llong as of this writing. |
| typedef timespec = struct(long, long); |
| int nanosleep(timespec*, timespec*); |
| |
| # unistd.h |
| void _exit(int); |
| int access(string, int); |
| uint alarm(uint); |
| int chdir(string); |
| int chown(string,int,int); |
| int close(int); |
| string crypt(string,string); |
| int dup2(int,int); |
| int execlp(string,string,addr,addr,addr); |
| int execv(string,addr); |
| int fchdir(int); |
| int fork(); |
| int ftruncate(int,ulong); |
| string2 getcwd(addr,ulong); |
| int getdomainname(+string2,ulong); |
| int geteuid(); |
| int getegid(); |
| int getgid(); |
| int gethostname(+string2,ulong); |
| string getlogin(); |
| int getopt(int,addr,string); |
| int getpid(); |
| int getppid(); |
| int getuid(); |
| int getpgrp(); |
| int setpgrp(); |
| int getpgid(int); |
| int isatty(int); |
| int link(string,string); |
| int mkdir(string,octal); |
| long read(int, +string[retval], ulong); |
| int rmdir(string); |
| int seteuid(uint); |
| int setgid(int); |
| int sethostname(+string2,ulong); |
| int setpgid(int,int); |
| int setreuid(uint, uint); |
| int setuid(int); |
| uint sleep(uint); |
| int symlink(string,string); |
| int sync(); |
| int truncate(string,ulong); |
| string ttyname(int); |
| int unlink(string); |
| void usleep(uint); |
| long write(int, string3, ulong); |
| addr sbrk(long); |
| int getpagesize(); |
| long lseek(int,long,int); |
| int pipe(addr); |
| |
| # utmp.h |
| void endutent(); |
| addr getutent(); |
| void setutent(); |
| |
| # wchar.h |
| typedef wchar_t = string(uint); |
| typedef wint_t = string(int); |
| typedef wstring_t = string(array(uint, zero)*); |
| typedef wstring2_t = string(array(uint, zero(arg2))*); |
| typedef wstring3_t = string(array(uint, zero(arg3))*); |
| |
| int fwide(FILE*, int); |
| wint_t btowc(int); |
| |
| wint_t getwc(FILE *); |
| wint_t getwchar(); |
| wint_t fgetwc(FILE*); |
| wstring_t fgetws(+wstring2_t, int, FILE*); |
| wint_t ungetwc(wint_t, FILE*); |
| |
| wint_t fputwc(wchar_t, FILE*); |
| int fputws(wstring_t, FILE*); |
| wint_t putwc(wchar_t, FILE*); |
| wint_t putwchar(wchar_t); |
| |
| int wprintf(format(wstring_t)); |
| int fwprintf(FILE*, format(wstring_t)); |
| int swprintf(+wstring2_t, ulong, format(wstring_t)); |
| int vfwprintf(FILE*, wstring_t, addr); |
| int vwprintf(wstring_t, addr); |
| int vswprintf(+wstring2_t, ulong, wstring_t, addr); |
| |
| ; int wscanf(const wchar_t *restrict, ...); |
| ; int fwscanf(FILE *restrict, const wchar_t *restrict, ...); |
| ; int swscanf(const wchar_t *restrict, const wchar_t *restrict, ...); |
| ; int vfwscanf(FILE *restrict, const wchar_t *restrict, va_list); |
| ; int vswscanf(const wchar_t *restrict, const wchar_t *restrict, va_list); |
| ; int vwscanf(const wchar_t *restrict, va_list); |
| |
| int iswalnum(wint_t); |
| int iswalpha(wint_t); |
| int iswcntrl(wint_t); |
| int iswdigit(wint_t); |
| int iswgraph(wint_t); |
| int iswlower(wint_t); |
| int iswprint(wint_t); |
| int iswpunct(wint_t); |
| int iswspace(wint_t); |
| int iswupper(wint_t); |
| int iswxdigit(wint_t); |
| uint wctype(string); |
| int iswctype(wint_t, uint); |
| |
| ulong mbrlen(string, ulong, addr); |
| ulong mbrtowc(+wchar_t*, string[arg3], ulong, addr); |
| ulong mbsrtowcs(+wstring3_t, string*, ulong, addr); |
| ulong wctomb(+string0, wchar_t); |
| ulong wcrtomb(+string0, wchar_t, addr); |
| ulong wcsrtombs(+string3, wstring_t*, ulong, addr); |
| int mbsinit(addr); |
| |
| wint_t towlower(wint_t); |
| wint_t towupper(wint_t); |
| |
| wstring_t wcscat(wstring_t, wstring_t); |
| wstring_t wcsncat(wstring3_t, wstring_t, ulong); |
| wstring_t wcschr(wstring_t, wchar_t); |
| wstring_t wcsrchr(wstring_t, wchar_t); |
| int wcscmp(wstring_t, wstring_t); |
| int wcsncmp(wstring3_t, wstring3_t, ulong); |
| int wcscoll(wstring_t, wstring_t); |
| addr wcscpy(addr, wstring_t); |
| addr wcsncpy(addr, wstring_t, ulong); |
| ulong wcslen(wstring_t); |
| |
| wstring_t wcsstr(wstring_t, wstring_t); |
| wstring_t wcswcs(wstring_t, wstring_t); |
| |
| ulong wcscspn(wstring_t, wstring_t); |
| ulong wcsspn(wstring_t, wstring_t); |
| wstring_t wcspbrk(wstring_t, wstring_t); |
| wstring_t wcstok(wstring_t, wstring_t, +wstring_t*); |
| |
| ulong wcsftime(+wstring2_t, ulong, wstring_t, addr); |
| |
| double wcstod(wstring_t, +wstring_t*); |
| float wcstof(wstring_t, +wstring_t*); |
| ldouble wcstold(wstring_t, +wstring_t*); |
| long wcstol(wstring_t, +wstring_t*, int); |
| llong wcstoll(wstring_t, +wstring_t*, int); |
| ulong wcstoul(wstring_t, +wstring_t*, int); |
| ullong wcstoull(wstring_t, +wstring_t*, int); |
| |
| int wcwidth(wchar_t); |
| int wcswidth(wstring2_t, ulong); |
| |
| wstring_t wmemchr(wstring3_t, wchar_t, ulong); |
| int wmemcmp(wstring3_t, wstring3_t, ulong); |
| int wctob(wint_t); |
| wstring3_t wmemcpy(addr, wstring3_t, ulong); |
| wstring3_t wmemmove(addr, wstring3_t, ulong); |
| wstring3_t wmemset(addr, wchar_t, ulong); |
| |
| # sys/wait.h |
| int wait(addr); |
| int waitpid(int,addr,int); |
| |
| # other symbols not included above |
| long a64l(string); |
| string l64a(long); |
| void abort(); |
| int abs(int); |
| long labs(long); |
| |
| typedef mntent = struct(string, string, string, string, int, int); |
| int addmntent(file, mntent*); |
| int endmntent(file); |
| int __endmntent(file); |
| file setmntent(string,string); |
| file __setmntent(string,string); |
| mntent *getmntent(addr); |
| mntent *getmntent_r(file, +mntent*, string, int); |
| mntent *__getmntent_r(file, +mntent*, string, int); |
| string hasmntopt(mntent*, string); |