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