Hello, attached patch hides all symbols except dynamic_driver_{init,destroy}. Feedback is appreciated.
Regards, Adam -- Adam Tkac, Red Hat, Inc.
>From 126929489baf4f69fe0444860776f7e76c1411f2 Mon Sep 17 00:00:00 2001 From: Adam Tkac <von...@gmail.com> Date: Wed, 17 Oct 2012 13:00:31 +0200 Subject: [PATCH] Hide all symbols except dynamic_driver_{init,destroy} Signed-off-by: Adam Tkac <von...@gmail.com> --- configure.ac | 15 +++++++++++++++ src/ldap_driver.c | 10 ++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index cff5526..30a7374 100644 --- a/configure.ac +++ b/configure.ac @@ -30,6 +30,21 @@ AC_TYPE_SIZE_T # Checks for library functions. AC_CHECK_FUNCS([memset strcasecmp strncasecmp]) +# Check if build chain supports symbol visibility +AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) +SAVED_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -fvisibility=hidden" +AC_TRY_COMPILE([ + extern __attribute__((__visibility__("hidden"))) int hidden; + extern __attribute__((__visibility__("default"))) int def; + extern __attribute__((__visibility__("hidden"))) int fhidden(void); + extern __attribute__((__visibility__("default"))) int fdef(void); +],[], +[AC_MSG_RESULT([yes]) + AC_DEFINE([HAVE_VISIBILITY], 1, [Define if compiler supports -fvisibility])], +[CFLAGS="$SAVED_CFLAGS" + AC_MSG_RESULT([no])]) + # Check version of libdns AC_MSG_CHECKING([libdns version]) AC_TRY_RUN([ diff --git a/src/ldap_driver.c b/src/ldap_driver.c index 3a80223..99a8421 100644 --- a/src/ldap_driver.c +++ b/src/ldap_driver.c @@ -52,6 +52,12 @@ #include "util.h" #include "zone_manager.h" +#ifdef HAVE_VISIBILITY +#define VISIBLE __attribute__((__visibility__("default"))) +#else +#define VISIBLE +#endif + #define LDAPDB_MAGIC ISC_MAGIC('L', 'D', 'P', 'D') #define VALID_LDAPDB(ldapdb) \ ((ldapdb) != NULL && (ldapdb)->common.impmagic == LDAPDB_MAGIC) @@ -1315,7 +1321,7 @@ static dns_dbimplementation_t *ldapdb_imp; const char *ldapdb_impname = "dynamic-ldap"; -isc_result_t +VISIBLE isc_result_t dynamic_driver_init(isc_mem_t *mctx, const char *name, const char * const *argv, dns_dyndb_arguments_t *dyndb_args) { @@ -1360,7 +1366,7 @@ dynamic_driver_init(isc_mem_t *mctx, const char *name, const char * const *argv, return result; } -void +VISIBLE void dynamic_driver_destroy(void) { /* Only unregister the implementation if it was registered by us. */ -- 1.7.11.7
_______________________________________________ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel