Messages in this thread | | | Subject | Re: [PATCH] perf: perf can not parser the backtrace of app in the 32bit system and 64bit kernel. | From | Jiping Ma <> | Date | Thu, 7 May 2020 09:10:03 +0800 |
| |
Hi, Will
Please help to review the patch.
Thanks, Jiping
On 04/29/2020 12:51 PM, Jiping Ma wrote: > We test it as the following steps. > # gcc -g -mthumb -gdwarf -o test test.c > # export CALLGRAPH=dwarf > #(./perftest ./test profiling 1; cd ./profiling/; perf script) > > Thanks, > Jiping > > On 04/29/2020 12:01 PM, Jiping Ma wrote: >> Record PC value from regs[15], it should be regs[32], which cause perf >> parser the backtrace failed. >> >> Signed-off-by: Jiping Ma <jiping.ma2@windriver.com> >> --- >> arch/arm64/kernel/perf_regs.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/arch/arm64/kernel/perf_regs.c >> b/arch/arm64/kernel/perf_regs.c >> index 0bbac61..04088e6 100644 >> --- a/arch/arm64/kernel/perf_regs.c >> +++ b/arch/arm64/kernel/perf_regs.c >> @@ -32,6 +32,10 @@ u64 perf_reg_value(struct pt_regs *regs, int idx) >> if ((u32)idx == PERF_REG_ARM64_PC) >> return regs->pc; >> + if (perf_reg_abi(current) == PERF_SAMPLE_REGS_ABI_32 >> + && idx == 15) >> + return regs->regs[PERF_REG_ARM64_PC]; >> + >> return regs->regs[idx]; >> } >
| |