scripts to list libc symbols and declared variables
authornsz <nsz@port70.net>
Sat, 18 Jun 2011 19:39:38 +0000 (21:39 +0200)
committernsz <nsz@port70.net>
Sat, 18 Jun 2011 19:39:38 +0000 (21:39 +0200)
makesyms.sh [new file with mode: 0755]
maketags.sh [new file with mode: 0755]

diff --git a/makesyms.sh b/makesyms.sh
new file mode 100755 (executable)
index 0000000..f851f65
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+export LC_ALL=C
+MUSL=../musl
+
+nm -p -P $MUSL/lib/libc.a |awk '$2~/[A-Zvw]/{print $1,$2}' |sort |uniq |awk '
+NR==1 {
+       prev=$1
+       t=$2
+       next
+}
+{
+       if (prev != $1) {
+               print t "\t" prev
+               prev=$1
+               t=$2
+       } else
+               t = t $2
+}
+END {
+       print t "\t" prev
+}' >data/musl.syms.all
+
+# without U
+awk '$1!="U"{sub(/U/,"",$1); print $1 "\t" $2}' data/musl.syms.all >data/musl.syms
+# only U
+awk '$1=="U"{print $1 "\t" $2}' data/musl.syms.all >data/musl.syms.undef
+# seen sym kinds
+awk '{for(i=1; i<=length($1); i++) a[substr($1,i,1)]=1} END{for(i in a) print i}' data/musl.syms
diff --git a/maketags.sh b/maketags.sh
new file mode 100755 (executable)
index 0000000..c64907a
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+export LC_ALL=C
+MUSL=../musl
+
+(
+       cd $MUSL/include
+       ctags -f /tmp/musl.tags -R -n -u --language-force=c --c-kinds=pxdstuv --fields=k --exclude='*.sh' .
+)
+
+awk '
+BEGIN {
+       FS="\t"
+}
+/^[^!]/ {
+       gsub(/[^0-9]*/,"",$3)
+       if ($4 == "s")
+               $1 = "struct " $1
+       if ($4 == "u")
+               $1 = "union " $1
+       print $1 "\t" $2 "\t" $4 "\t" $3
+}' /tmp/musl.tags |sort >data/musl.tags
+rm -f /tmp/musl.tags