[vlc-commits] src: check exported symbols

Rémi Denis-Courmont git at videolan.org
Sun Nov 29 15:09:46 CET 2015


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Nov 29 12:11:57 2015 +0200| [4d1e77a4b96d4910632d32ae0783f30720165688] | committer: Rémi Denis-Courmont

src: check exported symbols

Against further dynamic linker namespace pollution.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4d1e77a4b96d4910632d32ae0783f30720165688
---

 src/Makefile.am   |    4 ++--
 src/check_symbols |   28 ++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index 2520d67..67debfe 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -536,7 +536,7 @@ check_PROGRAMS = \
 	test_xmlent \
 	test_headers
 
-TESTS = $(check_PROGRAMS)
+TESTS = $(check_PROGRAMS) check_symbols
 
 test_block_SOURCES = test/block_test.c
 test_block_LDADD = $(LDADD) $(LIBS_libvlccore)
@@ -592,7 +592,7 @@ stamp-revision:
 # Unit/regression test
 ###############################################################################
 
-dist_check_SCRIPTS = check_headers
+dist_check_SCRIPTS = check_headers check_symbols
 
 check-local:
 	for h in `echo $(pkginclude_HEADERS) | sed -e s,\.\./include/,,g`; \
diff --git a/src/check_symbols b/src/check_symbols
new file mode 100755
index 0000000..9f8320a
--- /dev/null
+++ b/src/check_symbols
@@ -0,0 +1,28 @@
+#! /bin/sh
+# Copyright © 2015 Rémi Denis-Courmont
+
+cd "$(dirname "$0")" || exit $?
+test -f libvlccore.sym || exit 1
+
+# DO NOT add new entries here.
+# Do make existing ones more specific.
+# Do remove existing ones (especially near the end).
+
+echo "Looking for unprefixed exported symbols..."
+cat libvlccore.sym | grep -v \
+	-e '^vlc_' -e '^vlm_' -e '^libvlc_[A-Z]' -e '^VLC_' \
+	-e '^input_' -e '^access_' -e '^stream_' -e '^demux_' -e '^decoder_' \
+	-e '^image_' -e '^block_' -e '^picture_' -e '^subpicture_' \
+	-e '^es_format' -e '^[asv]out_' -e '^spu_' -e '^filter_' -e '^video_' \
+	-e '^playlist_' -e '^services_discovery_' -e '^intf_' \
+	-e '^dialog_' -e '^update_' -e '^addons\?_' -e '^fingerprinter_' \
+	-e '^text_style_' -e '^text_segment_' \
+	-e '^net_' -e '^httpd_' -e '^http_auth_' \
+	-e '^config_' -e '^module_' -e '^var_' \
+	-e '^date_' -e '^sdp_' -e '^plane_' \
+	-e '^us_' -e '^utf8_' -e '^xml_' -e '^str_format_' -e '^GetLang_' \
+	-e '^m[a-z]*$' -e '^[A-Z][a-z]*Charset$' -e 'MD5$' \
+	-e '^NTPtime64$' -e '^secstotimestr$' \
+		&& exit 1
+
+echo "None found."



More information about the vlc-commits mailing list