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-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080630162201.GC6643@c2.user-mode-linux.org>
Date:	Mon, 30 Jun 2008 12:22:01 -0400
From:	Jeff Dike <jdike@...toit.com>
To:	Benny Halevy <bhalevy@...asas.com>
Cc:	user-mode-linux-devel@...ts.sourceforge.net,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] fix extern inline errors with gcc 4.3.0

On Sun, Jun 29, 2008 at 10:32:43AM +0300, Benny Halevy wrote:
> Note that the crash happened with gcc 4.1.2 and it will get the
> -fno-unit-at-a-time flag with the proposed patch.
> 
> That said, this option or the lack of it ought not to cause any
> runtime crashes.  If it does, I'd feel much more comfortable to know
> exactly what the root cause is before deciding to use the flag to
> workaround^hide it.

I agree.

The constraints on [no-]unit-at-a-time that I see are:
	i386 uses no-unit-at-a-time for pre-4.0 (not 4.3)
	x86_64 uses unit-at-a-time always

	Uli reported a crash on x86_64 with gcc 4.1.2 with unit-at-a-time
	Ingo reported a gcc internal error with gcc 4.3 with
no-unit-at-a-time 
	You are seeing extern inlines not resolved with gcc 4.3 with
no-unit-at-a-time 

I'm tempted to follow x86 on this, with the results that
	extern inlines should be fine
	Ingo's gcc crash should not reappear
	Uli's crash may reappear

If that crash does come back, I'd say we should just debug it.  It's
likely UML implicitly relying on some gcc behavior anyway.

This is the patch that I'm dropping into my tree:

Index: linux-2.6.22/arch/um/Makefile-i386
===================================================================
--- linux-2.6.22.orig/arch/um/Makefile-i386	2008-05-29 11:21:25.000000000 -0400
+++ linux-2.6.22/arch/um/Makefile-i386	2008-06-30 12:20:01.000000000 -0400
@@ -32,4 +32,10 @@ cflags-y += $(call cc-option,-mpreferred
 # an unresolved reference.
 cflags-y += -ffreestanding
 
+# Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use
+# a lot more stack due to the lack of sharing of stacklots.  Also, gcc
+# 4.3.0 needs -funit-at-a-time for extern inline functions.
+KBUILD_CFLAGS += $(shell if [ $(call cc-version) -lt 0403 ] ; then \
+			echo $(call cc-option,-fno-unit-at-a-time); fi ;)
+
 KBUILD_CFLAGS += $(cflags-y)
Index: linux-2.6.22/arch/um/Makefile-x86_64
===================================================================
--- linux-2.6.22.orig/arch/um/Makefile-x86_64	2008-05-29 11:21:25.000000000 -0400
+++ linux-2.6.22/arch/um/Makefile-x86_64	2008-06-30 12:21:01.000000000 -0400
@@ -21,3 +21,6 @@ HEADER_ARCH := x86
 
 LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib64
 LINK-y += -m64
+
+# Do unit-at-a-time unconditionally on x86_64, following the host
+KBUILD_CFLAGS += $(call cc-option,-funit-at-a-time)

				Jeff

-- 
Work email - jdike at linux dot intel dot com
--
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