angr 9.2.156__cp310-cp310-win_amd64.whl → 9.2.157__cp310-cp310-win_amd64.whl
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.
Potentially problematic release.
This version of angr might be problematic. Click here for more details.
- angr/__init__.py +1 -1
- angr/analyses/cfg/cfg_base.py +87 -71
- angr/analyses/cfg/cfg_fast.py +5 -0
- angr/analyses/decompiler/clinic.py +182 -104
- angr/analyses/decompiler/decompiler.py +11 -0
- angr/analyses/decompiler/dephication/graph_vvar_mapping.py +1 -1
- angr/analyses/decompiler/structured_codegen/c.py +18 -5
- angr/analyses/disassembly.py +5 -11
- angr/analyses/s_propagator.py +2 -4
- angr/analyses/stack_pointer_tracker.py +3 -7
- angr/analyses/typehoon/simple_solver.py +3 -3
- angr/analyses/variable_recovery/engine_base.py +2 -8
- angr/analyses/variable_recovery/variable_recovery.py +4 -3
- angr/calling_conventions.py +3 -3
- angr/engines/hook.py +1 -1
- angr/engines/icicle.py +229 -0
- angr/engines/pcode/behavior.py +1 -4
- angr/engines/pcode/emulate.py +1 -4
- angr/engines/pcode/lifter.py +2 -10
- angr/engines/vex/claripy/irop.py +2 -2
- angr/knowledge_plugins/functions/function.py +18 -10
- angr/knowledge_plugins/functions/function_manager.py +68 -5
- angr/knowledge_plugins/variables/variable_manager.py +15 -3
- angr/lib/angr_native.dll +0 -0
- angr/rustylib.cp310-win_amd64.pyd +0 -0
- angr/sim_variable.py +31 -0
- angr/storage/memory_mixins/address_concretization_mixin.py +2 -2
- angr/storage/memory_mixins/convenient_mappings_mixin.py +1 -1
- {angr-9.2.156.dist-info → angr-9.2.157.dist-info}/METADATA +7 -8
- {angr-9.2.156.dist-info → angr-9.2.157.dist-info}/RECORD +34 -34
- {angr-9.2.156.dist-info → angr-9.2.157.dist-info}/WHEEL +1 -1
- angr/rustylib.pyi +0 -165
- {angr-9.2.156.dist-info → angr-9.2.157.dist-info}/entry_points.txt +0 -0
- {angr-9.2.156.dist-info → angr-9.2.157.dist-info}/licenses/LICENSE +0 -0
- {angr-9.2.156.dist-info → angr-9.2.157.dist-info}/top_level.txt +0 -0
angr/sim_variable.py
CHANGED
|
@@ -82,6 +82,10 @@ class SimVariable(Serializable):
|
|
|
82
82
|
def bits(self) -> int:
|
|
83
83
|
return self.size * 8
|
|
84
84
|
|
|
85
|
+
@property
|
|
86
|
+
def key(self) -> tuple[str | int | None, ...]:
|
|
87
|
+
raise NotImplementedError
|
|
88
|
+
|
|
85
89
|
#
|
|
86
90
|
# Operations
|
|
87
91
|
#
|
|
@@ -135,6 +139,10 @@ class SimConstantVariable(SimVariable):
|
|
|
135
139
|
r._hash = self._hash
|
|
136
140
|
return r
|
|
137
141
|
|
|
142
|
+
@property
|
|
143
|
+
def key(self) -> tuple[str | int | None, ...]:
|
|
144
|
+
return ("const", self.value, self.size, self.ident)
|
|
145
|
+
|
|
138
146
|
|
|
139
147
|
class SimTemporaryVariable(SimVariable):
|
|
140
148
|
"""
|
|
@@ -171,6 +179,10 @@ class SimTemporaryVariable(SimVariable):
|
|
|
171
179
|
r._hash = self._hash
|
|
172
180
|
return r
|
|
173
181
|
|
|
182
|
+
@property
|
|
183
|
+
def key(self) -> tuple[str | int | None, ...]:
|
|
184
|
+
return ("tmp", self.tmp_id, self.size, self.ident)
|
|
185
|
+
|
|
174
186
|
@classmethod
|
|
175
187
|
def _get_cmsg(cls):
|
|
176
188
|
return pb2.TemporaryVariable() # type:ignore, pylint:disable=no-member
|
|
@@ -226,6 +238,10 @@ class SimRegisterVariable(SimVariable):
|
|
|
226
238
|
|
|
227
239
|
return False
|
|
228
240
|
|
|
241
|
+
@property
|
|
242
|
+
def key(self) -> tuple[str | int | None, ...]:
|
|
243
|
+
return ("reg", self.reg, self.size, self.ident)
|
|
244
|
+
|
|
229
245
|
def copy(self) -> SimRegisterVariable:
|
|
230
246
|
s = SimRegisterVariable(
|
|
231
247
|
self.reg, self.size, ident=self.ident, name=self.name, region=self.region, category=self.category
|
|
@@ -304,6 +320,10 @@ class SimMemoryVariable(SimVariable):
|
|
|
304
320
|
r._hash = self._hash
|
|
305
321
|
return r
|
|
306
322
|
|
|
323
|
+
@property
|
|
324
|
+
def key(self) -> tuple[str | int | None, ...]:
|
|
325
|
+
return ("mem", self.addr, self.size, self.ident)
|
|
326
|
+
|
|
307
327
|
@classmethod
|
|
308
328
|
def _get_cmsg(cls):
|
|
309
329
|
return pb2.MemoryVariable() # type:ignore, pylint:disable=no-member
|
|
@@ -403,6 +423,17 @@ class SimStackVariable(SimMemoryVariable):
|
|
|
403
423
|
s._hash = self._hash
|
|
404
424
|
return s
|
|
405
425
|
|
|
426
|
+
@property
|
|
427
|
+
def key(self) -> tuple[str | int | None, ...]:
|
|
428
|
+
return (
|
|
429
|
+
"stack",
|
|
430
|
+
self.base,
|
|
431
|
+
self.base_addr if isinstance(self.base_addr, int) else None,
|
|
432
|
+
self.offset if isinstance(self.offset, int) else None,
|
|
433
|
+
self.size,
|
|
434
|
+
self.ident,
|
|
435
|
+
)
|
|
436
|
+
|
|
406
437
|
@classmethod
|
|
407
438
|
def _get_cmsg(cls):
|
|
408
439
|
return pb2.StackVariable() # type:ignore, pylint:disable=no-member
|
|
@@ -270,13 +270,13 @@ class AddressConcretizationMixin(MemoryMixin):
|
|
|
270
270
|
)
|
|
271
271
|
|
|
272
272
|
if self.state.solver.symbolic(addr) and options.AVOID_MULTIVALUED_READS in self.state.options:
|
|
273
|
-
return self._default_value(
|
|
273
|
+
return self._default_value(addr, size, name="symbolic_read_unconstrained", **kwargs)
|
|
274
274
|
|
|
275
275
|
try:
|
|
276
276
|
concrete_addrs = self._interleave_ints(sorted(self.concretize_read_addr(addr, condition=condition)))
|
|
277
277
|
except SimMemoryError:
|
|
278
278
|
if options.CONSERVATIVE_READ_STRATEGY in self.state.options:
|
|
279
|
-
return self._default_value(
|
|
279
|
+
return self._default_value(addr, size, name="symbolic_read_unconstrained", **kwargs)
|
|
280
280
|
raise
|
|
281
281
|
|
|
282
282
|
# quick optimization so as to not involve the solver if not necessary
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: angr
|
|
3
|
-
Version: 9.2.
|
|
3
|
+
Version: 9.2.157
|
|
4
4
|
Summary: A multi-architecture binary analysis toolkit, with the ability to perform dynamic symbolic execution and various static analyses on binaries
|
|
5
5
|
License: BSD-2-Clause
|
|
6
6
|
Project-URL: Homepage, https://angr.io/
|
|
@@ -17,13 +17,13 @@ Description-Content-Type: text/markdown
|
|
|
17
17
|
License-File: LICENSE
|
|
18
18
|
Requires-Dist: cxxheaderparser
|
|
19
19
|
Requires-Dist: GitPython
|
|
20
|
-
Requires-Dist: ailment==9.2.
|
|
21
|
-
Requires-Dist: archinfo==9.2.
|
|
20
|
+
Requires-Dist: ailment==9.2.157
|
|
21
|
+
Requires-Dist: archinfo==9.2.157
|
|
22
22
|
Requires-Dist: cachetools
|
|
23
23
|
Requires-Dist: capstone==5.0.3
|
|
24
24
|
Requires-Dist: cffi>=1.14.0
|
|
25
|
-
Requires-Dist: claripy==9.2.
|
|
26
|
-
Requires-Dist: cle==9.2.
|
|
25
|
+
Requires-Dist: claripy==9.2.157
|
|
26
|
+
Requires-Dist: cle==9.2.157
|
|
27
27
|
Requires-Dist: mulpyplexer
|
|
28
28
|
Requires-Dist: networkx!=2.8.1,>=2.0
|
|
29
29
|
Requires-Dist: protobuf>=5.28.2
|
|
@@ -31,7 +31,8 @@ Requires-Dist: psutil
|
|
|
31
31
|
Requires-Dist: pycparser>=2.18
|
|
32
32
|
Requires-Dist: pydemumble
|
|
33
33
|
Requires-Dist: pyformlang
|
|
34
|
-
Requires-Dist:
|
|
34
|
+
Requires-Dist: pypcode<4.0,>=3.2.1
|
|
35
|
+
Requires-Dist: pyvex==9.2.157
|
|
35
36
|
Requires-Dist: rich>=13.1.0
|
|
36
37
|
Requires-Dist: sortedcontainers
|
|
37
38
|
Requires-Dist: sympy
|
|
@@ -39,8 +40,6 @@ Requires-Dist: unique-log-filter
|
|
|
39
40
|
Requires-Dist: colorama; platform_system == "Windows"
|
|
40
41
|
Provides-Extra: angrdb
|
|
41
42
|
Requires-Dist: sqlalchemy; extra == "angrdb"
|
|
42
|
-
Provides-Extra: pcode
|
|
43
|
-
Requires-Dist: pypcode~=3.0; extra == "pcode"
|
|
44
43
|
Provides-Extra: keystone
|
|
45
44
|
Requires-Dist: keystone-engine; extra == "keystone"
|
|
46
45
|
Provides-Extra: telemetry
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
angr/__init__.py,sha256=
|
|
1
|
+
angr/__init__.py,sha256=uen_dmruEiPNccoDwEiSu3eNDQDbZjyXIr7UFtAAQ0Y,9153
|
|
2
2
|
angr/__main__.py,sha256=AK9V6uPZ58UuTKmmiH_Kgn5pG9AvjnmJCPOku69A-WU,4993
|
|
3
3
|
angr/annocfg.py,sha256=0NIvcuCskwz45hbBzigUTAuCrYutjDMwEXtMJf0y0S0,10742
|
|
4
4
|
angr/blade.py,sha256=NhesOPloKJC1DQJRv_HBT18X7oNxK16JwAfNz2Lc1o0,15384
|
|
5
5
|
angr/block.py,sha256=0-qh5KiE1F8FZXgDpRG5Hk-OhZrTBrCmMi9oGXE21rU,14834
|
|
6
6
|
angr/callable.py,sha256=j9Orwd4H4fPqOYylcEt5GuLGPV7ZOqyA_OYO2bp5PAA,6437
|
|
7
|
-
angr/calling_conventions.py,sha256=
|
|
7
|
+
angr/calling_conventions.py,sha256=BWed6JA8QRDwqOdDLqeSzegjHtsd4jgiVhaTIVf_NMQ,101396
|
|
8
8
|
angr/code_location.py,sha256=kXNJDEMge9VRHadrK4E6HQ8wDdCaHSXNqyAZuHDEGuM,5397
|
|
9
9
|
angr/codenode.py,sha256=hCrQRp4Ebb2X6JicNmY1PXo3_Pm8GDxVivVW0Pwe84k,3918
|
|
10
10
|
angr/errors.py,sha256=I0L-TbxmVYIkC-USuHwaQ9BGPi2YVObnhZXQQ3kJFuo,8385
|
|
@@ -14,8 +14,7 @@ angr/keyed_region.py,sha256=Cx6dadqFgEvRmEHTbCJpg9mXkBtKGc_BKckHc6bk1IU,17992
|
|
|
14
14
|
angr/knowledge_base.py,sha256=hRoSLuLaOXmddTSF9FN5TVs7liftpBGq_IICz5AaYBk,4533
|
|
15
15
|
angr/project.py,sha256=ANJUNPF41_Gs1vH8SC28FktgogurkNdeTH-uqLNPeoQ,37567
|
|
16
16
|
angr/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
|
17
|
-
angr/rustylib.cp310-win_amd64.pyd,sha256=
|
|
18
|
-
angr/rustylib.pyi,sha256=n2Ou81HatNEi9qrCPY9Lke5hIObWVsCpf1j3WG2BqKc,5228
|
|
17
|
+
angr/rustylib.cp310-win_amd64.pyd,sha256=WFrWWVlMoKniHG9n0Juokmca_HEqIEpdow7_sEcFVYk,4509696
|
|
19
18
|
angr/serializable.py,sha256=l908phj_KcqopEEL_oCufbP_H6cm3Wc9v-5xdux1-6g,1533
|
|
20
19
|
angr/sim_manager.py,sha256=w7yTfWR-P9yoN5x85eeiNpj9dTrnjpJ3o5aoFpDAPnc,39396
|
|
21
20
|
angr/sim_options.py,sha256=tfl57MFECmA7uvMMtQrRRbpG8g_A9jKOzwY6nApTW6Y,17782
|
|
@@ -23,7 +22,7 @@ angr/sim_procedure.py,sha256=EfXQEX-Na7iNtoqc2-KQhs7AR3tsiMYnxEF1v_lL_ok,26235
|
|
|
23
22
|
angr/sim_state.py,sha256=qK6XPl2Q23xEXBud_SBy1fzVPPcrlx0PEQwMtRKBaBI,33893
|
|
24
23
|
angr/sim_state_options.py,sha256=dsMY3UefvL7yZKXloubMhzUET3N2Crw-Fpw2Vd1ouZQ,12468
|
|
25
24
|
angr/sim_type.py,sha256=M3Jn3RWYRFnq152pwBFcfPXc9XEyAKqMzkvDgUUG6fU,134454
|
|
26
|
-
angr/sim_variable.py,sha256=
|
|
25
|
+
angr/sim_variable.py,sha256=3DssmMw5G7m_-MYToJ3LBP-ooy2UQEuI2YgxIuX3d4Y,13177
|
|
27
26
|
angr/slicer.py,sha256=DND0BERanYKafasRH9MDFAng0rSjdjmzXj2-phCD6CQ,10634
|
|
28
27
|
angr/state_hierarchy.py,sha256=qDQCUGXmQm3vOxE3CSoiqTH4OAFFOWZZt9BLhNpeOhA,8484
|
|
29
28
|
angr/tablespecs.py,sha256=Kx1e87FxTx3_ZN7cAHWZSRpdInT4Vfj5gExAWtLkLTw,3259
|
|
@@ -43,7 +42,7 @@ angr/analyses/complete_calling_conventions.py,sha256=nVrDHhCV3cawD_KxkAYj2fsszAs
|
|
|
43
42
|
angr/analyses/congruency_check.py,sha256=QeYRrdrs_iluLLnKz3KUHkCTPRVl5PgM2T0ZXd786HA,16165
|
|
44
43
|
angr/analyses/datagraph_meta.py,sha256=Ng0jqLD5ucRn_fBXhYq3l6scs3kczRk6Sk-Sen1forc,3414
|
|
45
44
|
angr/analyses/ddg.py,sha256=AWPPsL2bfTAua5meuQfPFL6b29PLpCLZzw-LGCv5iVo,63214
|
|
46
|
-
angr/analyses/disassembly.py,sha256=
|
|
45
|
+
angr/analyses/disassembly.py,sha256=p2jEYVhoAoInW-vNeJ4UZqw3jod4Ir8SRVHLNgb-3w8,46227
|
|
47
46
|
angr/analyses/disassembly_utils.py,sha256=Pj9vnyji9fBDL3a3vAo2D3H4CfB-XrvVDLIsNXrp9pU,2877
|
|
48
47
|
angr/analyses/dominance_frontier.py,sha256=kRoOCr3EaIUW1YnvtjmKFJW65zYsJHNe-HtVx2LR15s,2002
|
|
49
48
|
angr/analyses/find_objects_static.py,sha256=27uxIeRA8nJ1XiuGay0oGVYKDvWOI9HFVSuPVXHJT7U,10264
|
|
@@ -55,10 +54,10 @@ angr/analyses/pathfinder.py,sha256=_prNqmRUSuSt2ZCP8qbvNN7pw7mtM8pWr9IL0AO6XL8,1
|
|
|
55
54
|
angr/analyses/proximity_graph.py,sha256=-g7pNpbP2HQhKW3w1Eff23K8vAsgWWYoe3wVxRh3Lhk,16066
|
|
56
55
|
angr/analyses/reassembler.py,sha256=UXrDQNJtn4RUurpbIyMVpQ3AZ0VGVQZatoGHziEHvU0,98357
|
|
57
56
|
angr/analyses/s_liveness.py,sha256=K4soSrcQE9pIn7Yf2Lb3LZEu1ymuQVpWzOqLKunFDGQ,7974
|
|
58
|
-
angr/analyses/s_propagator.py,sha256=
|
|
57
|
+
angr/analyses/s_propagator.py,sha256=MwGW7Gp9DVdUD5qMPkuqtBs4xaq2ZpxGu_AueTQpxsQ,24857
|
|
59
58
|
angr/analyses/smc.py,sha256=UyVaTBms0KI9jRUBhbnz1s6ez_K_oRy4qoPsvxwnoQY,5177
|
|
60
59
|
angr/analyses/soot_class_hierarchy.py,sha256=R4xeacn-a_Q7PxSyj_stu5mnglZkPB5US5srKChX3mk,8740
|
|
61
|
-
angr/analyses/stack_pointer_tracker.py,sha256=
|
|
60
|
+
angr/analyses/stack_pointer_tracker.py,sha256=MX4wcvmTpV9HsCybYofYdkSt3aaCwXL94RSJJ1tPD5o,38082
|
|
62
61
|
angr/analyses/static_hooker.py,sha256=AYJXoHtdq2m-MgpJbx4eur7wy7llrKXvsVM5NdPcKHU,1852
|
|
63
62
|
angr/analyses/veritesting.py,sha256=M6WNsbgiv4ScFPQIaFzujNFya66rQ9GSieaRLuC6RSo,25062
|
|
64
63
|
angr/analyses/vfg.py,sha256=04X_mup9P82bkQIXMju3_DBPPJB1TytA_7RR9uAu3tU,72868
|
|
@@ -73,9 +72,9 @@ angr/analyses/cfg/__init__.py,sha256=-w8Vd6FD6rtjlQaQ7MxwmliFgS2zt-kZepAY4gHas04
|
|
|
73
72
|
angr/analyses/cfg/cfb.py,sha256=scykl1FJvqcTe2x69zreWi0PG_zYMbka3k6tlRwaD_g,15367
|
|
74
73
|
angr/analyses/cfg/cfg.py,sha256=dc9M91CaLeEKduYfMwpsT_01x6XyYuoNvgvcDKtbN-I,3177
|
|
75
74
|
angr/analyses/cfg/cfg_arch_options.py,sha256=_XRewFZ51SeNaxChadb6_ER7-8LW8KXeTIpoP8_iRj0,3506
|
|
76
|
-
angr/analyses/cfg/cfg_base.py,sha256=
|
|
75
|
+
angr/analyses/cfg/cfg_base.py,sha256=pcbDLbuIqrJ9phLn3cS-allL-ZTIxWCUh7bhypW7-Hg,124454
|
|
77
76
|
angr/analyses/cfg/cfg_emulated.py,sha256=wL0ABJMZ8EwKbNjrpE_eqCkZpHDt4y6lmoQOmAIcJMQ,148235
|
|
78
|
-
angr/analyses/cfg/cfg_fast.py,sha256=
|
|
77
|
+
angr/analyses/cfg/cfg_fast.py,sha256=bNVUjqY3Zx-zB_6sCh9xf7rYAEwBLAyx2lBzBE45F60,231271
|
|
79
78
|
angr/analyses/cfg/cfg_fast_soot.py,sha256=8YgMtY_8w4nAMcHR6n-q_eFvKwsvNz0anUH7EzIL1B4,25924
|
|
80
79
|
angr/analyses/cfg/cfg_job_base.py,sha256=Zshze972MakTsd-licQz77lac17igQaaTsAteHeHhYQ,5974
|
|
81
80
|
angr/analyses/cfg/indirect_jump_resolvers/__init__.py,sha256=qWiTSIAQgXWmaYa9YYaiKsSTwUVClymaXv9sCX-bY-k,835
|
|
@@ -109,11 +108,11 @@ angr/analyses/decompiler/block_io_finder.py,sha256=xMwG8Bi69OGNYVs0U0F4yxM8kEsny
|
|
|
109
108
|
angr/analyses/decompiler/block_similarity.py,sha256=SseCdWgh-kS9q_C_BRxlQ4OwCRQfg-9IyncxKXm_OG8,6849
|
|
110
109
|
angr/analyses/decompiler/block_simplifier.py,sha256=Di5UXgBIXp0pa3_ubHY4k9vj927xAFR3oCUZ16Q3WvE,14229
|
|
111
110
|
angr/analyses/decompiler/callsite_maker.py,sha256=UKrRCzts2eIc-6tyWsZdrJ6S925cieal9MAz34jNwTo,23140
|
|
112
|
-
angr/analyses/decompiler/clinic.py,sha256=
|
|
111
|
+
angr/analyses/decompiler/clinic.py,sha256=VenquoBNVGsgz3TUKg0eDEakp_AB_gNVoZAAn_WD4WE,150337
|
|
113
112
|
angr/analyses/decompiler/condition_processor.py,sha256=61VDwVA1e-oKsv0N8kvh3c5QOdQixrkBZcm3RLuw7KU,52679
|
|
114
113
|
angr/analyses/decompiler/decompilation_cache.py,sha256=gAZtyXs-eoFj3680bTrJVAZcIoaPsFK0kayu30NYLb4,1509
|
|
115
114
|
angr/analyses/decompiler/decompilation_options.py,sha256=NDB67DI1L-stvJ4b1eQkfV26HgDJ_rG9-6PEv08G9-8,8195
|
|
116
|
-
angr/analyses/decompiler/decompiler.py,sha256=
|
|
115
|
+
angr/analyses/decompiler/decompiler.py,sha256=D6NdTrhB2QsB9g-Fbc5MOAHk0vdcfEMG_N54lYawAxM,30269
|
|
117
116
|
angr/analyses/decompiler/empty_node_remover.py,sha256=_RAGjqDyRmannEGPcMmWkL7em990-_sKgl5CYreb-yI,7403
|
|
118
117
|
angr/analyses/decompiler/expression_narrower.py,sha256=bgTHxNljl3ghUmNMIdz8kpi4v7iMc8wQh508eCugBtc,10337
|
|
119
118
|
angr/analyses/decompiler/goto_manager.py,sha256=GUWt3Y_NCpmreIt4plxX5Y3UO2V8IVGZuRtF2GqI-cw,4006
|
|
@@ -142,7 +141,7 @@ angr/analyses/decompiler/dephication/__init__.py,sha256=xd6YSsoXLKVB2g52l-TZGsDw
|
|
|
142
141
|
angr/analyses/decompiler/dephication/dephication_base.py,sha256=9HdE_zKnakLSYJZrymbwOm1FfwHPcZOp2DkHvmmiyA8,3235
|
|
143
142
|
angr/analyses/decompiler/dephication/graph_dephication.py,sha256=xjm_OrWgcuDIoDCEAhbW4xGzCHwOPw9ya8IroZH3qf4,2169
|
|
144
143
|
angr/analyses/decompiler/dephication/graph_rewriting.py,sha256=vhBGSu1VN2Yl7eethD5fiatHPOjGNs4JSov5x-SMFFw,3400
|
|
145
|
-
angr/analyses/decompiler/dephication/graph_vvar_mapping.py,sha256=
|
|
144
|
+
angr/analyses/decompiler/dephication/graph_vvar_mapping.py,sha256=k1WWuKhBojpdCXGVqm6qLl62emiHSQCG6UVyTL0_-LQ,14116
|
|
146
145
|
angr/analyses/decompiler/dephication/rewriting_engine.py,sha256=x_sYM1gg56JqeQNOWNHoZ83AN-2h-nAwzgKBoeiotLQ,17646
|
|
147
146
|
angr/analyses/decompiler/dephication/seqnode_dephication.py,sha256=Y5On7C6glk3VztwbQFzKYlTTRf2vu9bB5fcRH3rbuhQ,4802
|
|
148
147
|
angr/analyses/decompiler/optimization_passes/__init__.py,sha256=y7ND9Wg98M5SoMGuOespoLeh1s-wFqKyeW2_4esDsiw,5236
|
|
@@ -266,7 +265,7 @@ angr/analyses/decompiler/ssailification/traversal_engine.py,sha256=oXTf4Z3Q2vPSG
|
|
|
266
265
|
angr/analyses/decompiler/ssailification/traversal_state.py,sha256=RDs2mTc6GYnbMom2gBfNfNMcazKMSkhemEmse8uELTY,1558
|
|
267
266
|
angr/analyses/decompiler/structured_codegen/__init__.py,sha256=mxG4yruPAab8735wVgXZ1zu8qFPz-njKe0m5UcywE3o,633
|
|
268
267
|
angr/analyses/decompiler/structured_codegen/base.py,sha256=DEeNrBOC8AAJb-qFyUoYeX8fpHSPmAsutCDF-0UhaQ4,3782
|
|
269
|
-
angr/analyses/decompiler/structured_codegen/c.py,sha256=
|
|
268
|
+
angr/analyses/decompiler/structured_codegen/c.py,sha256=3POMT1VEQSzn12TlJ6nhC69xy8pdfFW0pAP8CQ3PZA4,148259
|
|
270
269
|
angr/analyses/decompiler/structured_codegen/dummy.py,sha256=JZLeovXE-8C-unp2hbejxCG30l-yCx4sWFh7JMF_iRM,570
|
|
271
270
|
angr/analyses/decompiler/structured_codegen/dwarf_import.py,sha256=J6V40RuIyKXN7r6ESftIYfoREgmgFavnUL5m3lyTzlM,7072
|
|
272
271
|
angr/analyses/decompiler/structuring/__init__.py,sha256=kEFP-zv9CZrhJtLTKwT9-9cGVTls71wLYaLDUuYorBU,711
|
|
@@ -365,7 +364,7 @@ angr/analyses/s_reaching_definitions/s_reaching_definitions.py,sha256=_SooCn9qpw
|
|
|
365
364
|
angr/analyses/typehoon/__init__.py,sha256=KjKBUZadAd3grXUy48_qO0L4Me-riSqPGteVDcTL59M,92
|
|
366
365
|
angr/analyses/typehoon/dfa.py,sha256=41lzhE-QmkC342SjfaaPI41lr4Au5XROTu_7oenvg7g,3823
|
|
367
366
|
angr/analyses/typehoon/lifter.py,sha256=hxYJmM_A0Kl6YgY7NyWBtA3ieaY49Ey3ESCHC61lMys,4000
|
|
368
|
-
angr/analyses/typehoon/simple_solver.py,sha256=
|
|
367
|
+
angr/analyses/typehoon/simple_solver.py,sha256=lSbJi_nc2WsCo9Tb-ebKcJ41KxJiRhHVr2vnLa7V2VI,57597
|
|
369
368
|
angr/analyses/typehoon/translator.py,sha256=_UE1JC4KNDXXl4plula9OApK1ee07z9BFdX9HKa5uqw,10568
|
|
370
369
|
angr/analyses/typehoon/typeconsts.py,sha256=jQEVziyt3LnctrSrCtbUSPi-0tjl8DKoLMFfaOEG3lI,7939
|
|
371
370
|
angr/analyses/typehoon/typehoon.py,sha256=IXC_a2N7hsq8wwUrx_UITzmjTApMZWVGYxYBtS3PBL8,12152
|
|
@@ -377,10 +376,10 @@ angr/analyses/unpacker/packing_detector.py,sha256=SO6aXR1gZkQ7w17AAv3C1-U2KAc0yL
|
|
|
377
376
|
angr/analyses/variable_recovery/__init__.py,sha256=eA1SHzfSx8aPufUdkvgMmBnbI6VDYKKMJklcOoCO7Ao,208
|
|
378
377
|
angr/analyses/variable_recovery/annotations.py,sha256=2va7cXnRHYqVqXeVt00QanxfAo3zanL4BkAcC0-Bk20,1438
|
|
379
378
|
angr/analyses/variable_recovery/engine_ail.py,sha256=6G-Py2kOvdEIXMA_LBa8S-ns2gLgRiGWrA3lmaaDGcA,33392
|
|
380
|
-
angr/analyses/variable_recovery/engine_base.py,sha256=
|
|
379
|
+
angr/analyses/variable_recovery/engine_base.py,sha256=EB_b_VFxE2JF30HbkrN2auapdkPjxpYPbPNbgNw_tWk,52118
|
|
381
380
|
angr/analyses/variable_recovery/engine_vex.py,sha256=5Q2S1jAr7tALa0m0okqBHBe3cUePmJlnV1Grxos1xbo,21344
|
|
382
381
|
angr/analyses/variable_recovery/irsb_scanner.py,sha256=1dL2IC7fZGuRrhmcpa2Q-G666aMPmbM8zSzmIRpLNSY,5141
|
|
383
|
-
angr/analyses/variable_recovery/variable_recovery.py,sha256=
|
|
382
|
+
angr/analyses/variable_recovery/variable_recovery.py,sha256=I45eVUpOOcSobA_QyXl3aRNa0kppJH_7YOj95fPPTdE,22272
|
|
384
383
|
angr/analyses/variable_recovery/variable_recovery_base.py,sha256=lbg4HYo3UVDgy59RVUcxRqY42l8odNblchE2Y4YmlFE,15670
|
|
385
384
|
angr/analyses/variable_recovery/variable_recovery_fast.py,sha256=JP_YSj2b9B4BS7u-c6x-Kyc4IjXoRwBAg8hZkpuGax8,27637
|
|
386
385
|
angr/angrdb/__init__.py,sha256=Jin6JjtVadtqsgm_a6gQGx3Hn7BblkbJvdcl_GwZshg,307
|
|
@@ -419,7 +418,8 @@ angr/distributed/worker.py,sha256=MZVlxC9ksC6xUG2fy5h08Vv9R8RiG7QBQIomPYdFIJs,60
|
|
|
419
418
|
angr/engines/__init__.py,sha256=_3oRkiTrPO7QPiCg3qXymt4o9ZAOrAHt5pdfjkp3W9k,1661
|
|
420
419
|
angr/engines/engine.py,sha256=2kwOT-sbxKXAVX2PmsPTr8Ax36Vxq6hkRdDKaITBQNc,657
|
|
421
420
|
angr/engines/failure.py,sha256=redqmkSuJoIc828hpmX3CTk4EqQ-PeEn7MK2uIqSAc0,1040
|
|
422
|
-
angr/engines/hook.py,sha256=
|
|
421
|
+
angr/engines/hook.py,sha256=lAEYYAXQY_GDOpsz3JZ7IswxrBccZnZ6EaQwyNBb4W8,2590
|
|
422
|
+
angr/engines/icicle.py,sha256=tBH6Fc0PtkIgHRlTMpv_-BHQOhbWTdwrGy78Z0QAB9A,8558
|
|
423
423
|
angr/engines/procedure.py,sha256=8kgFH56nkqSWm0p1apuGBaFngl-4BnAzE0bXhq9mc6Y,2561
|
|
424
424
|
angr/engines/successors.py,sha256=oQCW7Knxb4zz7EP6Mi6RrRNrwuhbv5fnX8UL76nn0sY,29501
|
|
425
425
|
angr/engines/syscall.py,sha256=7wYTriURsDTTi3PEBj4u3ZWDi7RHBV-gRrxTRxwMAVk,2166
|
|
@@ -428,11 +428,11 @@ angr/engines/light/__init__.py,sha256=-634kaOlcs8ZAsMNtOML7FXP3svyZIrJb3ikq0isFv
|
|
|
428
428
|
angr/engines/light/data.py,sha256=3bvC-7e6isb4aGM7IrdpZelJDSWQ0KflC-oNpCDT7tI,21243
|
|
429
429
|
angr/engines/light/engine.py,sha256=EQCwbipfZ_FDA-17UX0FwdhgbeWuJUagbSEc672zZjw,46429
|
|
430
430
|
angr/engines/pcode/__init__.py,sha256=KWBnZnLYR3qANzXvxOt3XJq6cR57mQeNvugPBh7gr8s,195
|
|
431
|
-
angr/engines/pcode/behavior.py,sha256=
|
|
431
|
+
angr/engines/pcode/behavior.py,sha256=9lSyjTUW_mbi6nvZ028cVI4-1NQ0A2NSY1RRQmNThhE,29359
|
|
432
432
|
angr/engines/pcode/cc.py,sha256=brVglfSNnpDbRRcG-KO9EZ5NMMlmtDzP1n4kap7gKRY,3236
|
|
433
|
-
angr/engines/pcode/emulate.py,sha256=
|
|
433
|
+
angr/engines/pcode/emulate.py,sha256=YlFHfXk8WmABiwVRJINP4ekMAY2b7dbvrpLrE2BfLXQ,16670
|
|
434
434
|
angr/engines/pcode/engine.py,sha256=aFVvBYkVzZ8A5NkC2SblDU6Mlfk0ioVn7xDhp0iG8-8,9930
|
|
435
|
-
angr/engines/pcode/lifter.py,sha256=
|
|
435
|
+
angr/engines/pcode/lifter.py,sha256=KOSKbMG34kqYLUkBnRibEejFv1TRZRFxDL3uUX-7cQk,52336
|
|
436
436
|
angr/engines/soot/__init__.py,sha256=0EUiUmGrPhM-MG9nrvJDYi9cIBrCTx1wff3Z7nRkTGs,92
|
|
437
437
|
angr/engines/soot/engine.py,sha256=rHKbnO9YBOAd1DJ-a33vAMseFt_b3iDhArTFdgmyVsc,17065
|
|
438
438
|
angr/engines/soot/exceptions.py,sha256=if9tvb-SDUb3JVZAhUBOYxbmS_8Aq-7gsVa2kh76O5U,258
|
|
@@ -483,7 +483,7 @@ angr/engines/vex/lifter.py,sha256=BqeajzzpLL32nmGaszWASBPDhluhTec2m3ods1ZTIIo,17
|
|
|
483
483
|
angr/engines/vex/claripy/__init__.py,sha256=4B8H1VOHrrKJMjAXZkZ0r_02issFP_bxDJJMw50yVe4,109
|
|
484
484
|
angr/engines/vex/claripy/ccall.py,sha256=1ozZd6hLoFFcbREohzqJPu8zc34QVrYomnjwtgM40JI,82955
|
|
485
485
|
angr/engines/vex/claripy/datalayer.py,sha256=kb-QSvwRzc6Mufwsv012Tgg_PNJPUTec8ElSuJcFzNQ,4971
|
|
486
|
-
angr/engines/vex/claripy/irop.py,sha256=
|
|
486
|
+
angr/engines/vex/claripy/irop.py,sha256=_xiVGT5YbguTm8c0DaAqHnPUVrD2lp3ELtiBJTPwTOA,46240
|
|
487
487
|
angr/engines/vex/heavy/__init__.py,sha256=XkIvjUOyEY9XN_zjM3ozzdSDqbMJHGm1XbehwhshlBE,376
|
|
488
488
|
angr/engines/vex/heavy/actions.py,sha256=Q08wb2TK5HfDduAf8PRXY58h8iIOeCuArNzALzIf0Tk,8668
|
|
489
489
|
angr/engines/vex/heavy/concretizers.py,sha256=SHojrhwpJHlSTOPooX_2IZOv0kOOr9D6PJs52rdUlIQ,14826
|
|
@@ -544,8 +544,8 @@ angr/knowledge_plugins/cfg/cfg_node.py,sha256=mAvQ8XAEURM7y0suc_S9lfxCmfXSTJHmWB
|
|
|
544
544
|
angr/knowledge_plugins/cfg/indirect_jump.py,sha256=W3KWpH7Sx-6Z7h_BwQjCK_XfP3ce_MaeAu_Aaq3D3qg,2072
|
|
545
545
|
angr/knowledge_plugins/cfg/memory_data.py,sha256=QLxFZfrtwz8u6UJn1L-Sxa-C8S0Gy9IOlfNfHCLPIow,5056
|
|
546
546
|
angr/knowledge_plugins/functions/__init__.py,sha256=asiLNiT6sHbjP6eU-kDpawIoVxv4J35cwz5yQHtQ2E0,167
|
|
547
|
-
angr/knowledge_plugins/functions/function.py,sha256=
|
|
548
|
-
angr/knowledge_plugins/functions/function_manager.py,sha256=
|
|
547
|
+
angr/knowledge_plugins/functions/function.py,sha256=HUg5e5z7cIJScD-OB0g7u7R3wCFcIpluqIDD9V0_atM,71215
|
|
548
|
+
angr/knowledge_plugins/functions/function_manager.py,sha256=VHkQWCrEgv-eFCAouztU0UTXI38L6RJuviokEPrerSc,23474
|
|
549
549
|
angr/knowledge_plugins/functions/function_parser.py,sha256=DTdVwYt6nXLMc0EOh-V_GhvZYQ947UNBaA77qn7Y6Vo,12379
|
|
550
550
|
angr/knowledge_plugins/functions/soot_function.py,sha256=OzCvQPWxnjbwPWTW0JXrQey4zyaayHD_v6ZA7nJ4YJw,4850
|
|
551
551
|
angr/knowledge_plugins/key_definitions/__init__.py,sha256=-x1VGH3LHMze3T-RygodvUG3oXXa5jhKvjXoPKyiU_0,432
|
|
@@ -569,12 +569,12 @@ angr/knowledge_plugins/propagations/propagation_model.py,sha256=5ehnHl--YL_YLiOc
|
|
|
569
569
|
angr/knowledge_plugins/propagations/states.py,sha256=GIrAeYDcW75iEGg5j9MUy50ocjLSCfewBiLn8FFfXzA,18940
|
|
570
570
|
angr/knowledge_plugins/variables/__init__.py,sha256=7UnBITiTA-k3QsxRv7DdDWBu30XlFprldPxlTS4GbdE,154
|
|
571
571
|
angr/knowledge_plugins/variables/variable_access.py,sha256=brlZgrdtUW7GI8NQMjtuBVwcqxGE0E4nHW9tD1sTmXs,3719
|
|
572
|
-
angr/knowledge_plugins/variables/variable_manager.py,sha256=
|
|
572
|
+
angr/knowledge_plugins/variables/variable_manager.py,sha256=k4dbA49UfKxnMWOT4YKkq5fbAhvX1Au7600Rh7VcMhI,55690
|
|
573
573
|
angr/knowledge_plugins/xrefs/__init__.py,sha256=5PhqVOtTZ27lCjJ9wp7akUeJydqILbyCBZK0gP7BGQs,193
|
|
574
574
|
angr/knowledge_plugins/xrefs/xref.py,sha256=U2H1rfffp5EXoh0awlGxMBxA4K5MIwl3CXjV3Uih3tA,4856
|
|
575
575
|
angr/knowledge_plugins/xrefs/xref_manager.py,sha256=1n373rtV91xicAfSUresRigsZ6qCBhPOaJKrN_SW3QY,4157
|
|
576
576
|
angr/knowledge_plugins/xrefs/xref_types.py,sha256=LcQ9pD4E4XlC51Us49xiqAoGAFGpnCrpYO4mOzILiKI,308
|
|
577
|
-
angr/lib/angr_native.dll,sha256=
|
|
577
|
+
angr/lib/angr_native.dll,sha256=F7MeBg8RyzSEQhOB4yHxAVkdUJdzNEHme8ZVkxbEwdY,786432
|
|
578
578
|
angr/misc/__init__.py,sha256=FoUwjk1DhqlIsr2sBN0MlR8MnSOGQv9QJhxmq32RYuA,355
|
|
579
579
|
angr/misc/ansi.py,sha256=nPJHC0SKfqasMQZ0LxdmmIYojjmk4nr5jI6FrzoTwS0,811
|
|
580
580
|
angr/misc/autoimport.py,sha256=iZagpuPwZWczUTYIqs-JkDMQjftMqc_cchcm7OBFiEg,3450
|
|
@@ -1310,11 +1310,11 @@ angr/storage/file.py,sha256=sb7DnGgDnozxRR3bwcLJIkUf1w7FBagS6795Ah7H_WI,48046
|
|
|
1310
1310
|
angr/storage/memory_object.py,sha256=EyRSgADKDt0IMNfUoDfu-uE1ycpK7U30ORduxPUgk6w,6242
|
|
1311
1311
|
angr/storage/memory_mixins/__init__.py,sha256=a4fY0pSAwgFALjPoDRJVHKt_oMCqia_JqiMzxvk6xpY,8597
|
|
1312
1312
|
angr/storage/memory_mixins/actions_mixin.py,sha256=L9FlA0oyQ3gvEENfs5nvHhCYBeuKeyk_TyBh5sgiF64,3493
|
|
1313
|
-
angr/storage/memory_mixins/address_concretization_mixin.py,sha256=
|
|
1313
|
+
angr/storage/memory_mixins/address_concretization_mixin.py,sha256=w3d1IJ_HrcSEt77_31CuozKYbbWRg17wkhrT-O0EqwE,16535
|
|
1314
1314
|
angr/storage/memory_mixins/bvv_conversion_mixin.py,sha256=5owT0luMQkYGqAdP-CSOD821Mrg4REFG_9uuo8uaphA,2888
|
|
1315
1315
|
angr/storage/memory_mixins/clouseau_mixin.py,sha256=3Jr8L5hS72oxVWc7at2Wd7plOb7EL5_lxHIUpoYYouM,5828
|
|
1316
1316
|
angr/storage/memory_mixins/conditional_store_mixin.py,sha256=OekCAvHcwnzUbRN5OTzlWL-H_x0gaFr-iB6xUdjDeVc,1025
|
|
1317
|
-
angr/storage/memory_mixins/convenient_mappings_mixin.py,sha256=
|
|
1317
|
+
angr/storage/memory_mixins/convenient_mappings_mixin.py,sha256=ez-WWauvFzGzZrrohRSejI6h4Y_lqxtGUkE0SIzUPiA,10291
|
|
1318
1318
|
angr/storage/memory_mixins/default_filler_mixin.py,sha256=9xwaHqJziT07dMtHtIU_ni0b_Wh9azPiTbPSnJ4ZS10,5992
|
|
1319
1319
|
angr/storage/memory_mixins/dirty_addrs_mixin.py,sha256=qAS2QKTimhZMZ-m9QSMi9DgFQeNMmISj7S8VS-3m9hI,391
|
|
1320
1320
|
angr/storage/memory_mixins/hex_dumper_mixin.py,sha256=YqP0r9-HsQd1GXx3Us5umSkBitcIPv-RBpcPhvFk718,3678
|
|
@@ -1385,9 +1385,9 @@ angr/utils/types.py,sha256=688trvR0_j93sfeRgFT1npcmjNGSx99m_IPe9Xyy9WY,4967
|
|
|
1385
1385
|
angr/utils/ssa/__init__.py,sha256=HUJEZbwKUfAeI6u8P2SBC6ApgOgpsJKoPVrEQs4rnYc,15194
|
|
1386
1386
|
angr/utils/ssa/tmp_uses_collector.py,sha256=rSpvMxBHzg-tmvhsfjn3iLyPEKzaZN-xpQrdslMq3J4,793
|
|
1387
1387
|
angr/utils/ssa/vvar_uses_collector.py,sha256=O2aNZeM5DL8qatyhYuMhgbYGFp6Onm2yr9pKq1wRjA0,1347
|
|
1388
|
-
angr-9.2.
|
|
1389
|
-
angr-9.2.
|
|
1390
|
-
angr-9.2.
|
|
1391
|
-
angr-9.2.
|
|
1392
|
-
angr-9.2.
|
|
1393
|
-
angr-9.2.
|
|
1388
|
+
angr-9.2.157.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
|
|
1389
|
+
angr-9.2.157.dist-info/METADATA,sha256=O0gIdjb4AoPyGJNmY_9GiabC_n-u7bLWvt_2MRxnwmE,4504
|
|
1390
|
+
angr-9.2.157.dist-info/WHEEL,sha256=d0clRNJVaR7HXdCKNsk2VLvFV9HQ7R7Q1JcMhuI_WV0,101
|
|
1391
|
+
angr-9.2.157.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
|
|
1392
|
+
angr-9.2.157.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
|
|
1393
|
+
angr-9.2.157.dist-info/RECORD,,
|
angr/rustylib.pyi
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
class Segment:
|
|
2
|
-
"""
|
|
3
|
-
A memory block
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
start: int
|
|
7
|
-
end: int
|
|
8
|
-
sort: str | None
|
|
9
|
-
|
|
10
|
-
def __init__(self, start: int, end: int, sort: str | None = None) -> None:
|
|
11
|
-
"""
|
|
12
|
-
Initialize a Segment
|
|
13
|
-
|
|
14
|
-
:arg start: Start address.
|
|
15
|
-
:arg end: End address.
|
|
16
|
-
:arg sort: Type of the segment, can be code, data, etc.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
def copy(self) -> Segment:
|
|
20
|
-
"""
|
|
21
|
-
Make a copy of the Segment
|
|
22
|
-
|
|
23
|
-
:returns: A copy of the Segment instance.
|
|
24
|
-
"""
|
|
25
|
-
|
|
26
|
-
@property
|
|
27
|
-
def size(self) -> int:
|
|
28
|
-
"""
|
|
29
|
-
Calculate the size of the Segment
|
|
30
|
-
|
|
31
|
-
:returns: Size of the Segment
|
|
32
|
-
"""
|
|
33
|
-
|
|
34
|
-
def __repr__(self) -> str: ...
|
|
35
|
-
|
|
36
|
-
class SegmentList:
|
|
37
|
-
"""
|
|
38
|
-
SegmentList describes a series of segmented memory blocks. You may query whether an address belongs to any of the
|
|
39
|
-
blocks or not, and obtain the exact block(segment) that the address belongs to.
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
def __init__(self) -> None:
|
|
43
|
-
"""
|
|
44
|
-
Initialize an empty SegmentList.
|
|
45
|
-
"""
|
|
46
|
-
|
|
47
|
-
def __len__(self) -> int:
|
|
48
|
-
"""
|
|
49
|
-
Get the number of segments in the list.
|
|
50
|
-
|
|
51
|
-
:returns: Number of segments.
|
|
52
|
-
"""
|
|
53
|
-
|
|
54
|
-
def __getitem__(self, idx: int) -> Segment:
|
|
55
|
-
"""
|
|
56
|
-
Get a segment by index.
|
|
57
|
-
|
|
58
|
-
:arg idx: Index of the segment.
|
|
59
|
-
:returns: The segment at the specified index.
|
|
60
|
-
:raises IndexError: If the index is out of range.
|
|
61
|
-
"""
|
|
62
|
-
|
|
63
|
-
@property
|
|
64
|
-
def occupied_size(self) -> int:
|
|
65
|
-
"""
|
|
66
|
-
The sum of sizes of all blocks.
|
|
67
|
-
|
|
68
|
-
:returns: An integer representing the total occupied size.
|
|
69
|
-
"""
|
|
70
|
-
|
|
71
|
-
@property
|
|
72
|
-
def has_blocks(self) -> bool:
|
|
73
|
-
"""
|
|
74
|
-
Returns if this segment list has any block or not.
|
|
75
|
-
|
|
76
|
-
:returns: True if it's not empty, False otherwise.
|
|
77
|
-
"""
|
|
78
|
-
|
|
79
|
-
def search(self, addr: int) -> int:
|
|
80
|
-
"""
|
|
81
|
-
Checks which segment that the address `addr` should belong to, and, returns the offset of that segment.
|
|
82
|
-
Note that the address may not actually belong to the block.
|
|
83
|
-
|
|
84
|
-
:arg addr: The address to search.
|
|
85
|
-
:returns: The offset of the segment.
|
|
86
|
-
"""
|
|
87
|
-
|
|
88
|
-
def next_free_pos(self, address: int) -> int:
|
|
89
|
-
"""
|
|
90
|
-
Returns the next free position with respect to an address, including that address itself.
|
|
91
|
-
|
|
92
|
-
:arg address: The address to begin the search with (including itself).
|
|
93
|
-
:returns: The next free position.
|
|
94
|
-
:raises ValueError: If no free space is found after the address.
|
|
95
|
-
"""
|
|
96
|
-
|
|
97
|
-
def next_pos_with_sort_not_in(
|
|
98
|
-
self, address: int, sorts: set[str | None], max_distance: int | None = None
|
|
99
|
-
) -> int | None:
|
|
100
|
-
"""
|
|
101
|
-
Returns the address of the next occupied block whose sort is not one of the specified ones.
|
|
102
|
-
|
|
103
|
-
:arg address: The address to begin the search with (including itself).
|
|
104
|
-
:arg sorts: A collection of sort strings.
|
|
105
|
-
:arg max_distance: The maximum distance between `address` and the next position. Search will stop after
|
|
106
|
-
we come across an occupied position that is beyond `address` + max_distance. This check
|
|
107
|
-
will be disabled if `max_distance` is set to None.
|
|
108
|
-
:returns: The next occupied position whose sort is not one of the specified ones, or None if no such position exists.
|
|
109
|
-
"""
|
|
110
|
-
|
|
111
|
-
def is_occupied(self, address: int) -> bool:
|
|
112
|
-
"""
|
|
113
|
-
Check if an address belongs to any segment.
|
|
114
|
-
|
|
115
|
-
:arg address: The address to check.
|
|
116
|
-
:returns: True if this address belongs to a segment, False otherwise.
|
|
117
|
-
"""
|
|
118
|
-
|
|
119
|
-
def occupied_by_sort(self, address: int) -> str | None:
|
|
120
|
-
"""
|
|
121
|
-
Check if an address belongs to any segment, and if yes, returns the sort of the segment.
|
|
122
|
-
|
|
123
|
-
:arg address: The address to check.
|
|
124
|
-
:returns: Sort of the segment that occupies this address, or None if the address is not occupied.
|
|
125
|
-
"""
|
|
126
|
-
|
|
127
|
-
def occupied_by(self, address: int) -> tuple[int, int, str | None] | None:
|
|
128
|
-
"""
|
|
129
|
-
Check if an address belongs to any segment, and if yes, returns the beginning, the size, and the sort of the
|
|
130
|
-
segment.
|
|
131
|
-
|
|
132
|
-
:arg address: The address to check.
|
|
133
|
-
:returns: A tuple of (start, size, sort) if the address is occupied, or None if it's not.
|
|
134
|
-
"""
|
|
135
|
-
|
|
136
|
-
def occupy(self, address: int, size: int, sort: str | None = None) -> None:
|
|
137
|
-
"""
|
|
138
|
-
Include a block, specified by (address, size), in this segment list.
|
|
139
|
-
|
|
140
|
-
:arg address: The starting address of the block.
|
|
141
|
-
:arg size: Size of the block.
|
|
142
|
-
:arg sort: Type of the block.
|
|
143
|
-
"""
|
|
144
|
-
|
|
145
|
-
def release(self, address: int, size: int) -> None:
|
|
146
|
-
"""
|
|
147
|
-
Remove a block, specified by (address, size), in this segment list.
|
|
148
|
-
|
|
149
|
-
:arg address: The starting address of the block.
|
|
150
|
-
:arg size: Size of the block.
|
|
151
|
-
"""
|
|
152
|
-
|
|
153
|
-
def update(self, other: SegmentList) -> None:
|
|
154
|
-
"""
|
|
155
|
-
Update this SegmentList with all segments from another SegmentList.
|
|
156
|
-
|
|
157
|
-
:arg other: Another SegmentList to merge into this one.
|
|
158
|
-
"""
|
|
159
|
-
|
|
160
|
-
def copy(self) -> SegmentList:
|
|
161
|
-
"""
|
|
162
|
-
Make a copy of the SegmentList.
|
|
163
|
-
|
|
164
|
-
:returns: A copy of the SegmentList instance.
|
|
165
|
-
"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|