Index: trunk/include/lru_cache.h
===================================================================
--- trunk/include/lru_cache.h	(revision 200)
+++ trunk/include/lru_cache.h	(revision 201)
@@ -35,5 +35,11 @@
 #include <string.h>
 #include <unistd.h>
-#include "talloc.h"
+#include <talloc.h>
+
+/* GCC-specific macro for library exports */
+#ifdef _EXPORT
+#undef _EXPORT
+#endif
+#define _EXPORT __attribute__((visibility("default")))
 
 struct lru_cache_element;
@@ -68,4 +74,5 @@
  * XXX: finish documenting.
  */
+_EXPORT
 lru_cache* lru_cache_create(uint32_t max_keys, uint32_t secret);
 
@@ -74,4 +81,5 @@
  * XXX: finish documenting.
  */
+_EXPORT
 lru_cache* lru_cache_create_ctx(void* talloc_ctx, uint32_t max_keys, 
 				uint32_t secret, bool talloc_data);
@@ -81,4 +89,5 @@
  * XXX: finish documenting.
  */
+_EXPORT
 void lru_cache_destroy(lru_cache* ht);
 
@@ -87,4 +96,5 @@
  * XXX: finish documenting.
  */
+_EXPORT
 bool lru_cache_update(lru_cache* ht, const void* index, 
 		      uint32_t index_len, void* data);
@@ -96,4 +106,5 @@
  *         If no data was found at index, NULL is returned.
  */
+_EXPORT
 void* lru_cache_find(lru_cache* ht, const void* index, 
 		     uint32_t index_len);
@@ -107,4 +118,5 @@
  *         at index.
  */
+_EXPORT
 bool lru_cache_remove(lru_cache* ht, const void* index, 
 		      uint32_t index_len);
Index: trunk/include/range_list.h
===================================================================
--- trunk/include/range_list.h	(revision 200)
+++ trunk/include/range_list.h	(revision 201)
@@ -36,5 +36,11 @@
 #include <string.h>
 #include <math.h>
-#include "talloc.h"
+#include <talloc.h>
+
+/* GCC-specific macro for library exports */
+#ifdef _EXPORT
+#undef _EXPORT
+#endif
+#define _EXPORT __attribute__((visibility("default")))
 
 typedef struct _range_list_element
@@ -59,4 +65,5 @@
  * @return A newly allocated range_list, or NULL if an error occurred.
  */
+_EXPORT
 range_list* range_list_new();
 
@@ -69,4 +76,5 @@
  * @param rl the range_list to be free()d.
  */
+_EXPORT
 void range_list_free(range_list* rl);
 
@@ -78,4 +86,5 @@
  * @return The number of elements currently in the list.
  */
+_EXPORT
 uint32_t range_list_size(const range_list* rl);
 
@@ -97,4 +106,5 @@
  * errors may also be possible.
  */
+_EXPORT
 bool range_list_add(range_list* rl, uint32_t offset, uint32_t length, void* data);
 
@@ -109,4 +119,5 @@
  * @return true if the element was successfully removed, false otherwise.
  */
+_EXPORT
 bool range_list_remove(range_list* rl, uint32_t index);
 
@@ -120,4 +131,5 @@
  *         available.
  */
+_EXPORT
 const range_list_element* range_list_get(const range_list* rl, uint32_t index);
 
@@ -130,4 +142,5 @@
  * @return A matching element index or a negative value if none could be found.
  */
+_EXPORT
 int32_t range_list_find(const range_list* rl, uint32_t offset);
 
@@ -144,4 +157,5 @@
  *        element was never set.
  */
+_EXPORT
 void* range_list_find_data(const range_list* rl, uint32_t offset);
 
@@ -165,4 +179,5 @@
  * @return true if the element was successfully split, false otherwise.
  */
+_EXPORT
 bool range_list_split_element(range_list* rl, uint32_t index, uint32_t offset);
 
@@ -177,4 +192,5 @@
  * @return true if the specified range exists and is complete, false otherwise.
  */
+_EXPORT
 bool range_list_has_range(range_list* rl, uint32_t start, uint32_t length);
 
Index: trunk/include/regfi.h
===================================================================
--- trunk/include/regfi.h	(revision 200)
+++ trunk/include/regfi.h	(revision 201)
@@ -71,8 +71,8 @@
 #include <iconv.h>
 #include <pthread.h>
+#include <talloc.h>
 
 /* regfi headers */
 #include <byteorder.h>
