add abi data
[musl-tools.git] / tab_posix.sh
blob8477c390077bf9478f12b5e2908a8443bdadb0c2
1 #!/bin/sh
3 export LC_ALL=C
4 MUSL=${MUSL:-../musl}
6 ( cd $MUSL; git log -n1 ) | awk '
7 BEGIN {
8 getline
9 hash = $2
10 getline
12 commit = "<h4>commit</h4><p>commit <a href=\"http://git.musl-libc.org/cgit/musl/commit/?id=" hash "\">" hash "</a>"
13 while (getline == 1)
14 commit = commit "<br>" $0
16 FS = "\t"
18 posix = "data/posix2008.ok"
19 syms = "data/musl.syms"
20 tags = "data/musl.tags"
22 while (getline < syms == 1)
23 sym[$2] = $1
24 while (getline < tags == 1) {
25 if ($2 ~ /bits\//)
26 s = $3 " "
27 else
28 s = "<a href=\"http://git.musl-libc.org/cgit/musl/tree/include/" $2 "#n" $4 "\">" $3 "</a> "
29 kind[$1] = kind[$1] $3
30 kindstr[$1] = kindstr[$1] s
33 legend = "<h4>legend</h4><ul><li>status: musl implementation status summary<ul>"
34 legend = legend "<li>(empty) - implemented"
35 legend = legend "<li>nosym - prototype found in include files (see decl) but not in libc.a (see sym)"
36 legend = legend "<li>nodecl - symbol is in libc.a but not declared in a public header"
37 legend = legend "<li>missing - neither in include files (see decl) nor in libc.a (see sym)"
38 legend = legend "</ul><li>sym: external symbol kind as found by `nm libc.a` (symbol kind only reported once)<ul>"
39 legend = legend "<li>C - symbol is common (uninitialized data)"
40 legend = legend "<li>D - symbol is in the initialized data section"
41 legend = legend "<li>R - symbol is in the read only data section"
42 legend = legend "<li>T - symbol is in the text section"
43 legend = legend "<li>V - weak object"
44 legend = legend "<li>W - weak symbol"
45 legend = legend "</ul><li>decl: kind of declaration as found by `ctags -R include` (every occurance is reported)<ul>"
46 legend = legend "<li>d - macro definition"
47 legend = legend "<li>p - function prototype"
48 legend = legend "<li>x - external and forward variable declaration"
49 legend = legend "</ul></ul>"
50 legend = legend "<p>(STREAMS and posix_trace* apis are excluded)"
52 print "<h3>musl vs posix api</h3>"
53 print commit
54 print legend
55 print "<h4>table</h4><table border=1><tr><th colspan=3>musl<th colspan=4>posix<tr><th>status<th>sym<th>decl<th>name<th>header<th>option<th>desc"
56 nodecl = nosym = missing = 0
57 while (getline < posix == 1) {
58 s = "<tr><td>"
59 if (sym[$1] && kind[$1]) {
60 s = s "&#160;"
61 } else if (sym[$1]) {
62 s = s "nodecl"
63 nodecl++
64 } else if (kind[$1] ~ /d/) {
65 s = s "&#160;"
66 } else if (kind[$1]) {
67 s = s "nosym"
68 nosym++
69 } else {
70 s = s "missing"
71 missing++
73 s = s "<td>" sym[$1]
74 if (!sym[$1])
75 s = s "&#160;"
76 s = s "<td>" kindstr[$1]
77 if (!kind[$1])
78 s = s "&#160;"
80 s = s "<td><a href=\"http://pubs.opengroup.org/onlinepubs/9699919799/functions/" $1 ".html\">" $1 "</a>"
81 n = split($2, x, " ")
82 s = s "<td>"
83 for (i = 1; i <= n; i++) {
84 h = x[i]
85 gsub(/\//, "_", h)
86 s = s " <a href=\"http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/" h ".html\">" x[i] "</a>"
88 n = split($3, x, " ")
89 s = s "<td>"
90 for (i = 1; i <= n; i++)
91 s = s " <a href=\"http://pubs.opengroup.org/onlinepubs/9699919799/help/codes.html#" x[i] "\">" x[i] "</a>"
92 if (n==0)
93 s = s "&#160;"
94 s = s "<td>" $4
95 print s
97 print "</table>"
98 print "<h4>stats</h4><ul><li>missing: " missing "<li>nosym: " nosym "<li>nodecl: " nodecl "</ul>"
99 }' >tab_posix.html