Tag the Exception constructor as a printf function

This allows the compiler to analyse the format strings and
arguments for correctness.
diff --git a/common/rdr/Exception.h b/common/rdr/Exception.h
index ea10f9d..f533dcc 100644
--- a/common/rdr/Exception.h
+++ b/common/rdr/Exception.h
@@ -21,12 +21,18 @@
 #ifndef __RDR_EXCEPTION_H__
 #define __RDR_EXCEPTION_H__
 
+#ifdef __GNUC__
+#  define __printf_attr(a, b) __attribute__((__format__ (__printf__, a, b)))
+#else
+#  define __printf_attr(a, b)
+#endif // __GNUC__
+
 namespace rdr {
 
   struct Exception {
     enum { len = 256 };
     char str_[len];
-    Exception(const char *format = 0, ...);
+    Exception(const char *format = 0, ...) __printf_attr(2, 3);
     virtual ~Exception() {}
     virtual const char* str() const { return str_; }
   };