-
-typedef typeof(sizeof(char)) Size_t;
-
-#define bufsize ((1L << (8 * sizeof(Size_t) - 2))-256)
-
-struct huge_struct
-{
- short buf[bufsize];
- int a;
- int b;
- int c;
- int d;
-};
-
-union huge_union
-{
- int a;
- char buf[bufsize];
-};
-
-unsigned long union_size()
-{
- return sizeof(union huge_union);
-}
-
-unsigned long struct_size()
-{
- return sizeof(struct huge_struct);
-}
-
-unsigned long struct_a_offset()
-{
- return (unsigned long)(&((struct huge_struct *) 0)->a);
-}
-
-int main()
-{
- /* Check the exact sizeof value. bufsize is aligned on 256b. */
- if (union_size() != sizeof(char) * bufsize)
- abort();
-
- if (struct_size() != sizeof(short) * bufsize + 4*sizeof(int))
- abort();
-
- if (struct_a_offset() < sizeof(short) * bufsize)
- abort();
-
- return 0;
-}
-