splat64 0.34.1__tar.gz → 0.34.2__tar.gz

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.
Files changed (149) hide show
  1. {splat64-0.34.1 → splat64-0.34.2}/CHANGELOG.md +10 -1
  2. {splat64-0.34.1 → splat64-0.34.2}/PKG-INFO +2 -2
  3. {splat64-0.34.1 → splat64-0.34.2}/README.md +1 -1
  4. {splat64-0.34.1 → splat64-0.34.2}/pyproject.toml +1 -1
  5. {splat64-0.34.1 → splat64-0.34.2}/src/splat/__init__.py +1 -1
  6. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/segment.py +20 -0
  7. {splat64-0.34.1 → splat64-0.34.2}/test.py +9 -10
  8. {splat64-0.34.1 → splat64-0.34.2}/.gitattributes +0 -0
  9. {splat64-0.34.1 → splat64-0.34.2}/.github/workflows/black.yml +0 -0
  10. {splat64-0.34.1 → splat64-0.34.2}/.github/workflows/mypy.yml +0 -0
  11. {splat64-0.34.1 → splat64-0.34.2}/.github/workflows/publish_docs_to_wiki.yml +0 -0
  12. {splat64-0.34.1 → splat64-0.34.2}/.github/workflows/pypi.yml +0 -0
  13. {splat64-0.34.1 → splat64-0.34.2}/.github/workflows/test_lib.yml +0 -0
  14. {splat64-0.34.1 → splat64-0.34.2}/.github/workflows/unit_tests.yml +0 -0
  15. {splat64-0.34.1 → splat64-0.34.2}/.gitignore +0 -0
  16. {splat64-0.34.1 → splat64-0.34.2}/LICENSE +0 -0
  17. {splat64-0.34.1 → splat64-0.34.2}/create_config.py +0 -0
  18. {splat64-0.34.1 → splat64-0.34.2}/docs/Adding-Symbols.md +0 -0
  19. {splat64-0.34.1 → splat64-0.34.2}/docs/Advanced.md +0 -0
  20. {splat64-0.34.1 → splat64-0.34.2}/docs/Configuration.md +0 -0
  21. {splat64-0.34.1 → splat64-0.34.2}/docs/Examples.md +0 -0
  22. {splat64-0.34.1 → splat64-0.34.2}/docs/General-Workflow.md +0 -0
  23. {splat64-0.34.1 → splat64-0.34.2}/docs/Home.md +0 -0
  24. {splat64-0.34.1 → splat64-0.34.2}/docs/Quickstart.md +0 -0
  25. {splat64-0.34.1 → splat64-0.34.2}/docs/Segments.md +0 -0
  26. {splat64-0.34.1 → splat64-0.34.2}/docs/VramClasses.md +0 -0
  27. {splat64-0.34.1 → splat64-0.34.2}/mypy.ini +0 -0
  28. {splat64-0.34.1 → splat64-0.34.2}/requirements.txt +0 -0
  29. {splat64-0.34.1 → splat64-0.34.2}/split.py +0 -0
  30. {splat64-0.34.1 → splat64-0.34.2}/src/splat/__main__.py +0 -0
  31. {splat64-0.34.1 → splat64-0.34.2}/src/splat/disassembler/__init__.py +0 -0
  32. {splat64-0.34.1 → splat64-0.34.2}/src/splat/disassembler/disassembler.py +0 -0
  33. {splat64-0.34.1 → splat64-0.34.2}/src/splat/disassembler/disassembler_instance.py +0 -0
  34. {splat64-0.34.1 → splat64-0.34.2}/src/splat/disassembler/disassembler_section.py +0 -0
  35. {splat64-0.34.1 → splat64-0.34.2}/src/splat/disassembler/null_disassembler.py +0 -0
  36. {splat64-0.34.1 → splat64-0.34.2}/src/splat/disassembler/spimdisasm_disassembler.py +0 -0
  37. {splat64-0.34.1 → splat64-0.34.2}/src/splat/platforms/__init__.py +0 -0
  38. {splat64-0.34.1 → splat64-0.34.2}/src/splat/platforms/n64.py +0 -0
  39. {splat64-0.34.1 → splat64-0.34.2}/src/splat/platforms/ps2.py +0 -0
  40. {splat64-0.34.1 → splat64-0.34.2}/src/splat/platforms/psp.py +0 -0
  41. {splat64-0.34.1 → splat64-0.34.2}/src/splat/platforms/psx.py +0 -0
  42. {splat64-0.34.1 → splat64-0.34.2}/src/splat/py.typed +0 -0
  43. {splat64-0.34.1 → splat64-0.34.2}/src/splat/scripts/__init__.py +0 -0
  44. {splat64-0.34.1 → splat64-0.34.2}/src/splat/scripts/capy.py +0 -0
  45. {splat64-0.34.1 → splat64-0.34.2}/src/splat/scripts/create_config.py +0 -0
  46. {splat64-0.34.1 → splat64-0.34.2}/src/splat/scripts/split.py +0 -0
  47. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/__init__.py +0 -0
  48. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/__init__.py +0 -0
  49. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/asm.py +0 -0
  50. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/asmtu.py +0 -0
  51. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/bin.py +0 -0
  52. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/bss.py +0 -0
  53. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/c.py +0 -0
  54. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/code.py +0 -0
  55. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/codesubsegment.py +0 -0
  56. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/cpp.py +0 -0
  57. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/data.py +0 -0
  58. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/databin.py +0 -0
  59. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/eh_frame.py +0 -0
  60. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/gcc_except_table.py +0 -0
  61. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/group.py +0 -0
  62. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/hasm.py +0 -0
  63. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/header.py +0 -0
  64. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/lib.py +0 -0
  65. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/linker_offset.py +0 -0
  66. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/pad.py +0 -0
  67. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/rdata.py +0 -0
  68. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/rodata.py +0 -0
  69. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/rodatabin.py +0 -0
  70. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/sbss.py +0 -0
  71. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/sdata.py +0 -0
  72. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/segment.py +0 -0
  73. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/common/textbin.py +0 -0
  74. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/linker_entry.py +0 -0
  75. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/__init__.py +0 -0
  76. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/ci.py +0 -0
  77. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/ci4.py +0 -0
  78. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/ci8.py +0 -0
  79. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/decompressor.py +0 -0
  80. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/gfx.py +0 -0
  81. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/header.py +0 -0
  82. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/i1.py +0 -0
  83. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/i4.py +0 -0
  84. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/i8.py +0 -0
  85. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/ia16.py +0 -0
  86. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/ia4.py +0 -0
  87. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/ia8.py +0 -0
  88. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/img.py +0 -0
  89. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/ipl3.py +0 -0
  90. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/mio0.py +0 -0
  91. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/palette.py +0 -0
  92. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/rgba16.py +0 -0
  93. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/rgba32.py +0 -0
  94. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/rsp.py +0 -0
  95. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/vtx.py +0 -0
  96. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/n64/yay0.py +0 -0
  97. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/ps2/__init__.py +0 -0
  98. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/ps2/ctor.py +0 -0
  99. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/ps2/lit4.py +0 -0
  100. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/ps2/lit8.py +0 -0
  101. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/ps2/vtables.py +0 -0
  102. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/psp/__init__.py +0 -0
  103. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/psx/__init__.py +0 -0
  104. {splat64-0.34.1 → splat64-0.34.2}/src/splat/segtypes/psx/header.py +0 -0
  105. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/__init__.py +0 -0
  106. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/cache_handler.py +0 -0
  107. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/color.py +0 -0
  108. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/compiler.py +0 -0
  109. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/conf.py +0 -0
  110. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/log.py +0 -0
  111. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/n64/__init__.py +0 -0
  112. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/n64/find_code_length.py +0 -0
  113. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/n64/rominfo.py +0 -0
  114. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/options.py +0 -0
  115. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/palettes.py +0 -0
  116. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/progress_bar.py +0 -0
  117. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/psx/__init__.py +0 -0
  118. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/psx/psxexeinfo.py +0 -0
  119. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/relocs.py +0 -0
  120. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/statistics.py +0 -0
  121. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/symbols.py +0 -0
  122. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/utils.py +0 -0
  123. {splat64-0.34.1 → splat64-0.34.2}/src/splat/util/vram_classes.py +0 -0
  124. {splat64-0.34.1 → splat64-0.34.2}/test/Dockerfile +0 -0
  125. {splat64-0.34.1 → splat64-0.34.2}/test/README.md +0 -0
  126. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/.gitignore +0 -0
  127. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/Makefile +0 -0
  128. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/build/basic_app.bin +0 -0
  129. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/dummy_ipl3.s +0 -0
  130. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/.splache +0 -0
  131. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/asm/data/main.bss.s +0 -0
  132. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/asm/data/main.data.s +0 -0
  133. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/asm/data/main.rodata.s +0 -0
  134. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/asm/handwritten.s +0 -0
  135. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/asm/header.s +0 -0
  136. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/asm/main.s +0 -0
  137. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/asm/nonmatchings/main/D_80000510.s +0 -0
  138. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/asm/nonmatchings/main/func_80000400.s +0 -0
  139. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/asm/nonmatchings/main/func_800004A0.s +0 -0
  140. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/assets/dummy_ipl3.bin +0 -0
  141. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/basic_app.d +0 -0
  142. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/build/test/basic_app/split/src/main.asmproc.d +0 -0
  143. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/src/main.c +0 -0
  144. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/undefined_funcs_auto.txt +0 -0
  145. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/expected/undefined_syms_auto.txt +0 -0
  146. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/handwritten.s +0 -0
  147. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/header.s +0 -0
  148. {splat64-0.34.1 → splat64-0.34.2}/test/basic_app/main.c +0 -0
  149. {splat64-0.34.1 → splat64-0.34.2}/test/test_gen_expected.sh +0 -0
