From 5703ef26cf2c079d010bad61065f962091b62ba5 Mon Sep 17 00:00:00 2001 From: Flyinghead Date: Tue, 24 Jan 2023 19:24:26 +0100 Subject: [PATCH] os_DebugBreak is [[noreturn]] --- core/linux-dist/main.cpp | 3 ++- core/linux/common.cpp | 2 +- core/types.h | 8 +++----- core/windows/winmain.cpp | 2 +- shell/android-studio/flycast/src/main/jni/src/Android.cpp | 2 +- shell/libretro/libretro.cpp | 2 +- tests/src/test_stubs.cpp | 8 ++------ 7 files changed, 11 insertions(+), 16 deletions(-) diff --git a/core/linux-dist/main.cpp b/core/linux-dist/main.cpp index a5f4e04f7..9dcab79c1 100644 --- a/core/linux-dist/main.cpp +++ b/core/linux-dist/main.cpp @@ -383,9 +383,10 @@ int main(int argc, char* argv[]) } #if defined(__unix__) -void os_DebugBreak() +[[noreturn]] void os_DebugBreak() { raise(SIGTRAP); + std::abort(); } #endif diff --git a/core/linux/common.cpp b/core/linux/common.cpp index 5927b4719..69d57427d 100644 --- a/core/linux/common.cpp +++ b/core/linux/common.cpp @@ -127,7 +127,7 @@ double os_GetSeconds() } #if !defined(__unix__) && !defined(LIBRETRO) -void os_DebugBreak() +[[noreturn]] void os_DebugBreak() { __builtin_trap(); } diff --git a/core/types.h b/core/types.h index 9e0a50522..3f281543b 100644 --- a/core/types.h +++ b/core/types.h @@ -167,17 +167,15 @@ inline static void JITWriteProtect(bool enabled) { #define VER_EMUNAME "Flycast" #define VER_SHORTNAME VER_EMUNAME -void os_DebugBreak(); -#define dbgbreak os_DebugBreak() - #ifndef _MSC_VER #define stricmp strcasecmp #endif +[[noreturn]] void os_DebugBreak(); void fatal_error(const char* text, ...); -#define verify(x) do { if ((x) == false){ fatal_error("Verify Failed : " #x "\n in %s -> %s : %d", (__FUNCTION__), (__FILE__), __LINE__); dbgbreak;}} while (false) -#define die(reason) do { fatal_error("Fatal error : %s\n in %s -> %s : %d", (reason), (__FUNCTION__), (__FILE__), __LINE__); dbgbreak;} while (false) +#define verify(x) do { if ((x) == false){ fatal_error("Verify Failed : " #x "\n in %s -> %s : %d", (__FUNCTION__), (__FILE__), __LINE__); os_DebugBreak();}} while (false) +#define die(reason) do { fatal_error("Fatal error : %s\n in %s -> %s : %d", (reason), (__FUNCTION__), (__FILE__), __LINE__); os_DebugBreak();} while (false) enum class JVS { Default, diff --git a/core/windows/winmain.cpp b/core/windows/winmain.cpp index e016bfc24..64403767f 100644 --- a/core/windows/winmain.cpp +++ b/core/windows/winmain.cpp @@ -941,7 +941,7 @@ int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi return 0; } -void os_DebugBreak() +[[noreturn]] void os_DebugBreak() { __debugbreak(); } diff --git a/shell/android-studio/flycast/src/main/jni/src/Android.cpp b/shell/android-studio/flycast/src/main/jni/src/Android.cpp index 170994738..50e8a80af 100644 --- a/shell/android-studio/flycast/src/main/jni/src/Android.cpp +++ b/shell/android-studio/flycast/src/main/jni/src/Android.cpp @@ -532,7 +532,7 @@ extern "C" JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_AudioBackend_set } } -void os_DebugBreak() +[[noreturn]] void os_DebugBreak() { // TODO: notify the parent thread about it ... diff --git a/shell/libretro/libretro.cpp b/shell/libretro/libretro.cpp index 9db9c7f76..8f7041737 100644 --- a/shell/libretro/libretro.cpp +++ b/shell/libretro/libretro.cpp @@ -3002,7 +3002,7 @@ void fatal_error(const char* text, ...) } } -void os_DebugBreak() +[[noreturn]] void os_DebugBreak() { ERROR_LOG(COMMON, "DEBUGBREAK!"); //exit(-1); diff --git a/tests/src/test_stubs.cpp b/tests/src/test_stubs.cpp index a4e69b1db..0b6b16001 100644 --- a/tests/src/test_stubs.cpp +++ b/tests/src/test_stubs.cpp @@ -3,13 +3,9 @@ #include "types.h" #ifndef __ANDROID__ -void os_DebugBreak() +[[noreturn]] void os_DebugBreak() { -#ifdef __linux__ - raise(SIGTRAP); -#elif defined(_WIN32) - __debugbreak(); -#endif + std::abort(); } #ifdef _WIN32