cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

btf_dump_test_case_packing.c (1196B)


      1// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
      2
      3/*
      4 * BTF-to-C dumper tests for struct packing determination.
      5 *
      6 * Copyright (c) 2019 Facebook
      7 */
      8/* ----- START-EXPECTED-OUTPUT ----- */
      9struct packed_trailing_space {
     10	int a;
     11	short b;
     12} __attribute__((packed));
     13
     14struct non_packed_trailing_space {
     15	int a;
     16	short b;
     17};
     18
     19struct packed_fields {
     20	short a;
     21	int b;
     22} __attribute__((packed));
     23
     24struct non_packed_fields {
     25	short a;
     26	int b;
     27};
     28
     29struct nested_packed {
     30	char: 4;
     31	int a: 4;
     32	long b;
     33	struct {
     34		char c;
     35		int d;
     36	} __attribute__((packed)) e;
     37} __attribute__((packed));
     38
     39union union_is_never_packed {
     40	int a: 4;
     41	char b;
     42	char c: 1;
     43};
     44
     45union union_does_not_need_packing {
     46	struct {
     47		long a;
     48		int b;
     49	} __attribute__((packed));
     50	int c;
     51};
     52
     53union jump_code_union {
     54	char code[5];
     55	struct {
     56		char jump;
     57		int offset;
     58	} __attribute__((packed));
     59};
     60
     61/*------ END-EXPECTED-OUTPUT ------ */
     62
     63int f(struct {
     64	struct packed_trailing_space _1;
     65	struct non_packed_trailing_space _2;
     66	struct packed_fields _3;
     67	struct non_packed_fields _4;
     68	struct nested_packed _5;
     69	union union_is_never_packed _6;
     70	union union_does_not_need_packing _7;
     71	union jump_code_union _8;
     72} *_)
     73{
     74	return 0;
     75}