1*c7cbf32fSJonas Devlieghere#                                                                 -*- python -*-
2*c7cbf32fSJonas Devlieghere# DEBUG: cd %S/../../../../../examples/python && cat %s | %lldb && false
3*c7cbf32fSJonas Devlieghere# RUN: cd %S/../../../../../examples/python && cat %s | %lldb | FileCheck %s
4*c7cbf32fSJonas Devlieghere# CHECK-LABEL: {{S}}KIP BEYOND CHECKS
5*c7cbf32fSJonas Devliegherescript
6*c7cbf32fSJonas Devlieghereimport crashlog
7*c7cbf32fSJonas Devliegherecrash_log_parser = crashlog.TextCrashLogParser
8*c7cbf32fSJonas Devliegherecrash_log = crashlog.CrashLog
9*c7cbf32fSJonas Devlieghereimages = [
10*c7cbf32fSJonas Devlieghere"0x10b60b000 - 0x10f707fff com.apple.LLDB.framework (1.1000.11.38.2 - 1000.11.38.2) <96E36F5C-1A83-39A1-8713-5FDD9701C3F1> /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/LLDB",
11*c7cbf32fSJonas Devlieghere# CHECK: 0x10b60b000
12*c7cbf32fSJonas Devlieghere# CHECK: 0x10f707fff
13*c7cbf32fSJonas Devlieghere# CHECK: com.apple.LLDB.framework
14*c7cbf32fSJonas Devlieghere# CHECK: 96E36F5C-1A83-39A1-8713-5FDD9701C3F1
15*c7cbf32fSJonas Devlieghere# CHECK: /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/LLDB
16*c7cbf32fSJonas Devlieghere
17*c7cbf32fSJonas Devlieghere"0x104591000 - 0x1055cfff7 +llvm-dwarfdump (0) <B104CFA1-046A-36A6-8EB4-07DDD7CC2DF3> /Users/USER 1/Documents/*/llvm-dwarfdump",
18*c7cbf32fSJonas Devlieghere# CHECK: 0x104591000
19*c7cbf32fSJonas Devlieghere# CHECK: 0x1055cfff7
20*c7cbf32fSJonas Devlieghere# CHECK: llvm-dwarfdump
21*c7cbf32fSJonas Devlieghere# CHECK: (0)
22*c7cbf32fSJonas Devlieghere# CHECK: B104CFA1-046A-36A6-8EB4-07DDD7CC2DF3
23*c7cbf32fSJonas Devlieghere# CHECK: /Users/USER 1/Documents/*/llvm-dwarfdump
24*c7cbf32fSJonas Devlieghere
25*c7cbf32fSJonas Devlieghere"0x7fff63f20000 - 0x7fff63f77ff7  libc++.1.dylib (400.9.4) <D4AB366F-48A9-3C7D-91BD-41198F69DD57> /usr/lib/libc++.1.dylib",
26*c7cbf32fSJonas Devlieghere# CHECK: 0x7fff63f20000
27*c7cbf32fSJonas Devlieghere# CHECK: 0x7fff63f77ff7
28*c7cbf32fSJonas Devlieghere# CHECK: libc++.1.dylib
29*c7cbf32fSJonas Devlieghere# CHECK: (400.9.4)
30*c7cbf32fSJonas Devlieghere# CHECK: D4AB366F-48A9-3C7D-91BD-41198F69DD57
31*c7cbf32fSJonas Devlieghere# CHECK: /usr/lib/libc++.1.dylib
32*c7cbf32fSJonas Devlieghere
33*c7cbf32fSJonas Devlieghere"0x1111111 - 0x22222 +MyApp Pro arm64  <01234> /tmp/MyApp Pro.app/MyApp Pro",
34*c7cbf32fSJonas Devlieghere# CHECK: 0x1111111
35*c7cbf32fSJonas Devlieghere# CHECK: 0x22222
36*c7cbf32fSJonas Devlieghere# CHECK: MyApp Pro
37*c7cbf32fSJonas Devlieghere# CHECK: arm64
38*c7cbf32fSJonas Devlieghere# CHECK: 01234
39*c7cbf32fSJonas Devlieghere# CHECK: /tmp/MyApp Pro.app/MyApp Pro
40*c7cbf32fSJonas Devlieghere
41*c7cbf32fSJonas Devlieghere"0x1111111 - 0x22222 +MyApp Pro (0) <01234> /tmp/MyApp Pro.app/MyApp Pro",
42*c7cbf32fSJonas Devlieghere# CHECK: 0x1111111
43*c7cbf32fSJonas Devlieghere# CHECK: 0x22222
44*c7cbf32fSJonas Devlieghere# CHECK: MyApp Pro
45*c7cbf32fSJonas Devlieghere# CHECK: (0)
46*c7cbf32fSJonas Devlieghere# CHECK: 01234
47*c7cbf32fSJonas Devlieghere# CHECK: /tmp/MyApp Pro.app/MyApp Pro
48*c7cbf32fSJonas Devlieghere
49*c7cbf32fSJonas Devlieghere"0x1111111 - 0x2222222 MyFramework Plus.dylib (1.11 - MyFramework 1.11) <01234> /tmp/MyFramework Plus.dylib",
50*c7cbf32fSJonas Devlieghere# CHECK: 0x1111111
51*c7cbf32fSJonas Devlieghere# CHECK: 0x2222222
52*c7cbf32fSJonas Devlieghere# CHECK: MyFramework Plus.dylib
53*c7cbf32fSJonas Devlieghere# CHECK: ({{.*}}
54*c7cbf32fSJonas Devlieghere# CHECK: 1.11 - MyFramework 1.11
55*c7cbf32fSJonas Devlieghere# CHECK: <{{.*}}
56*c7cbf32fSJonas Devlieghere# CHECK: 01234
57*c7cbf32fSJonas Devlieghere# CHECK: /tmp/MyFramework Plus.dylib
58*c7cbf32fSJonas Devlieghere
59*c7cbf32fSJonas Devlieghere"0x1111111 - 0x2222222 MyFramework-dev.dylib (1.0.0svn - 1.0.0svn) <01234> /MyFramework-dev.dylib",
60*c7cbf32fSJonas Devlieghere# CHECK: 0x1111111
61*c7cbf32fSJonas Devlieghere# CHECK: 0x2222222
62*c7cbf32fSJonas Devlieghere# CHECK: MyFramework-dev.dylib
63*c7cbf32fSJonas Devlieghere# CHECK: ({{.*}}
64*c7cbf32fSJonas Devlieghere# CHECK: 1.0.0svn - 1.0.0svn
65*c7cbf32fSJonas Devlieghere# CHECK: <{{.*}}
66*c7cbf32fSJonas Devlieghere# CHECK: 01234
67*c7cbf32fSJonas Devlieghere# CHECK: /MyFramework-dev.dylib
68*c7cbf32fSJonas Devlieghere
69*c7cbf32fSJonas Devlieghere"0x7fff63f20000 - 0x7fff63f77ff7  libc++.1.dylib (400.9.4) /usr/lib/libc++.1.dylib",
70*c7cbf32fSJonas Devlieghere# CHECK: 0x7fff63f20000
71*c7cbf32fSJonas Devlieghere# CHECK: 0x7fff63f77ff7
72*c7cbf32fSJonas Devlieghere# CHECK: libc++.1.dylib
73*c7cbf32fSJonas Devlieghere# CHECK: ({{.*}}
74*c7cbf32fSJonas Devlieghere# CHECK: 400.9.4
75*c7cbf32fSJonas Devlieghere# CHECK: None
76*c7cbf32fSJonas Devlieghere# CHECK: None
77*c7cbf32fSJonas Devlieghere# CHECK: /usr/lib/libc++.1.dylib
78*c7cbf32fSJonas Devlieghere
79*c7cbf32fSJonas Devlieghere"0x1047b8000 - 0x10481ffff dyld arm64e  <cfa789d10da63f9a8996daf84ed9d04f> /usr/lib/dyld"
80*c7cbf32fSJonas Devlieghere# CHECK: 0x1047b8000
81*c7cbf32fSJonas Devlieghere# CHECK: 0x10481ffff
82*c7cbf32fSJonas Devlieghere# CHECK: dyld
83*c7cbf32fSJonas Devlieghere# CHECK: {{.*}}
84*c7cbf32fSJonas Devlieghere# CHECK: arm64e
85*c7cbf32fSJonas Devlieghere# CHECK: <{{.*}}
86*c7cbf32fSJonas Devlieghere# CHECK: cfa789d10da63f9a8996daf84ed9d04f
87*c7cbf32fSJonas Devlieghere# CHECK: /usr/lib/dyld
88*c7cbf32fSJonas Devlieghere]
89*c7cbf32fSJonas Devlieghere# CHECK-LABEL: FRAMES
90*c7cbf32fSJonas Devlieghereframes = [
91*c7cbf32fSJonas Devlieghere"0 libsystem_kernel.dylib        	0x00007fff684b78a6 read + 10",
92*c7cbf32fSJonas Devlieghere# CHECK: 0
93*c7cbf32fSJonas Devlieghere# CHECK: libsystem_kernel.dylib
94*c7cbf32fSJonas Devlieghere# CHECK: 0x00007fff684b78a6
95*c7cbf32fSJonas Devlieghere# CHECK: read + 10
96*c7cbf32fSJonas Devlieghere"1   com.apple.LLDB.framework      	0x000000010f7954af lldb_private::HostNativeThreadBase::ThreadCreateTrampoline(void*) + 105",
97*c7cbf32fSJonas Devlieghere# CHECK: 1
98*c7cbf32fSJonas Devlieghere# CHECK: com.apple.LLDB.framework
99*c7cbf32fSJonas Devlieghere# CHECK: 0x000000010f7954af
100*c7cbf32fSJonas Devlieghere# CHECK: lldb_private{{.*}} + 105
101*c7cbf32fSJonas Devlieghere"2   MyApp Pro arm64    	0x000000019b0db3a8 foo + 72",
102*c7cbf32fSJonas Devlieghere# CHECK: 2
103*c7cbf32fSJonas Devlieghere# CHECK: MyApp Pro
104*c7cbf32fSJonas Devlieghere# CHECK: a
105*c7cbf32fSJonas Devlieghere# CHECK: arm64
106*c7cbf32fSJonas Devlieghere# CHECK: a
107*c7cbf32fSJonas Devlieghere# CHECK: 0x000000019b0db3a8
108*c7cbf32fSJonas Devlieghere# CHECK: foo + 72
109*c7cbf32fSJonas Devlieghere"3   He 0x1    	0x000000019b0db3a8 foo + 72"
110*c7cbf32fSJonas Devlieghere# CHECK: 3
111*c7cbf32fSJonas Devlieghere# CHECK: He 0x1
112*c7cbf32fSJonas Devlieghere# CHECK: 0x000000019b0db3a8
113*c7cbf32fSJonas Devlieghere# CHECK: foo + 72
114*c7cbf32fSJonas Devlieghere]
115*c7cbf32fSJonas Devlieghere
116*c7cbf32fSJonas Devlieghere
117*c7cbf32fSJonas Devlieghere# Avoid matching the text inside the input.
118*c7cbf32fSJonas Devlieghereprint("SKIP BEYOND CHECKS")
119*c7cbf32fSJonas Devliegherefor image in images:
120*c7cbf32fSJonas Devlieghere    print('"%s"'%image)
121*c7cbf32fSJonas Devlieghere    print("--------------")
122*c7cbf32fSJonas Devlieghere    match = crash_log_parser.image_regex_uuid.search(image)
123*c7cbf32fSJonas Devlieghere    for group in match.groups():
124*c7cbf32fSJonas Devlieghere        print(group)
125*c7cbf32fSJonas Devlieghere
126*c7cbf32fSJonas Devlieghereprint("FRAMES")
127*c7cbf32fSJonas Devliegherefor frame in frames:
128*c7cbf32fSJonas Devlieghere    print('"%s"'%frame)
129*c7cbf32fSJonas Devlieghere    print("--------------")
130*c7cbf32fSJonas Devlieghere    match = crash_log_parser.frame_regex.search(frame)
131*c7cbf32fSJonas Devlieghere    for group in match.groups():
132*c7cbf32fSJonas Devlieghere        print(group)
133*c7cbf32fSJonas Devlieghere
134*c7cbf32fSJonas Devlieghereexit()
135*c7cbf32fSJonas Devliegherequit
136