Subject: arm, net and '__attribute__ ((__packed__))'
To: None <tech-net@netbsd.org, tech-embed@netbsd.org, port-arm@netbsd.org>
From: Sami Kantoluoto <sami.kantoluoto@embedtronics.fi>
List: tech-embed
Date: 02/05/2005 15:48:39
Hi,
We're using the network stack and wi driver ported from NetBSD to our
embedded operating system and I'm wondering if there's something wrong with
missing '__attribute__ ((__packed__))'s or something. So, I noticed that
'sizeof(struct llc)' returned 10 (arm-elf-gcc 3.4.2). Then I removed the
comments (and 'XXX' and '???') from 'llc_un'. Which means:
struct llc {
u_int8_t llc_dsap;
u_int8_t llc_ssap;
union {
.
.
.
} llc_un __attribute__((__packed__));
} __attribute__((__packed__));
This had no effect. Then I swapped 'llc_un' and
'__attribute__((__packed__))' and it worked (sizeof(struct llc) == 8). So:
struct llc {
u_int8_t llc_dsap;
u_int8_t llc_ssap;
union {
.
.
.
} __attribute__((__packed__)) llc_un;
} __attribute__((__packed__));
I can't believe that NetBSD has any problems with these so maybe I'm missing
some compiler options or has NetBSD's gcc been patched or something else?
Thanks for any help,
-sk