All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Andi Kleen <ak@linux.intel.com>, Andi Kleen <andi@firstfloor.org>,
	linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org,
	x86@kernel.org
Subject: Re: [PATCH 2/2] Add CONFIG_READABLE_ASM
Date: Sat, 12 May 2012 22:25:59 +0200	[thread overview]
Message-ID: <20120512202559.GA4893@merkur.ravnborg.org> (raw)
In-Reply-To: <CAMuHMdUFXfYhQaCV24yMCi+9x2rWE2qfr9p-ga+x3R3KGj6LnA@mail.gmail.com>

On Sat, May 12, 2012 at 10:23:40PM +0200, Geert Uytterhoeven wrote:
> On Tue, May 8, 2012 at 9:36 PM, Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> > On Thu, Apr 12, 2012 at 10:35 PM, Sam Ravnborg <sam@ravnborg.org> wrote:
> >> On Thu, Apr 12, 2012 at 10:17:07PM +0200, Geert Uytterhoeven wrote:
> >>> On Thu, Apr 12, 2012 at 22:07, Sam Ravnborg <sam@ravnborg.org> wrote:
> >>> > Could you try this:
> >>> >
> >>> > cc-disable-opt = $(call try-run,\
> >>> >        $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -f$(strip $(1)) -c -xc /dev/null -o "$TMP",-fno-$(strip $(1)))
> >>> >
> >>> > KBUILD_CFLAGS += $(call cc-disable-opt, ipa-cp-clone)
> >>> >
> >>> >
> >>> > It will try if "gcc -fipa-cp-clone" is supported,
> >>> > and add -fno-ipa-cp-clone in that case.
> >>>
> >>> Unfortunately not:
> >>>
> >>> m68k-linux-gnu-gcc -Wp,-MD,kernel/.bounds.s.d  -nostdinc -isystem
> >>> /usr/lib/gcc/m68k-linux-gnu/4.1.2/include
> >>> -I/scratch/geert/linux/linux-next/arch/m68k/include
> >>> Iarch/m68k/include/generated -Iinclude  -include
> >>> /scratch/geert/linux/linux-next/include/linux/kconfig.h -D__KERNEL__
> >>> -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing
> >>> -fno-common -Werror-implicit-function-declaration -Wno-format-security
> >>> -fno-delete-null-pointer-checks -Os -fno-reorder-blocks
> >>> -fno-ipa-cp-clone -pipe -fno-strength-reduce -ffixed-a2
> >>> -fno-omit-frame-pointer -fno-optimize-sibling-calls -g
> >>> -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(bounds)"
> >>> -D"KBUILD_MODNAME=KBUILD_STR(bounds)" -fverbose-asm -S -o
> >>> kernel/bounds.s kernel/bounds.c
> >>> cc1: error: unrecognized command line option "-fno-ipa-cp-clone"
> >>> make[1]: *** [kernel/bounds.s] Error 1
> >>> make: *** [prepare0] Error 2
> >>
> >> So with the above command-line gcc fails with an exit code for -fno-ipa-cp-clone.
> >> But with cc-option it does not.
> >>
> >> Can you dig out the command-line used for cc-option?
> >> We may be able to analyze why it fails in the above case, but
> >> not with cc-option.
> >
> > gcc -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs
> > -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration
> > -Wno-format-security -fno-delete-null-pointer-checks -Os
> > -fno-ipa-cp-clone -c -xc /dev/null -o .6376.tmp
> >
> > So it's running "gcc" instead of "m68k-linux-gnu-gcc".
> 
> Found it using the patch below to log all try-run invocations:
> 
> diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
> index 6a3ee98..12eb839 100644
> --- a/scripts/Kbuild.include
> +++ b/scripts/Kbuild.include
> @@ -88,6 +88,7 @@ TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword
> $(KBUILD_EXTMOD))/)
>  try-run = $(shell set -e;              \
>         TMP="$(TMPOUT).$$$$.tmp";       \
>         TMPO="$(TMPOUT).$$$$.o";        \
> +       echo "$(1)" >> /tmp/x;          \
>         if ($(1)) >/dev/null 2>&1;      \
>         then echo "$(2)";               \
>         else echo "$(3)";               \
> 
> | --- a/Makefile
> | +++ b/Makefile
> | @@ -564,6 +564,16 @@ else
> |  KBUILD_CFLAGS  += -O2
> |  endif
> |
> | +ifdef CONFIG_READABLE_ASM
> | +# Disable optimizations that make assembler listings hard to read.
> | +# reorder blocks reorders the control in the function
> | +# ipa clone creates specialized cloned functions
> | +# partial inlining inlines only parts of functions
> | +KBUILD_CFLAGS += $(call cc-option,-fno-reorder-blocks,) \
> | +                 $(call cc-option,-fno-ipa-cp-clone,) \
> | +                 $(call cc-option,-fno-partial-inlining)
> | +endif
> | +
> 
> The above calls cc-option using CC = gcc, as my cross compiler
> is only setup in the next line:
> 
> | include $(srctree)/arch/$(SRCARCH)/Makefile
> 
> This affects all architectures that setup CROSS_COMPILE in their arch/*/Makefile
> (blackfin, h8300, m68k, mips, parisc, score, sh, tile, unicore32, xtensa).
> 
> Worse, m68k, sh, and xtensa call cc-option in their arch/*/Makefile
> before CROSS_COMPILE is setup, causing those checks to be done against
> the host compiler when cross-compiling.
> 
> Sending out patches, as soon as the (automatic) "git gc" completes...

I expected something like this - but I got distraced by some sparc32 work and
forgot to return to you.

Great that you found it so we can get this fixed!

	Sam

  reply	other threads:[~2012-05-12 20:26 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-28 18:51 [PATCH 1/2] x86: Use -mno-avx when available Andi Kleen
2012-03-28 18:51 ` [PATCH 2/2] Add CONFIG_READABLE_ASM Andi Kleen
2012-03-30 17:41   ` [tip:x86/cleanups] debug: " tip-bot for Andi Kleen
2012-04-12 19:08   ` [PATCH 2/2] " Geert Uytterhoeven
2012-04-12 19:36     ` H. Peter Anvin
2012-04-12 19:42       ` Geert Uytterhoeven
2012-04-12 19:40     ` Sam Ravnborg
2012-04-12 19:47       ` Geert Uytterhoeven
2012-04-12 19:52         ` Sam Ravnborg
2012-04-12 19:57         ` Andi Kleen
2012-04-12 20:07           ` Sam Ravnborg
2012-04-12 20:17             ` Geert Uytterhoeven
2012-04-12 20:35               ` Sam Ravnborg
2012-05-08 19:36                 ` Geert Uytterhoeven
2012-05-12 20:23                   ` Geert Uytterhoeven
2012-05-12 20:25                     ` Sam Ravnborg [this message]
2012-03-30 17:16 ` [tip:x86/urgent] x86: Use -mno-avx when available tip-bot for Andi Kleen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120512202559.GA4893@merkur.ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=ak@linux.intel.com \
    --cc=andi@firstfloor.org \
    --cc=geert@linux-m68k.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.