The branch, master has been updated via 18fdfe8c102 winbind: alternatively use prama fini for destructors if supported via f13e1ca54a2 talloc: alternatively use prama init for constructors if supported via c32eb006108 waf: check for pragma init/fini support for constructors/destructors via 37b81f91168 util_net: fix a statement not reached warning via c305ab07709 ldb_parse_test: studio compiler doesn't like empty struct definitions via 918317124ac ldb_key_value_test: studio compiler doesn't like empty struct definitions via c862ad64aea ldb_kv_index: fix empty initializer compile warning via e4f3354821a torture/sharemode: fix empty initializer compile warning via aa8d6c779ca pidl: use unused attribute only if supported by feature macro via 3c1013caf4b tdb: fix studio compiler build via 268fcfdd5aa talloc/pytalloc: fix studio compler build via 6b855429b96 talloc: fix studio compiler build via cce4e8012c5 auth_generic: fix empty initializer compile warning via a4e90cfec49 http_conn.c: fix "void function cannot return value" error via bbfd93f7b63 debug: remove a cast, which makes the Solaris Studio compiler unhappy via a223c5b5b7f waf: use _POSIX_PTHREAD_SEMANTIC on Solaris via 104b3545e08 heimdal_build: silence warning: macro redefined via edb1012536e replace: define BOOL_DEFINED to fix header yp_prot header check on Solaris via b9e8959c3d5 waf/texpect: add required nsl dependency for Solaris via 96e2cf7905e replace/waf: fix libnsl checking on Solaris from be03ce7d8bb manpages/vfs_glusterfs: Mention silent skipping of write-behind translator
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 18fdfe8c10291e04b6a54499d74a6ee15652f5db Author: Björn Jacke <b...@sernet.de> Date: Fri Oct 30 12:59:06 2020 +0100 winbind: alternatively use prama fini for destructors if supported Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> Autobuild-User(master): Andrew Bartlett <abart...@samba.org> Autobuild-Date(master): Tue Nov 10 08:17:53 UTC 2020 on sn-devel-184 commit f13e1ca54a2a448dd87809496e4b6da5af1589e8 Author: Björn Jacke <b...@sernet.de> Date: Fri Oct 30 12:57:42 2020 +0100 talloc: alternatively use prama init for constructors if supported Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit c32eb006108c69a99c651e11a0a4160359e52145 Author: Björn Jacke <b...@sernet.de> Date: Fri Oct 30 12:55:54 2020 +0100 waf: check for pragma init/fini support for constructors/destructors Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 37b81f9116825e0fc0fcd62aa957655fe5c83f19 Author: Björn Jacke <b...@sernet.de> Date: Mon Oct 26 11:30:06 2020 +0100 util_net: fix a statement not reached warning Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit c305ab07709bcb5eba11568ac2fd625410f441e2 Author: Björn Jacke <b...@sernet.de> Date: Mon Oct 26 12:49:05 2020 +0100 ldb_parse_test: studio compiler doesn't like empty struct definitions Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 918317124acbb4b0f0d12eeeae79eafdfddaa49c Author: Björn Jacke <b...@sernet.de> Date: Sun Oct 25 17:13:57 2020 +0100 ldb_key_value_test: studio compiler doesn't like empty struct definitions Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit c862ad64aea31d1d5ec66385bb50d9b97e609071 Author: Björn Jacke <b...@sernet.de> Date: Mon Oct 19 02:39:46 2020 +0200 ldb_kv_index: fix empty initializer compile warning Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit e4f3354821a919ec60eb3af55709e7055513cc24 Author: Björn Jacke <b...@sernet.de> Date: Mon Oct 19 02:35:02 2020 +0200 torture/sharemode: fix empty initializer compile warning Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit aa8d6c779ca89d6be1c8b973d3ea60e6073bf899 Author: Björn Jacke <b...@sernet.de> Date: Mon Oct 19 02:03:02 2020 +0200 pidl: use unused attribute only if supported by feature macro Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 3c1013caf4b57c6af5a5d210df232c08a1227a17 Author: Björn Jacke <b...@sernet.de> Date: Thu Mar 7 12:50:29 2019 +0100 tdb: fix studio compiler build Solaris Studio compiler 12.4 is pedantic about prototypes in headers having the external visibility declarations too. It throws errors like: redeclaration must have the same or more restrictive linker scoping: ... Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 268fcfdd5aa3adbcd6486090ee56aad6e6902a12 Author: Björn Jacke <b...@sernet.de> Date: Sun Oct 18 21:55:22 2020 +0200 talloc/pytalloc: fix studio compler build Solaris Studio compiler 12.4 is pedantic about prototypes in headers having the external visibility declarations too. It throws errors like: redeclaration must have the same or more restrictive linker scoping: ... Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 6b855429b969a1c30e7a57c3aa139c62abb7c98f Author: Björn Jacke <b...@sernet.de> Date: Thu Mar 7 00:40:12 2019 +0100 talloc: fix studio compiler build Solaris Studio compiler 12.4 is pedantic about prototypes in headers having the external visibility declarations too. It throws errors like: redeclaration must have the same or more restrictive linker scoping: ... Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit cce4e8012c5eafb6d98111b92923d748d72d077b Author: Björn Jacke <b...@sernet.de> Date: Sun Oct 18 21:07:14 2020 +0200 auth_generic: fix empty initializer compile warning Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit a4e90cfec4966b9cebcab65ae26ecbe6d85868c0 Author: Björn Jacke <b...@sernet.de> Date: Sun Oct 18 20:43:26 2020 +0200 http_conn.c: fix "void function cannot return value" error this made the studio compiler build break Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit bbfd93f7b6322b41cb69a0bab4903d074f3c60b7 Author: Björn Jacke <b...@sernet.de> Date: Sun Oct 18 20:21:56 2020 +0200 debug: remove a cast, which makes the Solaris Studio compiler unhappy BUG: https://bugzilla.samba.org/show_bug.cgi?id=14526 Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit a223c5b5b7f6446d1e52065679c5c26d02b97ef6 Author: Björn Jacke <b...@sernet.de> Date: Sun Oct 18 20:15:36 2020 +0200 waf: use _POSIX_PTHREAD_SEMANTIC on Solaris Solaris uses POSIX draft function calls by default for a number of functions, unless you set _POSIX_PTHREAD_SEMANTIC Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 104b3545e08bb79242c659c283bc8ee221dd66d8 Author: Björn Jacke <b...@sernet.de> Date: Sun Oct 18 19:18:34 2020 +0200 heimdal_build: silence warning: macro redefined Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit edb1012536e46a1d2f022ef0f369ecc2cae733a2 Author: Björn Jacke <b...@sernet.de> Date: Sun Oct 18 16:24:08 2020 +0200 replace: define BOOL_DEFINED to fix header yp_prot header check on Solaris Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit b9e8959c3d585467757ddd050550b0fcd3497157 Author: Björn Jacke <b...@sernet.de> Date: Sun Oct 18 16:22:55 2020 +0200 waf/texpect: add required nsl dependency for Solaris Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 96e2cf7905e146a40f788899e4759691aac6c942 Author: Björn Jacke <b...@sernet.de> Date: Thu Mar 7 13:10:11 2019 +0100 replace/waf: fix libnsl checking on Solaris BUG: https://bugzilla.samba.org/show_bug.cgi?id=13343 Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> ----------------------------------------------------------------------- Summary of changes: buildtools/wafsamba/wscript | 44 ++++++++- lib/ldb/ldb_key_value/ldb_kv_index.c | 2 +- lib/ldb/tests/ldb_key_value_test.c | 3 +- lib/ldb/tests/ldb_parse_test.c | 4 +- lib/replace/wscript | 6 +- lib/talloc/pytalloc.h | 32 +++--- lib/talloc/talloc.c | 8 +- lib/talloc/talloc.h | 186 ++++++++++++++++++----------------- lib/tdb/common/lock.c | 6 +- lib/tdb/include/tdb.h | 138 +++++++++++++------------- lib/texpect/wscript | 2 +- lib/util/debug.c | 2 +- lib/util/util_net.c | 3 +- libcli/http/http_conn.c | 3 +- nsswitch/wb_common.c | 2 + pidl/lib/Parse/Pidl/Samba4/Python.pm | 4 +- source3/auth/auth_generic.c | 2 +- source4/heimdal_build/config.h | 5 + source4/torture/smb2/sharemode.c | 8 +- 19 files changed, 262 insertions(+), 198 deletions(-) Changeset truncated at 500 lines: diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript index f0b679257b7..65cc8d3cd5e 100644 --- a/buildtools/wafsamba/wscript +++ b/buildtools/wafsamba/wscript @@ -391,7 +391,26 @@ def configure(conf): strict=True, msg='Checking for library constructor support') - # check HAVE_DESTRUCTOR_ATTRIBUTE + # check HAVE_PRAGMA_INIT alternatively + if not conf.env.HAVE_CONSTRUCTOR_ATTRIBUTE: + conf.CHECK_CODE(''' + #pragma init (test_init) + + void test_init(void) + { + return; + } + + int main(void) { + return 0; + } + ''', + 'HAVE_PRAGMA_INIT', + addmain=False, + strict=True, + msg='Checking for pragma init support') + + # check HAVE_DESTRUCTOR_ATTRIBUTE conf.CHECK_CODE(''' void test_destructor_attribute(void) __attribute__ ((destructor)); @@ -409,6 +428,25 @@ def configure(conf): strict=True, msg='Checking for library destructor support') + # check HAVE_PRAGMA_FINI alternatively + if not conf.env.HAVE_DESTRUCTOR_ATTRIBUTE: + conf.CHECK_CODE(''' + #pragma fini (test_fini) + + void test_fini(void) + { + return; + } + + int main(void) { + return 0; + } + ''', + 'HAVE_PRAGMA_FINI', + addmain=False, + strict=True, + msg='Checking for pragma fini support') + conf.CHECK_CODE(''' void test_attribute(void) __attribute__ (()); @@ -426,6 +464,10 @@ def configure(conf): strict=True, msg='Checking for __attribute__') + # Solaris by defauls uses draft versions of some functions unless you set _POSIX_PTHREAD_SEMANTICS + if sys.platform.startswith('sunos'): + conf.DEFINE('_POSIX_PTHREAD_SEMANTICS', 1) + if sys.platform.startswith('aix'): conf.DEFINE('_ALL_SOURCE', 1, add_to_cflags=True) # Might not be needed if ALL_SOURCE is defined diff --git a/lib/ldb/ldb_key_value/ldb_kv_index.c b/lib/ldb/ldb_key_value/ldb_kv_index.c index 9be7c5adcbe..1cc042aa84f 100644 --- a/lib/ldb/ldb_key_value/ldb_kv_index.c +++ b/lib/ldb/ldb_key_value/ldb_kv_index.c @@ -2267,7 +2267,7 @@ static int ldb_kv_index_filter(struct ldb_kv_private *ldb_kv, struct ldb_message *filtered_msg; unsigned int i; unsigned int num_keys = 0; - uint8_t previous_guid_key[LDB_KV_GUID_KEY_SIZE] = {}; + uint8_t previous_guid_key[LDB_KV_GUID_KEY_SIZE] = {0}; struct ldb_val *keys = NULL; /* diff --git a/lib/ldb/tests/ldb_key_value_test.c b/lib/ldb/tests/ldb_key_value_test.c index 458452e5dc4..97f717b5ee0 100644 --- a/lib/ldb/tests/ldb_key_value_test.c +++ b/lib/ldb/tests/ldb_key_value_test.c @@ -76,8 +76,7 @@ int ldb_kv_increase_sequence_number(struct ldb_module *module) { return LDB_SUCCESS; } -struct test_ctx { -}; +struct test_ctx { uint8_t dummy; }; static int setup(void **state) { diff --git a/lib/ldb/tests/ldb_parse_test.c b/lib/ldb/tests/ldb_parse_test.c index d7442b954ea..b08c7b7680c 100644 --- a/lib/ldb/tests/ldb_parse_test.c +++ b/lib/ldb/tests/ldb_parse_test.c @@ -27,9 +27,7 @@ #include "../include/ldb.h" -struct test_ctx -{ -}; +struct test_ctx { uint8_t dummy; }; static int setup(void **state) { diff --git a/lib/replace/wscript b/lib/replace/wscript index 85bc11d2f01..2c856b61a0f 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript @@ -31,6 +31,7 @@ def configure(conf): conf.env.standalone_replace = conf.IN_LAUNCH_DIR() + conf.DEFINE('BOOL_DEFINED', 1) conf.DEFINE('HAVE_LIBREPLACE', 1) conf.DEFINE('LIBREPLACE_NETWORK_CHECKS', 1) @@ -94,7 +95,8 @@ def configure(conf): if not conf.CONFIG_SET('HAVE_RPC_RPC_H'): Logs.warn('No rpc/rpc.h header found, tirpc or libntirpc missing?') - conf.SET_TARGET_TYPE('nsl', 'EMPTY') + if not conf.CHECK_LIB('nsl'): + conf.SET_TARGET_TYPE('nsl', 'EMPTY') conf.CHECK_HEADERS('rpc/rpc.h rpcsvc/yp_prot.h', lib='tirpc') if not conf.CONFIG_SET('HAVE_RPCSVC_YP_PROT_H'): if conf.CHECK_CFG(package='libnsl', args='--cflags --libs', @@ -102,8 +104,6 @@ def configure(conf): uselib_store='NSL'): conf.SET_TARGET_TYPE('nsl', 'SYSLIB') conf.CHECK_HEADERS('rpc/rpc.h rpcsvc/yp_prot.h', lib='tirpc nsl') - else: - conf.SET_TARGET_TYPE('nsl', 'SYSLIB') conf.CHECK_HEADERS('rpcsvc/nis.h rpcsvc/ypclnt.h', lib='tirpc nsl') # This file is decprecated with glibc >= 2.30 so we need to check if it diff --git a/lib/talloc/pytalloc.h b/lib/talloc/pytalloc.h index 8ab1e16fe47..9aeb121eb29 100644 --- a/lib/talloc/pytalloc.h +++ b/lib/talloc/pytalloc.h @@ -30,37 +30,37 @@ typedef struct { } pytalloc_Object; /* Return the PyTypeObject for pytalloc_Object. Returns a borrowed reference. */ -PyTypeObject *pytalloc_GetObjectType(void); +_PUBLIC_ PyTypeObject *pytalloc_GetObjectType(void); /* Return the PyTypeObject for pytalloc_BaseObject. Returns a borrowed reference. */ -PyTypeObject *pytalloc_GetBaseObjectType(void); +_PUBLIC_ PyTypeObject *pytalloc_GetBaseObjectType(void); /* Check whether a specific object is a talloc Object. */ -int pytalloc_Check(PyObject *); +_PUBLIC_ int pytalloc_Check(PyObject *); -int pytalloc_BaseObject_check(PyObject *); +_PUBLIC_ int pytalloc_BaseObject_check(PyObject *); -int _pytalloc_check_type(PyObject *py_obj, const char *type_name); +_PUBLIC_ int _pytalloc_check_type(PyObject *py_obj, const char *type_name); #define pytalloc_check_type(py_obj, type) \ _pytalloc_check_type((PyObject *)(py_obj), #type) /* Retrieve the pointer for a pytalloc_object. Like talloc_get_type() * but for pytalloc_Objects. */ -void *_pytalloc_get_type(PyObject *py_obj, const char *type_name); +_PUBLIC_ void *_pytalloc_get_type(PyObject *py_obj, const char *type_name); #define pytalloc_get_type(py_obj, type) ((type *)_pytalloc_get_type((PyObject *)(py_obj), #type)) -void *_pytalloc_get_ptr(PyObject *py_obj); +_PUBLIC_ void *_pytalloc_get_ptr(PyObject *py_obj); #define pytalloc_get_ptr(py_obj) _pytalloc_get_ptr((PyObject *)(py_obj)) -TALLOC_CTX *_pytalloc_get_mem_ctx(PyObject *py_obj); +_PUBLIC_ TALLOC_CTX *_pytalloc_get_mem_ctx(PyObject *py_obj); #define pytalloc_get_mem_ctx(py_obj) _pytalloc_get_mem_ctx((PyObject *)(py_obj)) -const char *_pytalloc_get_name(PyObject *py_obj); +_PUBLIC_ const char *_pytalloc_get_name(PyObject *py_obj); #define pytalloc_get_name(py_obj) _pytalloc_get_name((PyObject *)(py_obj)) -PyObject *pytalloc_steal_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *ptr); -PyObject *pytalloc_steal(PyTypeObject *py_type, void *ptr); -PyObject *pytalloc_reference_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *ptr); +_PUBLIC_ PyObject *pytalloc_steal_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *ptr); +_PUBLIC_ PyObject *pytalloc_steal(PyTypeObject *py_type, void *ptr); +_PUBLIC_ PyObject *pytalloc_reference_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *ptr); #define pytalloc_reference(py_type, talloc_ptr) pytalloc_reference_ex(py_type, talloc_ptr, talloc_ptr) #define pytalloc_new(type, typeobj) pytalloc_steal(typeobj, talloc_zero(NULL, type)) @@ -69,15 +69,15 @@ PyObject *pytalloc_reference_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void * Wrap a generic talloc pointer into a talloc.GenericObject, * this is a subclass of talloc.BaseObject. */ -PyObject *pytalloc_GenericObject_steal_ex(TALLOC_CTX *mem_ctx, void *ptr); +_PUBLIC_ PyObject *pytalloc_GenericObject_steal_ex(TALLOC_CTX *mem_ctx, void *ptr); #define pytalloc_GenericObject_steal(talloc_ptr) \ pytalloc_GenericObject_steal_ex(talloc_ptr, talloc_ptr) -PyObject *pytalloc_GenericObject_reference_ex(TALLOC_CTX *mem_ctx, void *ptr); +_PUBLIC_ PyObject *pytalloc_GenericObject_reference_ex(TALLOC_CTX *mem_ctx, void *ptr); #define pytalloc_GenericObject_reference(talloc_ptr) \ pytalloc_GenericObject_reference_ex(talloc_ptr, talloc_ptr) -size_t pytalloc_BaseObject_size(void); +_PUBLIC_ size_t pytalloc_BaseObject_size(void); -int pytalloc_BaseObject_PyType_Ready(PyTypeObject *type); +_PUBLIC_ int pytalloc_BaseObject_PyType_Ready(PyTypeObject *type); #endif /* _PYTALLOC_H_ */ diff --git a/lib/talloc/talloc.c b/lib/talloc/talloc.c index 078e58ca352..ef49429307a 100644 --- a/lib/talloc/talloc.c +++ b/lib/talloc/talloc.c @@ -392,7 +392,13 @@ _PUBLIC_ void talloc_set_log_fn(void (*log_fn)(const char *message)) } #ifdef HAVE_CONSTRUCTOR_ATTRIBUTE -void talloc_lib_init(void) __attribute__((constructor)); +#define CONSTRUCTOR __attribute__((constructor)) +#elif defined(HAVE_PRAGMA_INIT) +#define CONSTRUCTOR +#pragma init (talloc_lib_init) +#endif +#if defined(HAVE_CONSTRUCTOR_ATTRIBUTE) || defined(HAVE_PRAGMA_INIT) +void talloc_lib_init(void) CONSTRUCTOR; void talloc_lib_init(void) { uint32_t random_value; diff --git a/lib/talloc/talloc.h b/lib/talloc/talloc.h index afa0e85d195..06e81d7c999 100644 --- a/lib/talloc/talloc.h +++ b/lib/talloc/talloc.h @@ -33,6 +33,19 @@ extern "C" { #endif +/* for old gcc releases that don't have the feature test macro __has_attribute */ +#ifndef __has_attribute +#define __has_attribute(x) 0 +#endif + +#ifndef _PUBLIC_ +#if __has_attribute(visibility) +#define _PUBLIC_ __attribute__((visibility("default"))) +#else +#define _PUBLIC_ +#endif +#endif + /** * @defgroup talloc The talloc API * @@ -45,10 +58,10 @@ extern "C" { #define TALLOC_VERSION_MAJOR 2 #define TALLOC_VERSION_MINOR 3 -int talloc_version_major(void); -int talloc_version_minor(void); +_PUBLIC_ int talloc_version_major(void); +_PUBLIC_ int talloc_version_minor(void); /* This is mostly useful only for testing */ -int talloc_test_get_magic(void); +_PUBLIC_ int talloc_test_get_magic(void); /** * @brief Define a talloc parent type @@ -89,11 +102,6 @@ typedef void TALLOC_CTX; #define TALLOC_DEPRECATED 0 #endif -/* for old gcc releases that don't have the feature test macro __has_attribute */ -#ifndef __has_attribute -#define __has_attribute(x) 0 -#endif - #ifndef PRINTF_ATTRIBUTE #if __has_attribute(format) || (__GNUC__ >= 3) /** Use gcc attribute to check printf fns. a1 is the 1-based index of @@ -148,10 +156,10 @@ typedef void TALLOC_CTX; * @see talloc_steal * @see talloc_free */ -void *talloc(const void *ctx, #type); +_PUBLIC_ void *talloc(const void *ctx, #type); #else #define talloc(ctx, type) (type *)talloc_named_const(ctx, sizeof(type), #type) -void *_talloc(const void *context, size_t size); +_PUBLIC_ void *_talloc(const void *context, size_t size); #endif /** @@ -171,7 +179,7 @@ void *_talloc(const void *context, size_t size); * * @see talloc_named() */ -void *talloc_init(const char *fmt, ...) PRINTF_ATTRIBUTE(1,2); +_PUBLIC_ void *talloc_init(const char *fmt, ...) PRINTF_ATTRIBUTE(1,2); #ifdef DOXYGEN /** @@ -236,10 +244,10 @@ void *talloc_init(const char *fmt, ...) PRINTF_ATTRIBUTE(1,2); * @see talloc_set_destructor() * @see talloc_unlink() */ -int talloc_free(void *ptr); +_PUBLIC_ int talloc_free(void *ptr); #else #define talloc_free(ctx) _talloc_free(ctx, __location__) -int _talloc_free(void *ptr, const char *location); +_PUBLIC_ int _talloc_free(void *ptr, const char *location); #endif /** @@ -253,7 +261,7 @@ int _talloc_free(void *ptr, const char *location); * @param[in] ptr The chunk that you want to free the children of * (NULL is allowed too) */ -void talloc_free_children(void *ptr); +_PUBLIC_ void talloc_free_children(void *ptr); #ifdef DOXYGEN /** @@ -309,7 +317,7 @@ void talloc_free_children(void *ptr); * @see talloc() * @see talloc_free() */ -void talloc_set_destructor(const void *ptr, int (*destructor)(void *)); +_PUBLIC_ void talloc_set_destructor(const void *ptr, int (*destructor)(void *)); /** * @brief Change a talloc chunk's parent. @@ -349,7 +357,7 @@ void talloc_set_destructor(const void *ptr, int (*destructor)(void *)); * if you are not careful with talloc_steal(). No guarantees are provided * as to your sanity or the safety of your data if you do this. */ -void *talloc_steal(const void *new_ctx, const void *ptr); +_PUBLIC_ void *talloc_steal(const void *new_ctx, const void *ptr); #else /* DOXYGEN */ /* try to make talloc_set_destructor() and talloc_steal() type safe, if we have a recent gcc */ @@ -369,8 +377,8 @@ void *talloc_steal(const void *new_ctx, const void *ptr); #define _TALLOC_TYPEOF(ptr) void * #define talloc_steal(ctx, ptr) (_TALLOC_TYPEOF(ptr))_talloc_steal_loc((ctx),(ptr), __location__) #endif /* __GNUC__ >= 3 */ -void _talloc_set_destructor(const void *ptr, int (*_destructor)(void *)); -void *_talloc_steal_loc(const void *new_ctx, const void *ptr, const char *location); +_PUBLIC_ void _talloc_set_destructor(const void *ptr, int (*_destructor)(void *)); +_PUBLIC_ void *_talloc_steal_loc(const void *new_ctx, const void *ptr, const char *location); #endif /* DOXYGEN */ /** @@ -403,7 +411,7 @@ void *_talloc_steal_loc(const void *new_ctx, const void *ptr, const char *locati * releasing the name. All of the memory is released when the ptr is freed * using talloc_free(). */ -const char *talloc_set_name(const void *ptr, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3); +_PUBLIC_ const char *talloc_set_name(const void *ptr, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3); #ifdef DOXYGEN /** @@ -426,10 +434,10 @@ const char *talloc_set_name(const void *ptr, const char *fmt, ...) PRINTF_ATTRIB * It does not have any failure modes. * */ -void *talloc_move(const void *new_ctx, void **pptr); +_PUBLIC_ void *talloc_move(const void *new_ctx, void **pptr); #else #define talloc_move(ctx, pptr) (_TALLOC_TYPEOF(*(pptr)))_talloc_move((ctx),(void *)(pptr)) -void *_talloc_move(const void *new_ctx, const void *pptr); +_PUBLIC_ void *_talloc_move(const void *new_ctx, const void *pptr); #endif /** @@ -448,7 +456,7 @@ void *_talloc_move(const void *new_ctx, const void *pptr); * * @param[in] name Format string for the name. */ -void talloc_set_name_const(const void *ptr, const char *name); +_PUBLIC_ void talloc_set_name_const(const void *ptr, const char *name); /** * @brief Create a named talloc chunk. @@ -473,7 +481,7 @@ void talloc_set_name_const(const void *ptr, const char *name); * * @see talloc_set_name() */ -void *talloc_named(const void *context, size_t size, +_PUBLIC_ void *talloc_named(const void *context, size_t size, const char *fmt, ...) PRINTF_ATTRIBUTE(3,4); /** @@ -494,7 +502,7 @@ void *talloc_named(const void *context, size_t size, * * @return The allocated memory chunk, NULL on error. */ -void *talloc_named_const(const void *context, size_t size, const char *name); +_PUBLIC_ void *talloc_named_const(const void *context, size_t size, const char *name); #ifdef DOXYGEN /** @@ -517,7 +525,7 @@ void *talloc_named_const(const void *context, size_t size, const char *name); * void *mem = talloc_size(NULL, 100); * @endcode */ -void *talloc_size(const void *ctx, size_t size); +_PUBLIC_ void *talloc_size(const void *ctx, size_t size); #else #define talloc_size(ctx, size) talloc_named_const(ctx, size, __location__) #endif @@ -544,7 +552,7 @@ void *talloc_size(const void *ctx, size_t size); * unsigned int *a = talloc_ptrtype(NULL, a); * @endcode */ -void *talloc_ptrtype(const void *ctx, #type); +_PUBLIC_ void *talloc_ptrtype(const void *ctx, #type); #else #define talloc_ptrtype(ctx, ptr) (_TALLOC_TYPEOF(ptr))talloc_size(ctx, sizeof(*(ptr))) #endif @@ -562,7 +570,7 @@ void *talloc_ptrtype(const void *ctx, #type); * * @return A new talloc chunk, NULL on error. */ -void *talloc_new(const void *ctx); +_PUBLIC_ void *talloc_new(const void *ctx); #else #define talloc_new(ctx) talloc_named_const(ctx, 0, "talloc_new: " __location__) #endif @@ -596,7 +604,7 @@ void *talloc_new(const void *ctx); * @see talloc_zero_size() * @see talloc_zero_array() */ -void *talloc_zero(const void *ctx, #type); +_PUBLIC_ void *talloc_zero(const void *ctx, #type); /** * @brief Allocate untyped, 0-initialized memory. @@ -607,11 +615,11 @@ void *talloc_zero(const void *ctx, #type); * * @return The allocated memory chunk. */ -void *talloc_zero_size(const void *ctx, size_t size); +_PUBLIC_ void *talloc_zero_size(const void *ctx, size_t size); #else #define talloc_zero(ctx, type) (type *)_talloc_zero(ctx, sizeof(type), #type) #define talloc_zero_size(ctx, size) _talloc_zero(ctx, size, __location__) -void *_talloc_zero(const void *ctx, size_t size, const char *name); +_PUBLIC_ void *_talloc_zero(const void *ctx, size_t size, const char *name); #endif /** @@ -623,7 +631,7 @@ void *_talloc_zero(const void *ctx, size_t size, const char *name); * * @see talloc_set_name() */ -const char *talloc_get_name(const void *ptr); +_PUBLIC_ const char *talloc_get_name(const void *ptr); /** * @brief Verify that a talloc chunk carries a specified name. @@ -637,7 +645,7 @@ const char *talloc_get_name(const void *ptr); * * @return The pointer if the name matches, NULL if it doesn't. */ -void *talloc_check_name(const void *ptr, const char *name); +_PUBLIC_ void *talloc_check_name(const void *ptr, const char *name); /** * @brief Get the parent chunk of a pointer. @@ -646,7 +654,7 @@ void *talloc_check_name(const void *ptr, const char *name); * * @return The talloc parent of ptr, NULL on error. */ -void *talloc_parent(const void *ptr); +_PUBLIC_ void *talloc_parent(const void *ptr); /** * @brief Get a talloc chunk's parent name. @@ -655,7 +663,7 @@ void *talloc_parent(const void *ptr); * * @return The name of ptr's parent chunk. */ -const char *talloc_parent_name(const void *ptr); +_PUBLIC_ const char *talloc_parent_name(const void *ptr); /** * @brief Get the total size of a talloc chunk including its children. @@ -671,7 +679,7 @@ const char *talloc_parent_name(const void *ptr); * * @return The total size. */ -size_t talloc_total_size(const void *ptr); +_PUBLIC_ size_t talloc_total_size(const void *ptr); -- Samba Shared Repository