Subject: [PATCH 03/10] ftrace: allow building without frame pointers

From: [email-masked] (Steven Rostedt)
Date: Sat, 13 Mar 2010 12:36:32 -0500

On Sat, 2010-03-13 at 12:19 +0530, Rabin Vincent wrote:
> With current gcc, compiling with both -pg and -fomit-frame-pointer is
> not allowed.  However, -pg can be used to build without actually
> specying -fno-omit-frame-pointer, upon which the defaut behaviour for
> the target will be used.
> 
> On ARM, it is not possible to build a Thumb-2 kernel with
> -fno-omit-frame-pointer (FRAME_POINTERS depends on !THUMB2_KERNEL). In
> order to support ftrace for Thumb-2, we need to be able to allow a
> combination of FUNCTION_TRACER and !FRAME_POINTER.  We do this by
> omitting -fomit-frame-pointer if ftrace is enabled.
> 
> Acked-by: Frederic Weisbecker <[email-masked]>
> Signed-off-by: Rabin Vincent <[email-masked]>
> ---
> v2: Better comment.
> 
>  Makefile |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 08ff02d..61404e0 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -546,8 +546,15 @@ endif
>  ifdef CONFIG_FRAME_POINTER
>  KBUILD_CFLAGS	+= -fno-omit-frame-pointer -fno-optimize-sibling-calls
>  else
> +# Some targets (ARM with Thumb2, for example), can't be built with frame
> +# pointers.  For those, we don't have FUNCTION_TRACER automatically
> +# select FRAME_POINTER.  However, FUNCTION_TRACER adds -pg, and this is
> +# incompatible with -fomit-frame-pointer with current GCC, so we don't use
> +# -fomit-frame-pointer with FUNCTION_TRACER.
> +ifndef CONFIG_FUNCTION_TRACER
>  KBUILD_CFLAGS	+= -fomit-frame-pointer

I believe this is correct, but have you tested this on other archs other
than ARM? I can do it for x86 and PPC, but it will need to wait as those
machines are currently performing stress tests.

-- Steve

>  endif
> +endif
>  ifdef CONFIG_DEBUG_INFO
>  KBUILD_CFLAGS	+= -g