Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Nov 2006 22:28:10 +0300
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        Alexander Kabaev <kabaev@gmail.com>
Cc:        arm@FreeBSD.org, Giorgos Keramidas <keramida@FreeBSD.org>, current@FreeBSD.org
Subject:   Re: [head tinderbox] failure on arm/arm
Message-ID:  <20061112192810.GC1173@rambler-co.ru>
In-Reply-To: <20061112132105.6bac38d6@kan.dnsalias.net>
References:  <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> <20061112165904.GP6501@plum.flirble.org> <20061112171436.GF50349@rambler-co.ru> <20061112180758.GD4237@kobe.laptop> <20061112132105.6bac38d6@kan.dnsalias.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--ALfTUftag+2gvp1h
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sun, Nov 12, 2006 at 01:21:05PM -0500, Alexander Kabaev wrote:
> GCC expects 4-byte aligned structured on ARM but does not necessarily
> have to. We can change the default at the expense of possible more
> inefficient code generated and lost binary compatibility with other ARM
> OSes out there. So this is trade off between unclear performance
> penalty and an unspecified but certainly sizable number of other
> landmines like this lurking on the code.
>=20
> We should decide what evil we regard as lesser.
>=20
This is the only buildworld problem so far on FreeBSD/ARM, so my
feeling is that we can actually benefit from leaving it "as is",
as it has a potential of making our code more portable.  Of course
if binary compatibility for structs across platforms is an issue,
a structure should be "packed", because otherwise the C standard
says that "Each non-bit-field member of a structure or union object
is aligned in an implementation-defined manner appropriate to its
type."

On the other hand, having GCC align "struct foo { char x[11]; }"
on a four-byte boundary (other than for backward compatibility)
doesn't make too much sense to me.

I don't know GCC rules for alignment of structure members.  For
example, if it's guaranteed (in GCC) that offsetof(struct foo, bar)
is always 1 for "struct foo { char foo; char bar; }" (without the
"packed" attribute) on all platforms and OSes GCC supports?
I'd expect the latter to be "4" for FreeBSD/ARM but fortunately
it stays "1", i.e., only the structure alignment is affected,
and not of structure members (which is POLA but makes the 4 byte
for structure alignment questionable).


Cheers,
--=20
Ruslan Ermilov
ru@FreeBSD.org
FreeBSD committer

--ALfTUftag+2gvp1h
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (FreeBSD)

iD8DBQFFV3XKqRfpzJluFF4RAkf+AJ9iKs5nW9ORpNQnI4vQUWSAHMFMWACfdLsB
aBsZvSlKNYnR6XkANypmCdg=
=CPYa
-----END PGP SIGNATURE-----

--ALfTUftag+2gvp1h--



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