From 79176757fc8f514b51726ef4102397eebb7a3ec1 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Tue, 30 Jan 2024 10:39:43 -0800 Subject: [PATCH] Test symbol visibility --- CMakeLists.txt | 13 +++++++++++++ linker.map | 6 ++++++ test_symbols.sh | 5 +++++ 3 files changed, 24 insertions(+) create mode 100644 linker.map create mode 100755 test_symbols.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index fad6d30..a712c2c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,11 @@ target_compile_options(${PROJECT_NAME} PRIVATE -fPIC -fno-exceptions target_link_options(${PROJECT_NAME} PRIVATE $<$>: -nodefaultlibs -lc>) +if(NOT APPLE) + target_link_options(${PROJECT_NAME} PRIVATE + LINKER:--version-script=${CMAKE_SOURCE_DIR}/linker.map) +endif() + add_library(${PROJECT_NAME}_static STATIC ConflictSet.cpp) target_compile_options(conflict_set_static PRIVATE -fno-exceptions -fvisibility=hidden) @@ -125,6 +130,14 @@ set_property(TARGET conflict_set_c_api_test PROPERTY CXX_STANDARD 98) set_property(TARGET conflict_set_c_api_test PROPERTY CXX_STANDARD_REQUIRED ON) add_test(NAME conflict_set_cxx_api_test COMMAND conflict_set_cxx_api_test) +add_test(NAME conflict_set_shared_symbols + COMMAND ${CMAKE_SOURCE_DIR}/test_symbols.sh + $ ${CMAKE_SOURCE_DIR}/symbols.txt) +add_test( + NAME conflict_set_static_symbols + COMMAND ${CMAKE_SOURCE_DIR}/test_symbols.sh + $ ${CMAKE_SOURCE_DIR}/symbols.txt) + # packaging set(CPACK_PACKAGE_CONTACT andrew@weaselab.dev) diff --git a/linker.map b/linker.map new file mode 100644 index 0000000..3691443 --- /dev/null +++ b/linker.map @@ -0,0 +1,6 @@ +{ + global: + *ConflictSet*; + local: + *; +}; \ No newline at end of file diff --git a/test_symbols.sh b/test_symbols.sh new file mode 100755 index 0000000..6217cdf --- /dev/null +++ b/test_symbols.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -euo pipefail + +diff -u <(nm $1 | grep " T " | cut -f3 -d " " | sort) $2