This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
alignment bug?
- From: Gagan Arneja <gaagaan at gmail dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Sat, 19 Apr 2008 23:33:17 -0700
- Subject: alignment bug?
What am I doing wrong? Why is "bar" getting truncated down to 128?
> gcc -v
gcc version 4.1.1 20070105 (Red Hat 4.1.1-51)
#include <stdio.h>
#define ALIGNED(n) __attribute__((__aligned__(n)))
typedef struct Bar {
char c[200];
} Bar ALIGNED(128);
typedef struct Foo {
Bar bar[4];
} Foo;
Foo foo[4];
main()
{
int i;
Foo *foop = &foo[0];
printf("sizeof(Bar) = %d\n", sizeof(Bar));
printf("sizeof(Foo) = %d\n", sizeof(Foo));
for (i=0; i < 4; i++) {
Bar *bar = &foop->bar[i];
printf("&bar[%d]=%p, addr%128=0x%lx\n",
i, bar, ((unsigned long)bar) % 128);
}
}
> ./a.out
sizeof(Bar) = 200
sizeof(Foo) = 896
&bar[0]=0x8049180, addr%128=0x0
&bar[1]=0x8049200, addr%128=0x0
&bar[2]=0x8049280, addr%128=0x0
&bar[3]=0x8049300, addr%128=0x0