diff --git a/src/stack_trace.c b/src/stack_trace.c index 002247d..2421f92 100644 --- a/src/stack_trace.c +++ b/src/stack_trace.c @@ -22,11 +22,13 @@ struct KernAux_StackTrace_Frame KernAux_StackTrace_Frame_create() struct KernAux_StackTrace_Frame frame = { .cur_ptr = NULL }; #if defined(ASM_I386) - const size_t *cur_ptr = frame.cur_ptr; + const size_t *cur_ptr; KERNAUX_ASM("movl %%ebp, %0" : "=g" (cur_ptr) :: "memory"); + frame.cur_ptr = cur_ptr; #elif defined(ASM_X86_64) - const size_t *cur_ptr = frame.cur_ptr; + const size_t *cur_ptr; KERNAUX_ASM("movq %%rbp, %0" : "=g" (cur_ptr) :: "memory"); + frame.cur_ptr = cur_ptr; #endif return frame; diff --git a/tests/test_stack_trace.c b/tests/test_stack_trace.c index 02979a0..8381a91 100644 --- a/tests/test_stack_trace.c +++ b/tests/test_stack_trace.c @@ -39,6 +39,7 @@ static const void *max_addresses[MAX_SIZE]; ++lower##_count; \ } \ \ + assert(lower##_count >= 2); \ putchar('\n'); \ } while (0)