@@ -1,17 +1,26 @@
1
1
  # splat Release Notes
2
2
 
3
+ ### 0.34.2
4
+
5
+ * Emit an error if a top-level segment containing bss sections does not specify a `bss_size` value.
6
+ * Emit an error if a bss section is outside the address space of its parent segment.
7
+
3
8
  ### 0.34.1
9
+
4
10
  * Deprecate `--stdout-only` cli flag. Changed output such that errors and warnings go to stderr and all other output goes to stdout.
5
11
 
6
12
  ### 0.34.0
13
+
7
14
  * Add new global option `is_unsupported_platform`. If enabled, disable checks on platform option.
8
15
  * Add new global option `allow_segment_overrides`. If enabled, allows to take precedence over the splat builtin platform segments via splat extension.
9
16
 
10
17
  ### 0.33.2
18
+
11
19
  * Change `make_full_disasm_for_code` to output other sections for the TU in addition to .text.
12
20
 
13
21
  ### 0.33.1
14
- * Fix `hasm` segments overwriting files already on disk
22
+
23
+ * Fix `hasm` segments overwriting files already on disk.
15
24
 
16
25
  ### 0.33.0
17
26
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: splat64
3
- Version: 0.34.1
3
+ Version: 0.34.2
4
4
  Summary: A binary splitting tool to assist with decompilation and modding projects
