aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2019-02-13 07:14:46 +0000
committerIain Buclaw <ibuclaw@gcc.gnu.org>2019-02-13 07:14:46 +0000
commit5522686e52cc832fb5cf376e95d3e213bb74ec00 (patch)
tree5fa78e52c1d2b737ad28d09b7693c210e781406d
parent91c50487de75a5275e2e8c2e1cd4b10f3a59b7df (diff)
downloadgcc-5522686e52cc832fb5cf376e95d3e213bb74ec00.zip
gcc-5522686e52cc832fb5cf376e95d3e213bb74ec00.tar.gz
gcc-5522686e52cc832fb5cf376e95d3e213bb74ec00.tar.bz2
libphobos: Fallback on UnwindBacktrace if LibBacktrace not defined.
In the gcc.backtrace module, either one of LibBacktrace or UnwindBacktrace will always be defined. Giving UnwindBacktrace a higher precedence over the libc backtrace as the default handler because the latter depends on a rt.backtrace module that is not compiled in. libphobos/ChangeLog: * libdruntime/core/runtime.d (defaultTraceHandler): Give UnwindBacktrace handler precedence over backtrace. From-SVN: r268836
-rw-r--r--libphobos/ChangeLog5
-rw-r--r--libphobos/libdruntime/core/runtime.d32
2 files changed, 21 insertions, 16 deletions
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index 2aa99a4..e43b855 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,3 +1,8 @@
+2019-02-13 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * libdruntime/core/runtime.d (defaultTraceHandler): Give
+ UnwindBacktrace handler precedence over backtrace.
+
2019-02-10 Iain Buclaw <ibuclaw@gdcproject.org>
* 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 a78363c..0ead047 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;