fixed warnings when compiled without legacy-mode
[util-vserver.git] / util-vserver / compat.h
index 60a79d7..a7d7ab7 100644 (file)
 #if defined(__GNUC__)
 #  define UNUSED                __attribute__((__unused__))
 #  define NORETURN              __attribute__((__noreturn__))
-#  if __GNUC__>3 || (__GNUC__==3 && __GNUC__MINOR>=3)
+#  define CONST                        __attribute__((__const__))
+#  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30300
 #    define NONNULL(ARGS)      __attribute__((__nonnull__ ARGS))
 #    define ALWAYSINLINE        __attribute__((__always_inline__))
 #  else
 #    define NONNULL(ARGS)
 #    define ALWAYSINLINE
+#    define PURE
+#  endif
+#  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30303
+#    define PURE               __attribute__((__pure__))
+#  else
+#    define PURE
 #  endif
 #else
 #  define NONNULL(ARGS)
 #  define UNUSED
 #  define NORETURN
 #  define ALWAYSINLINE
+#  define PURE
+#  define CONST
+#endif
+
+  // shamelessly stolen from dietlibc
+#define LINK_WARNING(symbol,msg)                                       \
+  __asm__ (".section .gnu.warning." symbol "\n\t.string \"" msg "\"\n\t.previous")
+
+#if !defined(__builtin_expect) && (__GNUC__+0)<3
+#  define __builtin_expect(foo,bar)    (foo)
 #endif
 
 #if !defined(__STDC_VERSION__) || (__STDC_VERSION__<199901L)