lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.2.00.0903192121300.29264@localhost.localdomain>
Date:	Thu, 19 Mar 2009 22:02:59 +0100 (CET)
From:	Thomas Gleixner <tglx@...utronix.de>
To:	Sam Ravnborg <sam@...nborg.org>
cc:	LKML <linux-kernel@...r.kernel.org>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Ingo Molnar <mingo@...e.hu>,
	Peter Zijlstra <peterz@...radead.org>
Subject: [PATCH] kbuild: work around distcc/icecc madness

Impact: workaround for distcc/icecc

Peter and I noticed that distcc and icecc based kernel compiles
started to show random full kernel rebuilds even when nothing or just
a .c file changed. The reason is "change of the command line" which
caused scripts/mod/empty.o to rebuild and due to the dependencies the
complete kernel tree. I never change the command line simply because I
use a script for my builds.

The root cause for this problem is the check for the CFI support in
x86 binutils. The call is generated via:

    echo -e "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" -

This works fine as long as a local gcc is used or distcc/icecc use the
local machine. When distcc/icecc offload the compile to a remote
machine the compile fails with the following error message:
   gcc: : No such file or directory

Now we get command lines with -DCONFIG_CFI* and without every other
compile which causes the full rebuilds.

Digging trough the distcc/icecc code it seems that the stdin input for
remote compiles is not handled correctly. Indeed there is some strange
comment about this, but unfortunately no decision to compile it
local. :(

distcc and icecc are used by many developers and we can not fix the
versions which are out there in the wild, but we can avoid the stdin
based call easily: echo the asm code into the temp file which is used
for the output and use it as input file for the compiler.

Signed-off-by: Thomas Gleixner <tglx@...utronix.de>

---
 scripts/Kbuild.include |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Index: linux-2.6-tip/scripts/Kbuild.include
===================================================================
--- linux-2.6-tip.orig/scripts/Kbuild.include
+++ linux-2.6-tip/scripts/Kbuild.include
@@ -98,8 +98,9 @@ as-option = $(call try-run,\
 # as-instr
 # Usage: cflags-y += $(call as-instr,instr,option1,option2)
 
-as-instr = $(call try-run,\
-	echo -e "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" -,$(2),$(3))
+as-instr = $(call try-run,		\
+	echo -e "$(1)" > "$$TMP"; 	\
+	$(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" "$$TMP",$(2),$(3))
 
 # cc-option
 # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