pykdebugparser 1.2.7__tar.gz → 1.2.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/PKG-INFO +2 -1
  2. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser.egg-info/PKG-INFO +2 -1
  3. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser.egg-info/SOURCES.txt +1 -9
  4. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser.egg-info/top_level.txt +0 -1
  5. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pyproject.toml +5 -5
  6. pykdebugparser-1.2.7/tests/callstacks/test_callstacks_parser.py +0 -91
  7. pykdebugparser-1.2.7/tests/conftest.py +0 -15
  8. pykdebugparser-1.2.7/tests/traces/test_bsd.py +0 -32
  9. pykdebugparser-1.2.7/tests/traces/test_dyld.py +0 -251
  10. pykdebugparser-1.2.7/tests/traces/test_mach.py +0 -452
  11. pykdebugparser-1.2.7/tests/traces/test_perf.py +0 -118
  12. pykdebugparser-1.2.7/tests/traces/test_trace.py +0 -25
  13. pykdebugparser-1.2.7/tests/traces/test_turnstile.py +0 -127
  14. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/LICENSE +0 -0
  15. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/README.md +0 -0
  16. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/__init__.py +0 -0
  17. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/__main__.py +0 -0
  18. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/callstacks_parser.py +0 -0
  19. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/kd_buf_parser.py +0 -0
  20. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/kevent.py +0 -0
  21. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/os_log_event.py +0 -0
  22. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/pykdebugparser.py +0 -0
  23. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/trace.codes +0 -0
  24. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/trace_codes.py +0 -0
  25. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/trace_handlers/__init__.py +0 -0
  26. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/trace_handlers/bsd.py +0 -0
  27. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/trace_handlers/dyld.py +0 -0
  28. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/trace_handlers/fsystem.py +0 -0
  29. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/trace_handlers/mach.py +0 -0
  30. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/trace_handlers/perf.py +0 -0
  31. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/trace_handlers/trace.py +0 -0
  32. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/trace_handlers/turnstile.py +0 -0
  33. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser/traces_parser.py +0 -0
  34. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser.egg-info/dependency_links.txt +0 -0
  35. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser.egg-info/entry_points.txt +0 -0
  36. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/pykdebugparser.egg-info/requires.txt +0 -0
  37. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/setup.cfg +0 -0
  38. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/tests/test_kevent.py +0 -0
  39. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/tests/test_os_log_event.py +0 -0
  40. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/tests/test_pykdebugparser.py +0 -0
  41. {pykdebugparser-1.2.7 → pykdebugparser-1.2.8}/tests/test_trace_codes.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pykdebugparser
3
- Version: 1.2.7
3
+ Version: 1.2.8
4
4
  Summary: Python parser for kdebug events
5
5
  Author: Matan Perelman
6
6
  Author-email: matan1008@gmail.com
@@ -34,6 +34,7 @@ Classifier: Programming Language :: Python :: 3.10
34
34
  Classifier: Programming Language :: Python :: 3.11
35
35
  Classifier: Programming Language :: Python :: 3.12
36
36
  Classifier: Programming Language :: Python :: 3.13
37
+ Classifier: Programming Language :: Python :: 3.14
37
38
  Requires-Python: >=3.8
38
39
  Description-Content-Type: text/markdown
39
40
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pykdebugparser
3
- Version: 1.2.7
3
+ Version: 1.2.8
4
4
  Summary: Python parser for kdebug events
5
5
  Author: Matan Perelman
6
6
  Author-email: matan1008@gmail.com
@@ -34,6 +34,7 @@ Classifier: Programming Language :: Python :: 3.10
34
34
  Classifier: Programming Language :: Python :: 3.11
35
35
  Classifier: Programming Language :: Python :: 3.12
36
36
  Classifier: Programming Language :: Python :: 3.13
37
+ Classifier: Programming Language :: Python :: 3.14
37
38
  Requires-Python: >=3.8
38
39
  Description-Content-Type: text/markdown
39
40
  License-File: LICENSE
@@ -26,15 +26,7 @@ pykdebugparser/trace_handlers/mach.py
26
26
  pykdebugparser/trace_handlers/perf.py
27
27
  pykdebugparser/trace_handlers/trace.py
