Re: [PATCH] mips/ftrace: Fix function tracing return address to match

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2013-07-15 at 15:17 -0700, David Daney wrote:
> From: Corey Minyard <cminyard@xxxxxxxxxx>
> 
> Dynamic function tracing was not working on MIPS.  When doing dynamic
> tracing, the tracer attempts to match up the passed in address with
> the one the compiler creates in the mcount tables.  The MIPS code was
> passing in the return address from the tracing function call, but the
> compiler tables were the address of the function call.  So they
> wouldn't match.
> 
> Just subtracting 8 from the return address will give the address of
> the function call.  Easy enough.
> 
> Signed-off-by: Corey Minyard <cminyard@xxxxxxxxxx>
> [david.daney@xxxxxxxxxx: Adjusted code comment and patch Subject.]
> Signed-off-by: David Daney <david.daney@xxxxxxxxxx>
> ---
>  arch/mips/kernel/mcount.S | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/mips/kernel/mcount.S b/arch/mips/kernel/mcount.S
> index a03e93c..539b629 100644
> --- a/arch/mips/kernel/mcount.S
> +++ b/arch/mips/kernel/mcount.S
> @@ -83,7 +83,7 @@ _mcount:
>  	PTR_S	MCOUNT_RA_ADDRESS_REG, PT_R12(sp)
>  #endif
>  
> -	move	a0, ra		/* arg1: self return address */
> +	PTR_SUBU a0, ra, 8	/* arg1: self address */
>  	.globl ftrace_call
>  ftrace_call:
>  	nop	/* a placeholder for the call to a real tracing function */

I applied this patch to my Yeeloong Lemote laptop and it causes the
system to crash. Not sure why. I'll try to investigate.

-- Steve




[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux