xref: /illumos-gate/usr/src/test/util-tests/tests/mdb/numbers/tst.bitfields.ksh (revision 603778843038dfbc5672c2565d9ce3dac034609d)
17a58f538SRobert Mustacchi#!/usr/bin/ksh
27a58f538SRobert Mustacchi#
37a58f538SRobert Mustacchi#
47a58f538SRobert Mustacchi# This file and its contents are supplied under the terms of the
57a58f538SRobert Mustacchi# Common Development and Distribution License ("CDDL"), version 1.0.
67a58f538SRobert Mustacchi# You may only use this file in accordance with the terms of version
77a58f538SRobert Mustacchi# 1.0 of the CDDL.
87a58f538SRobert Mustacchi#
97a58f538SRobert Mustacchi# A full copy of the text of the CDDL should have accompanied this
107a58f538SRobert Mustacchi# source.  A copy of the CDDL is also available via the Internet at
117a58f538SRobert Mustacchi# http://www.illumos.org/license/CDDL.
127a58f538SRobert Mustacchi#
137a58f538SRobert Mustacchi
147a58f538SRobert Mustacchi#
15*60377884SRobert Mustacchi# Copyright 2022 Oxide Computer Company
167a58f538SRobert Mustacchi#
177a58f538SRobert Mustacchi
187a58f538SRobert Mustacchi#
197a58f538SRobert Mustacchi# Sanity check parts of bitfields.
207a58f538SRobert Mustacchi#
217a58f538SRobert Mustacchi
227a58f538SRobert Mustacchiset -o pipefail
237a58f538SRobert Mustacchi
247a58f538SRobert Mustacchitst_root="$(dirname $0)/.."
257a58f538SRobert Mustacchitst_prog="$tst_root/progs/bitfields"
267a58f538SRobert Mustacchitst_outfile="/tmp/mdb.bitfield.out.$$"
277a58f538SRobert Mustacchitst_exp="$0.out"
287a58f538SRobert Mustacchi
29*60377884SRobert Mustacchi#
30*60377884SRobert Mustacchi# Top level ::print
31*60377884SRobert Mustacchi#
327a58f538SRobert Mustacchi$MDB -e "first::print -t broken_t" $tst_prog > $ODIR/stdout
337a58f538SRobert Mustacchi$MDB -e "second::print -t broken6491_t" $tst_prog >> $ODIR/stdout
34*60377884SRobert Mustacchi
35*60377884SRobert Mustacchi#
36*60377884SRobert Mustacchi# ::print of specific members
37*60377884SRobert Mustacchi#
38*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_a" $tst_prog >> $ODIR/stdout
39*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_b" $tst_prog >> $ODIR/stdout
40*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_c" $tst_prog >> $ODIR/stdout
41*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_d" $tst_prog >> $ODIR/stdout
42*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_e" $tst_prog >> $ODIR/stdout
43*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_f" $tst_prog >> $ODIR/stdout
44*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_g" $tst_prog >> $ODIR/stdout
45*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_h" $tst_prog >> $ODIR/stdout
46*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_i" $tst_prog >> $ODIR/stdout
47*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_j" $tst_prog >> $ODIR/stdout
48*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_k" $tst_prog >> $ODIR/stdout
49*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_l" $tst_prog >> $ODIR/stdout
50*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_m" $tst_prog >> $ODIR/stdout
51*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t a" $tst_prog >> $ODIR/stdout
52*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t b" $tst_prog >> $ODIR/stdout
53*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t c" $tst_prog >> $ODIR/stdout
54*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t d" $tst_prog >> $ODIR/stdout
55*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t e" $tst_prog >> $ODIR/stdout
56*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t f" $tst_prog >> $ODIR/stdout
57*60377884SRobert Mustacchi
58*60377884SRobert Mustacchi#
59*60377884SRobert Mustacchi# ::printf of members. Note, if ::printf said '%x\n' below then we would
60*60377884SRobert Mustacchi# include the string "\n" (not a newline) in the output. Instead we rely
61*60377884SRobert Mustacchi# upon the implicit newline from mdb -e.
62*60377884SRobert Mustacchi#
63*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_a" $tst_prog >> $ODIR/stdout
64*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_b" $tst_prog >> $ODIR/stdout
65*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_c" $tst_prog >> $ODIR/stdout
66*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_d" $tst_prog >> $ODIR/stdout
67*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_e" $tst_prog >> $ODIR/stdout
68*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_f" $tst_prog >> $ODIR/stdout
69*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_g" $tst_prog >> $ODIR/stdout
70*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_h" $tst_prog >> $ODIR/stdout
71*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_i" $tst_prog >> $ODIR/stdout
72*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_j" $tst_prog >> $ODIR/stdout
73*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_k" $tst_prog >> $ODIR/stdout
74*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_l" $tst_prog >> $ODIR/stdout
75*60377884SRobert Mustacchi$MDB -e "first::printf '%x' broken_t brk_m" $tst_prog >> $ODIR/stdout
76*60377884SRobert Mustacchi$MDB -e "second::printf '%x' broken6491_t a" $tst_prog >> $ODIR/stdout
77*60377884SRobert Mustacchi$MDB -e "second::printf '%x' broken6491_t b" $tst_prog >> $ODIR/stdout
78*60377884SRobert Mustacchi$MDB -e "second::printf '%x' broken6491_t c" $tst_prog >> $ODIR/stdout
79*60377884SRobert Mustacchi$MDB -e "second::printf '%x' broken6491_t d" $tst_prog >> $ODIR/stdout
80*60377884SRobert Mustacchi$MDB -e "second::printf '%x' broken6491_t e" $tst_prog >> $ODIR/stdout
81*60377884SRobert Mustacchi$MDB -e "second::printf '%x' broken6491_t f" $tst_prog >> $ODIR/stdout
82*60377884SRobert Mustacchi
83*60377884SRobert Mustacchi#
84*60377884SRobert Mustacchi# If we pipe the output of ::print that is a different bitfield logic
85*60377884SRobert Mustacchi# path. So we take that all to a `::eval '.=K'` as a basic way to get it
86*60377884SRobert Mustacchi# out.
87*60377884SRobert Mustacchi#
88*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_a | ::eval '.=K'" $tst_prog >> $ODIR/stdout
89*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_b | ::eval '.=K'" $tst_prog >> $ODIR/stdout
90*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_c | ::eval '.=K'" $tst_prog >> $ODIR/stdout
91*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_d | ::eval '.=K'" $tst_prog >> $ODIR/stdout
92*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_e | ::eval '.=K'" $tst_prog >> $ODIR/stdout
93*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_f | ::eval '.=K'" $tst_prog >> $ODIR/stdout
94*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_g | ::eval '.=K'" $tst_prog >> $ODIR/stdout
95*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_h | ::eval '.=K'" $tst_prog >> $ODIR/stdout
96*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_i | ::eval '.=K'" $tst_prog >> $ODIR/stdout
97*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_j | ::eval '.=K'" $tst_prog >> $ODIR/stdout
98*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_k | ::eval '.=K'" $tst_prog >> $ODIR/stdout
99*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_l | ::eval '.=K'" $tst_prog >> $ODIR/stdout
100*60377884SRobert Mustacchi$MDB -e "first::print broken_t brk_m | ::eval '.=K'" $tst_prog >> $ODIR/stdout
101*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t a | ::eval '.=K'" $tst_prog >> $ODIR/stdout
102*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t b | ::eval '.=K'" $tst_prog >> $ODIR/stdout
103*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t c | ::eval '.=K'" $tst_prog >> $ODIR/stdout
104*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t d | ::eval '.=K'" $tst_prog >> $ODIR/stdout
105*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t e | ::eval '.=K'" $tst_prog >> $ODIR/stdout
106*60377884SRobert Mustacchi$MDB -e "second::print broken6491_t f | ::eval '.=K'" $tst_prog >> $ODIR/stdout
107