From: Marek VavruĊĦa Date: Wed, 25 Nov 2015 18:03:17 +0000 (+0100) Subject: lib: started symbol visibility annotation, modules for now X-Git-Tag: v1.0.0-beta3~72^2~1^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b3482cd13929f2a9bdc291ba7ecfcda65933270a;p=thirdparty%2Fknot-resolver.git lib: started symbol visibility annotation, modules for now --- diff --git a/lib/defines.h b/lib/defines.h index d2e3e78d7..853a229bf 100644 --- a/lib/defines.h +++ b/lib/defines.h @@ -21,6 +21,17 @@ #include #include +/* Function attributes */ +#if __GNUC__ >= 4 +#define KR_EXPORT __attribute__ ((visibility ("default"))) +#define KR_CONST __attribute__((__const__)) +#define KR_PURE __attribute__((__pure__)) +#else +#define KR_EXPORT +#define KR_CONST +#define KR_PURE +#endif + /* * Error codes. */ diff --git a/lib/lib.mk b/lib/lib.mk index f48946d2d..ef4d3cdff 100644 --- a/lib/lib.mk +++ b/lib/lib.mk @@ -48,6 +48,7 @@ libkres_HEADERS := \ # Dependencies libkres_DEPEND := +libkres_CFLAGS := -fvisibility=hidden libkres_LIBS := $(libknot_LIBS) $(libdnssec_LIBS) libkres_TARGET := -L$(abspath lib) -lkres diff --git a/lib/module.h b/lib/module.h index eb5a6ebfe..d3d2c7b30 100644 --- a/lib/module.h +++ b/lib/module.h @@ -87,4 +87,4 @@ void kr_module_unload(struct kr_module *module); * @param module module name (f.e. hints) */ #define KR_MODULE_EXPORT(module) \ - uint32_t module ## _api() { return KR_MODULE_API; } + KR_EXPORT uint32_t module ## _api() { return KR_MODULE_API; } diff --git a/modules/cachectl/cachectl.c b/modules/cachectl/cachectl.c index 7a76de42b..ce7c407d4 100644 --- a/modules/cachectl/cachectl.c +++ b/modules/cachectl/cachectl.c @@ -305,6 +305,7 @@ static char* get(void *env, struct kr_module *module, const char *args) * Module implementation. */ +KR_EXPORT struct kr_prop *cachectl_props(void) { static struct kr_prop prop_list[] = { diff --git a/modules/cachectl/cachectl.mk b/modules/cachectl/cachectl.mk index 7a67b567c..6707dbdca 100644 --- a/modules/cachectl/cachectl.mk +++ b/modules/cachectl/cachectl.mk @@ -1,3 +1,4 @@ +cachectl_CFLAGS := -fvisibility=hidden cachectl_SOURCES := modules/cachectl/cachectl.c cachectl_DEPEND := $(libkres) cachectl_LIBS := $(libkres_TARGET) $(libkres_LIBS) diff --git a/modules/hints/hints.c b/modules/hints/hints.c index b7ece70d1..99667e9bf 100644 --- a/modules/hints/hints.c +++ b/modules/hints/hints.c @@ -430,6 +430,7 @@ static char* hint_root(void *env, struct kr_module *module, const char *args) * Module implementation. */ +KR_EXPORT const knot_layer_api_t *hints_layer(struct kr_module *module) { static knot_layer_api_t _layer = { @@ -441,12 +442,14 @@ const knot_layer_api_t *hints_layer(struct kr_module *module) return &_layer; } +KR_EXPORT int hints_init(struct kr_module *module) { module->data = NULL; return 0; } +KR_EXPORT int hints_config(struct kr_module *module, const char *conf) { unload(module); @@ -456,12 +459,14 @@ int hints_config(struct kr_module *module, const char *conf) return load(module, conf); } +KR_EXPORT int hints_deinit(struct kr_module *module) { unload(module); return kr_ok(); } +KR_EXPORT struct kr_prop *hints_props(void) { static struct kr_prop prop_list[] = { diff --git a/modules/hints/hints.mk b/modules/hints/hints.mk index 04a217e62..c72639118 100644 --- a/modules/hints/hints.mk +++ b/modules/hints/hints.mk @@ -1,3 +1,4 @@ +hints_CFLAGS := -fvisibility=hidden hints_SOURCES := modules/hints/hints.c hints_DEPEND := $(libkres) hints_LIBS := $(libkres_TARGET) $(libkres_LIBS) diff --git a/modules/kmemcached/kmemcached.c b/modules/kmemcached/kmemcached.c index 094da5684..fdb6d70f7 100644 --- a/modules/kmemcached/kmemcached.c +++ b/modules/kmemcached/kmemcached.c @@ -29,6 +29,7 @@ void *namedb_memcached_mkopts(const char *conf, size_t maxsize) return strdup(conf); } +KR_EXPORT int kmemcached_init(struct kr_module *module) { struct engine *engine = module->data; @@ -40,6 +41,7 @@ int kmemcached_init(struct kr_module *module) return kr_ok(); } +KR_EXPORT int kmemcached_deinit(struct kr_module *module) { struct engine *engine = module->data; diff --git a/modules/kmemcached/kmemcached.mk b/modules/kmemcached/kmemcached.mk index f5e1a96b3..87462a707 100644 --- a/modules/kmemcached/kmemcached.mk +++ b/modules/kmemcached/kmemcached.mk @@ -1,3 +1,4 @@ +kmemcached_CFLAGS := -fvisibility=hidden kmemcached_SOURCES := modules/kmemcached/kmemcached.c modules/kmemcached/namedb_memcached.c kmemcached_LIBS := $(libkres_TARGET) $(libkres_LIBS) $(libmemcached_LIBS) $(call make_c_module,kmemcached) diff --git a/modules/redis/redis.c b/modules/redis/redis.c index 8c9e2911f..e77e39327 100644 --- a/modules/redis/redis.c +++ b/modules/redis/redis.c @@ -73,6 +73,7 @@ void *namedb_redis_mkopts(const char *conf_, size_t maxsize) return cli; } +KR_EXPORT int redis_init(struct kr_module *module) { struct engine *engine = module->data; @@ -84,6 +85,7 @@ int redis_init(struct kr_module *module) return kr_ok(); } +KR_EXPORT int redis_deinit(struct kr_module *module) { struct engine *engine = module->data; diff --git a/modules/redis/redis.mk b/modules/redis/redis.mk index a249034ca..765f231ae 100644 --- a/modules/redis/redis.mk +++ b/modules/redis/redis.mk @@ -1,3 +1,4 @@ +redis_CFLAGS := -fvisibility=hidden redis_SOURCES := modules/redis/redis.c modules/redis/namedb_redis.c redis_LIBS := $(libkres_TARGET) $(libkres_LIBS) $(hiredis_LIBS) $(libuv_LIBS) $(call make_c_module,redis) diff --git a/modules/stats/stats.c b/modules/stats/stats.c index 7941bb5f0..ca411f740 100644 --- a/modules/stats/stats.c +++ b/modules/stats/stats.c @@ -324,6 +324,7 @@ static char* clear_expiring(void *env, struct kr_module *module, const char *arg * Module implementation. */ +KR_EXPORT const knot_layer_api_t *stats_layer(struct kr_module *module) { static knot_layer_api_t _layer = { @@ -334,6 +335,7 @@ const knot_layer_api_t *stats_layer(struct kr_module *module) return &_layer; } +KR_EXPORT int stats_init(struct kr_module *module) { struct stat_data *data = malloc(sizeof(*data)); @@ -353,6 +355,7 @@ int stats_init(struct kr_module *module) return kr_ok(); } +KR_EXPORT int stats_deinit(struct kr_module *module) { struct stat_data *data = module->data; @@ -367,6 +370,7 @@ int stats_deinit(struct kr_module *module) return kr_ok(); } +KR_EXPORT struct kr_prop *stats_props(void) { static struct kr_prop prop_list[] = { diff --git a/modules/stats/stats.mk b/modules/stats/stats.mk index 83e10d0bf..ef8a55e83 100644 --- a/modules/stats/stats.mk +++ b/modules/stats/stats.mk @@ -1,3 +1,4 @@ +stats_CFLAGS := -fvisibility=hidden stats_SOURCES := modules/stats/stats.c stats_DEPEND := $(libkres) stats_LIBS := $(libkres_TARGET) $(libkres_LIBS)