1*99451b44SJordan Rupprecht"""
2*99451b44SJordan RupprechtTest lldb data formatter subsystem.
3*99451b44SJordan Rupprecht"""
4*99451b44SJordan Rupprecht
5*99451b44SJordan Rupprecht
6*99451b44SJordan Rupprecht
7*99451b44SJordan Rupprechtimport lldb
8*99451b44SJordan Rupprechtfrom lldbsuite.test.decorators import *
9*99451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
10*99451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil
11*99451b44SJordan Rupprecht
12*99451b44SJordan Rupprecht
13*99451b44SJordan Rupprechtclass SmartArrayDataFormatterTestCase(TestBase):
14*99451b44SJordan Rupprecht
15*99451b44SJordan Rupprecht    def test_with_run_command(self):
16*99451b44SJordan Rupprecht        """Test data formatter commands."""
17*99451b44SJordan Rupprecht        self.build()
18*99451b44SJordan Rupprecht        self.data_formatter_commands()
19*99451b44SJordan Rupprecht
20*99451b44SJordan Rupprecht    def setUp(self):
21*99451b44SJordan Rupprecht        # Call super's setUp().
22*99451b44SJordan Rupprecht        TestBase.setUp(self)
23*99451b44SJordan Rupprecht        # Find the line number to break at.
24*99451b44SJordan Rupprecht        self.line = line_number('main.cpp', '// Set break point at this line.')
25*99451b44SJordan Rupprecht
26*99451b44SJordan Rupprecht    def data_formatter_commands(self):
27*99451b44SJordan Rupprecht        """Test that that file and class static variables display correctly."""
28*99451b44SJordan Rupprecht        self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)
29*99451b44SJordan Rupprecht
30*99451b44SJordan Rupprecht        lldbutil.run_break_set_by_file_and_line(
31*99451b44SJordan Rupprecht            self, "main.cpp", self.line, num_expected_locations=1, loc_exact=True)
32*99451b44SJordan Rupprecht
33*99451b44SJordan Rupprecht        self.runCmd("run", RUN_SUCCEEDED)
34*99451b44SJordan Rupprecht
35*99451b44SJordan Rupprecht        process = self.dbg.GetSelectedTarget().GetProcess()
36*99451b44SJordan Rupprecht
37*99451b44SJordan Rupprecht        # The stop reason of the thread should be breakpoint.
38*99451b44SJordan Rupprecht        self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
39*99451b44SJordan Rupprecht                    substrs=['stopped',
40*99451b44SJordan Rupprecht                             'stop reason = breakpoint'])
41*99451b44SJordan Rupprecht
42*99451b44SJordan Rupprecht        # This is the function to remove the custom formats in order to have a
43*99451b44SJordan Rupprecht        # clean slate for the next test case.
44*99451b44SJordan Rupprecht        def cleanup():
45*99451b44SJordan Rupprecht            self.runCmd('type format clear', check=False)
46*99451b44SJordan Rupprecht            self.runCmd('type summary clear', check=False)
47*99451b44SJordan Rupprecht
48*99451b44SJordan Rupprecht        # Execute the cleanup function during test case tear down.
49*99451b44SJordan Rupprecht        self.addTearDownHook(cleanup)
50*99451b44SJordan Rupprecht
51*99451b44SJordan Rupprecht# check that we are not looping here
52*99451b44SJordan Rupprecht        self.runCmd("type summary add --summary-string \"${var%V}\" SomeData")
53*99451b44SJordan Rupprecht
54*99451b44SJordan Rupprecht        self.expect("frame variable data",
55*99451b44SJordan Rupprecht                    substrs=['SomeData @ 0x'])
56*99451b44SJordan Rupprecht# ${var%s}
57*99451b44SJordan Rupprecht        self.runCmd(
58*99451b44SJordan Rupprecht            "type summary add --summary-string \"ptr = ${var%s}\" \"char *\"")
59*99451b44SJordan Rupprecht
60*99451b44SJordan Rupprecht        self.expect("frame variable strptr",
61*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
62*99451b44SJordan Rupprecht                             'Hello world!'])
63*99451b44SJordan Rupprecht
64*99451b44SJordan Rupprecht        self.expect("frame variable other.strptr",
65*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
66*99451b44SJordan Rupprecht                             'Nested Hello world!'])
67*99451b44SJordan Rupprecht
68*99451b44SJordan Rupprecht        self.runCmd(
69*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%s}\" -x \"char\\[[0-9]+\\]\"")
70*99451b44SJordan Rupprecht
71*99451b44SJordan Rupprecht        self.expect("frame variable strarr",
72*99451b44SJordan Rupprecht                    substrs=['arr = \"',
73*99451b44SJordan Rupprecht                             'Hello world!'])
74*99451b44SJordan Rupprecht
75*99451b44SJordan Rupprecht        self.expect("frame variable other.strarr",
76*99451b44SJordan Rupprecht                    substrs=['arr = \"',
77*99451b44SJordan Rupprecht                             'Nested Hello world!'])
78*99451b44SJordan Rupprecht
79*99451b44SJordan Rupprecht        self.expect("p strarr",
80*99451b44SJordan Rupprecht                    substrs=['arr = \"',
81*99451b44SJordan Rupprecht                             'Hello world!'])
82*99451b44SJordan Rupprecht
83*99451b44SJordan Rupprecht        self.expect("p other.strarr",
84*99451b44SJordan Rupprecht                    substrs=['arr = \"',
85*99451b44SJordan Rupprecht                             'Nested Hello world!'])
86*99451b44SJordan Rupprecht
87*99451b44SJordan Rupprecht# ${var%c}
88*99451b44SJordan Rupprecht        self.runCmd(
89*99451b44SJordan Rupprecht            "type summary add --summary-string \"ptr = ${var%c}\" \"char *\"")
90*99451b44SJordan Rupprecht
91*99451b44SJordan Rupprecht        self.expect("frame variable strptr",
92*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
93*99451b44SJordan Rupprecht                             'Hello world!'])
94*99451b44SJordan Rupprecht
95*99451b44SJordan Rupprecht        self.expect("frame variable other.strptr",
96*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
97*99451b44SJordan Rupprecht                             'Nested Hello world!'])
98*99451b44SJordan Rupprecht
99*99451b44SJordan Rupprecht        self.expect("p strptr",
100*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
101*99451b44SJordan Rupprecht                             'Hello world!'])
102*99451b44SJordan Rupprecht
103*99451b44SJordan Rupprecht        self.expect("p other.strptr",
104*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
105*99451b44SJordan Rupprecht                             'Nested Hello world!'])
106*99451b44SJordan Rupprecht
107*99451b44SJordan Rupprecht        self.runCmd(
108*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%c}\" -x \"char\\[[0-9]+\\]\"")
109*99451b44SJordan Rupprecht
110*99451b44SJordan Rupprecht        self.expect("frame variable strarr",
111*99451b44SJordan Rupprecht                    substrs=['arr = \"',
112*99451b44SJordan Rupprecht                             'Hello world!'])
113*99451b44SJordan Rupprecht
114*99451b44SJordan Rupprecht        self.expect("frame variable other.strarr",
115*99451b44SJordan Rupprecht                    substrs=['arr = \"',
116*99451b44SJordan Rupprecht                             'Nested Hello world!'])
117*99451b44SJordan Rupprecht
118*99451b44SJordan Rupprecht        self.expect("p strarr",
119*99451b44SJordan Rupprecht                    substrs=['arr = \"',
120*99451b44SJordan Rupprecht                             'Hello world!'])
121*99451b44SJordan Rupprecht
122*99451b44SJordan Rupprecht        self.expect("p other.strarr",
123*99451b44SJordan Rupprecht                    substrs=['arr = \"',
124*99451b44SJordan Rupprecht                             'Nested Hello world!'])
125*99451b44SJordan Rupprecht
126*99451b44SJordan Rupprecht# ${var%char[]}
127*99451b44SJordan Rupprecht        self.runCmd(
128*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%char[]}\" -x \"char\\[[0-9]+\\]\"")
129*99451b44SJordan Rupprecht
130*99451b44SJordan Rupprecht        self.expect("frame variable strarr",
131*99451b44SJordan Rupprecht                    substrs=['arr = \"',
132*99451b44SJordan Rupprecht                             'Hello world!'])
133*99451b44SJordan Rupprecht
134*99451b44SJordan Rupprecht        self.expect("frame variable other.strarr",
135*99451b44SJordan Rupprecht                    substrs=['arr = ',
136*99451b44SJordan Rupprecht                             'Nested Hello world!'])
137*99451b44SJordan Rupprecht
138*99451b44SJordan Rupprecht        self.expect("p strarr",
139*99451b44SJordan Rupprecht                    substrs=['arr = \"',
140*99451b44SJordan Rupprecht                             'Hello world!'])
141*99451b44SJordan Rupprecht
142*99451b44SJordan Rupprecht        self.expect("p other.strarr",
143*99451b44SJordan Rupprecht                    substrs=['arr = ',
144*99451b44SJordan Rupprecht                             'Nested Hello world!'])
145*99451b44SJordan Rupprecht
146*99451b44SJordan Rupprecht        self.runCmd(
147*99451b44SJordan Rupprecht            "type summary add --summary-string \"ptr = ${var%char[]}\" \"char *\"")
148*99451b44SJordan Rupprecht
149*99451b44SJordan Rupprecht        self.expect("frame variable strptr",
150*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
151*99451b44SJordan Rupprecht                             'Hello world!'])
152*99451b44SJordan Rupprecht
153*99451b44SJordan Rupprecht        self.expect("frame variable other.strptr",
154*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
155*99451b44SJordan Rupprecht                             'Nested Hello world!'])
156*99451b44SJordan Rupprecht
157*99451b44SJordan Rupprecht        self.expect("p strptr",
158*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
159*99451b44SJordan Rupprecht                             'Hello world!'])
160*99451b44SJordan Rupprecht
161*99451b44SJordan Rupprecht        self.expect("p other.strptr",
162*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
163*99451b44SJordan Rupprecht                             'Nested Hello world!'])
164*99451b44SJordan Rupprecht
165*99451b44SJordan Rupprecht# ${var%a}
166*99451b44SJordan Rupprecht        self.runCmd(
167*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%a}\" -x \"char\\[[0-9]+\\]\"")
168*99451b44SJordan Rupprecht
169*99451b44SJordan Rupprecht        self.expect("frame variable strarr",
170*99451b44SJordan Rupprecht                    substrs=['arr = \"',
171*99451b44SJordan Rupprecht                             'Hello world!'])
172*99451b44SJordan Rupprecht
173*99451b44SJordan Rupprecht        self.expect("frame variable other.strarr",
174*99451b44SJordan Rupprecht                    substrs=['arr = ',
175*99451b44SJordan Rupprecht                             'Nested Hello world!'])
176*99451b44SJordan Rupprecht
177*99451b44SJordan Rupprecht        self.expect("p strarr",
178*99451b44SJordan Rupprecht                    substrs=['arr = \"',
179*99451b44SJordan Rupprecht                             'Hello world!'])
180*99451b44SJordan Rupprecht
181*99451b44SJordan Rupprecht        self.expect("p other.strarr",
182*99451b44SJordan Rupprecht                    substrs=['arr = ',
183*99451b44SJordan Rupprecht                             'Nested Hello world!'])
184*99451b44SJordan Rupprecht
185*99451b44SJordan Rupprecht        self.runCmd(
186*99451b44SJordan Rupprecht            "type summary add --summary-string \"ptr = ${var%a}\" \"char *\"")
187*99451b44SJordan Rupprecht
188*99451b44SJordan Rupprecht        self.expect("frame variable strptr",
189*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
190*99451b44SJordan Rupprecht                             'Hello world!'])
191*99451b44SJordan Rupprecht
192*99451b44SJordan Rupprecht        self.expect("frame variable other.strptr",
193*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
194*99451b44SJordan Rupprecht                             'Nested Hello world!'])
195*99451b44SJordan Rupprecht
196*99451b44SJordan Rupprecht        self.expect("p strptr",
197*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
198*99451b44SJordan Rupprecht                             'Hello world!'])
199*99451b44SJordan Rupprecht
200*99451b44SJordan Rupprecht        self.expect("p other.strptr",
201*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
202*99451b44SJordan Rupprecht                             'Nested Hello world!'])
203*99451b44SJordan Rupprecht
204*99451b44SJordan Rupprecht        self.runCmd(
205*99451b44SJordan Rupprecht            "type summary add --summary-string \"ptr = ${var[]%char[]}\" \"char *\"")
206*99451b44SJordan Rupprecht
207*99451b44SJordan Rupprecht# I do not know the size of the data, but you are asking for a full array slice..
208*99451b44SJordan Rupprecht# use the ${var%char[]} to obtain a string as result
209*99451b44SJordan Rupprecht        self.expect("frame variable strptr", matching=False,
210*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
211*99451b44SJordan Rupprecht                             'Hello world!'])
212*99451b44SJordan Rupprecht
213*99451b44SJordan Rupprecht        self.expect("frame variable other.strptr", matching=False,
214*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
215*99451b44SJordan Rupprecht                             'Nested Hello world!'])
216*99451b44SJordan Rupprecht
217*99451b44SJordan Rupprecht        self.expect("p strptr", matching=False,
218*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
219*99451b44SJordan Rupprecht                             'Hello world!'])
220*99451b44SJordan Rupprecht
221*99451b44SJordan Rupprecht        self.expect("p other.strptr", matching=False,
222*99451b44SJordan Rupprecht                    substrs=['ptr = \"',
223*99451b44SJordan Rupprecht                             'Nested Hello world!'])
224*99451b44SJordan Rupprecht
225*99451b44SJordan Rupprecht# You asked an array-style printout...
226*99451b44SJordan Rupprecht        self.runCmd(
227*99451b44SJordan Rupprecht            "type summary add --summary-string \"ptr = ${var[0-1]%char[]}\" \"char *\"")
228*99451b44SJordan Rupprecht
229*99451b44SJordan Rupprecht        self.expect("frame variable strptr",
230*99451b44SJordan Rupprecht                    substrs=['ptr = ',
231*99451b44SJordan Rupprecht                             '[{H},{e}]'])
232*99451b44SJordan Rupprecht
233*99451b44SJordan Rupprecht        self.expect("frame variable other.strptr",
234*99451b44SJordan Rupprecht                    substrs=['ptr = ',
235*99451b44SJordan Rupprecht                             '[{N},{e}]'])
236*99451b44SJordan Rupprecht
237*99451b44SJordan Rupprecht        self.expect("p strptr",
238*99451b44SJordan Rupprecht                    substrs=['ptr = ',
239*99451b44SJordan Rupprecht                             '[{H},{e}]'])
240*99451b44SJordan Rupprecht
241*99451b44SJordan Rupprecht        self.expect("p other.strptr",
242*99451b44SJordan Rupprecht                    substrs=['ptr = ',
243*99451b44SJordan Rupprecht                             '[{N},{e}]'])
244*99451b44SJordan Rupprecht
245*99451b44SJordan Rupprecht# using [] is required here
246*99451b44SJordan Rupprecht        self.runCmd(
247*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%x}\" \"int [5]\"")
248*99451b44SJordan Rupprecht
249*99451b44SJordan Rupprecht        self.expect("frame variable intarr", matching=False, substrs=[
250*99451b44SJordan Rupprecht                    '0x00000001,0x00000001,0x00000002,0x00000003,0x00000005'])
251*99451b44SJordan Rupprecht
252*99451b44SJordan Rupprecht        self.expect("frame variable other.intarr", matching=False, substrs=[
253*99451b44SJordan Rupprecht                    '0x00000009,0x00000008,0x00000007,0x00000006,0x00000005'])
254*99451b44SJordan Rupprecht
255*99451b44SJordan Rupprecht        self.runCmd(
256*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var[]%x}\" \"int[5]\"")
257*99451b44SJordan Rupprecht
258*99451b44SJordan Rupprecht        self.expect(
259*99451b44SJordan Rupprecht            "frame variable intarr",
260*99451b44SJordan Rupprecht            substrs=[
261*99451b44SJordan Rupprecht                'intarr = arr =',
262*99451b44SJordan Rupprecht                '0x00000001,0x00000001,0x00000002,0x00000003,0x00000005'])
263*99451b44SJordan Rupprecht
264*99451b44SJordan Rupprecht        self.expect(
265*99451b44SJordan Rupprecht            "frame variable other.intarr",
266*99451b44SJordan Rupprecht            substrs=[
267*99451b44SJordan Rupprecht                'intarr = arr =',
268*99451b44SJordan Rupprecht                '0x00000009,0x00000008,0x00000007,0x00000006,0x00000005'])
269*99451b44SJordan Rupprecht
270*99451b44SJordan Rupprecht# printing each array item as an array
271*99451b44SJordan Rupprecht        self.runCmd(
272*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var[]%uint32_t[]}\" \"int[5]\"")
273*99451b44SJordan Rupprecht
274*99451b44SJordan Rupprecht        self.expect(
275*99451b44SJordan Rupprecht            "frame variable intarr",
276*99451b44SJordan Rupprecht            substrs=[
277*99451b44SJordan Rupprecht                'intarr = arr =',
278*99451b44SJordan Rupprecht                '{0x00000001},{0x00000001},{0x00000002},{0x00000003},{0x00000005}'])
279*99451b44SJordan Rupprecht
280*99451b44SJordan Rupprecht        self.expect(
281*99451b44SJordan Rupprecht            "frame variable other.intarr",
282*99451b44SJordan Rupprecht            substrs=[
283*99451b44SJordan Rupprecht                'intarr = arr = ',
284*99451b44SJordan Rupprecht                '{0x00000009},{0x00000008},{0x00000007},{0x00000006},{0x00000005}'])
285*99451b44SJordan Rupprecht
286*99451b44SJordan Rupprecht# printing full array as an array
287*99451b44SJordan Rupprecht        self.runCmd(
288*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%uint32_t[]}\" \"int[5]\"")
289*99451b44SJordan Rupprecht
290*99451b44SJordan Rupprecht        self.expect(
291*99451b44SJordan Rupprecht            "frame variable intarr",
292*99451b44SJordan Rupprecht            substrs=[
293*99451b44SJordan Rupprecht                'intarr = arr =',
294*99451b44SJordan Rupprecht                '0x00000001,0x00000001,0x00000002,0x00000003,0x00000005'])
295*99451b44SJordan Rupprecht
296*99451b44SJordan Rupprecht        self.expect(
297*99451b44SJordan Rupprecht            "frame variable other.intarr",
298*99451b44SJordan Rupprecht            substrs=[
299*99451b44SJordan Rupprecht                'intarr = arr =',
300*99451b44SJordan Rupprecht                '0x00000009,0x00000008,0x00000007,0x00000006,0x00000005'])
301*99451b44SJordan Rupprecht
302*99451b44SJordan Rupprecht# printing each array item as an array
303*99451b44SJordan Rupprecht        self.runCmd(
304*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var[]%float32[]}\" \"float[7]\"")
305*99451b44SJordan Rupprecht
306*99451b44SJordan Rupprecht        self.expect(
307*99451b44SJordan Rupprecht            "frame variable flarr",
308*99451b44SJordan Rupprecht            substrs=[
309*99451b44SJordan Rupprecht                'flarr = arr =',
310*99451b44SJordan Rupprecht                '{78.5},{77.25},{78},{76.125},{76.75},{76.875},{77}'])
311*99451b44SJordan Rupprecht
312*99451b44SJordan Rupprecht        self.expect(
313*99451b44SJordan Rupprecht            "frame variable other.flarr",
314*99451b44SJordan Rupprecht            substrs=[
315*99451b44SJordan Rupprecht                'flarr = arr = ',
316*99451b44SJordan Rupprecht                '{25.5},{25.25},{25.125},{26.75},{27.375},{27.5},{26.125}'])
317*99451b44SJordan Rupprecht
318*99451b44SJordan Rupprecht# printing full array as an array
319*99451b44SJordan Rupprecht        self.runCmd(
320*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%float32[]}\" \"float[7]\"")
321*99451b44SJordan Rupprecht
322*99451b44SJordan Rupprecht        self.expect("frame variable flarr",
323*99451b44SJordan Rupprecht                    substrs=['flarr = arr =',
324*99451b44SJordan Rupprecht                             '78.5,77.25,78,76.125,76.75,76.875,77'])
325*99451b44SJordan Rupprecht
326*99451b44SJordan Rupprecht        self.expect("frame variable other.flarr",
327*99451b44SJordan Rupprecht                    substrs=['flarr = arr =',
328*99451b44SJordan Rupprecht                             '25.5,25.25,25.125,26.75,27.375,27.5,26.125'])
329*99451b44SJordan Rupprecht
330*99451b44SJordan Rupprecht# using array smart summary strings for pointers should make no sense
331*99451b44SJordan Rupprecht        self.runCmd(
332*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%float32[]}\" \"float *\"")
333*99451b44SJordan Rupprecht        self.runCmd(
334*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%int32_t[]}\" \"int *\"")
335*99451b44SJordan Rupprecht
336*99451b44SJordan Rupprecht        self.expect("frame variable flptr", matching=False,
337*99451b44SJordan Rupprecht                    substrs=['78.5,77.25,78,76.125,76.75,76.875,77'])
338*99451b44SJordan Rupprecht
339*99451b44SJordan Rupprecht        self.expect("frame variable intptr", matching=False,
340*99451b44SJordan Rupprecht                    substrs=['1,1,2,3,5'])
341*99451b44SJordan Rupprecht
342*99451b44SJordan Rupprecht# use y and Y
343*99451b44SJordan Rupprecht        self.runCmd(
344*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%y}\" \"float[7]\"")
345*99451b44SJordan Rupprecht        self.runCmd(
346*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%y}\" \"int[5]\"")
347*99451b44SJordan Rupprecht
348*99451b44SJordan Rupprecht        if process.GetByteOrder() == lldb.eByteOrderLittle:
349*99451b44SJordan Rupprecht            self.expect(
350*99451b44SJordan Rupprecht                "frame variable flarr",
351*99451b44SJordan Rupprecht                substrs=[
352*99451b44SJordan Rupprecht                    'flarr = arr =',
353*99451b44SJordan Rupprecht                    '00 00 9d 42,00 80 9a 42,00 00 9c 42,00 40 98 42,00 80 99 42,00 c0 99 42,00 00 9a 42'])
354*99451b44SJordan Rupprecht        else:
355*99451b44SJordan Rupprecht            self.expect(
356*99451b44SJordan Rupprecht                "frame variable flarr",
357*99451b44SJordan Rupprecht                substrs=[
358*99451b44SJordan Rupprecht                    'flarr = arr =',
359*99451b44SJordan Rupprecht                    '42 9d 00 00,42 9a 80 00,42 9c 00 00,42 98 40 00,42 99 80 00,42 99 c0 00,42 9a 00 00'])
360*99451b44SJordan Rupprecht
361*99451b44SJordan Rupprecht        if process.GetByteOrder() == lldb.eByteOrderLittle:
362*99451b44SJordan Rupprecht            self.expect(
363*99451b44SJordan Rupprecht                "frame variable other.flarr",
364*99451b44SJordan Rupprecht                substrs=[
365*99451b44SJordan Rupprecht                    'flarr = arr =',
366*99451b44SJordan Rupprecht                    '00 00 cc 41,00 00 ca 41,00 00 c9 41,00 00 d6 41,00 00 db 41,00 00 dc 41,00 00 d1 41'])
367*99451b44SJordan Rupprecht        else:
368*99451b44SJordan Rupprecht            self.expect(
369*99451b44SJordan Rupprecht                "frame variable other.flarr",
370*99451b44SJordan Rupprecht                substrs=[
371*99451b44SJordan Rupprecht                    'flarr = arr =',
372*99451b44SJordan Rupprecht                    '41 cc 00 00,41 ca 00 00,41 c9 00 00,41 d6 00 00,41 db 00 00,41 dc 00 00,41 d1 00 00'])
373*99451b44SJordan Rupprecht
374*99451b44SJordan Rupprecht        if process.GetByteOrder() == lldb.eByteOrderLittle:
375*99451b44SJordan Rupprecht            self.expect(
376*99451b44SJordan Rupprecht                "frame variable intarr",
377*99451b44SJordan Rupprecht                substrs=[
378*99451b44SJordan Rupprecht                    'intarr = arr =',
379*99451b44SJordan Rupprecht                    '01 00 00 00,01 00 00 00,02 00 00 00,03 00 00 00,05 00 00 00'])
380*99451b44SJordan Rupprecht        else:
381*99451b44SJordan Rupprecht            self.expect(
382*99451b44SJordan Rupprecht                "frame variable intarr",
383*99451b44SJordan Rupprecht                substrs=[
384*99451b44SJordan Rupprecht                    'intarr = arr =',
385*99451b44SJordan Rupprecht                    '00 00 00 01,00 00 00 01,00 00 00 02,00 00 00 03,00 00 00 05'])
386*99451b44SJordan Rupprecht
387*99451b44SJordan Rupprecht        if process.GetByteOrder() == lldb.eByteOrderLittle:
388*99451b44SJordan Rupprecht            self.expect(
389*99451b44SJordan Rupprecht                "frame variable other.intarr",
390*99451b44SJordan Rupprecht                substrs=[
391*99451b44SJordan Rupprecht                    'intarr = arr = ',
392*99451b44SJordan Rupprecht                    '09 00 00 00,08 00 00 00,07 00 00 00,06 00 00 00,05 00 00 00'])
393*99451b44SJordan Rupprecht        else:
394*99451b44SJordan Rupprecht            self.expect(
395*99451b44SJordan Rupprecht                "frame variable other.intarr",
396*99451b44SJordan Rupprecht                substrs=[
397*99451b44SJordan Rupprecht                    'intarr = arr = ',
398*99451b44SJordan Rupprecht                    '00 00 00 09,00 00 00 08,00 00 00 07,00 00 00 06,00 00 00 05'])
399*99451b44SJordan Rupprecht
400*99451b44SJordan Rupprecht        self.runCmd(
401*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%Y}\" \"float[7]\"")
402*99451b44SJordan Rupprecht        self.runCmd(
403*99451b44SJordan Rupprecht            "type summary add --summary-string \"arr = ${var%Y}\" \"int[5]\"")
404*99451b44SJordan Rupprecht
405*99451b44SJordan Rupprecht        if process.GetByteOrder() == lldb.eByteOrderLittle:
406*99451b44SJordan Rupprecht            self.expect(
407*99451b44SJordan Rupprecht                "frame variable flarr",
408*99451b44SJordan Rupprecht                substrs=[
409*99451b44SJordan Rupprecht                    'flarr = arr =',
410*99451b44SJordan Rupprecht                    '00 00 9d 42', '00 80 9a 42', '00 00 9c 42', '00 40 98 42', '00 80 99 42', '00 c0 99 42', '00 00 9a 42'])
411*99451b44SJordan Rupprecht        else:
412*99451b44SJordan Rupprecht            self.expect(
413*99451b44SJordan Rupprecht                "frame variable flarr",
414*99451b44SJordan Rupprecht                substrs=[
415*99451b44SJordan Rupprecht                    'flarr = arr =',
416*99451b44SJordan Rupprecht                    '42 9d 00 00', '42 9a 80 00', '42 9c 00 00', '42 98 40 00', '42 99 80 00', '42 99 c0 00', '42 9a 00 00'])
417*99451b44SJordan Rupprecht
418*99451b44SJordan Rupprecht        if process.GetByteOrder() == lldb.eByteOrderLittle:
419*99451b44SJordan Rupprecht            self.expect(
420*99451b44SJordan Rupprecht                "frame variable other.flarr",
421*99451b44SJordan Rupprecht                substrs=[
422*99451b44SJordan Rupprecht                    'flarr = arr =',
423*99451b44SJordan Rupprecht                    '00 00 cc 41', '00 00 ca 41', '00 00 c9 41', '00 00 d6 41', '00 00 db 41', '00 00 dc 41', '00 00 d1 41'])
424*99451b44SJordan Rupprecht        else:
425*99451b44SJordan Rupprecht            self.expect(
426*99451b44SJordan Rupprecht                "frame variable other.flarr",
427*99451b44SJordan Rupprecht                substrs=[
428*99451b44SJordan Rupprecht                    'flarr = arr =',
429*99451b44SJordan Rupprecht                    '41 cc 00 00', '41 ca 00 00', '41 c9 00 00', '41 d6 00 00', '41 db 00 00', '41 dc 00 00', '41 d1 00 00'])
430*99451b44SJordan Rupprecht
431*99451b44SJordan Rupprecht        if process.GetByteOrder() == lldb.eByteOrderLittle:
432*99451b44SJordan Rupprecht            self.expect("frame variable intarr",
433*99451b44SJordan Rupprecht                        substrs=['intarr = arr =',
434*99451b44SJordan Rupprecht                                 '....,01 00 00 00',
435*99451b44SJordan Rupprecht                                 '....,05 00 00 00'])
436*99451b44SJordan Rupprecht        else:
437*99451b44SJordan Rupprecht            self.expect("frame variable intarr",
438*99451b44SJordan Rupprecht                        substrs=['intarr = arr =',
439*99451b44SJordan Rupprecht                                 '....,00 00 00 01',
440*99451b44SJordan Rupprecht                                 '....,00 00 00 05'])
441*99451b44SJordan Rupprecht
442*99451b44SJordan Rupprecht        if process.GetByteOrder() == lldb.eByteOrderLittle:
443*99451b44SJordan Rupprecht            self.expect("frame variable other.intarr",
444*99451b44SJordan Rupprecht                        substrs=['intarr = arr = ',
445*99451b44SJordan Rupprecht                                 '09 00 00 00',
446*99451b44SJordan Rupprecht                                 '....,07 00 00 00'])
447*99451b44SJordan Rupprecht        else:
448*99451b44SJordan Rupprecht            self.expect("frame variable other.intarr",
449*99451b44SJordan Rupprecht                        substrs=['intarr = arr = ',
450*99451b44SJordan Rupprecht                                 '00 00 00 09',
451*99451b44SJordan Rupprecht                                 '....,00 00 00 07'])
452