5
5
  Project-URL: Repository, https://github.com/ethteck/splat
6
6
  Project-URL: Issues, https://github.com/ethteck/splat/issues
@@ -76,7 +76,7 @@ The brackets corresponds to the optional dependencies to install while installin
76
76
  If you use a `requirements.txt` file in your repository, then you can add this library with the following line:
77
77
 
78
78
  ```txt
79
- splat64[mips]>=0.34.1,<1.0.0
79
+ splat64[mips]>=0.34.2,<1.0.0
80
80
  ```
81
81
 
82
82
  ### Optional dependencies
@@ -21,7 +21,7 @@ The brackets corresponds to the optional dependencies to install while installin
21
21
  If you use a `requirements.txt` file in your repository, then you can add this library with the following line:
22
22
 
23
23
  ```txt
24
- splat64[mips]>=0.34.1,<1.0.0
24
+ splat64[mips]>=0.34.2,<1.0.0
25
25
  ```
26
26
 
27
27
  ### Optional dependencies
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "splat64"
3
3
  # Should be synced with src/splat/__init__.py
4
- version = "0.34.1"
4
+ version = "0.34.2"
5
5
  description = "A binary splitting tool to assist with decompilation and modding projects"
6
6
  readme = "README.md"
7
7
  license = {file = "LICENSE"}
@@ -1,7 +1,7 @@
1
1
  __package_name__ = __name__
2
2
 
3
3
  # Should be synced with pyproject.toml
4
- __version__ = "0.34.1"
4
+ __version__ = "0.34.2"
5
5
  __author__ = "ethteck"