-#include <talloc.h>
 #include <winsec.h>
 #include <void_stack.h>
@@ -80,4 +80,9 @@
 #include <lru_cache.h>
 
+/* GCC-specific macro for library exports */
+#ifdef _EXPORT
+#undef _EXPORT
+#endif
+#define _EXPORT __attribute__((visibility("default")))
 
 
@@ -859,5 +864,6 @@
  * @ingroup regfiBase
  */
-REGFI_FILE*           regfi_alloc(int fd);
+_EXPORT
+REGFI_FILE* regfi_alloc(int fd);
 
 
@@ -874,5 +880,6 @@
  * @ingroup regfiBase
  */
-REGFI_FILE*           regfi_alloc_cb(REGFI_RAW_FILE* file_cb);
+_EXPORT
+REGFI_FILE* regfi_alloc_cb(REGFI_RAW_FILE* file_cb);
 
 
@@ -883,5 +890,6 @@
  * @ingroup regfiBase
  */
-void                  regfi_free(REGFI_FILE* file);
+_EXPORT
+void regfi_free(REGFI_FILE* file);
 
 
@@ -893,4 +901,5 @@
  * @ingroup regfiBase
  */
+_EXPORT
 char* regfi_log_get_str();
 
@@ -922,4 +931,5 @@
  * @ingroup regfiBase
  */
+_EXPORT
 bool regfi_log_set_mask(uint16_t mask);
 
@@ -939,4 +949,5 @@
  * @ingroup regfiBase
  */
+_EXPORT
 void regfi_free_record(const void* record);
 
@@ -969,5 +980,6 @@
  * @ingroup regfiIteratorLayer
  */