28
28
  pykdebugparser/trace_handlers/turnstile.py
29
- tests/conftest.py
30
29
  tests/test_kevent.py
31
30
  tests/test_os_log_event.py
32
31
  tests/test_pykdebugparser.py
33
- tests/test_trace_codes.py
34
- tests/callstacks/test_callstacks_parser.py
35
- tests/traces/test_bsd.py
36
- tests/traces/test_dyld.py
37
- tests/traces/test_mach.py
38
- tests/traces/test_perf.py
39
- tests/traces/test_trace.py
40
- tests/traces/test_turnstile.py
32
+ tests/test_trace_codes.py
@@ -1,4 +1,3 @@
1
1
  dist
2
2
  gifs
3
3
  pykdebugparser
4
- tests
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pykdebugparser"
7
- version = "1.2.7"
7
+ version = "1.2.8"
8
8
  description = "Python parser for kdebug events"
9
9
  readme.file = "README.md"
10
10
  readme.content-type = "text/markdown"
@@ -21,6 +21,7 @@ classifiers = [
21
21
  "Programming Language :: Python :: 3.11",
22
22
  "Programming Language :: Python :: 3.12",
23
23
  "Programming Language :: Python :: 3.13",
24
+ "Programming Language :: Python :: 3.14",
24
25
  ]
