diff options
author | Daniel Playfair Cal <daniel.playfair.cal@gmail.com> | 2020-05-04 16:44:27 +1000 |
---|---|---|
committer | Daniel Playfair Cal <daniel.playfair.cal@gmail.com> | 2020-12-19 12:15:21 +1100 |
commit | 7bcd1b2acf965b3170d8340a7eced0eabe438ccf (patch) | |
tree | 92f0e7395b07776b28f243ae943e9c3378afe443 /tests | |
parent | 490421c6a89f918dbb75ae14efb66a1ce1fe1399 (diff) | |
download | dconf-7bcd1b2acf965b3170d8340a7eced0eabe438ccf.tar.gz |
tests: factor out abicheck from gsettings
This will allow it to be used for other binaries
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/abicheck.sh | 33 | ||||
-rw-r--r-- | tests/meson.build | 16 |
2 files changed, 49 insertions, 0 deletions
diff --git a/tests/abicheck.sh b/tests/abicheck.sh new file mode 100755 index 0000000..49291bd --- /dev/null +++ b/tests/abicheck.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# The following checks that a given binary only defines the symbols +# specified +# +# We also make sure to ignore gcov symbols included when building with +# --coverage, which usually means the following: +# +# __gcov_error_file +# __gcov_master +# __gcov_sort_n_vals +# __gcov_var +# +# And starting with gcc-9, also this one: +# +# mangle_path + +set -x + +if test $# != 2; then + echo " Usage: $0 <binary> <symbol_file>" + echo " symbol_file is a file where each line is the name of an exported symbol" + exit 1 +fi + +BINARY="$1" +SYMBOL_FILE="$2" + +${NM:-nm} --dynamic --defined-only "$BINARY" | \ + cut -f 3 -d ' ' | \ + grep -v ^_ | \ + grep -v ^mangle_path | \ + diff "$SYMBOL_FILE" - diff --git a/tests/meson.build b/tests/meson.build index 0d4260f..0992435 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -48,6 +48,22 @@ foreach unit_test: unit_tests test(unit_test[0], exe, is_parallel: false, env: envs) endforeach +symbol_test = find_program('abicheck.sh') + +abi_tests = [ + ['gsettings', libdconf_settings, files('../gsettings/symbols.txt')[0]] +] + +foreach abi_test: abi_tests + test( + abi_test[0], + symbol_test, + env: envs, + args: [abi_test[1].full_path(), abi_test[2]], + ) +endforeach + + python3 = find_program('python3', required: false) dbus_daemon = find_program('dbus-daemon', required: false) |