Re: [PATCH] Force same size of struct autofs_v5_packet on x86 andx86_64

From: Al Viro
Date: Mon Sep 19 2011 - 02:11:08 EST


On Mon, Sep 19, 2011 at 11:52:48AM +0800, Ian Kent wrote:

> > btw. where are the padding bytes are added? how to tell gcc to display
> > this?
>
> It's also been a long time since I looked into this so I don't remember
> the processor alignment details.
>
> Not sure if there is a compiler option that would report this, sorry,
> anyone else?

Padding is added in the very end. The thing is, it's not a misaligned
field per se; they all have a natural alignment in there. It's that
__u64 ino has alignment 8 on amd64 and alignment 4 on i386. So the alignment
requirements for the entire structure are different - on amd64 the address
of the entire thing must be a multiple of 8 and on i386 it can be any multiple
of 4. IOW, on i386 you can just put them one after another in e.g. an array
(the size without any padding is 300 bytes) and on amd64 you need 4 bytes
of padding added between them. I.e. sizeof needs to go up by 4, with the
padding added in the end.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/