285 (__clang_major__ >= 3 && __clang_minor__ >= 1)) || \ |
285 (__clang_major__ >= 3 && __clang_minor__ >= 1)) || \ |
286 ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) |
286 ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) |
287 // Tested to work with clang version 3.1 and better. |
287 // Tested to work with clang version 3.1 and better. |
288 #define PRAGMA_DIAG_PUSH _Pragma("GCC diagnostic push") |
288 #define PRAGMA_DIAG_PUSH _Pragma("GCC diagnostic push") |
289 #define PRAGMA_DIAG_POP _Pragma("GCC diagnostic pop") |
289 #define PRAGMA_DIAG_POP _Pragma("GCC diagnostic pop") |
290 #define PRAGMA_FORMAT_NONLITERAL_IGNORED_EXTERNAL |
|
291 #define PRAGMA_FORMAT_NONLITERAL_IGNORED_INTERNAL PRAGMA_FORMAT_NONLITERAL_IGNORED |
|
292 |
290 |
293 // Hack to deal with gcc yammering about non-security format stuff |
291 // Hack to deal with gcc yammering about non-security format stuff |
294 #else |
292 #else |
295 // Old versions of gcc don't do push/pop, also do not cope with this pragma within a function |
293 // Old versions of gcc don't do push/pop, also do not cope with this pragma within a function |
296 // One method does so much varied printing that it is decorated with both internal and external |
294 // One method does so much varied printing that it is decorated with both internal and external |
297 // versions of the macro-pragma to obtain better checking with newer compilers. |
295 // versions of the macro-pragma to obtain better checking with newer compilers. |
298 #define PRAGMA_DIAG_PUSH |
296 #define PRAGMA_DIAG_PUSH |
299 #define PRAGMA_DIAG_POP |
297 #define PRAGMA_DIAG_POP |
300 #define PRAGMA_FORMAT_NONLITERAL_IGNORED_EXTERNAL PRAGMA_FORMAT_NONLITERAL_IGNORED |
|
301 #define PRAGMA_FORMAT_NONLITERAL_IGNORED_INTERNAL |
|
302 #endif |
298 #endif |
303 |
299 |
304 #if (__GNUC__ == 2) && (__GNUC_MINOR__ < 95) |
300 #if (__GNUC__ == 2) && (__GNUC_MINOR__ < 95) |
305 #define TEMPLATE_TABLE_BUG |
301 #define TEMPLATE_TABLE_BUG |
306 #endif |
302 #endif |