summaryrefslogtreecommitdiffstats
path: root/yql/essentials/utils/backtrace/backtrace_linux.cpp
diff options
context:
space:
mode:
authorvvvv <[email protected]>2025-10-06 11:26:09 +0300
committervvvv <[email protected]>2025-10-06 11:53:26 +0300
commit60f45e69a4d7dbc6131208e16c45faf35aa5a985 (patch)
tree4daa45b52c295a178c7620e4c93921465fcf7950 /yql/essentials/utils/backtrace/backtrace_linux.cpp
parent1bded1a65a7e6e9171418f3e1c691d390125b64e (diff)
YQL-20086 utils
init commit_hash:54feccd520ebd0ab23612bc0cb830914dff9d0e8
Diffstat (limited to 'yql/essentials/utils/backtrace/backtrace_linux.cpp')
-rw-r--r--yql/essentials/utils/backtrace/backtrace_linux.cpp90
1 files changed, 45 insertions, 45 deletions
diff --git a/yql/essentials/utils/backtrace/backtrace_linux.cpp b/yql/essentials/utils/backtrace/backtrace_linux.cpp
index c9a1bd5a225..f819a04ae90 100644
--- a/yql/essentials/utils/backtrace/backtrace_linux.cpp
+++ b/yql/essentials/utils/backtrace/backtrace_linux.cpp
@@ -6,57 +6,57 @@
#include <util/system/backtrace.h>
namespace {
- size_t BackTrace(void** p, size_t len, ucontext_t* con) {
- unw_context_t context;
- unw_cursor_t cursor;
- if (unw_getcontext(&context)) {
- return 0;
- }
+size_t BackTrace(void** p, size_t len, ucontext_t* con) {
+ unw_context_t context;
+ unw_cursor_t cursor;
+ if (unw_getcontext(&context)) {
+ return 0;
+ }
- if (unw_init_local(&cursor, &context)) {
- return 0;
- }
- const sigcontext* signal_mcontext = (const sigcontext*)&(con->uc_mcontext);
- unw_set_reg(&cursor, UNW_X86_64_RSI, signal_mcontext->rsi);
- unw_set_reg(&cursor, UNW_X86_64_RDI, signal_mcontext->rdi);
- unw_set_reg(&cursor, UNW_X86_64_RBP, signal_mcontext->rbp);
- unw_set_reg(&cursor, UNW_X86_64_RAX, signal_mcontext->rax);
- unw_set_reg(&cursor, UNW_X86_64_RBX, signal_mcontext->rbx);
- unw_set_reg(&cursor, UNW_X86_64_RCX, signal_mcontext->rcx);
- unw_set_reg(&cursor, UNW_X86_64_R8, signal_mcontext->r8);
- unw_set_reg(&cursor, UNW_X86_64_R9, signal_mcontext->r9);
- unw_set_reg(&cursor, UNW_X86_64_R10, signal_mcontext->r10);
- unw_set_reg(&cursor, UNW_X86_64_R11, signal_mcontext->r11);
- unw_set_reg(&cursor, UNW_X86_64_R12, signal_mcontext->r12);
- unw_set_reg(&cursor, UNW_X86_64_R13, signal_mcontext->r13);
- unw_set_reg(&cursor, UNW_X86_64_R14, signal_mcontext->r14);
- unw_set_reg(&cursor, UNW_X86_64_R15, signal_mcontext->r15);
- unw_set_reg(&cursor, UNW_X86_64_RSP, signal_mcontext->rsp);
+ if (unw_init_local(&cursor, &context)) {
+ return 0;
+ }
+ const sigcontext* signal_mcontext = (const sigcontext*)&(con->uc_mcontext);
+ unw_set_reg(&cursor, UNW_X86_64_RSI, signal_mcontext->rsi);
+ unw_set_reg(&cursor, UNW_X86_64_RDI, signal_mcontext->rdi);
+ unw_set_reg(&cursor, UNW_X86_64_RBP, signal_mcontext->rbp);
+ unw_set_reg(&cursor, UNW_X86_64_RAX, signal_mcontext->rax);
+ unw_set_reg(&cursor, UNW_X86_64_RBX, signal_mcontext->rbx);
+ unw_set_reg(&cursor, UNW_X86_64_RCX, signal_mcontext->rcx);
+ unw_set_reg(&cursor, UNW_X86_64_R8, signal_mcontext->r8);
+ unw_set_reg(&cursor, UNW_X86_64_R9, signal_mcontext->r9);
+ unw_set_reg(&cursor, UNW_X86_64_R10, signal_mcontext->r10);
+ unw_set_reg(&cursor, UNW_X86_64_R11, signal_mcontext->r11);
+ unw_set_reg(&cursor, UNW_X86_64_R12, signal_mcontext->r12);
+ unw_set_reg(&cursor, UNW_X86_64_R13, signal_mcontext->r13);
+ unw_set_reg(&cursor, UNW_X86_64_R14, signal_mcontext->r14);
+ unw_set_reg(&cursor, UNW_X86_64_R15, signal_mcontext->r15);
+ unw_set_reg(&cursor, UNW_X86_64_RSP, signal_mcontext->rsp);
- unw_set_reg(&cursor, UNW_REG_SP, signal_mcontext->rsp);
- unw_set_reg(&cursor, UNW_REG_IP, signal_mcontext->rip);
+ unw_set_reg(&cursor, UNW_REG_SP, signal_mcontext->rsp);
+ unw_set_reg(&cursor, UNW_REG_IP, signal_mcontext->rip);
- size_t pos = 0;
- p[pos++] = (void*)signal_mcontext->rip;
- while (pos < len && unw_step(&cursor) > 0) {
- unw_word_t ip = 0;
- unw_get_reg(&cursor, UNW_REG_IP, &ip);
- if (unw_is_signal_frame(&cursor)) {
- continue;
- }
- p[pos++] = (void*)ip;
+ size_t pos = 0;
+ p[pos++] = (void*)signal_mcontext->rip;
+ while (pos < len && unw_step(&cursor) > 0) {
+ unw_word_t ip = 0;
+ unw_get_reg(&cursor, UNW_REG_IP, &ip);
+ if (unw_is_signal_frame(&cursor)) {
+ continue;
}
- return pos;
+ p[pos++] = (void*)ip;
}
+ return pos;
}
+} // namespace
namespace NYql {
- namespace NBacktrace {
- size_t CollectBacktrace(void** addresses, size_t limit, void* data) {
- if (!data) {
- return BackTrace(addresses, limit);
- }
- return BackTrace(addresses, limit, reinterpret_cast<ucontext_t*>(data));
- }
+namespace NBacktrace {
+size_t CollectBacktrace(void** addresses, size_t limit, void* data) {
+ if (!data) {
+ return BackTrace(addresses, limit);
}
-} \ No newline at end of file
+ return BackTrace(addresses, limit, reinterpret_cast<ucontext_t*>(data));
+}
+} // namespace NBacktrace
+} // namespace NYql