summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorDafydd Harries <dafydd.harries@collabora.co.uk>2007-01-31 12:30:00 +0000
committerDafydd Harries <dafydd.harries@collabora.co.uk>2007-01-31 12:30:00 +0000
commit0f6facba116d9a4c2bb6e2283d2139cb4456c1ea (patch)
treef709ec101556d712431babe8a6f2be0b66862ab7 /scripts
parent00905c0089bfcbc62074cca6973ed397c0e8002c (diff)
downloadlibnice-0f6facba116d9a4c2bb6e2283d2139cb4456c1ea.tar.gz
add scripts for generating/checking symbol lists
darcs-hash:20070131123026-c9803-98cea90c5235f7c67b1c98ee94c4b83f518b1178.gz
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/check-symbols.sh37
-rwxr-xr-xscripts/make-symbol-list.sh6
2 files changed, 43 insertions, 0 deletions
diff --git a/scripts/check-symbols.sh b/scripts/check-symbols.sh
new file mode 100755
index 0000000..237e58a
--- /dev/null
+++ b/scripts/check-symbols.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+usage()
+{
+ echo "usage: $0 library symbol-file"
+ exit 1
+}
+
+test -n "$1" || usage
+lib="$1"
+test -n "$2" || usage
+symbol_file="$2"
+
+make_symbol_list=`dirname $0`/make-symbol-list.sh
+test -f "$make_symbol_list" || exit 1
+
+# stop if there are no differences
+sh $make_symbol_list "$lib" | cmp -s "$symbol_file" - && exit 0
+
+echo "symbols for $lib changed"
+diff=`sh $make_symbol_list "$lib" | \
+ diff -u "$symbol_file" - | tail -n +3`
+
+if echo "$diff" | grep -q '^-'; then
+ echo " missing:"
+ echo "$diff" | grep '^-' | cut -b 2- | \
+ xargs -i echo " " "{}"
+fi
+
+if echo "$diff" | grep -q '^+'; then
+ echo " extra:"
+ echo "$diff" | grep '^+' | cut -b 2- | \
+ xargs -i echo " " "{}"
+fi
+
+exit 1
+
diff --git a/scripts/make-symbol-list.sh b/scripts/make-symbol-list.sh
new file mode 100755
index 0000000..ab68a7a
--- /dev/null
+++ b/scripts/make-symbol-list.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+test -n "$1" || exit 1
+nm --print-file-name --defined-only --extern-only "$1" | \
+ cut -d ' ' -f 2,3 | \
+ grep -v '^[rA]' | \
+ sort