]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
talloc: fix studio compiler build
authorBjörn Jacke <bj@sernet.de>
Wed, 6 Mar 2019 23:40:12 +0000 (00:40 +0100)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 10 Nov 2020 06:53:43 +0000 (06:53 +0000)
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 <bjacke@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/talloc/talloc.h

index afa0e85d1957d5f443c5984f12e143534fd9d53c..06e81d7c9995afb47ff5113e640920eb179ee81f 100644 (file)
 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);
 
 /**
  * @brief Get the number of talloc chunks hanging off a chunk.
@@ -688,7 +696,7 @@ size_t talloc_total_size(const void *ptr);
  *
  * @return              The total size.
  */
-size_t talloc_total_blocks(const void *ptr);
+_PUBLIC_ size_t talloc_total_blocks(const void *ptr);
 
 #ifdef DOXYGEN
 /**
@@ -711,10 +719,10 @@ size_t talloc_total_blocks(const void *ptr);
  *
  * @see talloc_size()
  */
-void *talloc_memdup(const void *t, const void *p, size_t size);
+_PUBLIC_ void *talloc_memdup(const void *t, const void *p, size_t size);
 #else
 #define talloc_memdup(t, p, size) _talloc_memdup(t, p, size, __location__)
-void *_talloc_memdup(const void *t, const void *p, size_t size, const char *name);
+_PUBLIC_ void *_talloc_memdup(const void *t, const void *p, size_t size, const char *name);
 #endif
 
 #ifdef DOXYGEN
