From: Benny Halevy <bhalevy@panasas.com>
To: Jeff Dike <jdike@addtoit.com>
Cc: user-mode-linux-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] fix extern inline errors with gcc 4.3.0
Date: Mon, 30 Jun 2008 19:37:27 +0300 [thread overview]
Message-ID: <48690BC7.5060809@panasas.com> (raw)
In-Reply-To: <20080630162201.GC6643@c2.user-mode-linux.org>
On Jun. 30, 2008, 19:22 +0300, Jeff Dike <jdike@addtoit.com> wrote:
> 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.
Agreed.
>
> 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 \
This isn't exactly aligned with the comment above.
Should be -lt 0400, as in 22eecde2f9034764a3fd095eecfa3adfb8ec9a98?
> + 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)
Hmm, arch/um/Makefile includes $(srctree)/$(ARCH_DIR)/Makefile-$(SUBARCH)
before add -fno-unit-at-a-time to KBUILD_CFLAGS.
Will this override the flag set first here?
Benny
>
> Jeff
>
next prev parent reply other threads:[~2008-06-30 16:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-26 13:50 [PATCH] fix extern inline errors with gcc 4.3.0 Benny Halevy
2008-06-27 16:26 ` Jeff Dike
2008-06-28 13:10 ` Halevy, Benny
2008-06-29 7:32 ` Benny Halevy
2008-06-30 16:22 ` Jeff Dike
2008-06-30 16:37 ` Benny Halevy [this message]
2008-07-07 16:58 ` Jeff Dike
2008-06-30 16:43 ` Adrian Bunk
2008-08-08 1:02 ` [uml-devel] " Rob Landley
2008-08-08 1:42 ` Rob Landley
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=48690BC7.5060809@panasas.com \
--to=bhalevy@panasas.com \
--cc=jdike@addtoit.com \
--cc=linux-kernel@vger.kernel.org \
--cc=user-mode-linux-devel@lists.sourceforge.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox