LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: "Phil Endecott" <phil_arcwk_endecott@chezphil.org>
To: "Jan Blunck" <jblunck@suse.de>
Cc: <linux-kernel@vger.kernel.org>
Subject: Re: Subtleties of __attribute__((packed))
Date: Wed, 06 Dec 2006 15:22:38 +0000 [thread overview]
Message-ID: <1165418558832@dmwebmail.belize.chezphil.org> (raw)
In-Reply-To: <4de7f8a60612060704k7d7c1ea3o1d43bee6c5e372d4@mail.gmail.com>
Jan Blunck wrote:
> On 12/6/06, Phil Endecott <phil_arcwk_endecott@chezphil.org> wrote:
>> I used to think that this:
>>
>> struct foo {
>> int a __attribute__((packed));
>> char b __attribute__((packed));
>> ... more fields, all packed ...
>> };
>>
>> was exactly the same as this:
>>
>> struct foo {
>> int a;
>> char b;
>> ... more fields ...
>> } __attribute__((packed));
>>
>> but it is not, in a subtle way.
>>
>
> The same code is generated. [...]
I don't think so. Example:
struct test {
int a __attribute__((packed));
int b __attribute__((packed));
};
char c = 1;
struct test t = { .a=2, .b=3 };
$ arm-linux-gnu-gcc -O2 -S -W -Wall test1.c
.file "test2.c"
.global c
.data
.type c, %object
.size c, 1
c:
.byte 1
.global t
.align 2 <<<<<<<<===== t is aligned
.type t, %object
.size t, 8
t:
.word 2
.word 3
.ident "GCC: (GNU) 4.1.2 20061028 (prerelease) (Debian 4.1.1-19)"
Compare with:
struct test {
int a;
int b;
} __attribute__((packed));
char c = 1;
struct test t = { .a=2, .b=3 };
$ arm-linux-gnu-gcc -O2 -S -W -Wall test2.c
.file "test1.c"
.global c
.data
.type c, %object
.size c, 1
c:
.byte 1
.global t <<<<<< "align" has gone, t is unaligned
.type t, %object
.size t, 8
t:
.4byte 2
.4byte 3
.ident "GCC: (GNU) 4.1.2 20061028 (prerelease) (Debian 4.1.1-19)"
Phil.
next prev parent reply other threads:[~2006-12-06 15:22 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-06 13:20 Subtleties of __attribute__((packed)) Phil Endecott
2006-12-06 14:01 ` Frederik Deweerdt
2006-12-06 14:24 ` Phil Endecott
2006-12-06 15:04 ` Jan Blunck
2006-12-06 15:22 ` Phil Endecott [this message]
2006-12-06 15:54 ` Jan Blunck
2006-12-06 16:02 ` Andreas Schwab
2006-12-06 16:41 ` Jan Blunck
2006-12-06 17:28 ` Andreas Schwab
2006-12-06 16:13 ` Phil Endecott
2006-12-06 16:26 ` Jan Blunck
2006-12-06 17:54 ` Russell King
2006-12-06 18:05 ` David Miller
2006-12-07 9:48 ` Jan Blunck
2006-12-07 10:30 ` Andreas Schwab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1165418558832@dmwebmail.belize.chezphil.org \
--to=phil_arcwk_endecott@chezphil.org \
--cc=jblunck@suse.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).