Lines Matching refs:self
70 def UpdateAbiRegexes(self): argument
72 self.width = "{16}"
73 self.spacing = " "
75 self.width = "{8}"
76 self.spacing = ""
78 …self.register_line = re.compile("(([ ]*\\b(" + self.register_names[symbol.ARCH] + ")\\b +[0-9a-f]"…
91 self.trace_line = re.compile(
95 "(?P<offset>[0-9a-f]" + self.width + ")[ \t]+" # Offset (hex number given without
104 self.sanitizer_trace_line = re.compile(
120 …self.value_line = re.compile("(.*)([0-9a-f]" + self.width + ")[ \t]+([0-9a-f]" + self.width + ")[ …
128 self.code_line = re.compile("(.*)[ \t]*[a-f0-9]" + self.width +
129 "[ \t]*[a-f0-9]" + self.width +
130 "[ \t]*[a-f0-9]" + self.width +
131 "[ \t]*[a-f0-9]" + self.width +
132 "[ \t]*[a-f0-9]" + self.width +
135 def CleanLine(self, ln): argument
140 def PrintTraceLines(self, trace_lines): argument
145 print " RELADDR " + self.spacing + "FUNCTION".ljust(maxlen) + " FILE:LINE"
146 for tl in self.trace_lines:
151 def PrintValueLines(self, value_lines): argument
153 maxlen = max(map(lambda tl: len(tl[2]), self.value_lines))
156 print " ADDR " + self.spacing + "VALUE " + "FUNCTION".ljust(maxlen) + " FILE:LINE"
157 for vl in self.value_lines:
162 def PrintOutput(self, trace_lines, value_lines): argument
163 if self.trace_lines:
164 self.PrintTraceLines(self.trace_lines)
165 if self.value_lines:
166 self.PrintValueLines(self.value_lines)
168 def PrintDivider(self): argument
172 def DeleteApkTmpFiles(self): argument
173 for _, _, tmp_files in self.apk_info.values():
177 def ConvertTrace(self, lines): argument
178 lines = map(self.CleanLine, lines)
182 self.UpdateAbiRegexes()
184 self.ProcessLine(line)
185 self.PrintOutput(self.trace_lines, self.value_lines)
188 self.DeleteApkTmpFiles()
190 def MatchTraceLine(self, line): argument
191 if self.trace_line.match(line):
192 match = self.trace_line.match(line)
199 if self.sanitizer_trace_line.match(line):
200 match = self.sanitizer_trace_line.match(line)
209 def ExtractLibFromApk(self, apk, shared_lib_name): argument
225 def ProcessCentralInfo(self, offset_list, central_info): argument
226 match = self.zipinfo_central_info_match.search(central_info)
236 def GetLibFromApk(self, apk, offset): argument
241 if apk in self.apk_info:
242 apk_full_path, offset_list, tmp_files = self.apk_info[apk]
247 tmp_file = self.ExtractLibFromApk(apk_full_path, file_name)
272 if self.zipinfo_central_directory_line.search(line):
279 match = self.zipinfo_central_directory_line.search(line)
281 cur_name, start, end = self.ProcessCentralInfo(offset_list, central_info)
288 cur_name, start, end = self.ProcessCentralInfo(offset_list, central_info)
294 self.apk_info[apk] = [apk_full_path, offset_list, tmp_files]
297 tmp_shared_lib = self.ExtractLibFromApk(apk_full_path, file_name)
303 def ProcessLine(self, line): argument
305 process_header = self.process_info_line.search(line)
306 signal_header = self.signal_line.search(line)
307 abort_message_header = self.abort_message_line.search(line)
308 thread_header = self.thread_line.search(line)
309 register_header = self.register_line.search(line)
310 revision_header = self.revision_line.search(line)
311 dalvik_jni_thread_header = self.dalvik_jni_thread_line.search(line)
312 dalvik_native_thread_header = self.dalvik_native_thread_line.search(line)
313 unreachable_header = self.unreachable_line.search(line)
318 if self.trace_lines or self.value_lines:
319 self.PrintOutput(self.trace_lines, self.value_lines)
320 self.PrintDivider()
321 self.trace_lines = []
322 self.value_lines = []
323 self.last_frame = -1
343 trace_line_dict = self.MatchTraceLine(line)
353 if frame <= self.last_frame and (self.trace_lines or self.value_lines):
354 self.PrintOutput(self.trace_lines, self.value_lines)
355 self.PrintDivider()
356 self.trace_lines = []
357 self.value_lines = []
358 self.last_frame = frame
361 self.trace_lines.append((code_addr, "", area))
368 lib_name, lib = self.GetLibFromApk(area, so_offset)
392 self.trace_lines.append((arrow, source_symbol, source_location))
396 self.trace_lines.append((code_addr,
399 if self.code_line.match(line):
403 if self.value_line.match(line):
405 match = self.value_line.match(line)
408 self.value_lines.append((addr, value, "", area))
423 self.value_lines.append((addr,
432 def assert_register_matches(self, abi, example_crash, stupid_pattern): argument
441 self.assertEquals(matched, is_register, line)
444 def test_arm_registers(self): argument
445 self.assert_register_matches("arm", example_crashes.arm, '\\b(r0|r4|r8|ip)\\b')
447 def test_arm64_registers(self): argument
448 …self.assert_register_matches("arm64", example_crashes.arm64, '\\b(x0|x4|x8|x12|x16|x20|x24|x28|sp)…
450 def test_mips_registers(self): argument
451 self.assert_register_matches("mips", example_crashes.mips, '\\b(zr|a0|t0|t4|s0|s4|t8|gp|hi)\\b')
453 def test_mips64_registers(self): argument
454 …self.assert_register_matches("mips64", example_crashes.mips64, '\\b(zr|a0|a4|t0|s0|s4|t8|gp|hi)\\b…
456 def test_x86_registers(self): argument
457 self.assert_register_matches("x86", example_crashes.x86, '\\b(eax|esi|xcs|eip)\\b')
459 def test_x86_64_registers(self): argument
460 self.assert_register_matches("x86_64", example_crashes.x86_64, '\\b(rax|rsi|r8|r12|cs|rip)\\b')
463 def test_libmemunreachable(self): argument
468 self.assertEquals(symbol.ARCH, "arm")
479 self.assertEquals(header_lines, 3)
480 self.assertEquals(trace_lines, 2)
487 def test_long_asan_crash(self): argument
497 self.assertLessEqual(trace_line_count, len(tc.trace_lines))
501 self.assertGreater(trace_line_count, 10)
505 def test_value_line_skipped(self): argument
510 self.assertEqual([], tc.value_lines)