This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] Re: [PATCH] compile with -funit-at-a-time option of gcc

To: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
Subject: [Xen-devel] Re: [PATCH] compile with -funit-at-a-time option of gcc
From: Andi Kleen <ak@xxxxxxx>
Date: 30 Jun 2005 11:12:11 +0200
Cc: Ian.Pratt@xxxxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Thu, 30 Jun 2005 09:11:02 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <172e2cac785f4e158b35a6eea5d96fc7@xxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <A95E2296287EAD4EB592B5DEEFCE0E9D282447@xxxxxxxxxxxxxxxxxxxxxxxxxxx> <172e2cac785f4e158b35a6eea5d96fc7@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3
Keir Fraser <Keir.Fraser@xxxxxxxxxxxx> writes:

> On 30 Jun 2005, at 08:21, Ian Pratt wrote:
> >> This patch makes xen compiled with gcc option
> >> -funit-at-a-time if supported. This option is available for
> >> gcc 3.4 and upward, which reduces the .text binary size considerably.
> >
> > I haven't come across this option before. What does it actually do?
> Considers whole file at a time when doing optimisation. It's the

Basically it allows inlining even when a function is defined after
the caller and makes the inliner more aggressive. Everything static with
only one caller will be always inlined.

> default on gcc4 with -O2 and above. We probably don;t want to enable
> it before a general move to gcc4 as it does break stuff (albeit stuff
> that was buggy/broken already ;-) ). Adding another skanky CFLAG that
> will be defaulted anyway in future, to get the benefit of maybe subtly
> breaking Xen, doesn;t sound like a big win to me.

The main breakage that can usually happen with unit-at-a-time
(short of broken inline asms) is that your stack frames grow
too big because gcc before 4 is not very good at reusing the slots, 
but they add up with aggressive inlining.

You can check for that with a simple 
objdump -S ... | grep sub.*[re]sp | sort ...
and check for anything big enough that might overflow your kernel stack.

The main kernel has a special check script for this too.


Xen-devel mailing list