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? 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. -- Andriy Gapon _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[email protected]"

