# HG changeset patch # User Luke Mewburn # Date 1585542708 -39600 # Node ID a89913941dcfc599ce9f7b23361a127b23dd8396 # Parent fadf8947c0fbf3b2ebaa9b2bd36f2283c99b0f18 extensions: hide symbols by default Hide extension.fdx symbols by default, by setting the target property C_VISIBILITY_PRESET hidden. This requires cmake 2.8+ Explicitly export fd_ext_init() and fd_ext_fini(), using gcc or clang's __attribute__((visibility())) diff -r fadf8947c0fb -r a89913941dcf extensions/CMakeLists.txt --- a/extensions/CMakeLists.txt Mon Mar 30 12:38:31 2020 +1100 +++ b/extensions/CMakeLists.txt Mon Mar 30 15:31:48 2020 +1100 @@ -10,6 +10,8 @@ ADD_LIBRARY(${EXTNAME} MODULE ${ARGN}) SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES PREFIX "" ) SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES SUFFIX ".fdx" ) + SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES C_VISIBILITY_PRESET hidden ) + SET_TARGET_PROPERTIES(${EXTNAME} PROPERTIES CXX_VISIBILITY_PRESET hidden ) ENDMACRO(FD_ADD_EXTENSION) # Use the macro FD_EXTENSION_SUBDIR(extmacroname subdir descr default) to diff -r fadf8947c0fb -r a89913941dcf include/freeDiameter/extension.h --- a/include/freeDiameter/extension.h Mon Mar 30 12:38:31 2020 +1100 +++ b/include/freeDiameter/extension.h Mon Mar 30 15:31:48 2020 +1100 @@ -48,6 +48,8 @@ #define EXTENSION_ENTRY(_name, _function, _depends...) \ const char *fd_ext_depends[] = { _name , ## _depends , NULL }; \ static int extension_loaded = 0; \ + \ +__attribute__((visibility("default"))) \ int fd_ext_init(int major, int minor, char * conffile) { \ if ((major != FD_PROJECT_VERSION_MAJOR) \ || (minor != FD_PROJECT_VERSION_MINOR)) { \ @@ -63,7 +65,11 @@ } \ extension_loaded++; \ return (_function)(conffile); \ -} +} + +/* Optional exit point (finish function) of the extension */ +__attribute__((visibility("default"))) +void fd_ext_fini(void); #ifdef __cplusplus }