From owner-svn-src-head@FreeBSD.ORG Wed Oct 24 20:56:08 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 17ABA86F for ; Wed, 24 Oct 2012 20:56:08 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from c00l3r.networx.ch (c00l3r.networx.ch [62.48.2.2]) by mx1.freebsd.org (Postfix) with ESMTP id 755818FC16 for ; Wed, 24 Oct 2012 20:56:07 +0000 (UTC) Received: (qmail 36644 invoked from network); 24 Oct 2012 22:33:53 -0000 Received: from c00l3r.networx.ch (HELO [127.0.0.1]) ([62.48.2.2]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 24 Oct 2012 22:33:53 -0000 Message-ID: <508855DA.1080903@freebsd.org> Date: Wed, 24 Oct 2012 22:55:54 +0200 From: Andre Oppermann User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: attilio@FreeBSD.org Subject: Re: svn commit: r242014 - head/sys/kern References: <201210241836.q9OIafqo073002@svn.freebsd.org> <201210241443.25988.jhb@freebsd.org> <50884E9F.3090706@freebsd.org> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Jim Harris , John Baldwin X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Oct 2012 20:56:08 -0000 On 24.10.2012 22:29, Attilio Rao wrote: > On Wed, Oct 24, 2012 at 9:25 PM, Andre Oppermann 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