X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=findproblems.sh;fp=findproblems.sh;h=e5f73a5e1cf4f150a3b7998409646b6b36fbe37a;hb=77fc72c061a0bf88335052377ee89df45dfd846b;hp=0000000000000000000000000000000000000000;hpb=a28f3abb26a5c077840beb9f2735fceb80e57f39;p=musl-tables diff --git a/findproblems.sh b/findproblems.sh new file mode 100755 index 0000000..e5f73a5 --- /dev/null +++ b/findproblems.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +export LC_ALL=C + +./makeproto.sh +{ + awk -F'\t' '{print $1}' data/musl.tags data/posix2008.ok # data/c99 + awk -F'\t' '{print $2}' data/musl.syms +} |sort |uniq |awk -F'\t' ' +BEGIN { + posix = "data/posix2008.ok.proto" + syms = "data/musl.syms" + tags = "data/musl.tags.proto" + + while (getline < syms == 1) + sym[$2] = $1 + + # todo: same tag may be defined in several headers + while (getline < tags == 1) + tag[$1] = $2 "\t" $3 "\t" $5 "\t" $6 + + while (getline < posix == 1) + pos[$1] = $2 "\t" $5 "\t" $6 +} +{ + s = "" + if (sym[$1]) + s = s " obj" + if (tag[$1]) + s = s " inc" + if (pos[$1]) + s = s " posix" + + print $1 "\t" substr(s,2) "\t" sym[$1] "\t" tag[$1] "\t" pos[$1] +}' >data/musl.all + +awk -F'\t' ' +$2 == "obj" || $2 == "obj posix" { + # not declared + if ($1 !~ /^_/) + print "nodecl\t" $1 "\t" $3 +} +$2 ~ /inc posix/ && $4 != $8 { + # different header + + n = split($8, a, " ") + for (i = 1; i <= n; i++) + if ($4 == a[i]) + break + if (i > n) + print "header\t" $1 "\t" $4 "\t" $8 +} +$2 ~ /inc posix/ && $7 != $10 && $5 == "p" { + # different prototype + print "proto\t" $1 "\t" $4 "\t" $7 "\t" $10 "\t" $6 "\t" $9 +} +' data/musl.all >data/musl.problems +