Fix bug in `expr_clone`
[platform/upstream/ltrace.git] / etc / libc.so.conf
1 # See ltrace.conf(5) for description of syntax of this file.
2
3 # XXX ltrace misses long double and long long support
4 typedef ldouble = double;
5 typedef llong = long;
6 typedef ullong = ulong;
7
8 void __libc_start_main(hide(void*), hide(int), array(string, arg2));
9
10 # arpa/inet.h
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);
19
20 # bfd.h
21 void bfd_init();
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);
26
27 # ctype.h
28 char tolower(char);
29 char toupper(char);
30 addr __ctype_b_loc();
31 addr __ctype_tolower_loc();
32 addr __ctype_toupper_loc();
33 ulong __ctype_get_mb_cur_max();
34
35 # curses.h
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);
41
42 # dirent.h
43
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.
51
52 typedef DIR = struct(int);
53 typedef FILE = addr;
54
55 # XXX We can't represent the following portably without having either
56 # uulong, or directly uint64_t.'
57
58 typedef ino_t = ulong;
59 typedef ino_t64 = ulong;
60 typedef off_t = ulong;
61 typedef off_t64 = ulong;
62
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))));
65
66 dirent *readdir(DIR *);
67 dirent64 *readdir64(DIR *);
68 int closedir(DIR *);
69 DIR *opendir(string);
70 DIR *fdopendir(int);
71 int dirfd(DIR *);
72 void rewinddir(DIR *);
73 long telldir(DIR *);
74 void seekdir(DIR *, long);
75
76 # dlfcn.h
77 addr  dlopen(string, int);
78 string dlerror();
79 addr  dlsym(addr, string);
80 int dlclose(addr);
81
82 # errno.h
83 addr __errno_location();
84
85 # fcntl.h
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
88
89 # fnmatch.h
90 int fnmatch(string, string, int);
91
92 # getopt.h
93 int getopt_long(int,addr,string,addr,int*);
94 int getopt_long_only(int,addr,string,addr,addr);
95
96 # grp.h
97 void endgrent();
98 addr getgrnam(string);
99 void setgrent();
100 addr getgrent();
101
102 # libintl.h
103 string __dcgettext(string,string,int);
104 string bindtextdomain(string, string);
105 string textdomain(string);
106
107 # libio.h
108 char _IO_getc(file);
109 int _IO_putc(char,file);
110
111 # locale.h
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);
113
114 # mcheck.h
115 void mtrace();
116 void muntrace();
117
118 # mqueue.h
119 int mq_open(string, int, octal, addr);  ; WARNING: 3rd and 4th arguments may not be there
120 int mq_close(int);
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);
129
130 # netdb.h
131 void endhostent();
132 void endnetent();
133 void endnetgrent();
134 void endprotoent();
135 void endservent();
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);
141 addr gethostent();
142 int getnameinfo(addr, uint, string, uint, string, uint, uint);
143 addr getnetbyaddr(uint, int);
144 addr getnetbyname(string);
145 addr getnetent();
146 int getnetgrent(addr, addr, addr);
147 addr getprotobyname(string);
148 addr getprotobynumber(int);
149 addr getprotoent();
150 addr getservbyname(string, string);
151 addr getservbyport(int, string);
152 addr getservent();
153 void herror(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);
164 void setnetent(int);
165 int setnetgrent(string);
166 void setprotoent(int);
167 void setservent(int);
168
169 # netinet/in.h
170 uint ntohs(uint);
171
172 # pcap.h
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);
178
179 # pwd.h
180 string getpass(string);
181 void endpwent();
182 addr getpwnam(string);
183 void setpwent();
184
185 # readline/readline.h
186 string readline(string);
187
188 # signal.h
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*);
207
208 # stdio.h
209 int fclose(file);
210 int feof(file);
211 int ferror(file);
212 int fflush(file);
213 char fgetc(file);
214 addr fgets(+string, int, file);
215 int fileno(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);
226 int pclose(addr);
227 void perror(string);
228 addr popen(string, string);
229 int printf(format);
230 int puts(string);
231 int remove(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);
242
243 # xlocale.h
244 typedef locale_t = void*;
245 locale_t newlocale(hex(int), string, locale_t);
246
247 # stdlib.h
248 long __strtol_internal(string, +string*, int);
249 ulong __strtoul_internal(string, +string*, int);
250
251 double strtod(string, +string*);
252 float strtof(string, +string*);
253 ldouble strtold(string, +string*);
254
255 double strtod_l(string, +string*, locale_t);
256 float strtof_l(string, +string*, locale_t);
257 ldouble strtold_l(string, +string*, locale_t);
258
259 int atexit(addr);
260 addr bsearch(string, addr, ulong, ulong, addr);
261 addr calloc(ulong, ulong);
262 void exit(int);
263 void free(addr);
264 string getenv(string);
265 int putenv(string);
266 int setenv(string,string,int);
267 void unsetenv(string);
268 addr malloc(ulong);
269 void qsort(addr,ulong,ulong,addr);
270 addr realloc(addr,ulong);
271 int system(string);
272
273 int rand();
274 int rand_r(uint*);
275 void srand(uint);
276 long random();
277 void srandom(uint);
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*);
284 double drand48();
285 double erand48(+array(ushort,3)*);
286 long lrand48();
287 long nrand48(+array(ushort,3)*);
288 long mrand48();
289 long jrand48(+array(ushort,3)*);
290 void srand48(long);
291 array(ushort,3)* seed48(array(ushort,3)*);
292 void lcong48(array(ushort,7)*);
293
294 # string.h
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);
312 addr strdup(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);
322
323 # sys/ioctl.h
324 int ioctl(int, int, addr);
325
326 # sys/socket.h
327 int socket(int,int,int);
328
329 # sys/stat.h
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);
339 octal umask(octal);
340
341 # sys/utsname.h
342 int uname(addr);
343
344 # sys/vfs.h
345 int statfs(string,addr);
346
347 # syslog.h
348 void closelog();
349 void openlog(string,int,int);
350 void syslog(int,format);
351
352 # term.h
353 int tputs(string, int, addr);
354
355 # termios.h
356 int tcgetattr(int,addr);
357 int tcsetattr(int,int,addr);
358
359 # time.h
360 string ctime(addr);
361 int gettimeofday(addr, addr);
362 addr gmtime(addr);
363 addr localtime(addr);
364 ulong strftime(+string2,ulong,string,addr);
365 long time(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*);
370
371 # unistd.h
372 void _exit(int);
373 int access(string, int);
374 uint alarm(uint);
375 int chdir(string);
376 int chown(string,int,int);
377 int close(int);
378 string crypt(string,string);
379 int dup2(int,int);
380 int execlp(string,string,addr,addr,addr);
381 int execv(string,addr);
382 int fchdir(int);
383 int fork();
384 int ftruncate(int,ulong);
385 string2 getcwd(addr,ulong);
386 int getdomainname(+string2,ulong);
387 int geteuid();
388 int getegid();
389 int getgid();
390 int gethostname(+string2,ulong);
391 string getlogin();
392 int getopt(int,addr,string);
393 int getpid();
394 int getppid();
395 int getuid();
396 int getpgrp();
397 int setpgrp();
398 int getpgid(int);
399 int isatty(int);
400 int link(string,string);
401 int mkdir(string,octal);
402 long read(int, +string[retval], ulong);
403 int rmdir(string);
404 int seteuid(uint);
405 int setgid(int);
406 int sethostname(+string2,ulong);
407 int setpgid(int,int);
408 int setreuid(uint, uint);
409 int setuid(int);
410 uint sleep(uint);
411 int symlink(string,string);
412 int sync();
413 int truncate(string,ulong);
414 string ttyname(int);
415 int unlink(string);
416 void usleep(uint);
417 long write(int, string3, ulong);
418 addr sbrk(long);
419 int getpagesize();
420 long lseek(int,long,int);
421 int pipe(addr);
422
423 # utmp.h
424 void endutent();
425 addr getutent();
426 void setutent();
427
428 # wchar.h
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))*);
434
435 int fwide(FILE*, int);
436 wint_t btowc(int);
437
438 wint_t getwc(FILE *);
439 wint_t getwchar();
440 wint_t fgetwc(FILE*);
441 wstring_t fgetws(+wstring2_t, int, FILE*);
442 wint_t ungetwc(wint_t, FILE*);
443
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);
448
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);
455
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);
462
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);
474 uint wctype(string);
475 int iswctype(wint_t, uint);
476
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);
483 int mbsinit(addr);
484
485 wint_t towlower(wint_t);
486 wint_t towupper(wint_t);
487
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);
498
499 wstring_t wcsstr(wstring_t, wstring_t);
500 wstring_t wcswcs(wstring_t, wstring_t);
501
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*);
506
507 ulong wcsftime(+wstring2_t, ulong, wstring_t, addr);
508
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);
516
517 int wcwidth(wchar_t);
518 int wcswidth(wstring2_t, ulong);
519
520 wstring_t wmemchr(wstring3_t, wchar_t, ulong);
521 int wmemcmp(wstring3_t, wstring3_t, ulong);
522 int wctob(wint_t);
523 wstring3_t wmemcpy(addr, wstring3_t, ulong);
524 wstring3_t wmemmove(addr, wstring3_t, ulong);
525 wstring3_t wmemset(addr, wchar_t, ulong);
526
527 # sys/wait.h
528 int wait(addr);
529 int waitpid(int,addr,int);
530
531 # other symbols not included above
532 long a64l(string);
533 string l64a(long);
534 void abort();
535 int abs(int);
536 long labs(long);
537
538 typedef mntent = struct(string, string, string, string, int, int);
539 int addmntent(file, mntent*);
540 int endmntent(file);
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);