Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Nov 2006 16:59:04 +0000
From:      Nicholas Clark <nick@ccl4.org>
To:        Ruslan Ermilov <ru@freebsd.org>
Cc:        arm@freebsd.org, Giorgos Keramidas <keramida@freebsd.org>, current@freebsd.org
Subject:   Re: [head tinderbox] failure on arm/arm
Message-ID:  <20061112165904.GP6501@plum.flirble.org>
In-Reply-To: <20061112155723.GB50349@rambler-co.ru>
References:  <20061112133929.9194773068@freebsd-current.sentex.ca> <20061112140010.GA47660@rambler-co.ru> <20061112142710.GE91556@wombat.fafoe.narf.at> <20061112133929.9194773068@freebsd-current.sentex.ca> <20061112140010.GA47660@rambler-co.ru> <20061112144230.GC2331@kobe.laptop> <20061112145151.GC49703@rambler-co.ru> <20061112151150.GA2988@kobe.laptop> <20061112155723.GB50349@rambler-co.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Nov 12, 2006 at 06:57:23PM +0300, Ruslan Ermilov wrote:
> So your sizeof() argument, well...  I don't understand it and it
> doesn't make things clearer at least to me.  I still believe this
> is bug in GCC that the alignment requirement is so high for a
> "struct foo { char x; }" (there's no real reason for this!).

It is no bug in GCC. ANSI C gives extreme flexibility for the compiler to
align (or pad) structures. The assumptions in the code you presented are not
portable. The problem tends to be that ARM is the only common platform that
does structure alignment this way, so tends to trip up a lot of code that
has worked just fine in many other places.

There is a lot more detail in
http://netwinder.osuosl.org/users/b/brianbr/public_html/alignment.html
including how gcc's __packed__ extention can be used to tell gcc to align
structures in different ways.

Nicholas Clark



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