text: // 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;
  }
  