|
|
@ -173,6 +173,7 @@ static void **NextStackFrame(void **old_fp, const void *uc) { |
|
|
|
static const unsigned char *kernel_rt_sigreturn_address = nullptr; |
|
|
|
static const unsigned char *kernel_rt_sigreturn_address = nullptr; |
|
|
|
static const unsigned char *kernel_vsyscall_address = nullptr; |
|
|
|
static const unsigned char *kernel_vsyscall_address = nullptr; |
|
|
|
if (num_push_instructions == -1) { |
|
|
|
if (num_push_instructions == -1) { |
|
|
|
|
|
|
|
#ifdef ABSL_HAVE_VDSO_SUPPORT |
|
|
|
absl::debugging_internal::VDSOSupport vdso; |
|
|
|
absl::debugging_internal::VDSOSupport vdso; |
|
|
|
if (vdso.IsPresent()) { |
|
|
|
if (vdso.IsPresent()) { |
|
|
|
absl::debugging_internal::VDSOSupport::SymbolInfo |
|
|
|
absl::debugging_internal::VDSOSupport::SymbolInfo |
|
|
@ -201,6 +202,9 @@ static void **NextStackFrame(void **old_fp, const void *uc) { |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
num_push_instructions = 0; |
|
|
|
num_push_instructions = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
num_push_instructions = 0; |
|
|
|
|
|
|
|
#endif |
|
|
|
} |
|
|
|
} |
|
|
|
if (num_push_instructions != 0 && kernel_rt_sigreturn_address != nullptr && |
|
|
|
if (num_push_instructions != 0 && kernel_rt_sigreturn_address != nullptr && |
|
|
|
old_fp[1] == kernel_rt_sigreturn_address) { |
|
|
|
old_fp[1] == kernel_rt_sigreturn_address) { |
|
|
|