mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-02 07:28:21 +00:00
x86-64/arch_prof: fix backtrace
This commit is contained in:
@@ -72,8 +72,10 @@ static uint8_t get_backtrace(context_t *context, uintptr_t *data) {
|
|||||||
if (IS_USER_ADDRESS(context->rip))
|
if (IS_USER_ADDRESS(context->rip))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
data[0] = context->rip;
|
||||||
|
|
||||||
uint64_t *rbp = (uint64_t *)context->rbp;
|
uint64_t *rbp = (uint64_t *)context->rbp;
|
||||||
uint8_t done = 0;
|
uint8_t done = 1;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (IS_USER_ADDRESS(rbp) || done == 255)
|
if (IS_USER_ADDRESS(rbp) || done == 255)
|
||||||
@@ -83,7 +85,7 @@ static uint8_t get_backtrace(context_t *context, uintptr_t *data) {
|
|||||||
if (IS_USER_ADDRESS(rip))
|
if (IS_USER_ADDRESS(rip))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
data[done++] = rip;
|
data[done++] = rip - 1;
|
||||||
rbp = (uint64_t *)*rbp;
|
rbp = (uint64_t *)*rbp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user