aboutsummaryrefslogtreecommitdiffstats
path: root/build_tools
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-09-21 21:22:34 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-09-21 21:22:34 +0000
commit901e02171baea1df9d10e7562f9fe32f64354f1f (patch)
tree328bde4b5955234f635991721bf251c05e246813 /build_tools
parent33d8fe4c3e3958f1be6b9587ce419f5b8eaae728 (diff)
Merged revisions 43450 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r43450 | kpfleming | 2006-09-21 16:21:29 -0500 (Thu, 21 Sep 2006) | 2 lines add another attempt to strip non-API symbols from the final binary... script will need to be extended to work on non-Linux systems ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@43451 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'build_tools')
-rwxr-xr-xbuild_tools/strip_nonapi28
1 files changed, 28 insertions, 0 deletions
diff --git a/build_tools/strip_nonapi b/build_tools/strip_nonapi
new file mode 100755
index 000000000..99d21f666
--- /dev/null
+++ b/build_tools/strip_nonapi
@@ -0,0 +1,28 @@
+#!/bin/sh -e
+
+# This script is designed to remove all non-API global symbols from an object
+# file. The only global symbols that should be retained are those that belong
+# to the official namespace. Unfortunately doing this is platform-specific, as
+# the object file manipulation tools are not consistent across platforms.
+#
+# On platforms where this script does not know what to do, the object file
+# will retain non-API global symbols, and this may have unpleasant side effects.
+#
+# Prefixes that belong to the official namespace are:
+# ast_
+# _ast_
+# __ast_
+# astman_
+# pbx_
+
+FILTER="grep -v -e ^ast_ -e ^_ast_ -e ^__ast_ -e ^astman_ -e ^pbx_"
+
+case "${OSARCH}" in
+ linux-gnu)
+ nm ${1} | grep -e " T " | cut -d" " -f3 | ${FILTER} > striplist
+ sed -e "s/^/-N /" striplist | xargs strip ${1}
+ rm -f striplist
+ ;;
+ *)
+ ;;
+esac