Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Jul 2010 17:12:42 +0000 (UTC)
From:      "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>
To:        Andriy Gapon <avg@freebsd.org>
Cc:        freebsd-hackers@freebsd.org, Konstantin Belousov <kib@freebsd.org>, Navdeep Parhar <np@freebsd.org>, Peter Wemm <peter@freebsd.org>
Subject:   Re: elf obj load: skip zero-sized sections early
Message-ID:  <20100705171155.K14969@maildrop.int.zabbadoz.net>
In-Reply-To: <4C320E6E.4040007@freebsd.org>
References:  <4C246CD0.3020606@freebsd.org> <20100702082754.S14969@maildrop.int.zabbadoz.net> <4C320E6E.4040007@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 5 Jul 2010, Andriy Gapon wrote:

> on 02/07/2010 11:29 Bjoern A. Zeeb said the following:
>> On Fri, 25 Jun 2010, Andriy Gapon wrote:
>>
>> Hey,
>>
>>> Proposed patch skips zero sized sections without going into trouble of
>>> allocating section entry (progtab), doing zero-sized memory allocs and
>>> copies.
>>> I observe that sometimes zero-sized set_pcpu sections are produced in
>>> module
>>> objects, maybe when a module doesn't create any per cpu data of its
>>> one, but
>>> references external pcpu data.  Not sure.
> [snip]
>>> This work is based on np@'s investigation and original patch:
>>> http://lists.freebsd.org/pipermail/freebsd-hackers/2009-November/030093.html
>>>
>>
>> Have you guys figured this out already?
>
> By 'this' - do you mean why that zero-sized section is produced at all?
> Does it really matter why that happens?

Well, no, I was thinking of the workaround and going ahead to commit
somehting;)


> I stated my guess already.  Now I see that it is enough to simply include
> sys/pcpu.h for this to happen.  Inline assembly at the start of the said header
> unconditionally creates the section.  If DPCPU_DEFINE is never used in a module,
> then set_pcpu section remains empty.  Neither compiler nor linker have any reason
> to drop empty sections in the build process for amd64 modules.
>
> I am not sure if ".section set_pcpu" assembly can be made conditional or moved
> some place else, so that the section is only created when DPCPU_DEFINE is actually
> used.

The same applies to VIMAGE btw.  Same technique.

/bz

-- 
Bjoern A. Zeeb    From August on I will have a life.  It's now up to you
to do the maths and count to 64.     -- Bondorf, Germany, 14th June 2010



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