brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · e016906 Raw
93 lines · c
1// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)2 3/*4 * BTF-to-C dumper tests for bitfield.5 *6 * Copyright (c) 2019 Facebook7 */8#include <stdbool.h>9 10/* ----- START-EXPECTED-OUTPUT ----- */11/*12 *struct bitfields_only_mixed_types {13 *	int a: 3;14 *	long b: 2;15 *	_Bool c: 1;16 *	enum {17 *		A = 0,18 *		B = 1,19 *	} d: 1;20 *	short e: 5;21 *	int: 20;22 *	unsigned int f: 30;23 *};24 *25 */26/* ------ END-EXPECTED-OUTPUT ------ */27 28struct bitfields_only_mixed_types {29	int a: 3;30	long b: 2;31	bool c: 1; /* it's really a _Bool type */32	enum {33		A, /* A = 0, dumper is very explicit */34		B, /* B = 1, same */35	} d: 1;36	short e: 5;37	/* 20-bit padding here */38	unsigned f: 30; /* this gets aligned on 4-byte boundary */39};40 41/* ----- START-EXPECTED-OUTPUT ----- */42/*43 *struct bitfield_mixed_with_others {44 *	char: 4;45 *	int a: 4;46 *	short b;47 *	long c;48 *	long d: 8;49 *	int e;50 *	int f;51 *};52 *53 */54/* ------ END-EXPECTED-OUTPUT ------ */55struct bitfield_mixed_with_others {56	char: 4; /* char is enough as a backing field */57	int a: 4;58	/* 8-bit implicit padding */59	short b; /* combined with previous bitfield */60	/* 4 more bytes of implicit padding */61	long c;62	long d: 8;63	/* 24 bits implicit padding */64	int e; /* combined with previous bitfield */65	int f;66	/* 4 bytes of padding */67};68 69/* ----- START-EXPECTED-OUTPUT ----- */70/*71 *struct bitfield_flushed {72 *	int a: 4;73 *	long: 60;74 *	long b: 16;75 *};76 *77 */78/* ------ END-EXPECTED-OUTPUT ------ */79struct bitfield_flushed {80	int a: 4;81	long: 0; /* flush until next natural alignment boundary */82	long b: 16;83};84 85int f(struct {86	struct bitfields_only_mixed_types _1;87	struct bitfield_mixed_with_others _2;88	struct bitfield_flushed _3;89} *_)90{91	return 0;92}93