+/****
+ **** Signals
+ ****/
+#ifdef HAVE_SIGNAL_H
+# include <signal.h>
+#endif
+
+/****
+ **** string handling (parts from http://www.ijs.si/software/snprintf/)
+ ****/
+
+/* prototype of C99 functions */
+#ifdef HAVE_SNPRINTF
+#include <stdio.h>
+#else
+extern int snprintf(char *, size_t, const char *, /*args*/ ...);
+extern int vsnprintf(char *, size_t, const char *, va_list);
+#endif
+
+/* use internal functions when OS provided ones are borken */
+#if defined(HAVE_SNPRINTF) && defined(PREFER_PORTABLE_SNPRINTF)
+extern int portable_snprintf(char *str, size_t str_m, const char *fmt, /*args*/ ...);
+extern int portable_vsnprintf(char *str, size_t str_m, const char *fmt, va_list ap);
+#define snprintf portable_snprintf
+#define vsnprintf portable_vsnprintf
+#endif
+
+/* prototype of GNU functions */
+extern int asprintf (char **ptr, const char *fmt, /*args*/ ...);
+extern int vasprintf (char **ptr, const char *fmt, va_list ap);
+extern int asnprintf (char **ptr, size_t str_m, const char *fmt, /*args*/ ...);
+extern int vasnprintf(char **ptr, size_t str_m, const char *fmt, va_list ap);
+
+/*
+ * That's needed to protect solaris's printf from ever seing NULL associated to a %s format
+ * (without adding an extra check on working platforms :)
+ */
+
+#ifdef PRINTF_NULL_WORKING
+# define PRINTF_STR(a) (a)
+#else
+# define PRINTF_STR(a) (a)?:"(null)"
+#endif
+
+/*
+ * What we need to extract the backtrace in exception handling code
+ */
+#ifdef HAVE_EXECINFO_H
+# include <execinfo.h>
+#endif
+
+/****
+ **** Some debugging functions. Can't we find a better place for this??
+ ****/
+void hexa_print(const char*name, unsigned char *data, int size);
+const char *hexa_str(unsigned char *data, int size, int downside);
+
+/* Windows __declspec(). */
+#if defined (_XBT_USE_DECLSPEC) /* using export/import technique */
+
+# ifndef _XBT_EXPORT_DECLSPEC
+# define _XBT_EXPORT_DECLSPEC
+# endif
+
+# ifndef _XBT_IMPORT_DECLSPEC
+# define _XBT_IMPORT_DECLSPEC
+# endif
+
+# if defined (_XBT_DESIGNATED_DLL) /* this is a lib which will contain xbt exports */
+# define _XBT_DECLSPEC _XBT_EXPORT_DECLSPEC
+# else
+# define _XBT_DECLSPEC _XBT_IMPORT_DECLSPEC /* other modules, importing xbt exports */
+# endif
+
+#else /* not using DLL export/import specifications */
+
+# define _XBT_DECLSPEC
+
+#endif /* #if defined (_XBT_USE_DECLSPEC) */
+
+#if !defined (_XBT_CALL)
+#define _XBT_CALL
+#endif
+