2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-23 14:57:06 +00:00
Files
openvswitch/tests/check-structs.at
Ben Pfaff 05b3c97be6 Add build checks for portable OpenFlow structure padding and alignment.
This causes the build to fail with an error message if openflow.h contains
a structure whose members are not aligned in a portable way.
2010-01-25 10:49:31 -08:00

42 lines
938 B
Plaintext

AT_BANNER([struct alignment checker unit tests])
m4_define([check_structs], [$top_srcdir/build-aux/check-structs])
m4_define([RUN_STRUCT_CHECKER],
[AT_SKIP_IF([test $HAVE_PYTHON = no])
AT_DATA([test.h], [$1
])
AT_CHECK_UNQUOTED([$PYTHON check_structs test.h], [$2], [$3], [$4])])
AT_SETUP([check struct tail padding])
RUN_STRUCT_CHECKER(
[struct xyz {
uint16_t x;
};],
[1], [],
[test.h:3: warning: struct xyz needs 2 bytes of tail padding
])
AT_CLEANUP
AT_SETUP([check struct internal alignment])
RUN_STRUCT_CHECKER(
[struct xyzzy {
uint16_t x;
uint32_t y;
};],
[1], [],
[test.h:3: warning: struct xyzzy member y is 2 bytes short of 4-byte alignment
])
AT_CLEANUP
AT_SETUP([check struct declared size])
RUN_STRUCT_CHECKER(
[struct wibble {
uint64_t z;
};
OFP_ASSERT(sizeof(struct wibble) == 12);
],
[1], [],
[test.h:4: warning: struct wibble is 8 bytes long but declared as 12
])
AT_CLEANUP