Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 May 2002 13:19:27 -0700
From:      Marcel Moolenaar <marcel@xcllnt.net>
To:        Tony Finch <dot@dotat.at>
Cc:        Poul-Henning Kamp <phk@critter.freebsd.dk>, cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG
Subject:   Re: cvs commit: src/sys/sys gpt.h
Message-ID:  <20020529131927.C64995@kayak.xcllnt.net>
In-Reply-To: <20020529173621.B11817@chiark.greenend.org.uk>
References:  <200205290258.g4T2wgF83137@freefall.freebsd.org> <9551.1022648961@critter.freebsd.dk> <20020529053653.GA306@dhcp01.pn.xcllnt.net> <20020529173621.B11817@chiark.greenend.org.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, May 29, 2002 at 05:36:21PM +0100, Tony Finch wrote:
> On Tue, May 28, 2002 at 10:36:53PM -0700, Marcel Moolenaar wrote:
> > 
> > I see what you mean, but packing and unpacking is not the problem. It's
> > sizeof() that's got it wrong. I don't quite understand why sizeof()
> > would yield a size that's 4 bytes longer than the structure actually
> > is. It smells like a gcc bug, but I assume for now I'm just missing
> > something.
> 
> It's required for correct alignment of the uint64_t members when you
> create an array of the struct.

I think it's a mistake to make the padding between elements in an
array part of the type of element. An int32_t followed by an int64_t
in a struct also doesn't cause the int32_t to have a 64-bit size
to handle the alignment of the int64_t that follows it. It's now
totally impossible to answer trivial questions like:

	what's the size of struct X { int64_t a; int32_t b; };

There's no value in an answer that starts of with "It depends...".
The size should always be 12 bytes, independent of any alignment
requirements I may attach to it.

Size and alignment are independent properties.

-- 
 Marcel Moolenaar	  USPA: A-39004		 marcel@xcllnt.net

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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