25
26
  dependencies = [
26
27
  "construct",
@@ -39,12 +40,11 @@ testing = ["pytest"]
39
40
  [project.scripts]
40
41
  pykdebugparser = "pykdebugparser.__main__:cli"
41
42
 
42
-
43
- [tool.setuptools.packages]
44
- find = {}
43
+ [tool.setuptools.packages.find]
44
+ exclude = ["tests*"]
45
45
 
46
46
  [tool.setuptools.package-data]
47
47
  pykdebugparser = ["*.txt", "*.TXT", "*.codes"]
48
48
 
49
49
  [tool.distutils.bdist_wheel]
50
- universal = true
50
+ universal = true
@@ -1,91 +0,0 @@
1
- from uuid import UUID
2
-
3
- from pykdebugparser.callstacks_parser import Frame
4
- from pykdebugparser.kevent import Kevent
5
-
6
-
7
- def test_parsing_perf_event(traces_parser, callstacks_parser):
8
- events = [
9
- Kevent(timestamp=7006023115068,
10
- data=(b'\t\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
11
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
12
- values=(9, 32, 0, 0), tid=1957, debugid=620756993, eventid=620756992, func_qualifier=1),
13
- Kevent(timestamp=7006023115085,
14
- data=(b'E\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
15
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
16
- values=(69, 5, 0, 0), tid=1957, debugid=620888088, eventid=620888088, func_qualifier=0),
17
- Kevent(timestamp=7006023115105,
18
- data=(b'\xf0[\xc0\xb5\x01\x00\x00\x00\xd4\xe4v\x93\x01\x00\x00\x000\x99\\\x02\x01\x00'
19
- b'\x00\x00<\x0b\x16\xd1\x01\x00\x00\x00'),
20
- values=(7344249840, 6769009876, 4334590256, 7802850108), tid=1957, debugid=620888080, eventid=620888080,
21
- func_qualifier=0),
22
- Kevent(timestamp=7006023115123,
23
- data=(b'\xd4\xe6v\x93\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
24
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
25
- values=(6769010388, 0, 0, 0), tid=1957, debugid=620888080, eventid=620888080, func_qualifier=0),
26
- Kevent(timestamp=7006023115140,
27
- data=(b'\x95\x00\x00\x00\x00\x00\x00\x00\xa5\x07\x00\x00\x00\x00\x00\x00\x80\xb1\x94m\x01'
28
- b'\x00\x00\x00\x03\x00\xfc\xff\x00\x00\x00\x00'),
29
- values=(149, 1957, 6133428608, 4294705155), tid=1957, debugid=620822532, eventid=620822532,
30
- func_qualifier=0),
31
- Kevent(timestamp=7006023115153,
32
- data=(b'\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
33
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
34
- values=(9, 0, 0, 0), tid=1957, debugid=620756994, eventid=620756992, func_qualifier=2)
35
- ]
36
- ret = list(callstacks_parser.feed_generator(traces_parser.feed_generator(events)))
37
- assert ret[0].timestamp == 7006023115068
38
- assert ret[0].tid == 1957
39
- assert ret[0].frames == [
40
- Frame(0x1b5c05bf0, None, None),
41
- Frame(0x19376e4d4, None, None),
42
- Frame(0x1025c9930, None, None),
43
- Frame(0x1d1160b3c, None, None),
44
- Frame(0x19376e6d4, None, None),
45
- ]
46
-
47
-
48
- def test_parsing_with_images(traces_parser, callstacks_parser):
49
- events = [
50
- Kevent(timestamp=2087564153638,
51
- data=(b'\x19\xdd*\xd4E\xe01\x97\xa5\xc4S\xb3W\xf3a\xa0\x000u\xaa\x01'
52
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
53
- values=(10894735564102884633, 11556785676805719205, 0x1aa753000, 0), tid=200651, debugid=520421376,
54
- eventid=520421376, func_qualifier=0),
55
- Kevent(timestamp=7006023115068,
56
- data=(b'\t\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
57
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
58
- values=(9, 32, 0, 0), tid=1957, debugid=620756993, eventid=620756992, func_qualifier=1),
59
- Kevent(timestamp=7006023115085,
60
- data=(b'E\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
61
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
62
- values=(69, 5, 0, 0), tid=1957, debugid=620888088, eventid=620888088, func_qualifier=0),
63
- Kevent(timestamp=7006023115105,
64
- data=(b'\xf0[\xc0\xb5\x01\x00\x00\x00\xd4\xe4v\x93\x01\x00\x00\x000\x99\\\x02\x01\x00'
65
- b'\x00\x00<\x0b\x16\xd1\x01\x00\x00\x00'),
66
- values=(7344249840, 6769009876, 4334590256, 7802850108), tid=1957, debugid=620888080, eventid=620888080,
67
- func_qualifier=0),
68
- Kevent(timestamp=7006023115123,
69
- data=(b'\xd4\xe6v\x93\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
70
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
71
- values=(6769010388, 0, 0, 0), tid=1957, debugid=620888080, eventid=620888080, func_qualifier=0),
72
- Kevent(timestamp=7006023115140,
73
- data=(b'\x95\x00\x00\x00\x00\x00\x00\x00\xa5\x07\x00\x00\x00\x00\x00\x00\x80\xb1\x94m\x01'
74
- b'\x00\x00\x00\x03\x00\xfc\xff\x00\x00\x00\x00'),
75
- values=(149, 1957, 6133428608, 4294705155), tid=1957, debugid=620822532, eventid=620822532,
76
- func_qualifier=0),
77
- Kevent(timestamp=7006023115153,
78
- data=(b'\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
79
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
80
- values=(9, 0, 0, 0), tid=1957, debugid=620756994, eventid=620756992, func_qualifier=2)
81
- ]
82
- ret = list(callstacks_parser.feed_generator(traces_parser.feed_generator(events)))
83
- assert ret[0].timestamp == 7006023115068
84
- assert ret[0].tid == 1957
85
- assert ret[0].frames == [
86
- Frame(0x1b5c05bf0, UUID('19dd2ad4-45e0-3197-a5c4-53b357f361a0'), 0xb4b2bf0),
87
- Frame(0x19376e4d4, None, None),
88
- Frame(0x1025c9930, None, None),
89
- Frame(0x1d1160b3c, UUID('19dd2ad4-45e0-3197-a5c4-53b357f361a0'), 0x26a0db3c),
90
- Frame(0x19376e6d4, None, None),
91
- ]
@@ -1,15 +0,0 @@
1
- import pytest
2
-
3
- from pykdebugparser.callstacks_parser import CallstacksParser
4
- from pykdebugparser.trace_codes import default_trace_codes
5
- from pykdebugparser.traces_parser import TracesParser
6
-
7
-
8
- @pytest.fixture(scope='function')
9
- def traces_parser():
10
- return TracesParser(default_trace_codes(), {}, {})
11
-
12
-
13
- @pytest.fixture(scope='function')
14
- def callstacks_parser():
15
- return CallstacksParser([], [])
@@ -1,32 +0,0 @@
1
- from pykdebugparser.kevent import Kevent
2
-
3
-
4
- def test_read(traces_parser):
5
- events = [
6
- Kevent(timestamp=15783429453,
7
- data=(b'\x07\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xf1\x1b\x01\x00\x00\x00\xd6c'
8
- b'\x00\x00\x00\x00\x00\x00h\xd8:m\x01\x00\x00\x00'),
9
- values=(7, 4763795456, 25558, 6127540328), tid=7573, debugid=67895309, eventid=67895308,
10
- func_qualifier=1),
11
- Kevent(timestamp=15783456070,
12
- data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\xd6c\x00\x00\x00\x00\x00\x00\x00\x00'
13
- b'\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00'),
14
- values=(0, 25558, 0, 144), tid=7573, debugid=67895310, eventid=67895308, func_qualifier=2)
15
- ]
16
- ret = list(traces_parser.feed_generator(events))
17
- assert str(ret[0]) == 'read(7, 0x11bf1c000, 25558), count: 25558'
18
-
19
-
20
- def test_csops_audittoken_16(traces_parser):
21
- events = [
22
- Kevent(timestamp=1805610285184,
23
- data=(b'C\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xa0&\xa1m'
24
- b'\x01\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00'),
25
- values=(67, 16, 6134245024, 8), tid=1599, debugid=67895977, eventid=67895976, func_qualifier=1),
26
- Kevent(timestamp=1805610285735,
27
- data=(b'"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
28
- b'\x00\x00\x00\x00\x00C\x00\x00\x00\x00\x00\x00\x00'),
29
- values=(34, 0, 0, 67), tid=1599, debugid=67895978, eventid=67895976, func_qualifier=2)
30
- ]
31
- ret = list(traces_parser.feed_generator(events))
32
- assert str(ret[0]) == 'csops_audittoken(67, CS_OPS_16, 0x16da126a0, 8), errno: ERANGE(34)'
@@ -1,251 +0,0 @@
1
- from uuid import UUID
2
-
3
- from pykdebugparser.kevent import Kevent
4
- from pykdebugparser.trace_handlers.dyld import RtldFlag
5
-
6
-
7
- def test_uuid_map_a(traces_parser):
8
- events = [
9
- Kevent(timestamp=2087564153638,
10
- data=(b'\x19\xdd*\xd4E\xe01\x97\xa5\xc4S\xb3W\xf3a\xa0\x000u\xaa\x01'
11
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
12
- values=(10894735564102884633, 11556785676805719205, 7154774016, 0), tid=200651, debugid=520421376,
13
- eventid=520421376, func_qualifier=0)
14
- ]
15
- ret = list(traces_parser.feed_generator(events))
16
- assert ret[0].uuid == UUID('19dd2ad4-45e0-3197-a5c4-53b357f361a0')
17
- assert ret[0].load_addr == 0x1aa753000
18
- assert ret[0].fsid == 0
19
-
20
-
21
- def test_uuid_map_b(traces_parser):
22
- events = [
23
- Kevent(timestamp=2086624121103,
24
- data=(b'\xe9@\x02\x00\xff\xff\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00'
25
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
26
- values=(1152921500312027369, 0, 0, 0), tid=200063, debugid=520421380, eventid=520421380,
27
- func_qualifier=0)
28
- ]
29
- ret = list(traces_parser.feed_generator(events))
30
- assert ret[0].fid_objno == 147689
31
- assert ret[0].fid_generation == 0xfffffff
32
-
33
-
34
- def test_uuid_shared_cache_a(traces_parser):
35
- events = [
36
- Kevent(timestamp=2086625169813,
37
- data=(b'\n\x01x\x91Y\xfd>"\xb8\x9e\x148K0\xb5\n\x00\x80e\x8a\x01'
38
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
39
- values=(2467688206980088074, 771576010785463992, 6616875008, 0), tid=200065, debugid=520421416,
40
- eventid=520421416, func_qualifier=0)
41
- ]
42
- ret = list(traces_parser.feed_generator(events))
43
- assert ret[0].uuid == UUID('0a017891-59fd-3e22-b89e-14384b30b50a')
44
- assert ret[0].load_addr == 0x18a658000
45
- assert ret[0].fsid == 0
46
-
47
-
48
- def test_uuid_shared_cache_b(traces_parser):
49
- events = [
50
- Kevent(timestamp=2086625169822,
51
- data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
52
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
53
- values=(0, 0, 0, 0), tid=200065, debugid=520421420, eventid=520421420, func_qualifier=0)
54
- ]
55
- ret = list(traces_parser.feed_generator(events))
56
- assert ret[0].fid_objno == 0
57
- assert ret[0].fid_generation == 0
58
-
59
-
60
- def test_timing_launch_executable(traces_parser):
61
- events = [
62
- Kevent(timestamp=2375523588323,
63
- data=(b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x01\x00\x00\x00\x00\x00\x00'
64
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
65
- values=(1, 4304863232, 0, 0), tid=227140, debugid=520552453, eventid=520552452, func_qualifier=1),
66
- Kevent(timestamp=2087564153638,
67
- data=(b'\x19\xdd*\xd4E\xe01\x97\xa5\xc4S\xb3W\xf3a\xa0\x000u\xaa\x01'
68
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
69
- values=(10894735564102884633, 11556785676805719205, 7154774016, 0), tid=227140, debugid=520421376,
70
- eventid=520421376, func_qualifier=0),
71
- Kevent(timestamp=2375524298242,
72
- data=(b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
73
- b'\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00'),
74
- values=(1, 0, 0, 3), tid=227140, debugid=520552454, eventid=520552452, func_qualifier=2),
75
- ]
76
- ret = list(traces_parser.feed_generator(events))
77
- assert ret[1].main_executable_mh == 0x100970000
78
- assert ret[1].uuid_map_a[0].uuid == UUID('19dd2ad4-45e0-3197-a5c4-53b357f361a0')
79
- assert ret[1].uuid_map_a[0].load_addr == 0x1aa753000
80
-
81
-
82
- def test_timing_func_for_add_image(traces_parser):
83
- events = [
84
- Kevent(timestamp=2375525615541,
85
- data=(b'\xd1\x06\x00\x00\x00\x00\x00\x80\x00\xa0\xa1\xb9\x01\x00\x00\x00\xbcOD\x9c\x01'
86
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
87
- values=(9223372036854777553, 7409344512, 6916689852, 0), tid=227140, debugid=520552473,
88
- eventid=520552472, func_qualifier=1),
89
- Kevent(timestamp=2375525615595,
90
- data=(b'\xd1\x06\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
91
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
92
- values=(9223372036854777553, 0, 0, 0), tid=227140,
93
- debugid=520552474, eventid=520552472, func_qualifier=2),
94
- ]
95
- ret = list(traces_parser.feed_generator(events))
96
- assert ret[0].addr == 0x1b9a1a000
97
- assert ret[0].func == 0x19c444fbc
98
-
99
-
100
- def test_timing_bootstrap_start(traces_parser):
101
- events = [
102
- Kevent(timestamp=2375523577973,
103
- data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
104
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
105
- values=(0, 0, 0, 0), tid=227140, debugid=520552500, eventid=520552500, func_qualifier=0),
106
- ]
107
- ret = list(traces_parser.feed_generator(events))
108
- assert str(ret[0]) == 'DBG_DYLD_TIMING_BOOTSTRAP_START'
109
-
110
-
111
- def test_timing_dlopen(traces_parser):
112
- events = [
113
- Kevent(timestamp=2375526922507,
114
- data=b'\x00\x00\x08\x1f\x00\x00\x00\x00\x0f\xda\x00\x00\x00\x00\xacp/System/Library/',
115
- values=(520617984, 8118864228242217487, 3417499243072017199, 3420891154821048652), tid=227157,
116
- debugid=117506049, eventid=117506048, func_qualifier=1),
117
- Kevent(timestamp=2375526922509, data=b'PrivateFrameworks/AppleFSCompres',
118
- values=(5072588517250003536, 7742373267996762482, 5072579785478188915, 8315178114207400787), tid=227157,
119
- debugid=117506048, eventid=117506048, func_qualifier=0),
120
- Kevent(timestamp=2375526922512, data=b'sion.framework/AppleFSCompressio',
121
- values=(7021787118631348595, 4697091075611256173, 8017343323464036464, 8028074750225051757), tid=227157,
122
- debugid=117506048, eventid=117506048, func_qualifier=0),
123
- Kevent(timestamp=2375526922515,
124
- data=(b'n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
125
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
126
- values=(110, 0, 0, 0), tid=227157,
127
- debugid=117506050, eventid=117506048,
128
- func_qualifier=2),
129
- Kevent(timestamp=2375526922532,
130
- data=(b'(\x08\x00\x00\x00\x00\x00\x80\x0f\xda\x00\x00\x00\x00\xacp\x00\x01\x00\x00\x00'
131
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
132
- values=(9223372036854777896, 8118864228242217487, 256, 0), tid=227157, debugid=520617985,
133
- eventid=520617984, func_qualifier=1),
134
- Kevent(timestamp=2375526922543,
135
- data=(b'\x00\x00\x08\x1f\x00\x00\x00\x00\x0f\xda\x00\x00\x00\x00\xacp\x00\x00\x00\x00'
136
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
137
- values=(520617984, 8118864228242217487, 0, 0), tid=227157, debugid=117506051, eventid=117506048,
138
- func_qualifier=3),
139
- Kevent(timestamp=2375526922709,
140
- data=(b'(\x08\x00\x00\x00\x00\x00\x80\x81\xfd\xfa\r\x00\x00\x00\x00\x00\x00\x00\x00'
141
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
142
- values=(9223372036854777896, 234552705, 0, 0), tid=227157, debugid=520617986, eventid=520617984,
143
- func_qualifier=2),
144
- ]
145
- ret = list(traces_parser.feed_generator(events))
146
- dlopen = ret[-1]
147
- assert dlopen.path == '/System/Library/PrivateFrameworks/AppleFSCompression.framework/AppleFSCompression'
148
- assert dlopen.flags == [RtldFlag.RTLD_FIRST]
149
- assert dlopen.handle == 0xdfafd81
150
-
151
-
152
- def test_timing_dlopen_preflight(traces_parser):
153
- events = [
154
- Kevent(timestamp=2375540021590,
155
- data=b'\x04\x00\x08\x1f\x00\x00\x00\x00]\xdb\x00\x00\x00\x00\xacp/System/Library/',
156
- values=(520617988, 8118864228242217821, 3417499243072017199, 3420891154821048652), tid=227191,
157
- debugid=117506049, eventid=117506048, func_qualifier=1),
158
- Kevent(timestamp=2375540021596, data=b'Frameworks/AVFoundation.framewor',
159
- values=(8245940720249172550, 8462059561127211883, 3345734071897646190, 8245940720249172582), tid=227191,
160
- debugid=117506048, eventid=117506048, func_qualifier=0),
161
- Kevent(timestamp=2375540021598,
162
- data=b'k/AVFoundation\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
163
- values=(7959390264332726123, 121424789660004, 0, 0), tid=227191, debugid=117506050,
164
- eventid=117506048, func_qualifier=2),
165
- Kevent(timestamp=2375540021616,
166
- data=(b'\xb4\x04\x00\x00\x00\x00\x00\x80]\xdb\x00\x00\x00\x00\xacp\x00\x00\x00\x00\x00'
167
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
168
- values=(9223372036854777012, 8118864228242217821, 0, 0), tid=227191, debugid=520617989,
169
- eventid=520617988, func_qualifier=1),
170
- Kevent(timestamp=2375540021631,
171
- data=(b'\x04\x00\x08\x1f\x00\x00\x00\x00]\xdb\x00\x00\x00\x00\xacp\x00\x00\x00\x00\x00'
172
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
173
- values=(520617988, 8118864228242217821, 0, 0), tid=227191, debugid=117506051, eventid=117506048,
174
- func_qualifier=3),
175
- Kevent(timestamp=2375540021742,
176
- data=(b'\xb4\x04\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
177
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
178
- values=(9223372036854777012, 1, 0, 0), tid=227191, debugid=520617990, eventid=520617988,
179
- func_qualifier=2),
180
- ]
181
- ret = list(traces_parser.feed_generator(events))
182
- preflight = ret[-1]
183
- assert preflight.path == '/System/Library/Frameworks/AVFoundation.framework/AVFoundation'
184
- assert preflight.compatible
185
-
186
-
187
- def test_timing_dlclose(traces_parser):
188
- events = [
189
- Kevent(timestamp=2375542917792,
190
- data=(b'k\x07\x00\x00\x00\x00\x00\x80\x80O\x1d\x0e\x00\x00\x00\x00\x00\x00\x00\x00'
191
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
192
- values=(9223372036854777707, 236801920, 0, 0), tid=227240, debugid=520617993, eventid=520617992,
193
- func_qualifier=1),
194
- Kevent(timestamp=2375542919124,
195
- data=(b'k\x07\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
196
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
197
- values=(9223372036854777707, 0, 0, 0), tid=227240, debugid=520617994,
198
- eventid=520617992, func_qualifier=2),
199
- ]
200
- ret = list(traces_parser.feed_generator(events))
201
- assert ret[0].handle == 0xe1d4f80
202
-
203
-
204
- def test_timing_dlsym(traces_parser):
205
- events = [
206
- Kevent(timestamp=2375529754749,
207
- data=b'\x0c\x00\x08\x1f\x00\x00\x00\x00\xcc\xda\x00\x00\x00\x00\xacpUIApplicationDid',
208
- values=(520617996, 8118864228242217676, 7163375912484948309, 7235389517453685857), tid=227140,
209
- debugid=117506049, eventid=117506048, func_qualifier=1),
210
- Kevent(timestamp=2375529754752, data=b'EnterBackgroundNotification\x00\x00\x00\x00\x00',
211
- values=(7161077941591633477, 5648761283289442155, 8386093285481477231, 7237481), tid=227140,
212
- debugid=117506050, eventid=117506048, func_qualifier=2),
213
- Kevent(timestamp=2375529754762,
214
- data=(b'\xf3\x08\x00\x00\x00\x00\x00\x80\x80\xf0\xe0\r\x00\x00\x00\x00\xcc\xda\x00'
215
- b'\x00\x00\x00\xacp\x00\x00\x00\x00\x00\x00\x00\x00'),
216
- values=(9223372036854778099, 232845440, 8118864228242217676, 0), tid=227140, debugid=520617997,
217
- eventid=520617996, func_qualifier=1),
218
- Kevent(timestamp=2375529754772,
219
- data=(b'\x0c\x00\x08\x1f\x00\x00\x00\x00\xcc\xda\x00\x00\x00\x00\xacp\x00\x00\x00'
220
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
221
- values=(520617996, 8118864228242217676, 0, 0), tid=227140, debugid=117506051, eventid=117506048,
222
- func_qualifier=3),
223
- Kevent(timestamp=2375529754963,
224
- data=(b'\xf3\x08\x00\x00\x00\x00\x00\x80P!\x9e\xd9\x01\x00\x00\x00\x00\x00\x00\x00'
225
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
226
- values=(9223372036854778099, 7945986384, 0, 0), tid=227140, debugid=520617998, eventid=520617996,
227
- func_qualifier=2),
228
- ]
229
- ret = list(traces_parser.feed_generator(events))
230
- dlsym = ret[-1]
231
- assert dlsym.handle == 0xde0f080
232
- assert dlsym.symbol == 'UIApplicationDidEnterBackgroundNotification'
233
- assert dlsym.address == 0x1d99e2150
234
-
235
-
236
- def test_timing_dladdr(traces_parser):
237
- events = [
238
- Kevent(timestamp=2375525034640,
239
- data=(b'\x86\x04\x00\x00\x00\x00\x00\x80(}\xe9\x8d\x01\x00\x00\x00\x00\x00\x00\x00'
240
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
241
- values=(9223372036854776966, 6675856680, 0, 0), tid=227161, debugid=520618001, eventid=520618000,
242
- func_qualifier=1),
243
- Kevent(timestamp=2375525034950,
244
- data=(b'\x86\x04\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00`\xe5'
245
- b'\x8d\x01\x00\x00\x00\x0c|\xe9\x8d\x01\x00\x00\x00'),
246
- values=(9223372036854776966, 1, 6675587072, 6675856396), tid=227161,
247
- debugid=520618002, eventid=520618000, func_qualifier=2),
248
- ]
249
- ret = list(traces_parser.feed_generator(events))
250
- assert ret[0].addr == 0x18de97d28
251
- assert ret[0].ret == 1