add abi data
[musl-tables] / abi_func.sh
1 #!/bin/sh
2
3 export LC_ALL=C
4
5 awk -F'\t' '$3 ~ /^p$/ {
6         print $1
7 }' data/musl.generic.decls |sort |uniq >/tmp/m.funcs
8
9 echo '
10 #define _GNU_SOURCE 1
11 #define _FILE_OFFSET_BITS 64
12 ' >abi_func.cc
13
14 awk -F'\t' '$3 ~ /^p$/ {
15         if ($2 ~ /^(sys\/(cachectl|io)|threads)\.h$/) next
16         print "#include <" $2 ">"
17 }' data/musl.generic.decls |sort |uniq >>abi_func.cc
18
19 echo '
20 #define T(x) void t_##x(__typeof(x)*p){}
21 #ifdef __GLIBC__
22 #define M(x)
23 #undef sigsetjmp
24 #define sigsetjmp __sigsetjmp
25 #else
26 #define M(x) x
27 #endif
28 ' >>abi_func.cc
29
30 awk '
31 /^(_flush_cache|cachectl|cacheflush|iopl|ioperm|call_once|cnd_broadcast|cnd_destroy|cnd_init|cnd_signal|cnd_timedwait|cnd_wait|mtx_destroy|mtx_init|mtx_lock|mtx_timedlock|mtx_trylock|mtx_unlock|thrd_create|thrd_current|thrd_detach|thrd_equal|thrd_exit|thrd_join|thrd_sleep|thrd_yield|tss_create|tss_delete|tss_get|tss_set)$/ {
32         print "// "$0; next
33 }
34 #/^(__flt_rounds|__freadahead|__freadptr|__freadptrinc|__fseterr|_pthread_cleanup_pop|_pthread_cleanup_push|gets|issetugid|posix_close|strlcat|strlcpy)$/
35 /^(__flt_rounds|__freadahead|__freadptr|__freadptrinc|__fseterr|_pthread_cleanup_pop|_pthread_cleanup_push|fgetln|getdents|gets|index|issetugid|memchr|memrchr|posix_close|rindex|strcasestr|strchr|strchrnul|strlcat|strlcpy|strpbrk|strrchr|strstr|wcschr|wcspbrk|wcsrchr|wcsstr|wcswcs|wmemchr)$/ {
36         print "M(T(" $0 "))"; next
37 }
38 /^(ElfW)$/ { printf "// " }
39 { print "T(" $0 ")" }' /tmp/m.funcs >>abi_func.cc