diff mbox series

[01/17] powerpc/ftrace: Fix dropping weak symbols with older toolchains

Message ID 7b265908a9461e38fc756ef9b569703860a80621.1687166935.git.naveen@kernel.org (mailing list archive)
State Accepted
Commit f6834c8c59a8e977a6f6e4f96c5d28dfa5db8430
Headers show
Series powerpc/ftrace: refactor and add support for -fpatchable-function-entry | expand

Commit Message

Naveen N Rao June 19, 2023, 9:47 a.m. UTC
The minimum level of gcc supported for building the kernel is v5.1.
v5.x releases of gcc emitted a three instruction sequence for
-mprofile-kernel:
	mflr	r0
	std	r0, 16(r1)
	bl	_mcount

It is only with the v6.x releases that gcc started emitting the two
instruction sequence for -mprofile-kernel, omitting the second store
instruction.

With the older three instruction sequence, the actual ftrace location
can be the 5th instruction into a function. Update the allowed offset
for ftrace location from 12 to 16 to accommodate the same.

Cc: stable@vger.kernel.org
Fixes: 7af82ff90a2b06 ("powerpc/ftrace: Ignore weak functions")
Signed-off-by: Naveen N Rao <naveen@kernel.org>
---
 arch/powerpc/include/asm/ftrace.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Christophe Leroy June 23, 2023, 5:10 a.m. UTC | #1
Le 19/06/2023 à 11:47, Naveen N Rao a écrit :
> The minimum level of gcc supported for building the kernel is v5.1.
> v5.x releases of gcc emitted a three instruction sequence for
> -mprofile-kernel:
> 	mflr	r0
> 	std	r0, 16(r1)
> 	bl	_mcount
> 
> It is only with the v6.x releases that gcc started emitting the two
> instruction sequence for -mprofile-kernel, omitting the second store
> instruction.
> 
> With the older three instruction sequence, the actual ftrace location
> can be the 5th instruction into a function. Update the allowed offset
> for ftrace location from 12 to 16 to accommodate the same.
> 
> Cc: stable@vger.kernel.org
> Fixes: 7af82ff90a2b06 ("powerpc/ftrace: Ignore weak functions")
> Signed-off-by: Naveen N Rao <naveen@kernel.org>

Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>

> ---
>   arch/powerpc/include/asm/ftrace.h | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/include/asm/ftrace.h b/arch/powerpc/include/asm/ftrace.h
> index 91c049d51d0e10..2edc6269b1a357 100644
> --- a/arch/powerpc/include/asm/ftrace.h
> +++ b/arch/powerpc/include/asm/ftrace.h
> @@ -12,7 +12,7 @@
>   
>   /* Ignore unused weak functions which will have larger offsets */
>   #ifdef CONFIG_MPROFILE_KERNEL
> -#define FTRACE_MCOUNT_MAX_OFFSET	12
> +#define FTRACE_MCOUNT_MAX_OFFSET	16
>   #elif defined(CONFIG_PPC32)
>   #define FTRACE_MCOUNT_MAX_OFFSET	8
>   #endif
diff mbox series

Patch

diff --git a/arch/powerpc/include/asm/ftrace.h b/arch/powerpc/include/asm/ftrace.h
index 91c049d51d0e10..2edc6269b1a357 100644
--- a/arch/powerpc/include/asm/ftrace.h
+++ b/arch/powerpc/include/asm/ftrace.h
@@ -12,7 +12,7 @@ 
 
 /* Ignore unused weak functions which will have larger offsets */
 #ifdef CONFIG_MPROFILE_KERNEL
-#define FTRACE_MCOUNT_MAX_OFFSET	12
+#define FTRACE_MCOUNT_MAX_OFFSET	16
 #elif defined(CONFIG_PPC32)
 #define FTRACE_MCOUNT_MAX_OFFSET	8
 #endif