svn commit: r216161 - in head/sys: amd64/amd64 i386/i386
Roman Divacky
rdivacky at FreeBSD.org
Sat Dec 4 10:54:23 UTC 2010
On Fri, Dec 03, 2010 at 06:17:16PM -0500, Jung-uk Kim wrote:
> On Friday 03 December 2010 06:02 pm, Jung-uk Kim wrote:
> > On Friday 03 December 2010 05:43 pm, Jung-uk Kim wrote:
> > > On Friday 03 December 2010 05:08 pm, John Baldwin wrote:
> > > > On Friday, December 03, 2010 4:54:10 pm Jung-uk Kim wrote:
> > > > > Author: jkim
> > > > > Date: Fri Dec 3 21:54:10 2010
> > > > > New Revision: 216161
> > > > > URL: http://svn.freebsd.org/changeset/base/216161
> > > > >
> > > > > Log:
> > > > > Explicitly initialize TSC frequency. To calibrate TSC
> > > > > frequency, we use DELAY(9) and it may use TSC in turn if TSC
> > > > > frequency is non-zero.
> > > >
> > > > We zero the BSS, so these were already zero. This just makes
> > > > the actual kernel file on disk larger by wasting space in .data
> > > > instead of .bss.
> > >
> > > Please note that I didn't touch other variables, e.g.,
> > > tsc_is_broken, because I knew that. However, I just wanted to do
> > > that *explicitly*. Anyway, it is reverted now and SVN will
> > > remember what I wanted to do. ;-)
> > >
> > > BTW, if my memory serves, GCC (and all modern C compilers) put(s)
> > > zero-initialized variables back in .bss.
> >
> > I just tried it. GCC generates identical binaries as I thought.
> > However, Clang doesn't do the optimization. :-/
>
> Strangely, Clang increases .bss when a global variable is explicitly
> initialized to zero.
>
> - 2 .bss 00000004 0000000000000000 0000000000000000 00000540 2**2
> + 2 .bss 00000014 0000000000000000 0000000000000000 00000540 2**3
in my naive test gcc produces:
.globl foo
.section .bss
.align 4
.type foo, @object
.size foo, 4
foo:
.zero 4
and clang produces:
.type foo, at object # @foo
.bss
.globl foo
.align 4
foo:
.long 0 # 0x0
.size foo, 4
ie. both put them into BSS
More information about the svn-src-head
mailing list