// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) /* * BTF-to-C dumper tests for implicit and explicit padding between fields and * at the end of a struct. * * Copyright (c) 2019 Facebook */ /* ----- START-EXPECTED-OUTPUT ----- */ struct padded_implicitly { int a; long int b; char c; }; /* ------ END-EXPECTED-OUTPUT ------ */ /* ----- START-EXPECTED-OUTPUT ----- */ /* *struct padded_explicitly { * int a; * int: 32; * int b; *}; * */ /* ------ END-EXPECTED-OUTPUT ------ */ struct padded_explicitly { int a; int: 1; /* algo will explicitly pad with full 32 bits here */ int b; }; /* ----- START-EXPECTED-OUTPUT ----- */ /* *struct padded_a_lot { * int a; * long: 32; * long: 64; * long: 64; * int b; *}; * */ /* ------ END-EXPECTED-OUTPUT ------ */ struct padded_a_lot { int a; /* 32 bit of implicit padding here, which algo will make explicit */ long: 64; long: 64; int b; }; /* ----- START-EXPECTED-OUTPUT ----- */ /* *struct padded_cache_line { * int a; * long: 32; * long: 64; * long: 64; * long: 64; * int b; * long: 32; * long: 64; * long: 64; * long: 64; *}; * */ /* ------ END-EXPECTED-OUTPUT ------ */ struct padded_cache_line { int a; int b __attribute__((aligned(32))); }; /* ----- START-EXPECTED-OUTPUT ----- */ /* *struct zone_padding { * char x[0]; *}; * *struct zone { * int a; * short b; * short: 16; * struct zone_padding __pad__; *}; * */ /* ------ END-EXPECTED-OUTPUT ------ */ struct zone_padding { char x[0]; } __attribute__((__aligned__(8))); struct zone { int a; short b; struct zone_padding __pad__; }; int f(struct { struct padded_implicitly _1; struct padded_explicitly _2; struct padded_a_lot _3; struct padded_cache_line _4; struct zone _5; } *_) { return 0; }