Hi,
This patch annotated the LibBacktrace class and the libbacktrace C
bindings it uses with `@nogc' in preparation for a `Throwable.TraceInfo'
becoming `@nogc' itself.
Bootstrapped and regression tested on x86_64-linux-gnu, committed to
mainline.
Regards,
Iain.
---
libphobos/ChangeLog:
* libdruntime/gcc/backtrace.d (simpleErrorCallback): Add @nogc.
(LibBacktrace.initLibBacktrace): Likewise.
(LibBacktrace.this): Likewise.
(UnwindBacktrace.this): Likewise.
(getBacktrace): Likewise.
(getBacktraceSymbols): Likewise.
* libdruntime/gcc/libbacktrace.d.in (backtrace_create_state):
Likewise.
(backtrace_full): Likewise.
(backtrace_simple): Likewise.
(backtrace_print): Likewise.
(backtrace_pcinfo): Likewise.
(backtrace_syminfo): Likewise.
---
libphobos/libdruntime/gcc/backtrace.d | 12 ++++++------
libphobos/libdruntime/gcc/libbacktrace.d.in | 12 ++++++------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/libphobos/libdruntime/gcc/backtrace.d
b/libphobos/libdruntime/gcc/backtrace.d
index eeaf0783e96..2b4a339e721 100644
--- a/libphobos/libdruntime/gcc/backtrace.d
+++ b/libphobos/libdruntime/gcc/backtrace.d
@@ -46,7 +46,7 @@ static if (BACKTRACE_SUPPORTED && !BACKTRACE_USES_MALLOC)
/*
* Used for backtrace_create_state and backtrace_simple
*/
- extern(C) void simpleErrorCallback(void* data, const(char)* msg, int
errnum)
+ extern(C) void simpleErrorCallback(void* data, const(char)* msg, int
errnum) @nogc
{
if (data) // context is not available in backtrace_create_state
{
@@ -187,7 +187,7 @@ static if (BACKTRACE_SUPPORTED && !BACKTRACE_USES_MALLOC)
// FIXME: state is never freed as libbacktrace doesn't provide a free
function...
public class LibBacktrace : Throwable.TraceInfo
{
- static void initLibBacktrace()
+ static void initLibBacktrace() @nogc
{
if (!initialized)
{
@@ -196,7 +196,7 @@ static if (BACKTRACE_SUPPORTED && !BACKTRACE_USES_MALLOC)
}
}
- this(int firstFrame)
+ this(int firstFrame) @nogc
{
_firstFrame = firstFrame;
@@ -345,7 +345,7 @@ else
*/
public class UnwindBacktrace : Throwable.TraceInfo
{
- this(int firstFrame)
+ this(int firstFrame) @nogc
{
_firstFrame = firstFrame;
_callstack = getBacktrace();
@@ -436,14 +436,14 @@ private:
return _URC_NO_REASON;
}
- UnwindBacktraceData getBacktrace()
+ UnwindBacktraceData getBacktrace() @nogc
{
UnwindBacktraceData stackframe;
_Unwind_Backtrace(&unwindCB, &stackframe);
return stackframe;
}
- BTSymbolData getBacktraceSymbols(UnwindBacktraceData data)
+ BTSymbolData getBacktraceSymbols(UnwindBacktraceData data) @nogc
{
BTSymbolData symData;
diff --git a/libphobos/libdruntime/gcc/libbacktrace.d.in
b/libphobos/libdruntime/gcc/libbacktrace.d.in
index 96382e1f7f3..def017d155b 100644
--- a/libphobos/libdruntime/gcc/libbacktrace.d.in
+++ b/libphobos/libdruntime/gcc/libbacktrace.d.in
@@ -46,28 +46,28 @@ extern(C):
backtrace_error_callback;
backtrace_state* backtrace_create_state(const(char)* filename, int
threaded,
- backtrace_error_callback
error_callback, void* data) nothrow;
+ backtrace_error_callback
error_callback, void* data) @nogc nothrow;
alias extern(C) int function(void* data, uintptr_t pc, const(char)*
filename, int lineno, const(char)* func)
backtrace_full_callback;
int backtrace_full(backtrace_state* state, int skip,
backtrace_full_callback callback,
- backtrace_error_callback error_callback, void* data)
nothrow;
+ backtrace_error_callback error_callback, void* data)
@nogc nothrow;
alias extern(C) int function(void* data, uintptr_t pc)
backtrace_simple_callback;
int backtrace_simple(backtrace_state* state, int skip,
backtrace_simple_callback callback,
- backtrace_error_callback error_callback, void* data)
nothrow;
+ backtrace_error_callback error_callback, void* data)
@nogc nothrow;
- void backtrace_print(backtrace_state* state, int skip, FILE* file) nothrow;
+ void backtrace_print(backtrace_state* state, int skip, FILE* file) @nogc
nothrow;
int backtrace_pcinfo(backtrace_state* state, uintptr_t pc,
backtrace_full_callback callback,
- backtrace_error_callback error_callback, void*
data) nothrow;
+ backtrace_error_callback error_callback, void*
data) @nogc nothrow;
alias extern(C) void function(void* data, uintptr_t pc, const(char)*
symname, uintptr_t symval)
backtrace_syminfo_callback;
int backtrace_syminfo(backtrace_state *state, uintptr_t pc,
backtrace_syminfo_callback callback,
- backtrace_error_callback error_callback, void* data)
nothrow;
+ backtrace_error_callback error_callback, void* data)
@nogc nothrow;
}
--
2.37.2