Date: Wed, 24 Oct 2012 22:55:54 +0200 From: Andre Oppermann <andre@freebsd.org> To: attilio@FreeBSD.org Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Jim Harris <jim.harris@gmail.com>, John Baldwin <jhb@freebsd.org> Subject: Re: svn commit: r242014 - head/sys/kern Message-ID: <508855DA.1080903@freebsd.org> In-Reply-To: <CAJ-FndBH2cjF2ukt4373BwMsoWEeLykBhPQNnXUgpJ=4jd3LJg@mail.gmail.com> References: <201210241836.q9OIafqo073002@svn.freebsd.org> <201210241443.25988.jhb@freebsd.org> <CAJP=Hc9wLv02sX%2BWnzZtaKccSAFzqg8jT0oP13nLw1jMfwOEBQ@mail.gmail.com> <CAJ-FndDzBdq8q6J7QKqf=abi_702s_ia=pa3XbBv80rxbGb-SA@mail.gmail.com> <50884E9F.3090706@freebsd.org> <CAJ-FndBH2cjF2ukt4373BwMsoWEeLykBhPQNnXUgpJ=4jd3LJg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 24.10.2012 22:29, Attilio Rao wrote: > On Wed, Oct 24, 2012 at 9:25 PM, Andre Oppermann <andre@freebsd.org> wrote: >> On 24.10.2012 21:06, Attilio Rao wrote: >>> As I've already said in another thread __align() doesn't work on >>> object declaration, so what that won't pad it either if it is global >>> or part of a struct. >>> It is just implemented as __attribute__((aligned(X))): >>> http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Type-Attributes.html >> >> >> Actually it seems gcc itself doesn't really care and it up to the >> linker to honor that. > > Yes but the concept being that if you use __aligned() properly (when > defining a struct) the object will be correctly sized, so you will get > padding automatically. Yes. With __aligned() the start of the element/structure should begin on an address evenly dividable by the align value *and* it should pad out any remaining space up to the next evenly dividable address. The problem we have is that is apparently doesn't work correctly within gcc when creating structs nor within the linker when placing such supposedly aligned structs in the .bss section (at least the padding is missing). It seems to come down to either a) fixing gcc+ld; or b) hacking around it by magically padding the structs that require it. -- Andre
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?508855DA.1080903>