elf/coredump: correct register offset after xcp.regs update

The offset should be calculated from pointer xcp.regs

Signed-off-by: chao an <anchao@xiaomi.com>
This commit is contained in:
chao an 2023-05-18 17:08:58 +08:00 committed by Xiang Xiao
parent 0b6d51a3b2
commit 064c75aa92
1 changed files with 14 additions and 2 deletions

View File

@ -246,8 +246,20 @@ static void elf_emit_note_info(FAR struct elf_dumpinfo_s *cinfo)
for (j = 0; j < nitems(status.pr_regs); j++)
{
status.pr_regs[j] = *(uintptr_t *)((uint8_t *)tcb +
g_tcbinfo.reg_off.p[j]);
if (tcb->xcp.regs == NULL)
{
continue;
}
if (g_tcbinfo.reg_off.p[j] == UINT16_MAX)
{
status.pr_regs[j] = 0;
}
else
{
status.pr_regs[j] = *(uintptr_t *)((uint8_t *)tcb->xcp.regs +
g_tcbinfo.reg_off.p[j]);
}
}
elf_emit(cinfo, &status, sizeof(status));