Linux Audio

Check our new training course

Yocto distribution development and maintenance

Need a Yocto distribution for your embedded project?
Loading...
v5.9
  1// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
  2
  3/*
  4 * BTF-to-C dumper tests for implicit and explicit padding between fields and
  5 * at the end of a struct.
  6 *
  7 * Copyright (c) 2019 Facebook
  8 */
  9/* ----- START-EXPECTED-OUTPUT ----- */
 10struct padded_implicitly {
 11	int a;
 12	long int b;
 13	char c;
 14};
 15
 16/* ------ END-EXPECTED-OUTPUT ------ */
 17
 18/* ----- START-EXPECTED-OUTPUT ----- */
 19/*
 20 *struct padded_explicitly {
 21 *	int a;
 22 *	int: 32;
 23 *	int b;
 24 *};
 25 *
 26 */
 27/* ------ END-EXPECTED-OUTPUT ------ */
 28
 29struct padded_explicitly {
 30	int a;
 31	int: 1; /* algo will explicitly pad with full 32 bits here */
 32	int b;
 33};
 34
 35/* ----- START-EXPECTED-OUTPUT ----- */
 36/*
 37 *struct padded_a_lot {
 38 *	int a;
 39 *	long: 32;
 40 *	long: 64;
 41 *	long: 64;
 42 *	int b;
 43 *};
 44 *
 45 */
 46/* ------ END-EXPECTED-OUTPUT ------ */
 47
 48struct padded_a_lot {
 49	int a;
 50	/* 32 bit of implicit padding here, which algo will make explicit */
 51	long: 64;
 52	long: 64;
 53	int b;
 54};
 55
 56/* ----- START-EXPECTED-OUTPUT ----- */
 57/*
 58 *struct padded_cache_line {
 59 *	int a;
 60 *	long: 32;
 61 *	long: 64;
 62 *	long: 64;
 63 *	long: 64;
 64 *	int b;
 65 *	long: 32;
 66 *	long: 64;
 67 *	long: 64;
 68 *	long: 64;
 69 *};
 70 *
 71 */
 72/* ------ END-EXPECTED-OUTPUT ------ */
 73
 74struct padded_cache_line {
 75	int a;
 76	int b __attribute__((aligned(32)));
 77};
 78
 79/* ----- START-EXPECTED-OUTPUT ----- */
 80/*
 81 *struct zone_padding {
 82 *	char x[0];
 83 *};
 84 *
 85 *struct zone {
 86 *	int a;
 87 *	short b;
 88 *	short: 16;
 89 *	struct zone_padding __pad__;
 90 *};
 91 *
 92 */
 93/* ------ END-EXPECTED-OUTPUT ------ */
 94
 95struct zone_padding {
 96	char x[0];
 97} __attribute__((__aligned__(8)));
 98
 99struct zone {
100	int a;
101	short b;
102	struct zone_padding __pad__;
103};
104
 
 
 
 
 
 
 
 
105int f(struct {
106	struct padded_implicitly _1;
107	struct padded_explicitly _2;
108	struct padded_a_lot _3;
109	struct padded_cache_line _4;
110	struct zone _5;
 
111} *_)
112{
113	return 0;
114}
v6.2
  1// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
  2
  3/*
  4 * BTF-to-C dumper tests for implicit and explicit padding between fields and
  5 * at the end of a struct.
  6 *
  7 * Copyright (c) 2019 Facebook
  8 */
  9/* ----- START-EXPECTED-OUTPUT ----- */
 10struct padded_implicitly {
 11	int a;
 12	long b;
 13	char c;
 14};
 15
 16/* ------ END-EXPECTED-OUTPUT ------ */
 17
 18/* ----- START-EXPECTED-OUTPUT ----- */
 19/*
 20 *struct padded_explicitly {
 21 *	int a;
 22 *	int: 32;
 23 *	int b;
 24 *};
 25 *
 26 */
 27/* ------ END-EXPECTED-OUTPUT ------ */
 28
 29struct padded_explicitly {
 30	int a;
 31	int: 1; /* algo will explicitly pad with full 32 bits here */
 32	int b;
 33};
 34
 35/* ----- START-EXPECTED-OUTPUT ----- */
 36/*
 37 *struct padded_a_lot {
 38 *	int a;
 39 *	long: 32;
 40 *	long: 64;
 41 *	long: 64;
 42 *	int b;
 43 *};
 44 *
 45 */
 46/* ------ END-EXPECTED-OUTPUT ------ */
 47
 48struct padded_a_lot {
 49	int a;
 50	/* 32 bit of implicit padding here, which algo will make explicit */
 51	long: 64;
 52	long: 64;
 53	int b;
 54};
 55
 56/* ----- START-EXPECTED-OUTPUT ----- */
 57/*
 58 *struct padded_cache_line {
 59 *	int a;
 60 *	long: 32;
 61 *	long: 64;
 62 *	long: 64;
 63 *	long: 64;
 64 *	int b;
 65 *	long: 32;
 66 *	long: 64;
 67 *	long: 64;
 68 *	long: 64;
 69 *};
 70 *
 71 */
 72/* ------ END-EXPECTED-OUTPUT ------ */
 73
 74struct padded_cache_line {
 75	int a;
 76	int b __attribute__((aligned(32)));
 77};
 78
 79/* ----- START-EXPECTED-OUTPUT ----- */
 80/*
 81 *struct zone_padding {
 82 *	char x[0];
 83 *};
 84 *
 85 *struct zone {
 86 *	int a;
 87 *	short b;
 88 *	short: 16;
 89 *	struct zone_padding __pad__;
 90 *};
 91 *
 92 */
 93/* ------ END-EXPECTED-OUTPUT ------ */
 94
 95struct zone_padding {
 96	char x[0];
 97} __attribute__((__aligned__(8)));
 98
 99struct zone {
100	int a;
101	short b;
102	struct zone_padding __pad__;
103};
104
105/* ----- START-EXPECTED-OUTPUT ----- */
106struct padding_wo_named_members {
107	long: 64;
108	long: 64;
109};
110
111/* ------ END-EXPECTED-OUTPUT ------ */
112
113int f(struct {
114	struct padded_implicitly _1;
115	struct padded_explicitly _2;
116	struct padded_a_lot _3;
117	struct padded_cache_line _4;
118	struct zone _5;
119	struct padding_wo_named_members _6;
120} *_)
121{
122	return 0;
123}