-REGFI_ITERATOR*       regfi_iterator_new(REGFI_FILE* file,
+_EXPORT
+REGFI_ITERATOR* regfi_iterator_new(REGFI_FILE* file,
 					 REGFI_ENCODING output_encoding);
 
@@ -981,5 +993,6 @@
  * @ingroup regfiIteratorLayer
  */
-void                  regfi_iterator_free(REGFI_ITERATOR* i);
+_EXPORT
+void regfi_iterator_free(REGFI_ITERATOR* i);
 
 
@@ -997,5 +1010,6 @@
  * @ingroup regfiIteratorLayer
  */
-bool                  regfi_iterator_down(REGFI_ITERATOR* i);
+_EXPORT
+bool regfi_iterator_down(REGFI_ITERATOR* i);
 
 
@@ -1009,5 +1023,6 @@
  * @ingroup regfiIteratorLayer
  */
-bool                  regfi_iterator_up(REGFI_ITERATOR* i);
+_EXPORT
+bool regfi_iterator_up(REGFI_ITERATOR* i);
 
 
@@ -1020,5 +1035,6 @@
  * @ingroup regfiIteratorLayer
  */
-bool                  regfi_iterator_to_root(REGFI_ITERATOR* i);
+_EXPORT
+bool regfi_iterator_to_root(REGFI_ITERATOR* i);
 
 
@@ -1041,4 +1057,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 bool regfi_iterator_walk_path(REGFI_ITERATOR* i, const char** path);
 
@@ -1052,4 +1069,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 const REGFI_NK_REC* regfi_iterator_cur_key(REGFI_ITERATOR* i);
 
@@ -1063,4 +1081,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 const REGFI_SK_REC* regfi_iterator_cur_sk(REGFI_ITERATOR* i);
 
@@ -1075,4 +1094,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 bool regfi_iterator_first_subkey(REGFI_ITERATOR* i);
 
@@ -1088,4 +1108,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 const REGFI_NK_REC* regfi_iterator_cur_subkey(REGFI_ITERATOR* i);
 
@@ -1099,4 +1120,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 bool regfi_iterator_next_subkey(REGFI_ITERATOR* i);
 
@@ -1113,4 +1135,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 bool regfi_iterator_find_subkey(REGFI_ITERATOR* i, const char* subkey_name);
 
@@ -1125,4 +1148,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 bool regfi_iterator_first_value(REGFI_ITERATOR* i);
 
@@ -1138,4 +1162,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 const REGFI_VK_REC* regfi_iterator_cur_value(REGFI_ITERATOR* i);
 
@@ -1149,4 +1174,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 bool regfi_iterator_next_value(REGFI_ITERATOR* i);
 
@@ -1163,6 +1189,7 @@
  * @ingroup regfiIteratorLayer
  */
-bool                  regfi_iterator_find_value(REGFI_ITERATOR* i, 
-						const char* value_name);
+_EXPORT
+bool regfi_iterator_find_value(REGFI_ITERATOR* i, 
+			       const char* value_name);
 
 /** Retrieves classname for a given key.
@@ -1176,4 +1203,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 const REGFI_CLASSNAME* regfi_iterator_fetch_classname(REGFI_ITERATOR* i, 
 						      const REGFI_NK_REC* key);
@@ -1190,4 +1218,5 @@
  * @ingroup regfiIteratorLayer
  */
+_EXPORT
 const REGFI_DATA* regfi_iterator_fetch_data(REGFI_ITERATOR* i,
 					    const REGFI_VK_REC* value);
@@ -1207,7 +1236,8 @@
  * @ingroup regfiGlueLayer
  */
-REGFI_NK_REC*         regfi_load_key(REGFI_FILE* file, uint32_t offset, 
-				     REGFI_ENCODING output_encoding, 
-				     bool strict);
+_EXPORT
+REGFI_NK_REC* regfi_load_key(REGFI_FILE* file, uint32_t offset, 
+			     REGFI_ENCODING output_encoding, 
+			     bool strict);
 
 
@@ -1218,29 +1248,32 @@
  * @ingroup regfiGlueLayer
  */
-REGFI_VK_REC*         regfi_load_value(REGFI_FILE* file, uint32_t offset, 
-				       REGFI_ENCODING output_encoding, 
+_EXPORT
+REGFI_VK_REC* regfi_load_value(REGFI_FILE* file, uint32_t offset, 
+			       REGFI_ENCODING output_encoding, 
+			       bool strict);
+
+
+/** Loads a logical subkey list in its entirety which may span multiple records.
+ *
+ * XXX: finish documenting
+ *
+ * @ingroup regfiGlueLayer
+ */
+_EXPORT
+REGFI_SUBKEY_LIST* regfi_load_subkeylist(REGFI_FILE* file, uint32_t offset,
+					 uint32_t num_keys, uint32_t max_size,
+					 bool strict);
+
+
+/** Loads a valuelist.
+ *
+ * XXX: finish documenting
+ *
+ * @ingroup regfiGlueLayer
+ */
+_EXPORT
+REGFI_VALUE_LIST* regfi_load_valuelist(REGFI_FILE* file, uint32_t offset, 
+				       uint32_t num_values, uint32_t max_size,
 				       bool strict);
-
-
-/** Loads a logical subkey list in its entirety which may span multiple records.
- *
- * XXX: finish documenting
- *
- * @ingroup regfiGlueLayer
- */
-REGFI_SUBKEY_LIST*    regfi_load_subkeylist(REGFI_FILE* file, uint32_t offset,
-					    uint32_t num_keys, uint32_t max_size,
-					    bool strict);
-
-
-/** Loads a valuelist.
- *
- * XXX: finish documenting
- *
- * @ingroup regfiGlueLayer
- */
-REGFI_VALUE_LIST*     regfi_load_valuelist(REGFI_FILE* file, uint32_t offset, 
-					   uint32_t num_values, uint32_t max_size,
-					   bool strict);
 
 
@@ -1252,7 +1285,8 @@
  * @ingroup regfiGlueLayer
  */
-REGFI_BUFFER          regfi_load_data(REGFI_FILE* file, uint32_t voffset,
-				      uint32_t length, bool data_in_offset,
-				      bool strict);
+_EXPORT
+REGFI_BUFFER regfi_load_data(REGFI_FILE* file, uint32_t voffset,
+			     uint32_t length, bool data_in_offset,
+			     bool strict);
 
 
@@ -1263,8 +1297,9 @@
  * @ingroup regfiGlueLayer
  */
-REGFI_BUFFER          regfi_load_big_data(REGFI_FILE* file, uint32_t offset, 
-					  uint32_t data_length,uint32_t cell_length,
-					  range_list* used_ranges,
-					  bool strict);
+_EXPORT
+REGFI_BUFFER regfi_load_big_data(REGFI_FILE* file, uint32_t offset, 
+				 uint32_t data_length,uint32_t cell_length,
+				 range_list* used_ranges,
+				 bool strict);
 
 
@@ -1276,7 +1311,8 @@
  * @ingroup regfiGlueLayer
  */
-bool                  regfi_interpret_data(REGFI_FILE* file, 
-					   REGFI_ENCODING string_encoding,
-					   uint32_t type, REGFI_DATA* data);
+_EXPORT
+bool regfi_interpret_data(REGFI_FILE* file, 
+			  REGFI_ENCODING string_encoding,
+			  uint32_t type, REGFI_DATA* data);
 
 
@@ -1290,6 +1326,7 @@
  * @ingroup regfiGlueLayer
  */
-const REGFI_SK_REC*   regfi_load_sk(REGFI_FILE* file, uint32_t offset,
-				    bool strict);
+_EXPORT
+const REGFI_SK_REC* regfi_load_sk(REGFI_FILE* file, uint32_t offset,
+				  bool strict);
 
 
@@ -1300,5 +1337,6 @@
  * @ingroup regfiGlueLayer
  */
-const REGFI_HBIN*     regfi_lookup_hbin(REGFI_FILE* file, uint32_t offset);
+_EXPORT
+const REGFI_HBIN* regfi_lookup_hbin(REGFI_FILE* file, uint32_t offset);
 
 
@@ -1310,7 +1348,10 @@
 /******************************************************************************/
 
-REGFI_FILE*           regfi_parse_regf(REGFI_RAW_FILE* file_cb, bool strict);
-REGFI_HBIN*           regfi_parse_hbin(REGFI_FILE* file, uint32_t offset, 
-				       bool strict);
+_EXPORT
+REGFI_FILE* regfi_parse_regf(REGFI_RAW_FILE* file_cb, bool strict);
+
+_EXPORT
+REGFI_HBIN* regfi_parse_hbin(REGFI_FILE* file, uint32_t offset, 
+			     bool strict);
 
 
@@ -1327,6 +1368,7 @@
  * @ingroup regfiParseLayer
  */
-REGFI_NK_REC*         regfi_parse_nk(REGFI_FILE* file, uint32_t offset,
-				     uint32_t max_size, bool strict);
+_EXPORT
+REGFI_NK_REC* regfi_parse_nk(REGFI_FILE* file, uint32_t offset,
+			     uint32_t max_size, bool strict);
 
 
@@ -1337,6 +1379,7 @@
  * @ingroup regfiParseLayer
  */
-REGFI_SUBKEY_LIST*    regfi_parse_subkeylist(REGFI_FILE* file, uint32_t offset,
-					     uint32_t max_size, bool strict);
+_EXPORT
+REGFI_SUBKEY_LIST* regfi_parse_subkeylist(REGFI_FILE* file, uint32_t offset,
+					  uint32_t max_size, bool strict);
 
 
@@ -1347,6 +1390,7 @@
  * @ingroup regfiParseLayer
  */
-REGFI_VK_REC*         regfi_parse_vk(REGFI_FILE* file, uint32_t offset, 
-				     uint32_t max_size, bool strict);
+_EXPORT
+REGFI_VK_REC* regfi_parse_vk(REGFI_FILE* file, uint32_t offset, 
+			     uint32_t max_size, bool strict);
 
 
@@ -1357,6 +1401,7 @@
  * @ingroup regfiParseLayer
  */
-REGFI_SK_REC*         regfi_parse_sk(REGFI_FILE* file, uint32_t offset, 
-				     uint32_t max_size, bool strict);
+_EXPORT
+REGFI_SK_REC* regfi_parse_sk(REGFI_FILE* file, uint32_t offset, 
+			     uint32_t max_size, bool strict);
 
 
@@ -1370,5 +1415,6 @@
  * @ingroup regfiParseLayer
  */
-range_list*           regfi_parse_unalloc_cells(REGFI_FILE* file);
+_EXPORT
+range_list* regfi_parse_unalloc_cells(REGFI_FILE* file);
 
 
@@ -1379,7 +1425,8 @@
  * @ingroup regfiParseLayer
  */
-bool                  regfi_parse_cell(REGFI_RAW_FILE* file_cb, uint32_t offset,
-				       uint8_t* hdr, uint32_t hdr_len,
-				       uint32_t* cell_length, bool* unalloc);
+_EXPORT
+bool regfi_parse_cell(REGFI_RAW_FILE* file_cb, uint32_t offset,
+		      uint8_t* hdr, uint32_t hdr_len,
+		      uint32_t* cell_length, bool* unalloc);
 
 
@@ -1390,7 +1437,8 @@
  * @ingroup regfiParseLayer
  */
-uint8_t*                regfi_parse_classname(REGFI_FILE* file, uint32_t offset,
-					    uint16_t* name_length, 
-					    uint32_t max_size, bool strict);
+_EXPORT
+uint8_t* regfi_parse_classname(REGFI_FILE* file, uint32_t offset,
+			       uint16_t* name_length, 
+			       uint32_t max_size, bool strict);
 
 
@@ -1401,6 +1449,7 @@
  * @ingroup regfiParseLayer
  */
-REGFI_BUFFER          regfi_parse_data(REGFI_FILE* file, uint32_t offset,
-				       uint32_t length, bool strict);
+_EXPORT
+REGFI_BUFFER regfi_parse_data(REGFI_FILE* file, uint32_t offset,
+			      uint32_t length, bool strict);
 
 
@@ -1412,6 +1461,7 @@
  * @ingroup regfiParseLayer
  */
-REGFI_BUFFER          regfi_parse_little_data(REGFI_FILE* file, uint32_t voffset, 
-					      uint32_t length, bool strict);
+_EXPORT
+REGFI_BUFFER regfi_parse_little_data(REGFI_FILE* file, uint32_t voffset, 
+				     uint32_t length, bool strict);
 
 
@@ -1426,15 +1476,23 @@
 ssize_t               regfi_raw_read(REGFI_RAW_FILE* self, 
 				     void* buf, size_t count);
+_EXPORT
 off_t                 regfi_seek(REGFI_RAW_FILE* file_cb, 
 				 off_t offset, int whence);
+_EXPORT
 uint32_t              regfi_read(REGFI_RAW_FILE* file_cb, 
 				 uint8_t* buf, uint32_t* length);
 
+_EXPORT
 const char*           regfi_type_val2str(unsigned int val);
+_EXPORT
 int                   regfi_type_str2val(const char* str);
 
+_EXPORT
 char*                 regfi_get_sacl(WINSEC_DESC* sec_desc);
+_EXPORT
 char*                 regfi_get_dacl(WINSEC_DESC* sec_desc);
+_EXPORT
 char*                 regfi_get_owner(WINSEC_DESC* sec_desc);
+_EXPORT
 char*                 regfi_get_group(WINSEC_DESC* sec_desc);
 
@@ -1449,4 +1507,5 @@
 REGFI_NK_REC*         regfi_copy_nk(const REGFI_NK_REC* nk);
 REGFI_VK_REC*         regfi_copy_vk(const REGFI_VK_REC* vk);
+_EXPORT
 int32_t               regfi_calc_maxsize(REGFI_FILE* file, uint32_t offset);
 int32_t               regfi_conv_charset(const char* input_charset, 
@@ -1454,13 +1513,18 @@
 					 uint8_t* input, char* output, 
 					 uint32_t input_len, uint32_t output_max);
+_EXPORT
 REGFI_DATA*           regfi_buffer_to_data(REGFI_BUFFER raw_data);
 
 /* XXX: move to base API and document */
+_EXPORT
 void                  regfi_unix2nt_time(REGFI_NTTIME* nt, time_t t);
+_EXPORT
 time_t                regfi_nt2unix_time(const REGFI_NTTIME* nt);
 
 
+_EXPORT
 void regfi_interpret_keyname(REGFI_FILE* file, REGFI_NK_REC* nk, 
 			     REGFI_ENCODING output_encoding, bool strict);
+_EXPORT
 void regfi_interpret_valuename(REGFI_FILE* file, REGFI_VK_REC* vk, 
 			       REGFI_ENCODING output_encoding, bool strict);
Index: trunk/include/void_stack.h
===================================================================
--- trunk/include/void_stack.h	(revision 200)
+++ trunk/include/void_stack.h	(revision 201)
@@ -32,5 +32,11 @@
 #include <stdbool.h>
 #include <string.h>
-#include "talloc.h"
+#include <talloc.h>
+
+/* GCC-specific macro for library exports */
+#ifdef _EXPORT
+#undef _EXPORT
+#endif
+#define _EXPORT __attribute__((visibility("default")))
 
 /** XXX: document this. */
@@ -59,4 +65,5 @@
  *         or NULL if an error occurred.
  */
+_EXPORT
 void_stack* void_stack_new(unsigned short max_size);
 
@@ -68,4 +75,5 @@
  * @return a pointer to the duplicate void_stack, or NULL if an error occurred.
  */
+_EXPORT
 void_stack* void_stack_copy(const void_stack* v);
 
@@ -78,4 +86,5 @@
  *         (which will be in reverse order), or NULL if an error occurred.
  */
+_EXPORT
 void_stack* void_stack_copy_reverse(const void_stack* v);
 
@@ -86,4 +95,5 @@
  * @param stack the stack to be free()d.
  */
+_EXPORT
 void void_stack_free(void_stack* stack);
 
@@ -98,4 +108,5 @@
  * @param stack the stack to be free()d.
  */
+_EXPORT
 void void_stack_free_deep(void_stack* stack);
 
@@ -107,4 +118,5 @@
  * @return the number of elements currently on the stack.
  */
+_EXPORT
 unsigned short void_stack_size(const void_stack* stack);
 
@@ -117,4 +129,5 @@
  *         on the stack.
  */
+_EXPORT
 void* void_stack_pop(void_stack* stack);
 
@@ -127,4 +140,5 @@
  * @return true if the element was successfully added, false otherwise.
  */
+_EXPORT
 bool void_stack_push(void_stack* stack, void* e);
 
@@ -137,4 +151,5 @@
  *         no elements exist in the stack.
  */
+_EXPORT
 const void* void_stack_cur(const void_stack* stack);
 
@@ -146,4 +161,5 @@
  * @return a new void_stack_iterator, or NULL if an error occurred.
  */
+_EXPORT
 void_stack_iterator* void_stack_iterator_new(const void_stack* stack);
 
@@ -155,4 +171,5 @@
  * @param iter the void_stack_iterator to be free()d.
  */
+_EXPORT
 void void_stack_iterator_free(void_stack_iterator* iter);
 
@@ -166,4 +183,5 @@
  * @return a pointer to the next element.
  */
+_EXPORT
 const void* void_stack_iterator_next(void_stack_iterator* iter);
 
Index: trunk/include/winsec.h
===================================================================
--- trunk/include/winsec.h	(revision 200)
+++ trunk/include/winsec.h	(revision 201)
@@ -44,7 +44,13 @@
 #include <sys/types.h>
 #include <unistd.h>
-
-#include "talloc.h"
+#include <talloc.h>
+
 #include "byteorder.h"
+
+/* GCC-specific macro for library exports */
+#ifdef _EXPORT
+#undef _EXPORT
+#endif
+#define _EXPORT __attribute__((visibility("default")))
 
 
@@ -217,4 +223,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 WINSEC_DESC* winsec_parse_descriptor(const uint8_t* buf, uint32_t buf_len);
 
@@ -224,4 +231,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 void winsec_free_descriptor(WINSEC_DESC* desc);
 
@@ -230,4 +238,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 WINSEC_DESC* winsec_parse_desc(void* talloc_ctx,
 			       const uint8_t* buf, uint32_t buf_len);
@@ -237,4 +246,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 WINSEC_ACL* winsec_parse_acl(void* talloc_ctx, 
 			     const uint8_t* buf, uint32_t buf_len);
@@ -244,4 +254,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 WINSEC_ACE* winsec_parse_ace(void* talloc_ctx, 
 			     const uint8_t* buf, uint32_t buf_len);
@@ -251,4 +262,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 WINSEC_DOM_SID* winsec_parse_dom_sid(void* talloc_ctx, 
 				     const uint8_t* buf, uint32_t buf_len);
@@ -258,4 +270,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 WINSEC_UUID* winsec_parse_uuid(void* talloc_ctx, 
 			       const uint8_t* buf, uint32_t buf_len);
@@ -266,4 +279,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 size_t winsec_sid_size(const WINSEC_DOM_SID* sid);
 
@@ -272,4 +286,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 int winsec_sid_compare_auth(const WINSEC_DOM_SID* sid1, const WINSEC_DOM_SID* sid2);
 
@@ -278,4 +293,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 int winsec_sid_compare(const WINSEC_DOM_SID* sid1, const WINSEC_DOM_SID* sid2);
 
@@ -284,4 +300,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 bool winsec_sid_equal(const WINSEC_DOM_SID* sid1, const WINSEC_DOM_SID* sid2);
 
@@ -290,4 +307,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 bool winsec_desc_equal(WINSEC_DESC* s1, WINSEC_DESC* s2);
 
@@ -296,4 +314,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 bool winsec_acl_equal(WINSEC_ACL* s1, WINSEC_ACL* s2);
 
@@ -302,4 +321,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 bool winsec_ace_equal(WINSEC_ACE* s1, WINSEC_ACE* s2);
 
@@ -308,4 +328,5 @@
  * XXX: finish documenting
  */
+_EXPORT
 bool winsec_ace_object(uint8_t type);
 
