All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] toolchain: get rid of -pipe from optimisations
@ 2014-12-21 13:00 Yann E. MORIN
  2014-12-21 21:05 ` Thomas Petazzoni
  2015-01-26 21:51 ` Romain Naour
  0 siblings, 2 replies; 4+ messages in thread
From: Yann E. MORIN @ 2014-12-21 13:00 UTC (permalink / raw)
  To: buildroot

-pipe is causing some build failures in Linux kernel >= 3.17.

Also, nowadays, using -pipe does not gain as much as it used to back in
the days:

Measurements made with a 3.16.7 Linux kernel:
    make linux-depends
    time sh -c 'make linux-build >/dev/null 2>&1'

Without -pipe:
    716.32user 54.44system 3:42.12elapsed 346%CPU
    721.22user 54.47system 3:41.81elapsed 349%CPU
    722.44user 54.00system 3:42.13elapsed 349%CPU
    721.03user 53.81system 3:41.92elapsed 349%CPU
    713.21user 53.63system 3:40.51elapsed 347%CPU
    706.67user 52.42system 3:38.40elapsed 347%CPU
    714.40user 53.18system 3:40.16elapsed 348%CPU
    706.01user 53.09system 3:37.87elapsed 348%CPU
    705.98user 53.01system 3:38.03elapsed 348%CPU
    714.17user 53.55system 3:39.98elapsed 348%CPU
Average:                   3:40.29elapsed

With -pipe:
    720.13user 53.90system 3:41.98elapsed 348%CPU
    713.38user 53.69system 3:40.44elapsed 347%CPU
    711.60user 52.81system 3:39.06elapsed 348%CPU
    708.66user 53.09system 3:38.59elapsed 348%CPU
    711.76user 53.00system 3:38.48elapsed 350%CPU
    717.85user 53.97system 3:41.77elapsed 348%CPU
    716.77user 53.77system 3:40.91elapsed 348%CPU
    717.48user 53.65system 3:41.24elapsed 348%CPU
    721.44user 55.67system 3:43.45elapsed 347%CPU
    724.61user 55.63system 3:43.35elapsed 349%CPU
Average:                   3:40.93elapsed

The delta is well in the measurement noise.

Just get rid of it.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Romain Naour <romain.naour@openwide.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 toolchain/toolchain-common.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in
index b246834..2ee2019 100644
--- a/toolchain/toolchain-common.in
+++ b/toolchain/toolchain-common.in
@@ -122,7 +122,7 @@ config BR2_USE_MMU
 
 config BR2_TARGET_OPTIMIZATION
 	string "Target Optimizations"
-	default "-pipe"
+	default ""
 	help
 	  Optimizations to use when building for the target host.
 	  NOTE: gcc optimization level is defined in build options.
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH] toolchain: get rid of -pipe from optimisations
  2014-12-21 13:00 [Buildroot] [PATCH] toolchain: get rid of -pipe from optimisations Yann E. MORIN
@ 2014-12-21 21:05 ` Thomas Petazzoni
  2015-01-26 21:51 ` Romain Naour
  1 sibling, 0 replies; 4+ messages in thread
From: Thomas Petazzoni @ 2014-12-21 21:05 UTC (permalink / raw)
  To: buildroot

Dear Yann E. MORIN,

