blob: f2c2256bf27c694051fe9d16447f51f78e094cc4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import sys
import shutil
def print_separator(separator: str = '-', stream=sys.stdout, count: int = 80):
maxtermsize = count
termsize = shutil.get_terminal_size((80, 20)).columns
print(separator * min(termsize, maxtermsize), file=stream)
def check_version(version: str):
# Script depends on ordered dicts in default dict()
split = version.split('.')
major = int(split[0])
minor = int(split[1])
if sys.version_info.major < major and sys.version_info.minor < minor:
raise EnvironmentError("Expected at least Python 3.7")
def to_str(expr):
"""Convert a claripy expression to a nice string representation.
Actually, the resulting representation is not very nice at all. It mostly
serves debugging purposes.
"""
import claripy
if not issubclass(type(expr), claripy.ast.Base):
return f'{type(expr)}[{str(expr)}]'
assert(expr.depth > 0)
if expr.depth == 1:
if expr.symbolic:
name = expr._encoded_name.decode()
return f'symbol[{name}]'
else:
assert(expr.concrete)
return f'value{expr.length}[{hex(expr.v)}]'
args = [to_str(child) for child in expr.args]
return f'expr[{str(expr.op)}({", ".join(args)})]'
|