diff mbox series

[committed] libphobos: Add @nogc to gcc.backtrace and gcc.libbacktrace modules.

Message ID 20230221141405.1798120-1-ibuclaw@gdcproject.org
State New
Headers show
Series [committed] libphobos: Add @nogc to gcc.backtrace and gcc.libbacktrace modules. | expand

Commit Message

Iain Buclaw Feb. 21, 2023, 2:14 p.m. UTC
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 mbox series

Patch

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;
 }