On Sun, 21 Dec 2014 14:00:25 +0100, Yann E. MORIN wrote:
> -pipe is causing some build failures in Linux kernel >= 3.17.
> 
> Also, nowadays, using -pipe does not gain as much as it used to back in
> the days:
> 
> Measurements made with a 3.16.7 Linux kernel:
>     make linux-depends
>     time sh -c 'make linux-build >/dev/null 2>&1'
> 
> Without -pipe:
>     716.32user 54.44system 3:42.12elapsed 346%CPU
>     721.22user 54.47system 3:41.81elapsed 349%CPU
>     722.44user 54.00system 3:42.13elapsed 349%CPU
>     721.03user 53.81system 3:41.92elapsed 349%CPU
>     713.21user 53.63system 3:40.51elapsed 347%CPU
>     706.67user 52.42system 3:38.40elapsed 347%CPU
>     714.40user 53.18system 3:40.16elapsed 348%CPU
>     706.01user 53.09system 3:37.87elapsed 348%CPU
>     705.98user 53.01system 3:38.03elapsed 348%CPU
>     714.17user 53.55system 3:39.98elapsed 348%CPU
> Average:                   3:40.29elapsed
> 
> With -pipe:
>     720.13user 53.90system 3:41.98elapsed 348%CPU
>     713.38user 53.69system 3:40.44elapsed 347%CPU
>     711.60user 52.81system 3:39.06elapsed 348%CPU
>     708.66user 53.09system 3:38.59elapsed 348%CPU
>     711.76user 53.00system 3:38.48elapsed 350%CPU
>     717.85user 53.97system 3:41.77elapsed 348%CPU
>     716.77user 53.77system 3:40.91elapsed 348%CPU
>     717.48user 53.65system 3:41.24elapsed 348%CPU
>     721.44user 55.67system 3:43.45elapsed 347%CPU
>     724.61user 55.63system 3:43.35elapsed 349%CPU
> Average:                   3:40.93elapsed
> 
> The delta is well in the measurement noise.
> 
> Just get rid of it.
> 
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Cc: Romain Naour <romain.naour@openwide.fr>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
>  toolchain/toolchain-common.in | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied, thanks.

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH] toolchain: get rid of -pipe from optimisations
  2014-12-21 13:00 [Buildroot] [PATCH] toolchain: get rid of -pipe from optimisations Yann E. MORIN
  2014-12-21 21:05 ` Thomas Petazzoni
@ 2015-01-26 21:51 ` Romain Naour
  2015-01-26 21:57   ` Thomas Petazzoni
  1 sibling, 1 reply; 4+ messages in thread
From: Romain Naour @ 2015-01-26 21:51 UTC (permalink / raw)
  To: buildroot

Hi Yann, All,

Le 21/12/2014 14:00, Yann E. MORIN a ?crit :
> -pipe is causing some build failures in Linux kernel >= 3.17.
> 

For the record.

According to Mentor codeSourcey support, the issue with -pipe is a kernel bug
which was introduced by the commit a9cfccee6604854aebc70215610b9788667f4fec in
the kernel 3.17 sources.

"x86, build: Change code16gcc.h from a C header to an assembly header"

-# older versions of GCC, we need to play evil and unreliable tricks to
-# attempt to ensure that our asm(".code16gcc") is first in the asm
-# output.
-CODE16GCC_CFLAGS := -m32 -include $(srctree)/arch/x86/boot/code16gcc.h \
-		    $(call cc-option, -fno-toplevel-reorder,\
-		      $(call cc-option, -fno-unit-at-a-time))
+# older versions of GCC, include an *assembly* header to make sure that
+# gcc doesn't play any games behind our back.
+CODE16GCC_CFLAGS := -m32 -Wa,$(srctree)/arch/x86/boot/code16gcc.h

But the bug seems to apply only on specific version of the GCC compiler (4.6,
4.7 or 4.8). I don't know why GCC 4.9 is not affected/what fixed the issue...

The issue can be reproduced with this toolchain:
http://autobuild.buildroot.net/toolchains/configs/x86_64-ctng_locales-linux-gnu.config

Here is the explanation:
"With -pipe, the compiler calls the assembler with no input file arguments to
indicate that it should take input from stdin.
This means that if you pass an extra input file argument using -Wa, you confuse
the expected interface between the compiler and assembler because the assembler
sees an input file argument and so does not read stdin; you either need to avoid
-pipe for the affected compilations, or pass an extra "-" argument to the
assembler (-Wa,-) for those compiler versions."

So I tried to compile the kernel by changing this line:
-CODE16GCC_CFLAGS := -m32 -Wa,$(srctree)/arch/x86/boot/code16gcc.h
+CODE16GCC_CFLAGS := -m32 -Wa,-,$(srctree)/arch/x86/boot/code16gcc.h

And success, it build !

What is surprising, is until recently we build everything in Buildroot with
-pipe and no error like this occurred...

Best regards,
Romain Naour

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH] toolchain: get rid of -pipe from optimisations
  2015-01-26 21:51 ` Romain Naour
@ 2015-01-26 21:57   ` Thomas Petazzoni
  0 siblings, 0 replies; 4+ messages in thread
From: Thomas Petazzoni @ 2015-01-26 21:57 UTC (permalink / raw)
  To: buildroot

Dear Romain Naour,

On Mon, 26 Jan 2015 22:51:16 +0100, Romain Naour wrote:

> So I tried to compile the kernel by changing this line:
> -CODE16GCC_CFLAGS := -m32 -Wa,$(srctree)/arch/x86/boot/code16gcc.h
> +CODE16GCC_CFLAGS := -m32 -Wa,-,$(srctree)/arch/x86/boot/code16gcc.h
> 
> And success, it build !

[...]

Thanks for the feedback, definitely interesting!

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-01-26 21:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-21 13:00 [Buildroot] [PATCH] toolchain: get rid of -pipe from optimisations Yann E. MORIN
2014-12-21 21:05 ` Thomas Petazzoni
2015-01-26 21:51 ` Romain Naour
2015-01-26 21:57   ` Thomas Petazzoni

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.