1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/tests/dstest_align.cc Thu Sep 29 18:15:39 2022 +0200
1.3 @@ -0,0 +1,51 @@
1.4 +#include <stdio.h>
1.5 +#include <stdint.h>
1.6 +
1.7 +struct A
1.8 +{
1.9 + uint32_t a;
1.10 + uint64_t b;
1.11 + uint64_t c;
1.12 +} __attribute__ ((packed));
1.13 +
1.14 +struct B
1.15 +{
1.16 + uint32_t a;
1.17 + uint64_t b;
1.18 + uint64_t c;
1.19 +};
1.20 +
1.21 +struct C
1.22 +{
1.23 + uint32_t a;
1.24 + uint32_t b;
1.25 + uint64_t c;
1.26 +};
1.27 +
1.28 +int main(int argc, char *argv[])
1.29 +{
1.30 + struct A a = {1, 2, 3};
1.31 + struct B b = {1, 2, 3};
1.32 + struct C c = {1, 2, 3};
1.33 + uint32_t m[6] = {1, 2, 3, 4, 5, 6};
1.34 + struct A *ma = (struct A *) m;
1.35 + struct A *ma1 = (struct A *) (m + 1);
1.36 +
1.37 + printf("a.a @ %p = %x\n", &a.a, a.a);
1.38 + printf("a.b @ %p = %llx\n", &a.b, a.b);
1.39 + printf("a.c @ %p = %llx\n\n", &a.c, a.c);
1.40 + printf("b.a @ %p = %x\n", &b.a, b.a);
1.41 + printf("b.b @ %p = %llx\n", &b.b, b.b);
1.42 + printf("b.c @ %p = %llx\n\n", &b.c, b.c);
1.43 + printf("c.a @ %p = %x\n", &c.a, c.a);
1.44 + printf("c.b @ %p = %x\n", &c.b, c.b);
1.45 + printf("c.c @ %p = %llx\n\n", &c.c, c.c);
1.46 + printf("ma.a @ %p = %x\n", &ma->a, ma->a);
1.47 + printf("ma.b @ %p = %llx\n", &ma->b, ma->b);
1.48 + printf("ma.c @ %p = %llx\n\n", &ma->c, ma->c);
1.49 + printf("ma1.a @ %p = %x\n", &ma1->a, ma1->a);
1.50 + printf("ma1.b @ %p = %llx\n", &ma1->b, ma1->b);
1.51 + printf("ma1.c @ %p = %llx\n\n", &ma1->c, ma1->c);
1.52 +
1.53 + return 0;
1.54 +}