The header files that check-structs checks should only contain big-endian
data, never native-endian data, so disallow uint<N>_t entirely. (We had
a couple of mistakes in this area until recently.)
uint8_t is an obvious exception.
Reported-by: Simon Horman <horms@verge.net.au>
Reviewed-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
types = {}
types['char'] = {"size": 1, "alignment": 1}
types['uint8_t'] = {"size": 1, "alignment": 1}
-types['uint16_t'] = {"size": 2, "alignment": 2}
-types['uint32_t'] = {"size": 4, "alignment": 4}
-types['uint64_t'] = {"size": 8, "alignment": 8}
types['ovs_be16'] = {"size": 2, "alignment": 2}
types['ovs_be32'] = {"size": 4, "alignment": 4}
types['ovs_be64'] = {"size": 8, "alignment": 8}
AT_SETUP([check struct tail padding])
RUN_STRUCT_CHECKER(
[struct xyz {
- uint16_t x;
+ ovs_be16 x;
};],
[1], [],
[test.h:3: warning: struct xyz needs 2 bytes of tail padding
AT_SETUP([check struct internal alignment])
RUN_STRUCT_CHECKER(
[struct xyzzy {
- uint16_t x;
- uint32_t y;
+ ovs_be16 x;
+ ovs_be32 y;
};],
[1], [],
[test.h:3: warning: struct xyzzy member y is 2 bytes short of 4-byte alignment
AT_SETUP([check struct declared size])
RUN_STRUCT_CHECKER(
[struct wibble {
- uint64_t z;
+ ovs_be64 z;
};
OFP_ASSERT(sizeof(struct wibble) == 12);
],
AT_SETUP([check wrong struct's declared size])
RUN_STRUCT_CHECKER(
[struct moo {
- uint64_t bar;
+ ovs_be64 bar;
};
OFP_ASSERT(sizeof(struct moo) == 8);
struct wibble {
- uint64_t z;
+ ovs_be64 z;
};
OFP_ASSERT(sizeof(struct moo) == 8);
], [1], [], [test.h:8: warning: checking size of struct moo but struct wibble was most recently defined