Skip to content

Commit

Permalink
Enable C backtraces on Apple silicon (#5770)
Browse files Browse the repository at this point in the history
Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
  • Loading branch information
casperisfine and byroot committed Apr 20, 2022
1 parent d948291 commit fa2df52
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion vm_dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -474,7 +474,7 @@ rb_vmdebug_thread_dump_state(VALUE self)
# ifdef HAVE_LIBUNWIND
# undef backtrace
# define backtrace unw_backtrace
# elif defined(__APPLE__) && defined(__x86_64__) && defined(HAVE_LIBUNWIND_H)
# elif defined(__APPLE__) && defined(HAVE_LIBUNWIND_H)
# define UNW_LOCAL_ONLY
# include <libunwind.h>
# include <sys/mman.h>
Expand Down Expand Up @@ -503,6 +503,7 @@ backtrace(void **trace, int size)
darwin_sigtramp:
/* darwin's bundled libunwind doesn't support signal trampoline */
{
#if defined(__x86_64__)
ucontext_t *uctx;
char vec[1];
int r;
Expand Down Expand Up @@ -563,6 +564,8 @@ backtrace(void **trace, int size)
trace[n++] = (void *)ip;
ip = *(unw_word_t*)uctx->uc_mcontext->MCTX_SS_REG(rsp);
}
#endif

trace[n++] = (void *)ip;
unw_set_reg(&cursor, UNW_REG_IP, ip);
}
Expand Down

0 comments on commit fa2df52

Please sign in to comment.