Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Mar 2011 00:24:36 +0100
From:      Dimitry Andric <dim@FreeBSD.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        Roman Divacky <rdivacky@freebsd.org>, freebsd-current@freebsd.org, current@freebsd.org
Subject:   Re: [TESTING]: one more boot2 shrinking patch
Message-ID:  <4D780C34.4010509@FreeBSD.org>
In-Reply-To: <201103090823.41757.jhb@freebsd.org>
References:  <20110308173909.GA71091@freebsd.org>	<20110308211931.1c5deb8b@r500.local>	<20110308205212.GA96321@freebsd.org> <201103090823.41757.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2011-03-09 14:23, John Baldwin wrote:
>> gcc nor clang emits any code to initialize static type foo = 0;
>> because it's expected that BSS is zeroed, which is not the case
>> in boot2 so we have to initialize that explicitly
> It used to be that if you explicitly initialized a variable to 0, it was
> initialized to 0 in .data, but now gcc and clang recognize it is set to 0 and
> move it to .bss.  There appears to be no way to turn this feature off,

Yes, there is; both gcc and clang have this option to turn it off:

-fno-zero-initialized-in-bss
     If the target supports a BSS section, GCC by default puts variables
     that are initialized to zero into BSS. This can save space in the
     resulting code.

     This option turns off this behavior because some programs
     explicitly rely on variables going to the data section. E.g., so
     that the resulting executable can find the beginning of that
     section and/or make assumptions based on that.

     The default is -fzero-initialized-in-bss.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D780C34.4010509>