summaryrefslogtreecommitdiff
path: root/tools/detect_function_csv_overlaps.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/detect_function_csv_overlaps.py')
-rwxr-xr-xtools/detect_function_csv_overlaps.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/tools/detect_function_csv_overlaps.py b/tools/detect_function_csv_overlaps.py
index 417dd0ea..e80fd134 100755
--- a/tools/detect_function_csv_overlaps.py
+++ b/tools/detect_function_csv_overlaps.py
@@ -1,13 +1,33 @@
#!/usr/bin/env python3
+import csv
+import io
from common.util import utils
+new_rows = []
prev = None
-for info in utils.get_functions():
+for info in utils.get_functions(all=True):
if prev is not None:
if (prev.addr <= info.addr < prev.addr + prev.size) or \
(prev.addr <= info.addr + info.size < prev.addr + prev.size):
print(
f"overlap between {prev.addr:x} and {info.addr:x} (expected size: {info.addr - prev.addr:06})")
+ if prev.addr + prev.size != info.addr:
+ print(f"gap between {prev.addr:x} and {info.addr:x}")
+ new_rows.append([
+ f"0x{(prev.addr + prev.size) | 0x7100000000:016x}",
+ "U",
+ f"{info.addr - (prev.addr + prev.size):06}",
+ "",
+ ])
+
prev = info
+ new_rows.append(info.raw_row)
+
+buffer = io.StringIO()
+writer = csv.writer(buffer, lineterminator="\n")
+writer.writerow("Address,Quality,Size,Name".split(","))
+for row in new_rows:
+ writer.writerow(row)
+utils.get_functions_csv_path().write_text(buffer.getvalue())