diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog index 2aa99a426f85..e43b8559d27f 100644 --- a/libphobos/ChangeLog +++ b/libphobos/ChangeLog @@ -1,3 +1,8 @@ +2019-02-13 Iain Buclaw + + * libdruntime/core/runtime.d (defaultTraceHandler): Give + UnwindBacktrace handler precedence over backtrace. + 2019-02-10 Iain Buclaw * libdruntime/Makefile.am (DRUNTIME_DSOURCES): Remove rt/util/hash.d diff --git a/libphobos/libdruntime/core/runtime.d b/libphobos/libdruntime/core/runtime.d index a78363cf4777..0ead04752e4b 100644 --- a/libphobos/libdruntime/core/runtime.d +++ b/libphobos/libdruntime/core/runtime.d @@ -619,6 +619,22 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) } return new LibBacktrace(FIRSTFRAME); } + else static if ( __traits( compiles, new UnwindBacktrace(0) ) ) + { + version (Posix) + { + static enum FIRSTFRAME = 5; + } + else version (Win64) + { + static enum FIRSTFRAME = 4; + } + else + { + static enum FIRSTFRAME = 0; + } + return new UnwindBacktrace(FIRSTFRAME); + } else static if ( __traits( compiles, backtrace ) ) { import core.demangle; @@ -885,22 +901,6 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null ) auto s = new StackTrace(FIRSTFRAME, cast(CONTEXT*)ptr); return s; } - else static if ( __traits( compiles, new UnwindBacktrace(0) ) ) - { - version (Posix) - { - static enum FIRSTFRAME = 5; - } - else version (Win64) - { - static enum FIRSTFRAME = 4; - } - else - { - static enum FIRSTFRAME = 0; - } - return new UnwindBacktrace(FIRSTFRAME); - } else { return null;