-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdiff_wrapper.py
More file actions
77 lines (67 loc) · 2.28 KB
/
diff_wrapper.py
File metadata and controls
77 lines (67 loc) · 2.28 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import os
from asm_differ import diff
import sys
FILENAME = "main.o"
default_source_old_binutils = False
default_diff_section = ".text"
default_inlines = False
default_max_lines = 1024
default_skip_lines = 0
default_show_rodata_refs = True
default_show_branches = True
default_show_line_numbers = None
default_show_source = False
default_stop_at_ret = None
default_ignore_large_imms = False
default_ignore_addr_diffs = False
default_algorithm = "levenshtein"
default_diff_function_symbols = False
project = diff.create_project_settings(
{
"source_directories": ".",
"arch": "ppc",
"build_dir": ".",
"expected_dir": "expected/",
"objdump_executable": "ppc-linux-objdump",
}
)
config = diff.Config(
arch=diff.PPC_SETTINGS,
diff_obj=True,
file=FILENAME,
make=False,
source_old_binutils=default_source_old_binutils
or "llvm-" in project.objdump_executable,
diff_section=default_diff_section,
inlines=default_inlines,
max_function_size_lines=default_max_lines,
max_function_size_bytes=default_max_lines * 4,
formatter=diff.PlainFormatter(column_width=50),
diff_mode=diff.DiffMode.NORMAL,
base_shift=0,
skip_lines=default_skip_lines,
compress=None, # Assuming no compression required
show_rodata_refs=default_show_rodata_refs,
show_branches=default_show_branches,
show_line_numbers=default_show_line_numbers,
show_source=default_show_source or default_source_old_binutils,
stop_at_ret=default_stop_at_ret,
ignore_large_imms=default_ignore_large_imms,
ignore_addr_diffs=default_ignore_addr_diffs,
algorithm=default_algorithm,
reg_categories={},
diff_function_symbols=default_diff_function_symbols,
)
def diff_asm(first_function_name: str):
os.system("cp outputs/temp.o asm_differ/main.o")
os.system("cp outputs/expected.o asm_differ/expected/main.o")
os.chdir("asm_differ")
make_target, basecmd, mycmd = diff.dump_objfile(first_function_name, None, config, project)
basedump = diff.run_objdump(basecmd, config, project)
mydump = diff.run_objdump(mycmd, config, project)
display = diff.Display(basedump, mydump, config)
output, data = display.run_diff()
os.chdir("..")
return output, data[1]
if __name__ == "__main__":
diff_asm(sys.argv[1])