Subject: Re: -mprofile-kernel vs. notrace in ppc64(le) Linux kernels

From: Torsten Duwe <[email-masked]>
Date: Sun, 27 Sep 2015 13:06:33 +0200

On Sun, Sep 27, 2015 at 09:03:48AM +1000, Anton Blanchard wrote:
> > On Sat, Sep 26, 2015 at 04:30:08PM +0200, Torsten Duwe wrote:
> > > kernel. It is mapped to GCC's (4.8, FWIW)
> > > __attribute__((no_instrument_function)), which, to my surprise,
> > > works for -p and -pg nicely, but does not affect -mprofile-kernel
> > > at all!
> 
> This sounds like the issue below, fixed by Pat.
> 
> diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
> index 289b52c..a479219 100644
> --- a/gcc/config/rs6000/rs6000.c
> +++ b/gcc/config/rs6000/rs6000.c
> @@ -23198,7 +23198,7 @@ rs6000_output_function_prologue (FILE *file,
>    /* Output -mprofile-kernel code.  This needs to be done here instead of
>       in output_function_profile since it must go after the ELFv2 ABI
>       local entry point.  */
> -  if (TARGET_PROFILE_KERNEL)
> +  if (TARGET_PROFILE_KERNEL && crtl->profile)
>      {
>        gcc_assert (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2);
>        gcc_assert (!TARGET_32BIT);

Yes, indeed!
I can see the fix in the 4.9 branch, it's in 5.x and 6.x, but _not_ in 4.8.5 :(
That's what you get when you use "stable" distributions.

Thanks a lot for the pointer!

	Torsten