[Xcb] compiler padding and sync extension

Josh Triplett josh at joshtriplett.org
Tue Aug 18 07:40:30 PDT 2009

On Mon, Aug 17, 2009 at 09:41:38PM -0500, Aaron Young wrote:
> While playing around with the sync extension using XCB, I've
> apparently come across the same issue mentioned here:
> http://lists.freedesktop.org/archives/xcb/2007-August/002970.html,
> which seems to have fallen between the cracks somewhere.

This does indeed seem to have gotten lost.

> I'm no expert, but I was a little surprised to discover that XCB
> structures weren't already defined with __attribute__ ((packed)),
> #pragma pack(1), etc.  Any reason this approach hasn't been adopted?
> Does the sync extension not get enough use to warrant fixing this?

This does need fixing.  The question becomes: how do we fix it
optimally?  As I understand it, __attribute__((packed)) makes GCC
generate fairly terrible code sometimes; we'd need to check if it does
so in this case.  That would in any case only solve the problem for GCC.
The "solution" of #defining a wire size for structures that disagrees
with sizeof seems even worse, though; on the other hand, given that many
structures have variable-length fields afterward that make sizeof less
useful to the client app, maybe the pain would remain confined to XCB's
accessor functions.

- Josh Triplett

More information about the Xcb mailing list