Hello, I have run into variable alignment issues, which turned out to be caused by forward declaration w/o the aligned attribute repeated.
Let me walk you through simple testcases showing different alignments I see for "misaligned" on gcc 4.4.4 and 4.5.1. Common type definition: struct foo { char* a; char b; }; testcase #1: struct foo misaligned = { 0, 1 }; struct foo *ptr = &misaligned; 4.4.4: 16 4.5.1: 16 No surprise here. testcase #2: struct foo misaligned __attribute__((aligned(2))) = { 0, 1 }; struct foo *ptr = &misaligned; 4.4.4: 2 4.5.1: 2 Also all good. testcase #3: struct foo misaligned; struct foo misaligned __attribute__((aligned(2))) = { 0, 1 }; struct foo *ptr = &misaligned; 4.4.4: 8 4.5.1: 16 Could someone explain this please? If it's a bug to not include the aligned attribute in the forward declaration, would it be hard to add a warning for that? Also the difference between 4.4.4 and 4.5.1 is interesting. -- Best Regards Piotr Jaroszyński