/* Make sure the compiler warns if a new TARGET_WAITKIND enumerator is added
but not handled here. */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic error "-Wswitch"
+DIAGNOSTIC_PUSH
+DIAGNOSTIC_ERROR_SWITCH
switch (this->kind ())
{
case TARGET_WAITKIND_EXITED:
case TARGET_WAITKIND_THREAD_CREATED:
return str;
}
-#pragma GCC diagnostic pop
+DIAGNOSTIC_POP
gdb_assert_not_reached ("invalid target_waitkind value: %d",
(int) this->kind ());
#ifndef TARGET_WAITSTATUS_H
#define TARGET_WAITSTATUS_H
+#include "diagnostics.h"
#include "gdbsupport/gdb_signals.h"
/* Stuff for target_wait. */
{
/* Make sure the compiler warns if a new TARGET_WAITKIND enumerator is added
but not handled here. */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic error "-Wswitch"
+DIAGNOSTIC_PUSH
+DIAGNOSTIC_ERROR_SWITCH
switch (kind)
{
case TARGET_WAITKIND_EXITED:
case TARGET_WAITKIND_THREAD_EXITED:
return "THREAD_EXITED";
};
-#pragma GCC diagnostic pop
+DIAGNOSTIC_POP
gdb_assert_not_reached ("invalid target_waitkind value: %d\n", (int) kind);
}
# define DIAGNOSTIC_IGNORE(option) \
_Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic ignored option))
+# define DIAGNOSTIC_ERROR(option) \
+ _Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic error option))
#else
# define DIAGNOSTIC_PUSH
# define DIAGNOSTIC_POP
# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
+# define DIAGNOSTIC_ERROR_SWITCH \
+ DIAGNOSTIC_ERROR ("-Wswitch")
+
#elif defined (__GNUC__) /* GCC */
# if __GNUC__ >= 7
# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
+/* GCC 4.8's "diagnostic push/pop" seems broken when using this, -Wswitch
+ remains enabled at the error level even after a pop. Therefore, don't
+ use it for GCC < 5. */
+# if __GNUC__ >= 5
+# define DIAGNOSTIC_ERROR_SWITCH DIAGNOSTIC_ERROR ("-Wswitch")
+# endif
+
#endif
#ifndef DIAGNOSTIC_IGNORE_SELF_MOVE
# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
#endif
+#ifndef DIAGNOSTIC_ERROR_SWITCH
+# define DIAGNOSTIC_ERROR_SWITCH
+#endif
+
#endif /* DIAGNOSTICS_H */