root/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. f

   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 ----- */
  10 struct 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 
  29 struct 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 
  48 struct 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 
  74 struct 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 
  95 struct zone_padding {
  96         char x[0];
  97 } __attribute__((__aligned__(8)));
  98 
  99 struct zone {
 100         int a;
 101         short b;
 102         struct zone_padding __pad__;
 103 };
 104 
 105 int 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 }

/* [<][>][^][v][top][bottom][index][help] */