1 # See ltrace.conf(5) for description of syntax of this file.
3 # XXX ltrace misses long double and long long support
4 typedef ldouble = double;
6 typedef ullong = ulong;
8 void __libc_start_main(hide(void*), hide(int), array(string, arg2));
11 typedef in_addr = struct(hex(uint));
12 int inet_aton(string, +in_addr*);
13 hex(uint) inet_addr(string);
14 hex(uint) inet_network(string);
15 string inet_ntoa(in_addr);
16 in_addr inet_makeaddr(hex(int), hex(int));
17 hex(uint) inet_lnaof(in_addr);
18 hex(uint) inet_netof(in_addr);
22 int bfd_set_default_target(string);
23 addr bfd_scan_vma(string, addr, int);
24 addr bfd_openr(string,string);
25 int bfd_check_format(addr,int);
31 addr __ctype_tolower_loc();
32 addr __ctype_toupper_loc();
33 ulong __ctype_get_mb_cur_max();
36 int waddch(addr, char);
37 int mvprintw(int, int, format);
38 int wmove(addr, int, int);
39 int waddnstr(addr, string, int);
40 string tgoto(string, int, int);
44 # We can't portably rely on DIR internals at all. Ideally this would
45 # be implemented in a per-OS config file, but even on Linux, we don't
46 # know whether there's a lock in the structure or not. Luckily the
47 # one interesting datum, file descriptor, we can access reliably.
48 # Having the structure half-defined like this is potentially
49 # problematic as structure size influences parameter passing. But
50 # POSIX always uses pointer to the structure, so it's fine.
52 typedef DIR = struct(int);
55 # XXX We can't represent the following portably without having either
56 # uulong, or directly uint64_t.'
58 typedef ino_t = ulong;
59 typedef ino_t64 = ulong;
60 typedef off_t = ulong;
61 typedef off_t64 = ulong;
63 typedef dirent = struct(ino_t, hide(off_t), hide(ushort), hide(char), string(array(char, zero(256))));
64 typedef dirent64 = struct(ino_t64, hide(off_t64), hide(ushort), hide(char), string(array(char, zero(256))));
66 dirent *readdir(DIR *);
67 dirent64 *readdir64(DIR *);
72 void rewinddir(DIR *);
74 void seekdir(DIR *, long);
77 addr dlopen(string, int);
79 addr dlsym(addr, string);
83 addr __errno_location();
86 int open(string,int,octal); ; WARNING: 3rd argument may not be there
87 int open64(string,int,octal); ; WARNING: 3rd argument may not be there
90 int fnmatch(string, string, int);
93 int getopt_long(int,addr,string,addr,int*);
94 int getopt_long_only(int,addr,string,addr,addr);
98 addr getgrnam(string);
103 string __dcgettext(string,string,int);
104 string bindtextdomain(string, string);
105 string textdomain(string);
109 int _IO_putc(char,file);
112 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);
119 int mq_open(string, int, octal, addr); ; WARNING: 3rd and 4th arguments may not be there
121 int mq_unlink(string);
122 int mq_getattr(int, addr);
123 int mq_setattr(int, addr, addr);
124 int mq_notify(int, addr);
125 int mq_send(int, string3, ulong, uint);
126 int mq_timedsend(int, string3, ulong, uint, addr);
127 long mq_receive(int, +string0, ulong, addr);
128 long mq_timedreceive(int, +string0, ulong, addr, addr);
136 void freeaddrinfo(addr);
137 string gai_strerror(int);
138 int getaddrinfo(string, string, addr, addr);
139 addr gethostbyaddr(string, uint, int);
140 addr gethostbyname(string);
142 int getnameinfo(addr, uint, string, uint, string, uint, uint);
143 addr getnetbyaddr(uint, int);
144 addr getnetbyname(string);
146 int getnetgrent(addr, addr, addr);
147 addr getprotobyname(string);
148 addr getprotobynumber(int);
150 addr getservbyname(string, string);
151 addr getservbyport(int, string);
154 string hstrerror(int);
155 int rcmd(addr, ushort, string, string, string, addr);
156 int rcmd_af(addr, ushort, string, string, string, addr, int);
157 int rexec(addr, int, string, string, string, addr);
158 int rexec_af(addr, int, string, string, string, addr, int);
159 int rresvport (addr);
160 int rresvport_af (addr, int);
161 int ruserok(string, int, string, string);
162 int ruserok_af(string, int, string, string, int);
163 void sethostent(int);
165 int setnetgrent(string);
166 void setprotoent(int);
167 void setservent(int);
173 string pcap_lookupdev(addr);
174 addr pcap_open_live(string, int, int, int, addr);
175 int pcap_snapshot(addr);
176 int pcap_lookupnet(string, addr, addr, addr);
177 int pcap_compile(addr, addr, string, int, addr);
180 string getpass(string);
182 addr getpwnam(string);
185 # readline/readline.h
186 string readline(string);
189 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);
190 typedef sigset_t = bitvec(ulong);
191 # elm3 should be flags
192 typedef sigaction = struct(addr, sigset_t, hex(int), addr);
193 int kill(int, signum);
194 int sigemptyset(+sigset_t*);
195 int sigaddset(+sigset_t*, signum);
196 int sigdelset(+sigset_t*, signum);
197 int sigfillset(+sigset_t*);
198 int sigismember(sigset_t*, signum);
199 addr signal(signum,addr);
200 int sigaction(signum, sigaction*, +sigaction*);
201 int sigprocmask(enum(SIG_BLOCK=1, SIG_UNBLOCK=2, SIG_SETMASK=3), sigset_t*, +sigset_t*);
202 int sigpending(+sigset_t*);
203 int sigsuspend(sigset_t*);
204 int sigisemptyset(sigset_t*);
205 int sigorset(+sigset_t*, sigset_t*, sigset_t*);
206 int sigandset(+sigset_t*, sigset_t*, sigset_t*);
214 addr fgets(+string, int, file);
216 file fopen(string,string);
217 file fopen64(string,string);
218 file fdopen(int, string);
219 int fprintf(file,format);
220 int fputc(char,file);
221 int fputs(string,file);
222 ulong fread(addr,ulong,ulong,file);
223 ulong fread_unlocked(addr,ulong,ulong,file);
224 ulong fwrite(string,ulong,ulong,file);
225 ulong fwrite_unlocked(string,ulong,ulong,file);
228 addr popen(string, string);
232 int snprintf(+string2,ulong,format);
233 int sprintf(+string,format);
234 string tempnam(string,string);
235 int vfprintf(file,string,addr);
236 int vsnprintf(+string2,ulong,string,addr);
237 int setvbuf(file,addr,int,ulong);
238 void setbuf(file,addr);
239 void setbuffer(file,addr,ulong);
240 void setlinebuf(file);
241 int rename(string,string);
244 typedef locale_t = void*;
245 locale_t newlocale(hex(int), string, locale_t);
248 long __strtol_internal(string, +string*, int);
249 ulong __strtoul_internal(string, +string*, int);
251 double strtod(string, +string*);
252 float strtof(string, +string*);
253 ldouble strtold(string, +string*);
255 double strtod_l(string, +string*, locale_t);
256 float strtof_l(string, +string*, locale_t);
257 ldouble strtold_l(string, +string*, locale_t);
260 addr bsearch(string, addr, ulong, ulong, addr);
261 addr calloc(ulong, ulong);
264 string getenv(string);
266 int setenv(string,string,int);
267 void unsetenv(string);
269 void qsort(addr,ulong,ulong,addr);
270 addr realloc(addr,ulong);
278 void* initstate(uint, void*, ulong);
279 void* setstate(void*);
280 int random_r(void*, +int*);
281 int srandom_r(uint, void*);
282 int initstate_r(uint, void*, ulong, void*);
283 int setstate_r(void*, void*);
285 double erand48(+array(ushort,3)*);
287 long nrand48(+array(ushort,3)*);
289 long jrand48(+array(ushort,3)*);
291 array(ushort,3)* seed48(array(ushort,3)*);
292 void lcong48(array(ushort,7)*);
295 void bcopy(addr,addr,ulong);
296 void bzero(addr,ulong);
297 string basename(string);
298 string index(string,char);
299 addr memchr(string,char,ulong);
300 addr memcpy(addr,string(array(char, arg3)*),ulong);
301 addr memmove(addr,string(array(char, arg3)*),ulong);
302 addr memset(addr,char,long);
303 string rindex(string,char);
304 addr stpcpy(addr,string);
305 int strcasecmp(string, string);
306 string strcat(string, string);
307 string strchr(string,char);
308 int strcoll(string,string);
309 ulong strlen(string);
310 int strcmp(string,string);
311 addr strcpy(addr,string);
313 string strerror(int);
314 int strncmp(string,string,ulong);
315 addr strncpy(addr,string3,ulong);
316 string strrchr(string,char);
317 string strsep(addr,string);
318 ulong strspn(string,string);
319 ulong strcspn(string,string);
320 string strstr(string,string);
321 string strtok(string, string);
324 int ioctl(int, int, addr);
327 int socket(int,int,int);
330 int __fxstat(int,int,addr);
331 int __xstat(int,string,addr);
332 int __lxstat(int,string,addr);
333 int __fxstat64(int,int,addr);
334 int __xstat64(int,string,addr);
335 int __lxstat64(int,string,addr);
336 int chmod(string,octal);
337 int fchmod(int,octal);
338 int mkfifo(string,octal);
345 int statfs(string,addr);
349 void openlog(string,int,int);
350 void syslog(int,format);
353 int tputs(string, int, addr);
356 int tcgetattr(int,addr);
357 int tcsetattr(int,int,addr);
361 int gettimeofday(addr, addr);
363 addr localtime(addr);
364 ulong strftime(+string2,ulong,string,addr);
366 # XXX in fact (time_t, long), which may be (llong, long) on 32-bit
367 # arches. We don't have llong as of this writing.
368 typedef timespec = struct(long, long);
369 int nanosleep(timespec*, timespec*);
373 int access(string, int);
376 int chown(string,int,int);
378 string crypt(string,string);
380 int execlp(string,string,addr,addr,addr);
381 int execv(string,addr);
384 int ftruncate(int,ulong);
385 string2 getcwd(addr,ulong);
386 int getdomainname(+string2,ulong);
390 int gethostname(+string2,ulong);
392 int getopt(int,addr,string);
400 int link(string,string);
401 int mkdir(string,octal);
402 long read(int, +string[retval], ulong);
406 int sethostname(+string2,ulong);
407 int setpgid(int,int);
408 int setreuid(uint, uint);
411 int symlink(string,string);
413 int truncate(string,ulong);
417 long write(int, string3, ulong);
420 long lseek(int,long,int);
429 typedef wchar_t = string(uint);
430 typedef wint_t = string(int);
431 typedef wstring_t = string(array(uint, zero)*);
432 typedef wstring2_t = string(array(uint, zero(arg2))*);
433 typedef wstring3_t = string(array(uint, zero(arg3))*);
435 int fwide(FILE*, int);
438 wint_t getwc(FILE *);
440 wint_t fgetwc(FILE*);
441 wstring_t fgetws(+wstring2_t, int, FILE*);
442 wint_t ungetwc(wint_t, FILE*);
444 wint_t fputwc(wchar_t, FILE*);
445 int fputws(wstring_t, FILE*);
446 wint_t putwc(wchar_t, FILE*);
447 wint_t putwchar(wchar_t);
449 int wprintf(format(wstring_t));
450 int fwprintf(FILE*, format(wstring_t));
451 int swprintf(+wstring2_t, ulong, format(wstring_t));
452 int vfwprintf(FILE*, wstring_t, addr);
453 int vwprintf(wstring_t, addr);
454 int vswprintf(+wstring2_t, ulong, wstring_t, addr);
456 ; int wscanf(const wchar_t *restrict, ...);
457 ; int fwscanf(FILE *restrict, const wchar_t *restrict, ...);
458 ; int swscanf(const wchar_t *restrict, const wchar_t *restrict, ...);
459 ; int vfwscanf(FILE *restrict, const wchar_t *restrict, va_list);
460 ; int vswscanf(const wchar_t *restrict, const wchar_t *restrict, va_list);
461 ; int vwscanf(const wchar_t *restrict, va_list);
463 int iswalnum(wint_t);
464 int iswalpha(wint_t);
465 int iswcntrl(wint_t);
466 int iswdigit(wint_t);
467 int iswgraph(wint_t);
468 int iswlower(wint_t);
469 int iswprint(wint_t);
470 int iswpunct(wint_t);
471 int iswspace(wint_t);
472 int iswupper(wint_t);
473 int iswxdigit(wint_t);
475 int iswctype(wint_t, uint);
477 ulong mbrlen(string, ulong, addr);
478 ulong mbrtowc(+wchar_t*, string[arg3], ulong, addr);
479 ulong mbsrtowcs(+wstring3_t, string*, ulong, addr);
480 ulong wctomb(+string0, wchar_t);
481 ulong wcrtomb(+string0, wchar_t, addr);
482 ulong wcsrtombs(+string3, wstring_t*, ulong, addr);
485 wint_t towlower(wint_t);
486 wint_t towupper(wint_t);
488 wstring_t wcscat(wstring_t, wstring_t);
489 wstring_t wcsncat(wstring3_t, wstring_t, ulong);
490 wstring_t wcschr(wstring_t, wchar_t);
491 wstring_t wcsrchr(wstring_t, wchar_t);
492 int wcscmp(wstring_t, wstring_t);
493 int wcsncmp(wstring3_t, wstring3_t, ulong);
494 int wcscoll(wstring_t, wstring_t);
495 addr wcscpy(addr, wstring_t);
496 addr wcsncpy(addr, wstring_t, ulong);
497 ulong wcslen(wstring_t);
499 wstring_t wcsstr(wstring_t, wstring_t);
500 wstring_t wcswcs(wstring_t, wstring_t);
502 ulong wcscspn(wstring_t, wstring_t);
503 ulong wcsspn(wstring_t, wstring_t);
504 wstring_t wcspbrk(wstring_t, wstring_t);
505 wstring_t wcstok(wstring_t, wstring_t, +wstring_t*);
507 ulong wcsftime(+wstring2_t, ulong, wstring_t, addr);
509 double wcstod(wstring_t, +wstring_t*);
510 float wcstof(wstring_t, +wstring_t*);
511 ldouble wcstold(wstring_t, +wstring_t*);
512 long wcstol(wstring_t, +wstring_t*, int);
513 llong wcstoll(wstring_t, +wstring_t*, int);
514 ulong wcstoul(wstring_t, +wstring_t*, int);
515 ullong wcstoull(wstring_t, +wstring_t*, int);
517 int wcwidth(wchar_t);
518 int wcswidth(wstring2_t, ulong);
520 wstring_t wmemchr(wstring3_t, wchar_t, ulong);
521 int wmemcmp(wstring3_t, wstring3_t, ulong);
523 wstring3_t wmemcpy(addr, wstring3_t, ulong);
524 wstring3_t wmemmove(addr, wstring3_t, ulong);
525 wstring3_t wmemset(addr, wchar_t, ulong);
529 int waitpid(int,addr,int);
531 # other symbols not included above
538 typedef mntent = struct(string, string, string, string, int, int);
539 int addmntent(file, mntent*);
541 int __endmntent(file);
542 file setmntent(string,string);
543 file __setmntent(string,string);
544 mntent *getmntent(addr);
545 mntent *getmntent_r(file, +mntent*, string, int);
546 mntent *__getmntent_r(file, +mntent*, string, int);
547 string hasmntopt(mntent*, string);