Re: [PATCH] function:stacktrace/mips: Fix function:stacktrace for mips

From: Maciej W. Rozycki
Date: Wed Jun 03 2020 - 21:17:56 EST


On Fri, 29 May 2020, WANG Xuerui wrote:

> On 2020/5/29 17:29, yuanjunqing wrote:
>
> >> diff --git a/arch/mips/kernel/mcount.S b/arch/mips/kernel/mcount.S
> >> index cff52b283e03..cd5545764e5f 100644
> >> --- a/arch/mips/kernel/mcount.S
> >> +++ b/arch/mips/kernel/mcount.S
> >> @@ -87,8 +87,15 @@ EXPORT_SYMBOL(_mcount)
> >> PTR_LA t1, _etext
> >> sltu t3, t1, a0 /* t3 = (a0 > _etext) */
> >> or t1, t2, t3
> >> + PTR_LA t2, stlab-4 /* t2: "function:stacktrace" return address */
> >> + move a1, AT /* arg2: parent's return address */
> >> beqz t1, ftrace_call
> >> - nop
> >> + nop /* "function:stacktrace" return address */
> >> +stlab:
> >> + PTR_LA t2, stlab-4
> >> + /* ftrace_call_end: ftrace_call return address */
> >> + beq t2,ra, ftrace_call_end
> >> + nop

Broken delay slot indentation.

> >> #if defined(KBUILD_MCOUNT_RA_ADDRESS) && defined(CONFIG_32BIT)
> >> PTR_SUBU a0, a0, 16 /* arg1: adjust to module's recorded callsite */
> >> #else
> >> @@ -98,7 +105,9 @@ EXPORT_SYMBOL(_mcount)
> >> .globl ftrace_call
> >> ftrace_call:
> >> nop /* a placeholder for the call to a real tracing function */
> >> - move a1, AT /* arg2: parent's return address */
> >> + move ra, t2 /* t2: "function:stacktrace" return address */

Likewise. NB I haven't investigated if the change makes sense. A more
detailed explanation in the change description is certainly needed.

Maciej