mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-15 06:06:04 +00:00
Grab bag of fix_bss.py fixes (#2066)
This commit is contained in:
parent
ec19402748
commit
253fac4670
1 changed files with 17 additions and 6 deletions
|
@ -189,7 +189,6 @@ def compare_pointers(version: str) -> dict[Path, BssSection]:
|
||||||
if not (
|
if not (
|
||||||
mapfile_segment.name.startswith("..boot")
|
mapfile_segment.name.startswith("..boot")
|
||||||
or mapfile_segment.name.startswith("..code")
|
or mapfile_segment.name.startswith("..code")
|
||||||
or mapfile_segment.name.startswith("..buffers")
|
|
||||||
or mapfile_segment.name.startswith("..ovl_")
|
or mapfile_segment.name.startswith("..ovl_")
|
||||||
):
|
):
|
||||||
continue
|
continue
|
||||||
|
@ -253,7 +252,13 @@ def compare_pointers(version: str) -> dict[Path, BssSection]:
|
||||||
if file.vram <= p.build_value < file.vram + file.size
|
if file.vram <= p.build_value < file.vram + file.size
|
||||||
]
|
]
|
||||||
|
|
||||||
c_file = file.filepath.relative_to(f"build/{version}").with_suffix(".c")
|
object_file = file.filepath.relative_to(f"build/{version}")
|
||||||
|
# Hack to handle the combined z_message_z_game_over.o file.
|
||||||
|
# Fortunately z_game_over has no BSS so we can just analyze z_message instead.
|
||||||
|
if str(object_file) == "src/code/z_message_z_game_over.o":
|
||||||
|
object_file = Path("src/code/z_message.o")
|
||||||
|
|
||||||
|
c_file = object_file.with_suffix(".c")
|
||||||
bss_sections[c_file] = BssSection(file.vram, pointers_in_section)
|
bss_sections[c_file] = BssSection(file.vram, pointers_in_section)
|
||||||
|
|
||||||
return bss_sections
|
return bss_sections
|
||||||
|
@ -393,7 +398,13 @@ def determine_base_bss_ordering(
|
||||||
addend_str = ""
|
addend_str = ""
|
||||||
raise FixBssException(
|
raise FixBssException(
|
||||||
f"Could not find BSS symbol for pointer {p.name}{addend_str} "
|
f"Could not find BSS symbol for pointer {p.name}{addend_str} "
|
||||||
f"(base address 0x{p.base_value:08X}, build address 0x{p.build_value:08X})"
|
f"(base address 0x{p.base_value:08X}, build address 0x{p.build_value:08X}). Is the build up-to-date?"
|
||||||
|
)
|
||||||
|
|
||||||
|
if new_offset < 0:
|
||||||
|
raise FixBssException(
|
||||||
|
f"BSS symbol {new_symbol.name} found at negative offset in the baserom "
|
||||||
|
f"(-0x{-new_offset:04X}). Is the build up-to-date?"
|
||||||
)
|
)
|
||||||
|
|
||||||
if new_symbol.name in found_symbols:
|
if new_symbol.name in found_symbols:
|
||||||
|
@ -401,7 +412,7 @@ def determine_base_bss_ordering(
|
||||||
existing_offset = found_symbols[new_symbol.name].offset
|
existing_offset = found_symbols[new_symbol.name].offset
|
||||||
if new_offset != existing_offset:
|
if new_offset != existing_offset:
|
||||||
raise FixBssException(
|
raise FixBssException(
|
||||||
f"BSS symbol {new_symbol.name} found at conflicting offsets in this baserom "
|
f"BSS symbol {new_symbol.name} found at conflicting offsets in the baserom "
|
||||||
f"(0x{existing_offset:04X} and 0x{new_offset:04X}). Is the build up-to-date?"
|
f"(0x{existing_offset:04X} and 0x{new_offset:04X}). Is the build up-to-date?"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
@ -771,11 +782,11 @@ def main():
|
||||||
num_successes = sum(file_result.successful() for file_result in file_results)
|
num_successes = sum(file_result.successful() for file_result in file_results)
|
||||||
if num_successes == len(file_results):
|
if num_successes == len(file_results):
|
||||||
print()
|
print()
|
||||||
print(f"Updated {num_successes}/{len(file_results)} files.")
|
print(f"Processed {num_successes}/{len(file_results)} files.")
|
||||||
else:
|
else:
|
||||||
print()
|
print()
|
||||||
print(
|
print(
|
||||||
f"{colorama.Fore.RED}Updated {num_successes}/{len(file_results)} files.{colorama.Fore.RESET}"
|
f"{colorama.Fore.RED}Processed {num_successes}/{len(file_results)} files.{colorama.Fore.RESET}"
|
||||||
)
|
)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue