__attribute__((__format__ (__scanf__, format_idx, arg_idx)))
# define _XBT_GNUC_NORETURN __attribute__((__noreturn__))
# define _XBT_GNUC_UNUSED __attribute__((__unused__))
-# define _XBT_GNUC_CONSTRUCTOR __attribute__((__constructor__))
-# define _XBT_GNUC_DESTRUCTOR __attribute__((__destructor__))
+/* Constructor priorities exist since gcc 4.3. Apparently, they are however not
+ * supported on Macs. */
+# if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && !defined(__APPLE__)
+# define _XBT_GNUC_CONSTRUCTOR(prio) __attribute__((__constructor__ (prio)))
+# define _XBT_GNUC_DESTRUCTOR(prio) __attribute__((__destructor__ (prio)))
+# else
+# define _XBT_GNUC_CONSTRUCTOR(prio) __attribute__((__constructor__))
+# define _XBT_GNUC_DESTRUCTOR(prio) __attribute__((__destructor__))
+# endif
# undef _XBT_NEED_INIT_PRAGMA
#else /* !__GNUC__ */
# define _XBT_GNUC_SCANF( format_idx, arg_idx )
# define _XBT_GNUC_NORETURN
# define _XBT_GNUC_UNUSED
-# define _XBT_GNUC_CONSTRUCTOR
-# define _XBT_GNUC_DESTRUCTOR
+# define _XBT_GNUC_CONSTRUCTOR(prio)
+# define _XBT_GNUC_DESTRUCTOR(prio)
# define _XBT_NEED_INIT_PRAGMA 1
#endif /* !__GNUC__ */
#define TRUE 1
#define FALSE 0
-#define XBT_MAX_CHANNEL 10 /* FIXME: killme */
/*! C++ users need love */
#ifndef SG_BEGIN_DECL
# ifdef __cplusplus