From f3198c31c3f7d8c672ecc4c477590e38d094dba1 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sun, 11 Aug 2019 21:16:27 +1000 Subject: [PATCH] use sys/ucontext.h everywhere instead --- src/Core.h | 1 - src/Logger.c | 72 ++++++++++++++++++++-------------------------------- 2 files changed, 27 insertions(+), 46 deletions(-) diff --git a/src/Core.h b/src/Core.h index e152fbec3..051cf7b15 100644 --- a/src/Core.h +++ b/src/Core.h @@ -109,7 +109,6 @@ typedef struct TextureRec_ { float U1, V1, U2, V2; } TextureRec; #define CC_BUILD_GLMODERN #define CC_BUILD_GLES #define CC_BUILD_EGL -#define CC_BUILD_UNWIND #define CC_BUILD_TOUCH #elif defined __linux__ #define CC_BUILD_LINUX diff --git a/src/Logger.c b/src/Logger.c index f96f57bdd..9fd04ee5c 100644 --- a/src/Logger.c +++ b/src/Logger.c @@ -7,34 +7,28 @@ #include "Errors.h" #include "Utils.h" -#ifdef CC_BUILD_WEB -#undef CC_BUILD_POSIX /* Can't see native CPU state with javascript */ -#endif -#ifdef CC_BUILD_WIN +#if defined CC_BUILD_WEB +/* Can't see native CPU state with javascript */ +#undef CC_BUILD_POSIX +#elif defined CC_BUILD_WIN #define WIN32_LEAN_AND_MEAN #define NOSERVICE #define NOMCX #define NOIME #include #include -#endif - -/* POSIX can be shared between unix-ish systems */ -/* NOTE: Android's bionic libc doesn't provide backtrace (execinfo.h) */ -#ifdef CC_BUILD_POSIX -#if defined CC_BUILD_OPENBSD +#elif defined CC_BUILD_OPENBSD #include -/* OpenBSD doesn't provide ucontext.h */ +/* OpenBSD doesn't provide sys/ucontext.h */ #elif defined CC_BUILD_LINUX || defined CC_BUILD_ANDROID /* Need to define this to get REG_ constants */ #define __USE_GNU -#include +#include #undef __USE_GNU #include -#else +#elif defined CC_BUILD_POSIX #include -#include -#endif +#include #endif @@ -317,35 +311,6 @@ void Logger_Backtrace(String* trace, void* ctx) { } String_AppendConst(trace, _NL); } -#elif defined CC_BUILD_UNWIND -#include -#define __USE_GNU -#include -#undef __USE_GNU - -static _Unwind_Reason_Code Logger_DumpFrame(struct _Unwind_Context* ctx, void* arg) { - String str; char strBuffer[384]; - uintptr_t addr; - Dl_info s; - - addr = _Unwind_GetIP(ctx); - String_InitArray(str, strBuffer); - if (!addr) return _URC_END_OF_STACK; - - s.dli_sname = NULL; - s.dli_fname = NULL; - dladdr((void*)addr, &s); - - Logger_PrintFrame(&str, addr, (uintptr_t)s.dli_saddr, s.dli_sname, s.dli_fname); - String_AppendString((String*)arg, &str); - Logger_Log(&str); - return _URC_NO_REASON; -} - -void Logger_Backtrace(String* trace, void* ctx) { - _Unwind_Backtrace(Logger_DumpFrame, trace); - String_AppendConst(trace, _NL); -} #elif defined CC_BUILD_POSIX #define __USE_GNU #include @@ -365,7 +330,24 @@ static void Logger_DumpFrame(String* trace, void* addr) { Logger_Log(&str); } -#ifdef CC_BUILD_OSX +#if defined CC_BUILD_ANDROID +/* android's bionic libc doesn't provide backtrace (execinfo.h) */ +#include + +static _Unwind_Reason_Code Logger_DumpFrame(struct _Unwind_Context* ctx, void* arg) { + uintptr_t addr = _Unwind_GetIP(ctx); + if (!addr) return _URC_END_OF_STACK; + + Logger_DumpFrame((String*)arg, (void*)addr); + return _URC_NO_REASON; +} + +void Logger_Backtrace(String* trace, void* ctx) { + _Unwind_Backtrace(Logger_DumpFrame, trace); + String_AppendConst(trace, _NL); +} +#elif defined CC_BUILD_OSX +/* backtrace is only available on OSX since 10.5 */ void Logger_Backtrace(String* trace, void* ctx) { void* addrs[40]; unsigned i, frames;