9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] 8c padding problem
@ 2007-12-21 23:10 erik quanstrom
  2007-12-21 23:24 ` Martin Neubauer
  2007-12-21 23:48 ` Skip Tavakkolian
  0 siblings, 2 replies; 11+ messages in thread
From: erik quanstrom @ 2007-12-21 23:10 UTC (permalink / raw)
  To: 9fans

i've got a structure that looks like this

	/* ethernet header */
	typedef struct{
		uchar	d[6];
		uchar	s[6];
		uchar	type[2];
	}Ehdr;

	typedef struct{
		Ehdr;
		uchar	op[2];
		...
	}Pkt;

the problem is that 8c adds two bytes of padding between
the end of pkt->type and pkt->op.  since sizeof Ehdr%wordsize != 0
this isn't totally unexpected.  suprisingly, adding the
appropriate packed pragmas doesn't eliminate the padding.
is this a bug?

of course, if my original definition had been

	typedef struct{
		uchar	d[6];
		uchar	s[6];
		uchar	type[2];
		uchar	op[2];
		...
	}Pkt;

i would have been fine.  but doesn't this defeat
the point of unnamed structures?

also, the fact that there is padding contradicts
my mental model of unnamed structures.  i thought
that all the elements of unnamed structures were
laid down as if they were elements of the enclosing
structure.  my reading /sys/doc/compilers.ps doesn't
say much.  is there another reference on unnamed
structures?

- erik


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2007-12-22 11:09 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-21 23:10 [9fans] 8c padding problem erik quanstrom
2007-12-21 23:24 ` Martin Neubauer
2007-12-22  0:00   ` erik quanstrom
2007-12-21 23:48 ` Skip Tavakkolian
2007-12-21 23:52   ` erik quanstrom
2007-12-21 23:59     ` Skip Tavakkolian
2007-12-22  0:20       ` erik quanstrom
2007-12-22  4:25         ` Bruce Ellis
2007-12-22  4:34           ` erik quanstrom
2007-12-22  4:41             ` Bruce Ellis
2007-12-22 11:09   ` C H Forsyth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).