6
6
 
7
7
  from . import util as util
@@ -414,6 +414,26 @@ class Segment:
414
414
 
415
415
  ret.parent = parent
416
416
 
417
+ # Import here to avoid circular imports
418
+ from .common.code import CommonSegCode
419
+ from .common.bss import CommonSegBss
420
+
421
+ if options.opts.ld_bss_is_noload and isinstance(ret, CommonSegBss):
422
+ # We need to know the bss space for the segment.
423
+ if isinstance(parent, CommonSegCode):
424
+ if parent.bss_size <= 0:
425
+ log.error(
426
+ f"Top-level segment '{parent.name}' is missing a `bss_size` value.\n A non-zero `bss_size` value must be defined on the top-level segments that contain '{ret.type}' sections (produced by the '{ret.name}' section)."
427
+ )
428
+ if (
429
+ isinstance(ret.vram_start, int)
430
+ and isinstance(parent.vram_end, int)
431
+ and ret.vram_start >= parent.vram_end
432
+ ):
433
+ log.error(
434
+ f"The section '{ret.name}' (vram 0x{ret.vram_start:08X}) is outside its parent's address range '{parent.name}' (0x{parent.vram_start:08X} ~ 0x{parent.vram_end:08X}).\n This may happen when the specified `bss_size` value is too small."
435
+ )
436
+
417
437
  ret.given_section_order = parse_segment_section_order(yaml)
418
438
  ret.given_subalign = parse_segment_subalign(yaml)
419
439
 
@@ -456,11 +456,11 @@ class InitializeSpimContext(unittest.TestCase):
456
456
 
457
457
  all_segments: List["Segment"] = [
458
458
  CommonSegCode(
459
- rom_start=0x0,
460
- rom_end=0x200,
459
+ rom_start=0x1000,
460
+ rom_end=0x1140,
461
461
  type="code",
462
462
  name="main",
463
- vram_start=0x100,
463
+ vram_start=0x80000400,
464
464
  args=[],
465
465
  yaml=yaml,
466
466
  )
@@ -472,7 +472,7 @@ class InitializeSpimContext(unittest.TestCase):
472
472
  symbols.initialize_spim_context(all_segments)
473
473
  # spim should have added something to overlaySegments
474
474
  assert (
475
- type(symbols.spim_context.overlaySegments["overlay"][0])
475
+ type(symbols.spim_context.overlaySegments["overlay"][0x1000])
476
476
  == spimdisasm.common.SymbolsSegment
477
477
  )
478
478
 
@@ -485,22 +485,21 @@ class InitializeSpimContext(unittest.TestCase):
485
485
  "name": "boot",
486
486
  "type": "code",
487
487
  "start": 0x1000,
488
- "vram": 0x80000400,
488
+ "vram": 0x100,
489
489
  "bss_size": 0x80,
490
- "exclusive_ram_id": "overlay",
491
490
  "subsegments": [
492
491
  [0x1000, "c", "main"],
493
492
  [0x10F0, "hasm", "handwritten"],
494
493
  [0x1100, "data", "main"],
495
494
  [0x1110, ".rodata", "main"],
496
- {"start": 0x1140, "type": "bss", "vram": 0x80000540, "name": "main"},
495
+ {"start": 0x1140, "type": "bss", "vram": 0x240, "name": "main"},
497
496
  ],
498
497
  }
499
498
 
500
499
  all_segments: List["Segment"] = [
501
500
  CommonSegCode(
502
- rom_start=0x0,
503
- rom_end=0x200,
501
+ rom_start=0x1000,
502
+ rom_end=0x1140,
504
503
  type="code",
505
504
  name="main",
506
505
  vram_start=0x100,
@@ -513,7 +512,7 @@ class InitializeSpimContext(unittest.TestCase):
513
512
  assert symbols.spim_context.globalSegment.vramEnd == 0x80001000
514
513
  symbols.initialize_spim_context(all_segments)
515
514
  assert symbols.spim_context.globalSegment.vramStart == 0x100
516
- assert symbols.spim_context.globalSegment.vramEnd == 0x380
515
+ assert symbols.spim_context.globalSegment.vramEnd == 0x2C0
517
516
 
518
517
 
519
518
  if __name__ == "__main__":
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes