• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh -e
2
3list_leaked_symbols () {
4	nm -D "$1" | grep ' T ' | cut -f 3 -d ' ' | grep -E -v "$2"
5}
6
7check_symbols () {
8	if [ "$(list_leaked_symbols "$1" "$2" | wc -l)" -ne 0 ]; then
9		echo File "$1" possibly leaking symbols:
10		list_leaked_symbols "$1" "$2"
11		exit 1
12	fi
13}
14
15allowed="^_init$|^_fini$|^_ftext$|^g_"
16allowed_in_libglib="${allowed}|^glib__private__$|^glib_gettext$|^glib_pgettext$|^glib_check_version$"
17allowed_in_libgthread='^_init$|^_fini$|^_ftext$|^g_thread_init$|^g_thread_init_with_errorcheck_mutexes$'
18
19check_symbols glib/.libs/libglib-2.0.so "$allowed_in_libglib"
20check_symbols gthread/.libs/libgthread-2.0.so "$allowed_in_libgthread"
21for file in gmodule/.libs/libgmodule-2.0.so gobject/.libs/libgobject-2.0.so gio/.libs/libgio-2.0.so; do
22	check_symbols "$file" "$allowed"
23done
24