1*8b184c19SRobert Mustacchi /*
2*8b184c19SRobert Mustacchi * This file and its contents are supplied under the terms of the
3*8b184c19SRobert Mustacchi * Common Development and Distribution License ("CDDL"), version 1.0.
4*8b184c19SRobert Mustacchi * You may only use this file in accordance with the terms of version
5*8b184c19SRobert Mustacchi * 1.0 of the CDDL.
6*8b184c19SRobert Mustacchi *
7*8b184c19SRobert Mustacchi * A full copy of the text of the CDDL should have accompanied this
8*8b184c19SRobert Mustacchi * source. A copy of the CDDL is also available via the Internet at
9*8b184c19SRobert Mustacchi * http://www.illumos.org/license/CDDL.
10*8b184c19SRobert Mustacchi */
11*8b184c19SRobert Mustacchi
12*8b184c19SRobert Mustacchi /*
13*8b184c19SRobert Mustacchi * Copyright 2025 Oxide Computer Company
14*8b184c19SRobert Mustacchi */
15*8b184c19SRobert Mustacchi
16*8b184c19SRobert Mustacchi /*
17*8b184c19SRobert Mustacchi * This file is paired with the sou/tst.anon.ksh mdb test. It's design to
18*8b184c19SRobert Mustacchi * include a number of structures and unions with anonymous values that we can
19*8b184c19SRobert Mustacchi * test with various commands to make sure we properly resolve member names
20*8b184c19SRobert Mustacchi * through them.
21*8b184c19SRobert Mustacchi */
22*8b184c19SRobert Mustacchi
23*8b184c19SRobert Mustacchi struct foo {
24*8b184c19SRobert Mustacchi int foo;
25*8b184c19SRobert Mustacchi };
26*8b184c19SRobert Mustacchi
27*8b184c19SRobert Mustacchi struct bar {
28*8b184c19SRobert Mustacchi const char *bar;
29*8b184c19SRobert Mustacchi union {
30*8b184c19SRobert Mustacchi struct foo bar_foo;
31*8b184c19SRobert Mustacchi int bar_int;
32*8b184c19SRobert Mustacchi };
33*8b184c19SRobert Mustacchi };
34*8b184c19SRobert Mustacchi
35*8b184c19SRobert Mustacchi struct baz {
36*8b184c19SRobert Mustacchi struct {
37*8b184c19SRobert Mustacchi const char *baz_str;
38*8b184c19SRobert Mustacchi int baz_anon;
39*8b184c19SRobert Mustacchi };
40*8b184c19SRobert Mustacchi int baz_int;
41*8b184c19SRobert Mustacchi };
42*8b184c19SRobert Mustacchi
43*8b184c19SRobert Mustacchi struct foobar {
44*8b184c19SRobert Mustacchi int foobar_int;
45*8b184c19SRobert Mustacchi union {
46*8b184c19SRobert Mustacchi struct foo foo;
47*8b184c19SRobert Mustacchi struct bar bar;
48*8b184c19SRobert Mustacchi struct baz baz;
49*8b184c19SRobert Mustacchi struct {
50*8b184c19SRobert Mustacchi void *foobar_ptr;
51*8b184c19SRobert Mustacchi int foobar_anon;
52*8b184c19SRobert Mustacchi };
53*8b184c19SRobert Mustacchi };
54*8b184c19SRobert Mustacchi struct {
55*8b184c19SRobert Mustacchi int a;
56*8b184c19SRobert Mustacchi int b;
57*8b184c19SRobert Mustacchi int c;
58*8b184c19SRobert Mustacchi };
59*8b184c19SRobert Mustacchi union {
60*8b184c19SRobert Mustacchi int d;
61*8b184c19SRobert Mustacchi int e;
62*8b184c19SRobert Mustacchi int f;
63*8b184c19SRobert Mustacchi };
64*8b184c19SRobert Mustacchi };
65*8b184c19SRobert Mustacchi
66*8b184c19SRobert Mustacchi struct foo foo = { .foo = 42 };
67*8b184c19SRobert Mustacchi struct bar bar = { .bar = "hello world", .bar_int = 0x7777 };
68*8b184c19SRobert Mustacchi struct baz baz = {
69*8b184c19SRobert Mustacchi .baz_anon = 0x9999,
70*8b184c19SRobert Mustacchi .baz_str = "It's a trap?!",
71*8b184c19SRobert Mustacchi .baz_int = -4
72*8b184c19SRobert Mustacchi };
73*8b184c19SRobert Mustacchi
74*8b184c19SRobert Mustacchi struct foobar foobar = {
75*8b184c19SRobert Mustacchi .foobar_int = 0xb295,
76*8b184c19SRobert Mustacchi .bar = { .bar = "Elbereth", .bar_int = 0x7777 },
77*8b184c19SRobert Mustacchi .a = 0x9876,
78*8b184c19SRobert Mustacchi .b = 0x12345,
79*8b184c19SRobert Mustacchi .c = 0xb22b,
80*8b184c19SRobert Mustacchi .e = 0xfdcba
81*8b184c19SRobert Mustacchi };
82*8b184c19SRobert Mustacchi
83*8b184c19SRobert Mustacchi struct stringless {
84*8b184c19SRobert Mustacchi union {
85*8b184c19SRobert Mustacchi struct {
86*8b184c19SRobert Mustacchi int life;
87*8b184c19SRobert Mustacchi int hope;
88*8b184c19SRobert Mustacchi };
89*8b184c19SRobert Mustacchi int dreams;
90*8b184c19SRobert Mustacchi union {
91*8b184c19SRobert Mustacchi char k;
92*8b184c19SRobert Mustacchi short e;
93*8b184c19SRobert Mustacchi int f;
94*8b184c19SRobert Mustacchi long a;
95*8b184c19SRobert Mustacchi };
96*8b184c19SRobert Mustacchi double destroy;
97*8b184c19SRobert Mustacchi };
98*8b184c19SRobert Mustacchi };
99*8b184c19SRobert Mustacchi
100*8b184c19SRobert Mustacchi struct stringless stringless = { .life = 0xaa7777aa, .hope = 0x339999ee };
101*8b184c19SRobert Mustacchi
102*8b184c19SRobert Mustacchi int
main(void)103*8b184c19SRobert Mustacchi main(void)
104*8b184c19SRobert Mustacchi {
105*8b184c19SRobert Mustacchi return (0);
106*8b184c19SRobert Mustacchi }
107