structure packing.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi!

I have a strange problem with some of my source code. I have something
similar as the small test case below, which I compile with multiple
different compilers (and compiler versions), including visual c++ 2003,
2005 and 2008 and GCC 3.3 and 4.2.

It seems that gcc 4.2 makes some troubles ;) could please somebody take
a look at the things below, and tell me wether I'm just blind and dumb,
or there is a problem with gcc?

Thanks in advance, Cheers, Markus

mduft build $ cat zz.c
#include <stdio.h>

typedef struct __attribute__((packed, aligned(2))) {
	unsigned int a;
	unsigned short b;
	unsigned int c;
} teststruct;

int main(void) {
	printf("uint: %d, ushort: %d, struct: %d (should be %d)\n",
		sizeof(unsigned int), sizeof(unsigned short),
sizeof(teststruct),
		(sizeof(unsigned int) * 2) + sizeof(unsigned short));
}
mduft build $ gcc zz.c 
mduft build $ ./a.out 
uint: 4, ushort: 2, struct: 12 (should be 10)

mduft build $ gcc -v
Using built-in specs.
Target: i586-pc-interix6.0
Configured with:
/opt/gentoo.system/var/tmp/portage/sys-devel/gcc-4.2.4-r00.1/work/gcc-4.
2.4/configure --prefix=/opt/gentoo.system/usr
--bindir=/opt/gentoo.system/usr/i586-pc-interix6.0/gcc-bin/4.2.4
--includedir=/opt/gentoo.system/usr/lib/gcc/i586-pc-interix6.0/4.2.4/inc
lude
--datadir=/opt/gentoo.system/usr/share/gcc-data/i586-pc-interix6.0/4.2.4
--mandir=/opt/gentoo.system/usr/share/gcc-data/i586-pc-interix6.0/4.2.4/
man
--infodir=/opt/gentoo.system/usr/share/gcc-data/i586-pc-interix6.0/4.2.4
/info
--with-gxx-include-dir=/opt/gentoo.system/usr/lib/gcc/i586-pc-interix6.0
/4.2.4/include/g++-v4 --host=i586-pc-interix6.0
--build=i586-pc-interix6.0 --disable-altivec --disable-nls
--with-system-zlib --disable-checking --disable-werror
--enable-secureplt --disable-multilib --disable-libmudflap
--disable-libssp --disable-libgcj --enable-languages=c,c++,treelang
--enable-shared --enable-threads=posix
--with-local-prefix=/opt/gentoo.system/usr
Thread model: posix
gcc version 4.2.4 (Gentoo 4.2.4-r00.1 p1.0)

mduft build $ /opt/gcc.3.3/bin/gcc zz.c 
mduft build $ ./a.out 
uint: 4, ushort: 2, struct: 10 (should be 10)
mduft build $



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux