diff --git a/src/block_alloc_h.h b/src/block_alloc_h.h index ec525e2bb7f0ea611222dc01ae757029ec0658f6..167e74f2bad990c62bd2f32988b459ac54d1c836 100644 --- a/src/block_alloc_h.h +++ b/src/block_alloc_h.h @@ -22,8 +22,8 @@ #define BLOCK_ALLOC(DATA,SIZE) \ struct DATA *PIKE_CONCAT(alloc_,DATA)(void); \ -void PIKE_CONCAT3(new_,DATA,_context)(void); \ -void PIKE_CONCAT(really_free_,DATA)(struct DATA *d); \ +PMOD_EXPORT void PIKE_CONCAT3(new_,DATA,_context)(void); \ +PMOD_EXPORT void PIKE_CONCAT(really_free_,DATA)(struct DATA *d); \ void PIKE_CONCAT3(free_all_,DATA,_blocks)(void); \ void PIKE_CONCAT3(count_memory_in_,DATA,s)(size_t *num, size_t *size); \ void PIKE_CONCAT3(init_,DATA,_blocks)(void) diff --git a/src/configure.in b/src/configure.in index 853935e400a82aa32394876d143283cc808aa2b0..56bab281221befabd4ffdb055529a204a80c1aa9 100644 --- a/src/configure.in +++ b/src/configure.in @@ -994,6 +994,9 @@ else fi fi +AC_SYS_COMPILER_FLAG([-fvisibility=hidden],[fvisibility_hidden],CFLAGS) + + AC_SYS_COMPILER_FLAG(+O3,plus_O3,OPTIMIZE, [ AC_SYS_COMPILER_FLAG(-O3,O3,OPTIMIZE, [ AC_SYS_COMPILER_FLAG(-O2,O2,OPTIMIZE, [ @@ -8101,6 +8104,9 @@ AC_CACHE_VAL(pike_cv_sys_dynamic_loading, cat >conftest.c <<EOF #include <stdio.h> #include <stdlib.h> +#if __GNUC__ >= 4 +__attribute__ ((visibility("default"))) +# endif void testfunc(void) { fprintf(stderr,"Calling testfunc2\n"); testfunc2(); @@ -8130,6 +8136,9 @@ EOF AC_TRY_RUN([ #define TESTING #include "dynamic_load.c" +#if __GNUC__ >= 4 +__attribute__ ((visibility("default"))) +# endif void testfunc2(void) { exit(0); } ], pike_cv_sys_dynamic_loading=yes, pike_cv_sys_dynamic_loading=no, pike_cv_sys_dynamic_loading=no) CFLAGS="$OLD_CFLAGS" diff --git a/src/global.h b/src/global.h index 2464d2ad6984e64caccc177b2ad09322e1d97363..0a645d7d0b92746a1007f8dfc94841921eaf0a14 100644 --- a/src/global.h +++ b/src/global.h @@ -560,7 +560,9 @@ typedef struct p_wchar_p * themselves, unless they are compiled statically. */ # define PMOD_EXPORT __declspec(dllexport) # endif -# else +# elif __GNUC__ >= 4 +# define PMOD_EXPORT __attribute__ ((visibility("default"))) +# else # define PMOD_EXPORT # endif #endif diff --git a/src/module.h b/src/module.h index d25bcdc437c7e72d2dde738bef10bafbbe135d10..de4b45a480f5eecab22e075c973052011f236640 100644 --- a/src/module.h +++ b/src/module.h @@ -14,8 +14,8 @@ #define PIKE_MODULE_INIT __declspec(dllexport) void pike_module_init(void) #define PIKE_MODULE_EXIT __declspec(dllexport) void pike_module_exit(void) #else -#define PIKE_MODULE_INIT void pike_module_init(void) -#define PIKE_MODULE_EXIT void pike_module_exit(void) +#define PIKE_MODULE_INIT PMOD_EXPORT void pike_module_init(void) +#define PIKE_MODULE_EXIT PMOD_EXPORT void pike_module_exit(void) #endif /* DYNAMIC_MODULE && __NT__ */ /* Prototypes begin here */