mirror of
https://github.com/waku-org/nwaku.git
synced 2025-01-15 17:35:45 +00:00
45 lines
1.9 KiB
Nim
45 lines
1.9 KiB
Nim
# Copyright (c) 2019-2021 Status Research & Development GmbH
|
|
# Licensed under either of
|
|
# * Apache License, version 2.0,
|
|
# * MIT license
|
|
# at your option.
|
|
# This file may not be copied, modified, or distributed except according to
|
|
# those terms.
|
|
|
|
# In theory, this simple file could be generated by c2nim. In practice, c2nim
|
|
# can't handle "__attribute__((...))".
|
|
|
|
when defined(nimStackTraceOverride) and defined(nimHasStacktracesModule):
|
|
import system/stacktraces
|
|
|
|
when not declared(cuintptr_t):
|
|
# There is a disparity on macOS where Nim's `uint` is `unsigned long long` and
|
|
# `uintptr_t` is `unsigned long`. Even though both data types are the same
|
|
# size (64 bits), clang++ refuses to do automatic conversion between them.
|
|
type cuintptr_t* {.importc: "uintptr_t", nodecl.} = uint
|
|
|
|
# The returned cstring needs to be freed by the caller.
|
|
proc get_backtrace_max_length_c*(max_length, skip: cint): cstring {.
|
|
importc: "get_backtrace_max_length_c", header: "libbacktrace_wrapper.h".}
|
|
|
|
# The returned cstring needs to be freed by the caller.
|
|
proc get_backtrace_c*(): cstring {.
|
|
importc: "get_backtrace_c", header: "libbacktrace_wrapper.h".}
|
|
|
|
# The returned array needs to be freed by the caller.
|
|
# It holds at least a zero sentinel value at the end.
|
|
proc get_program_counters_c*(max_length, skip: cint): ptr cuintptr_t {.
|
|
importc: "get_program_counters_c", header: "libbacktrace_wrapper.h".}
|
|
|
|
type
|
|
DebuggingInfo* {.importc: "struct debugging_info", header: "libbacktrace_wrapper.h", bycopy.} = object
|
|
filename* {.importc: "filename".}: cstring
|
|
lineno* {.importc: "lineno".}: cint
|
|
function* {.importc: "function".}: cstring
|
|
|
|
# The returned array needs to be freed by the caller.
|
|
# Char pointers in the returned struct need to be freed by the caller.
|
|
proc get_debugging_info_c*(program_counters: ptr cuintptr_t, max_length: cint): ptr DebuggingInfo {.
|
|
importc: "get_debugging_info_c", header: "libbacktrace_wrapper.h".}
|
|
|