Exportability taint of the headers
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index 43dbe35..cb555ef 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -9,6 +9,7 @@
 #ifndef __XML_PARSER_H__
 #define __XML_PARSER_H__
 
+#include <libxml/xmlversion.h>
 #include <libxml/tree.h>
 #include <libxml/dict.h>
 #include <libxml/valid.h>
@@ -736,9 +737,11 @@
 #ifdef __cplusplus
 }
 #endif
+
 #include <libxml/encoding.h>
 #include <libxml/xmlIO.h>
 #include <libxml/globals.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -747,138 +750,187 @@
 /*
  * Init/Cleanup
  */
-void		xmlInitParser		(void);
-void		xmlCleanupParser	(void);
+XMLPUBFUN void XMLCALL		
+		xmlInitParser		(void);
+XMLPUBFUN void XMLCALL		
+		xmlCleanupParser	(void);
 
 /*
  * Input functions
  */
-int		xmlParserInputRead	(xmlParserInputPtr in,
+XMLPUBFUN int XMLCALL		
+		xmlParserInputRead	(xmlParserInputPtr in,
 					 int len);
-int		xmlParserInputGrow	(xmlParserInputPtr in,
+XMLPUBFUN int XMLCALL		
+		xmlParserInputGrow	(xmlParserInputPtr in,
 					 int len);
 
 /*
  * xmlChar handling
  */
-xmlChar *	xmlStrdup		(const xmlChar *cur);
-xmlChar *	xmlStrndup		(const xmlChar *cur,
+XMLPUBFUN xmlChar * XMLCALL	
+		xmlStrdup		(const xmlChar *cur);
+XMLPUBFUN xmlChar * XMLCALL	
+		xmlStrndup		(const xmlChar *cur,
 					 int len);
-xmlChar *	xmlCharStrndup		(const char *cur,
+XMLPUBFUN xmlChar * XMLCALL	
+		xmlCharStrndup		(const char *cur,
 					 int len);
-xmlChar *	xmlCharStrdup		(const char *cur);
-xmlChar *	xmlStrsub		(const xmlChar *str,
+XMLPUBFUN xmlChar * XMLCALL	
+		xmlCharStrdup		(const char *cur);
+XMLPUBFUN xmlChar * XMLCALL	
+		xmlStrsub		(const xmlChar *str,
 					 int start,
 					 int len);
-const xmlChar *	xmlStrchr		(const xmlChar *str,
+XMLPUBFUN const xmlChar * XMLCALL	
+		xmlStrchr		(const xmlChar *str,
 					 xmlChar val);
-const xmlChar *	xmlStrstr		(const xmlChar *str,
+XMLPUBFUN const xmlChar * XMLCALL	
+		xmlStrstr		(const xmlChar *str,
 					 const xmlChar *val);
-const xmlChar *	xmlStrcasestr		(const xmlChar *str,
+XMLPUBFUN const xmlChar * XMLCALL	
+		xmlStrcasestr		(const xmlChar *str,
 					 xmlChar *val);
-int		xmlStrcmp		(const xmlChar *str1,
+XMLPUBFUN int XMLCALL		
+		xmlStrcmp		(const xmlChar *str1,
 					 const xmlChar *str2);
-int		xmlStrncmp		(const xmlChar *str1,
+XMLPUBFUN int XMLCALL		
+		xmlStrncmp		(const xmlChar *str1,
 					 const xmlChar *str2,
 					 int len);
-int		xmlStrcasecmp		(const xmlChar *str1,
+XMLPUBFUN int XMLCALL		
+		xmlStrcasecmp		(const xmlChar *str1,
 					 const xmlChar *str2);
-int		xmlStrncasecmp		(const xmlChar *str1,
+XMLPUBFUN int XMLCALL		
+		xmlStrncasecmp		(const xmlChar *str1,
 					 const xmlChar *str2,
 					 int len);
-int		xmlStrEqual		(const xmlChar *str1,
+XMLPUBFUN int XMLCALL		
+		xmlStrEqual		(const xmlChar *str1,
 					 const xmlChar *str2);
-int		xmlStrlen		(const xmlChar *str);
-xmlChar *	xmlStrcat		(xmlChar *cur,
+XMLPUBFUN int XMLCALL		
+		xmlStrlen		(const xmlChar *str);
+XMLPUBFUN xmlChar * XMLCALL	
+		xmlStrcat		(xmlChar *cur,
 					 const xmlChar *add);
-xmlChar *	xmlStrncat		(xmlChar *cur,
+XMLPUBFUN xmlChar * XMLCALL	
+		xmlStrncat		(xmlChar *cur,
 					 const xmlChar *add,
 					 int len);
 
 /*
  * Basic parsing Interfaces
  */
-xmlDocPtr	xmlParseDoc		(xmlChar *cur);
-xmlDocPtr	xmlParseMemory		(const char *buffer,
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlParseDoc		(xmlChar *cur);
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlParseMemory		(const char *buffer,
 					 int size);
-xmlDocPtr	xmlParseFile		(const char *filename);
-int		xmlSubstituteEntitiesDefault(int val);
-int		xmlKeepBlanksDefault	(int val);
-void		xmlStopParser		(xmlParserCtxtPtr ctxt);
-int		xmlPedanticParserDefault(int val);
-int		xmlLineNumbersDefault	(int val);
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlParseFile		(const char *filename);
+XMLPUBFUN int XMLCALL		
+		xmlSubstituteEntitiesDefault(int val);
+XMLPUBFUN int XMLCALL		
+		xmlKeepBlanksDefault	(int val);
+XMLPUBFUN void XMLCALL		
+		xmlStopParser		(xmlParserCtxtPtr ctxt);
+XMLPUBFUN int XMLCALL		
+		xmlPedanticParserDefault(int val);
+XMLPUBFUN int XMLCALL		
+		xmlLineNumbersDefault	(int val);
 
 /*
  * Recovery mode 
  */
-xmlDocPtr	xmlRecoverDoc		(xmlChar *cur);
-xmlDocPtr	xmlRecoverMemory	(const char *buffer,
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlRecoverDoc		(xmlChar *cur);
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlRecoverMemory	(const char *buffer,
 					 int size);
-xmlDocPtr	xmlRecoverFile		(const char *filename);
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlRecoverFile		(const char *filename);
 
 /*
  * Less common routines and SAX interfaces
  */
-int		xmlParseDocument	(xmlParserCtxtPtr ctxt);
-int		xmlParseExtParsedEnt	(xmlParserCtxtPtr ctxt);
-xmlDocPtr	xmlSAXParseDoc		(xmlSAXHandlerPtr sax,
+XMLPUBFUN int XMLCALL		
+		xmlParseDocument	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN int XMLCALL		
+		xmlParseExtParsedEnt	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlSAXParseDoc		(xmlSAXHandlerPtr sax,
 					 xmlChar *cur,
 					 int recovery);
-int		xmlSAXUserParseFile	(xmlSAXHandlerPtr sax,
+XMLPUBFUN int XMLCALL		
+		xmlSAXUserParseFile	(xmlSAXHandlerPtr sax,
 					 void *user_data,
 					 const char *filename);
-int		xmlSAXUserParseMemory	(xmlSAXHandlerPtr sax,
+XMLPUBFUN int XMLCALL		
+		xmlSAXUserParseMemory	(xmlSAXHandlerPtr sax,
 					 void *user_data,
 					 const char *buffer,
 					 int size);
-xmlDocPtr	xmlSAXParseMemory	(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlSAXParseMemory	(xmlSAXHandlerPtr sax,
 					 const char *buffer,
                                    	 int size,
 					 int recovery);
-xmlDocPtr	xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
 					 const char *buffer,
                                    	 int size,
 					 int recovery,
 					 void *data);
-xmlDocPtr	xmlSAXParseFile		(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlSAXParseFile		(xmlSAXHandlerPtr sax,
 					 const char *filename,
 					 int recovery);
-xmlDocPtr	xmlSAXParseFileWithData	(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlSAXParseFileWithData	(xmlSAXHandlerPtr sax,
 					 const char *filename,
 					 int recovery,
 					 void *data);
-xmlDocPtr	xmlSAXParseEntity	(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlSAXParseEntity	(xmlSAXHandlerPtr sax,
 					 const char *filename);
-xmlDocPtr	xmlParseEntity		(const char *filename);
-xmlDtdPtr	xmlParseDTD		(const xmlChar *ExternalID,
+XMLPUBFUN xmlDocPtr XMLCALL	
+		xmlParseEntity		(const char *filename);
+XMLPUBFUN xmlDtdPtr XMLCALL	
+		xmlParseDTD		(const xmlChar *ExternalID,
 					 const xmlChar *SystemID);
-xmlDtdPtr	xmlSAXParseDTD		(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDtdPtr XMLCALL	
+		xmlSAXParseDTD		(xmlSAXHandlerPtr sax,
 					 const xmlChar *ExternalID,
 					 const xmlChar *SystemID);
-xmlDtdPtr	xmlIOParseDTD		(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDtdPtr XMLCALL	
+		xmlIOParseDTD		(xmlSAXHandlerPtr sax,
 					 xmlParserInputBufferPtr input,
 					 xmlCharEncoding enc);
-int		xmlParseBalancedChunkMemory(xmlDocPtr doc,
+XMLPUBFUN int XMLCALL	
+		xmlParseBalancedChunkMemory(xmlDocPtr doc,
 					 xmlSAXHandlerPtr sax,
 					 void *user_data,
 					 int depth,
 					 const xmlChar *string,
 					 xmlNodePtr *lst);
-int           xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
+XMLPUBFUN int XMLCALL          
+		xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
                      xmlSAXHandlerPtr sax,
                      void *user_data,
                      int depth,
                      const xmlChar *string,
                      xmlNodePtr *lst,
                      int recover);
-int		xmlParseExternalEntity	(xmlDocPtr doc,
+XMLPUBFUN int XMLCALL		
+		xmlParseExternalEntity	(xmlDocPtr doc,
 					 xmlSAXHandlerPtr sax,
 					 void *user_data,
 					 int depth,
 					 const xmlChar *URL,
 					 const xmlChar *ID,
 					 xmlNodePtr *lst);
-int		xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
+XMLPUBFUN int XMLCALL		
+		xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
 					 const xmlChar *URL,
 					 const xmlChar *ID,
 					 xmlNodePtr *lst);
@@ -886,36 +938,46 @@
 /*
  * Parser contexts handling.
  */
-int		xmlInitParserCtxt	(xmlParserCtxtPtr ctxt);
-void		xmlClearParserCtxt	(xmlParserCtxtPtr ctxt);
-void		xmlFreeParserCtxt	(xmlParserCtxtPtr ctxt);
-void		xmlSetupParserForBuffer	(xmlParserCtxtPtr ctxt,
+XMLPUBFUN int XMLCALL		
+		xmlInitParserCtxt	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL		
+		xmlClearParserCtxt	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL		
+		xmlFreeParserCtxt	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN void XMLCALL		
+		xmlSetupParserForBuffer	(xmlParserCtxtPtr ctxt,
 					 const xmlChar* buffer,
 					 const char *filename);
-xmlParserCtxtPtr xmlCreateDocParserCtxt	(xmlChar *cur);
+XMLPUBFUN xmlParserCtxtPtr XMLCALL 
+		xmlCreateDocParserCtxt	(xmlChar *cur);
 
 /*
  * Reading/setting optional parsing features.
  */
 
-int		xmlGetFeaturesList	(int *len,
+XMLPUBFUN int XMLCALL		
+		xmlGetFeaturesList	(int *len,
 					 const char **result);
-int		xmlGetFeature		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN int XMLCALL		
+		xmlGetFeature		(xmlParserCtxtPtr ctxt,
 					 const char *name,
 					 void *result);
-int		xmlSetFeature		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN int XMLCALL		
+		xmlSetFeature		(xmlParserCtxtPtr ctxt,
 					 const char *name,
 					 void *value);
 
 /*
  * Interfaces for the Push mode.
  */
-xmlParserCtxtPtr xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlParserCtxtPtr XMLCALL 
+		xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
 					 void *user_data,
 					 const char *chunk,
 					 int size,
 					 const char *filename);
-int		 xmlParseChunk		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN int XMLCALL		 
+		xmlParseChunk		(xmlParserCtxtPtr ctxt,
 					 const char *chunk,
 					 int size,
 					 int terminate);
@@ -924,38 +986,45 @@
  * Special I/O mode.
  */
 
-xmlParserCtxtPtr xmlCreateIOParserCtxt	(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlParserCtxtPtr XMLCALL 
+		xmlCreateIOParserCtxt	(xmlSAXHandlerPtr sax,
 					 void *user_data,
 					 xmlInputReadCallback   ioread,
 					 xmlInputCloseCallback  ioclose,
 					 void *ioctx,
 					 xmlCharEncoding enc);
 
-xmlParserInputPtr xmlNewIOInputStream	(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlParserInputPtr XMLCALL 
+		xmlNewIOInputStream	(xmlParserCtxtPtr ctxt,
 					 xmlParserInputBufferPtr input,
 					 xmlCharEncoding enc);
 
 /*
  * Node infos.
  */
-const xmlParserNodeInfo*
+XMLPUBFUN const xmlParserNodeInfo* XMLCALL
 		xmlParserFindNodeInfo	(const xmlParserCtxtPtr ctxt,
 				         const xmlNodePtr node);
-void		xmlInitNodeInfoSeq	(xmlParserNodeInfoSeqPtr seq);
-void		xmlClearNodeInfoSeq	(xmlParserNodeInfoSeqPtr seq);
-unsigned long xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
+XMLPUBFUN void XMLCALL		
+		xmlInitNodeInfoSeq	(xmlParserNodeInfoSeqPtr seq);
+XMLPUBFUN void XMLCALL		
+		xmlClearNodeInfoSeq	(xmlParserNodeInfoSeqPtr seq);
+XMLPUBFUN unsigned long XMLCALL 
+		xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
                                          const xmlNodePtr node);
-void		xmlParserAddNodeInfo	(xmlParserCtxtPtr ctxt,
+XMLPUBFUN void XMLCALL		
+		xmlParserAddNodeInfo	(xmlParserCtxtPtr ctxt,
 					 const xmlParserNodeInfoPtr info);
 
 /*
  * External entities handling actually implemented in xmlIO.
  */
 
-void		xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
-xmlExternalEntityLoader
+XMLPUBFUN void XMLCALL		
+		xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
+XMLPUBFUN xmlExternalEntityLoader XMLCALL
 		xmlGetExternalEntityLoader(void);
-xmlParserInputPtr
+XMLPUBFUN xmlParserInputPtr XMLCALL
 		xmlLoadExternalEntity	(const char *URL,
 					 const char *ID,
 					 xmlParserCtxtPtr ctxt);