@@ -735,7 +743,7 @@ void *_talloc_memdup(const void *t, const void *p, size_t size, const char *name
  *
  * @param[in]  type     The type to assign.
  */
-void talloc_set_type(const char *ptr, #type);
+_PUBLIC_ void talloc_set_type(const char *ptr, #type);
 
 /**
  * @brief Get a typed pointer out of a talloc pointer.
@@ -775,14 +783,14 @@ type *talloc_get_type(const void *ptr, #type);
  *
  * @return              The same value as ptr, type-checked and properly cast.
  */
-void *talloc_get_type_abort(const void *ptr, #type);
+_PUBLIC_ void *talloc_get_type_abort(const void *ptr, #type);
 #else
 #ifdef TALLOC_GET_TYPE_ABORT_NOOP
 #define talloc_get_type_abort(ptr, type) (type *)(ptr)
 #else
 #define talloc_get_type_abort(ptr, type) (type *)_talloc_get_type_abort(ptr, #type, __location__)
 #endif
-void *_talloc_get_type_abort(const void *ptr, const char *name, const char *location);
+_PUBLIC_ void *_talloc_get_type_abort(const void *ptr, const char *name, const char *location);
 #endif
 
 /**
@@ -800,7 +808,7 @@ void *_talloc_get_type_abort(const void *ptr, const char *name, const char *loca
  * @return              The memory context we are looking for, NULL if not
  *                      found.
  */
-void *talloc_find_parent_byname(const void *ctx, const char *name);
+_PUBLIC_ void *talloc_find_parent_byname(const void *ctx, const char *name);
 
 #ifdef DOXYGEN
 /**
@@ -820,7 +828,7 @@ void *talloc_find_parent_byname(const void *ctx, const char *name);
  * @return              The memory context we are looking for, NULL if not
  *                      found.
  */
-void *talloc_find_parent_bytype(const void *ptr, #type);
+_PUBLIC_ void *talloc_find_parent_bytype(const void *ptr, #type);
 #else
 #define talloc_find_parent_bytype(ptr, type) (type *)talloc_find_parent_byname(ptr, #type)
 #endif
@@ -865,7 +873,7 @@ void *talloc_find_parent_bytype(const void *ptr, #type);
  *
  * @return              The allocated talloc pool, NULL on error.
  */
-void *talloc_pool(const void *context, size_t size);
+_PUBLIC_ void *talloc_pool(const void *context, size_t size);
 
 #ifdef DOXYGEN
 /**
@@ -887,7 +895,7 @@ void *talloc_pool(const void *context, size_t size);
  *
  * @return              The allocated talloc object, NULL on error.
  */
-void *talloc_pooled_object(const void *ctx, #type,
+_PUBLIC_ void *talloc_pooled_object(const void *ctx, #type,
                           unsigned num_subobjects,
                           size_t total_subobjects_size);
 #else
@@ -897,7 +905,7 @@ void *talloc_pooled_object(const void *ctx, #type,
        (_type *)_talloc_pooled_object((_ctx), sizeof(_type), #_type, \
                                        (_num_subobjects), \
                                        (_total_subobjects_size))
-void *_talloc_pooled_object(const void *ctx,
+_PUBLIC_ void *_talloc_pooled_object(const void *ctx,
                            size_t type_size,
                            const char *type_name,
                            unsigned num_subobjects,
@@ -942,7 +950,7 @@ void *_talloc_pooled_object(const void *ctx,
  *
  * @return              0 on success, -1 on error.
  */
-int talloc_increase_ref_count(const void *ptr);
+_PUBLIC_ int talloc_increase_ref_count(const void *ptr);
 
 /**
  * @brief Get the number of references to a talloc chunk.
@@ -951,7 +959,7 @@ int talloc_increase_ref_count(const void *ptr);
  *
  * @return              The number of references.
  */
-size_t talloc_reference_count(const void *ptr);
+_PUBLIC_ size_t talloc_reference_count(const void *ptr);
 
 #ifdef DOXYGEN
 /**
@@ -997,10 +1005,10 @@ size_t talloc_reference_count(const void *ptr);
  *
  * @see talloc_unlink()
  */
-void *talloc_reference(const void *ctx, const void *ptr);
+_PUBLIC_ void *talloc_reference(const void *ctx, const void *ptr);
 #else
 #define talloc_reference(ctx, ptr) (_TALLOC_TYPEOF(ptr))_talloc_reference_loc((ctx),(ptr), __location__)
-void *_talloc_reference_loc(const void *context, const void *ptr, const char *location);
+_PUBLIC_ void *_talloc_reference_loc(const void *context, const void *ptr, const char *location);
 #endif
 
 /**
@@ -1040,7 +1048,7 @@ void *_talloc_reference_loc(const void *context, const void *ptr, const char *lo
  *      talloc_unlink(b, c);
  * @endcode
  */
-int talloc_unlink(const void *context, void *ptr);
+_PUBLIC_ int talloc_unlink(const void *context, void *ptr);
 
 /**
  * @brief Provide a talloc context that is freed at program exit.
@@ -1060,7 +1068,7 @@ int talloc_unlink(const void *context, void *ptr);
  *
  * @return              A talloc context, NULL on error.
  */
-void *talloc_autofree_context(void) _DEPRECATED_;
+_PUBLIC_ void *talloc_autofree_context(void) _DEPRECATED_;
 
 /**
  * @brief Get the size of a talloc chunk.
@@ -1073,7 +1081,7 @@ void *talloc_autofree_context(void) _DEPRECATED_;
  *
  * @return              The size of the talloc chunk.
  */
-size_t talloc_get_size(const void *ctx);
+_PUBLIC_ size_t talloc_get_size(const void *ctx);
 
 /**
  * @brief Show the parentage of a context.
@@ -1082,7 +1090,7 @@ size_t talloc_get_size(const void *ctx);
  *
  * @param[in]  file               The output to use, a file, stdout or stderr.
  */
-void talloc_show_parents(const void *context, FILE *file);
+_PUBLIC_ void talloc_show_parents(const void *context, FILE *file);
 
 /**
  * @brief Check if a context is parent of a talloc chunk.
@@ -1095,7 +1103,7 @@ void talloc_show_parents(const void *context, FILE *file);
  *
  * @return              Return 1 if this is the case, 0 if not.
  */
-int talloc_is_parent(const void *context, const void *ptr);
+_PUBLIC_ int talloc_is_parent(const void *context, const void *ptr);
 
 /**
  * @brief Change the parent context of a talloc pointer.
@@ -1115,7 +1123,7 @@ int talloc_is_parent(const void *context, const void *ptr);
  * @return              Return the pointer you passed. It does not have any
  *                      failure modes.
  */
-void *talloc_reparent(const void *old_parent, const void *new_parent, const void *ptr);
+_PUBLIC_ void *talloc_reparent(const void *old_parent, const void *new_parent, const void *ptr);
 
 /* @} ******************************************************************/
 
@@ -1160,10 +1168,10 @@ void *talloc_reparent(const void *old_parent, const void *new_parent, const void
  * @see talloc()
  * @see talloc_zero_array()
  */
-void *talloc_array(const void *ctx, #type, unsigned count);
+_PUBLIC_ void *talloc_array(const void *ctx, #type, unsigned count);
 #else
 #define talloc_array(ctx, type, count) (type *)_talloc_array(ctx, sizeof(type), count, #type)
-void *_talloc_array(const void *ctx, size_t el_size, unsigned count, const char *name);
+_PUBLIC_ void *_talloc_array(const void *ctx, size_t el_size, unsigned count, const char *name);
 #endif
 
 #ifdef DOXYGEN
@@ -1178,7 +1186,7 @@ void *_talloc_array(const void *ctx, size_t el_size, unsigned count, const char
  *
  * @return              The allocated result, NULL on error.
  */
-void *talloc_array_size(const void *ctx, size_t size, unsigned count);
+_PUBLIC_ void *talloc_array_size(const void *ctx, size_t size, unsigned count);
 #else
 #define talloc_array_size(ctx, size, count) _talloc_array(ctx, size, count, __location__)
 #endif
@@ -1245,7 +1253,7 @@ size_t talloc_array_length(const void *ctx);
 void *talloc_zero_array(const void *ctx, #type, unsigned count);
 #else
 #define talloc_zero_array(ctx, type, count) (type *)_talloc_zero_array(ctx, sizeof(type), count, #type)
-void *_talloc_zero_array(const void *ctx,
+_PUBLIC_ void *_talloc_zero_array(const void *ctx,
                         size_t el_size,
                         unsigned count,
                         const char *name);
@@ -1282,10 +1290,10 @@ void *_talloc_zero_array(const void *ctx,
  *                      due to a lack of memory, or because the pointer has more
  *                      than one parent (see talloc_reference()).
  */
-void *talloc_realloc(const void *ctx, void *ptr, #type, size_t count);
+_PUBLIC_ void *talloc_realloc(const void *ctx, void *ptr, #type, size_t count);
 #else
 #define talloc_realloc(ctx, p, type, count) (type *)_talloc_realloc_array(ctx, p, sizeof(type), count, #type)
-void *_talloc_realloc_array(const void *ctx, void *ptr, size_t el_size, unsigned count, const char *name);
+_PUBLIC_ void *_talloc_realloc_array(const void *ctx, void *ptr, size_t el_size, unsigned count, const char *name);
 #endif
 
 #ifdef DOXYGEN
@@ -1306,7 +1314,7 @@ void *_talloc_realloc_array(const void *ctx, void *ptr, size_t el_size, unsigned
 void *talloc_realloc_size(const void *ctx, void *ptr, size_t size);
 #else
 #define talloc_realloc_size(ctx, ptr, size) _talloc_realloc(ctx, ptr, size, __location__)
-void *_talloc_realloc(const void *context, void *ptr, size_t size, const char *name);
+_PUBLIC_ void *_talloc_realloc(const void *context, void *ptr, size_t size, const char *name);
 #endif
 
 /**
@@ -1326,7 +1334,7 @@ void *_talloc_realloc(const void *context, void *ptr, size_t size, const char *n
  *
  * @return              The new chunk, NULL on error.
  */
-void *talloc_realloc_fn(const void *context, void *ptr, size_t size);
+_PUBLIC_ void *talloc_realloc_fn(const void *context, void *ptr, size_t size);
 
 /* @} ******************************************************************/
 
@@ -1361,7 +1369,7 @@ void *talloc_realloc_fn(const void *context, void *ptr, size_t size);
  *
  * @return              The duplicated string, NULL on error.
  */
-char *talloc_strdup(const void *t, const char *p);
+_PUBLIC_ char *talloc_strdup(const void *t, const char *p);
 
 /**
  * @brief Append a string to given string.
@@ -1387,7 +1395,7 @@ char *talloc_strdup(const void *t, const char *p);
  * @see talloc_strdup()
  * @see talloc_strdup_append_buffer()
  */
-char *talloc_strdup_append(char *s, const char *a);
+_PUBLIC_ char *talloc_strdup_append(char *s, const char *a);
 
 /**
  * @brief Append a string to a given buffer.
@@ -1423,7 +1431,7 @@ char *talloc_strdup_append(char *s, const char *a);
  * @see talloc_strdup_append()
  * @see talloc_array_length()
  */
-char *talloc_strdup_append_buffer(char *s, const char *a);
+_PUBLIC_ char *talloc_strdup_append_buffer(char *s, const char *a);
 
 /**
  * @brief Duplicate a length-limited string into a talloc chunk.
@@ -1445,7 +1453,7 @@ char *talloc_strdup_append_buffer(char *s, const char *a);
  *
  * @return              The duplicated string, NULL on error.
  */
-char *talloc_strndup(const void *t, const char *p, size_t n);
+_PUBLIC_ char *talloc_strndup(const void *t, const char *p, size_t n);
 
 /**
  * @brief Append at most n characters of a string to given string.
@@ -1474,7 +1482,7 @@ char *talloc_strndup(const void *t, const char *p, size_t n);
  * @see talloc_strndup()
  * @see talloc_strndup_append_buffer()
  */
-char *talloc_strndup_append(char *s, const char *a, size_t n);
+_PUBLIC_ char *talloc_strndup_append(char *s, const char *a, size_t n);
 
 /**
  * @brief Append at most n characters of a string to given buffer
@@ -1513,7 +1521,7 @@ char *talloc_strndup_append(char *s, const char *a, size_t n);
  * @see talloc_strndup_append()
  * @see talloc_array_length()
  */
-char *talloc_strndup_append_buffer(char *s, const char *a, size_t n);
+_PUBLIC_ char *talloc_strndup_append_buffer(char *s, const char *a, size_t n);
 
 /**
  * @brief Format a string given a va_list.
@@ -1536,7 +1544,7 @@ char *talloc_strndup_append_buffer(char *s, const char *a, size_t n);
  *
  * @return              The formatted string, NULL on error.
  */
-char *talloc_vasprintf(const void *t, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
+_PUBLIC_ char *talloc_vasprintf(const void *t, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
 
 /**
  * @brief Format a string given a va_list and append it to the given destination
@@ -1552,7 +1560,7 @@ char *talloc_vasprintf(const void *t, const char *fmt, va_list ap) PRINTF_ATTRIB
  *
  * @see talloc_vasprintf()
  */
-char *talloc_vasprintf_append(char *s, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
+_PUBLIC_ char *talloc_vasprintf_append(char *s, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
 
 /**
  * @brief Format a string given a va_list and append it to the given destination
@@ -1568,7 +1576,7 @@ char *talloc_vasprintf_append(char *s, const char *fmt, va_list ap) PRINTF_ATTRI
  *
  * @see talloc_vasprintf()
  */
-char *talloc_vasprintf_append_buffer(char *s, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
+_PUBLIC_ char *talloc_vasprintf_append_buffer(char *s, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
 
 /**
  * @brief Format a string.
@@ -1590,7 +1598,7 @@ char *talloc_vasprintf_append_buffer(char *s, const char *fmt, va_list ap) PRINT
  *
  * @return              The formatted string, NULL on error.
  */
-char *talloc_asprintf(const void *t, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
+_PUBLIC_ char *talloc_asprintf(const void *t, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
 
 /**
  * @brief Append a formatted string to another string.
@@ -1616,7 +1624,7 @@ char *talloc_asprintf(const void *t, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3)
  *
  * @return              The formatted string, NULL on error.
  */
-char *talloc_asprintf_append(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
+_PUBLIC_ char *talloc_asprintf_append(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
 
 /**
  * @brief Append a formatted string to another string.
@@ -1653,7 +1661,7 @@ char *talloc_asprintf_append(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3
  * @see talloc_asprintf()
  * @see talloc_asprintf_append()
  */
-char *talloc_asprintf_append_buffer(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
+_PUBLIC_ char *talloc_asprintf_append_buffer(char *s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
 
 /* @} ******************************************************************/
 
@@ -1693,7 +1701,7 @@ char *talloc_asprintf_append_buffer(char *s, const char *fmt, ...) PRINTF_ATTRIB
  *
  * @param[in]  private_data  Private pointer passed to callback.
  */
-void talloc_report_depth_cb(const void *ptr, int depth, int max_depth,
+_PUBLIC_ void talloc_report_depth_cb(const void *ptr, int depth, int max_depth,
                            void (*callback)(const void *ptr,
                                             int depth, int max_depth,
                                             int is_ref,
@@ -1714,7 +1722,7 @@ void talloc_report_depth_cb(const void *ptr, int depth, int max_depth,
  *
  * @param[in]  f        The file handle to print to.
  */
-void talloc_report_depth_file(const void *ptr, int depth, int max_depth, FILE *f);
+_PUBLIC_ void talloc_report_depth_file(const void *ptr, int depth, int max_depth, FILE *f);
 
 /**
  * @brief Print a summary report of all memory used by ptr.
@@ -1744,7 +1752,7 @@ void talloc_report_depth_file(const void *ptr, int depth, int max_depth, FILE *f
  *
  * @see talloc_report()
  */
-void talloc_report_full(const void *ptr, FILE *f);
+_PUBLIC_ void talloc_report_full(const void *ptr, FILE *f);
 
 /**
  * @brief Print a summary report of all memory used by ptr.
@@ -1772,7 +1780,7 @@ void talloc_report_full(const void *ptr, FILE *f);
  *
  * @see talloc_report_full()
  */
-void talloc_report(const void *ptr, FILE *f);
+_PUBLIC_ void talloc_report(const void *ptr, FILE *f);
 
 /**
  * @brief Enable tracking the use of NULL memory contexts.
@@ -1781,7 +1789,7 @@ void talloc_report(const void *ptr, FILE *f);
  * reporting on exit. Useful for when you want to do your own leak
  * reporting call via talloc_report_null_full();
  */
-void talloc_enable_null_tracking(void);
+_PUBLIC_ void talloc_enable_null_tracking(void);
 
 /**
  * @brief Enable tracking the use of NULL memory contexts.
@@ -1790,14 +1798,14 @@ void talloc_enable_null_tracking(void);
  * reporting on exit. Useful for when you want to do your own leak
  * reporting call via talloc_report_null_full();
  */
-void talloc_enable_null_tracking_no_autofree(void);
+_PUBLIC_ void talloc_enable_null_tracking_no_autofree(void);
 
 /**
  * @brief Disable tracking of the NULL memory context.
  *
  * This disables tracking of the NULL memory context.
  */
-void talloc_disable_null_tracking(void);
+_PUBLIC_ void talloc_disable_null_tracking(void);
 
 /**
  * @brief Enable leak report when a program exits.
@@ -1825,7 +1833,7 @@ void talloc_disable_null_tracking(void);
  *      iconv(UTF-16LE,UTF8)           contains     45 bytes in   2 blocks
  * @endcode
  */
-void talloc_enable_leak_report(void);
+_PUBLIC_ void talloc_enable_leak_report(void);
 
 /**
  * @brief Enable full leak report when a program exits.
@@ -1853,7 +1861,7 @@ void talloc_enable_leak_report(void);
  *      x1                             contains      1 bytes in   1 blocks (ref 0)
  * @endcode
  */
-void talloc_enable_leak_report_full(void);
+_PUBLIC_ void talloc_enable_leak_report_full(void);
 
 /**
  * @brief Set a custom "abort" function that is called on serious error.
@@ -1886,7 +1894,7 @@ void talloc_enable_leak_report_full(void);
  * @see talloc_set_log_fn()
  * @see talloc_get_type()
  */
-void talloc_set_abort_fn(void (*abort_fn)(const char *reason));
+_PUBLIC_ void talloc_set_abort_fn(void (*abort_fn)(const char *reason));
 
 /**
  * @brief Set a logging function.
@@ -1896,7 +1904,7 @@ void talloc_set_abort_fn(void (*abort_fn)(const char *reason));
  * @see talloc_set_log_stderr()
  * @see talloc_set_abort_fn()
  */
-void talloc_set_log_fn(void (*log_fn)(const char *message));
+_PUBLIC_ void talloc_set_log_fn(void (*log_fn)(const char *message));
 
 /**
  * @brief Set stderr as the output for logs.
@@ -1904,7 +1912,7 @@ void talloc_set_log_fn(void (*log_fn)(const char *message));
  * @see talloc_set_log_fn()
  * @see talloc_set_abort_fn()
  */
-void talloc_set_log_stderr(void);
+_PUBLIC_ void talloc_set_log_stderr(void);
 
 /**
  * @brief Set a max memory limit for the current context hierarchy
@@ -1926,7 +1934,7 @@ void talloc_set_log_stderr(void);
  * @param[in]  ctx             The talloc context to set the limit on
  * @param[in]  max_size        The (new) max_size
  */
-int talloc_set_memlimit(const void *ctx, size_t max_size) _DEPRECATED_;
+_PUBLIC_ int talloc_set_memlimit(const void *ctx, size_t max_size) _DEPRECATED_;
 
 /* @} ******************************************************************/