Add sentinel attribute to printxvals

* gcc_compat.h (ATTRIBUTE_SENTINEL): New macro.
* defs.h (printxvals): Add ATTRIBUTE_SENTINEL.
diff --git a/defs.h b/defs.h
index fb77b99..ac59349 100644
--- a/defs.h
+++ b/defs.h
@@ -554,7 +554,8 @@
 	ATTRIBUTE_FORMAT((printf, 2, 0));
 
 extern void printaddr(long);
-extern void printxvals(const unsigned int, const char *, const struct xlat *, ...);
+extern void printxvals(const unsigned int, const char *, const struct xlat *, ...)
+	ATTRIBUTE_SENTINEL;
 #define printxval(xlat, val, dflt) printxvals(val, dflt, xlat, NULL)
 extern int printargs(struct tcb *);
 extern int printargs_u(struct tcb *);
diff --git a/gcc_compat.h b/gcc_compat.h
index 1f2c835..c06d3c1 100644
--- a/gcc_compat.h
+++ b/gcc_compat.h
@@ -64,6 +64,12 @@
 # define ATTRIBUTE_NOINLINE	/* empty */
 #endif
 
+#if GNUC_PREREQ(4, 0)
+# define ATTRIBUTE_SENTINEL	__attribute__((__sentinel__))
+#else
+# define ATTRIBUTE_SENTINEL	/* empty */
+#endif
+
 #if GNUC_PREREQ(4, 3)
 # define ATTRIBUTE_ALLOC_SIZE(args)	__attribute__((__alloc_size__ args))
 #else