smallworld-re 1.0.2__tar.gz → 1.0.3__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 (172) hide show
  1. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/PKG-INFO +3 -2
  2. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/setup.py +1 -1
  3. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/code.py +7 -1
  4. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/elf.py +14 -4
  5. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld_re.egg-info/PKG-INFO +3 -2
  6. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/LICENSE.txt +0 -0
  7. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/README.md +0 -0
  8. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/setup.cfg +0 -0
  9. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/__init__.py +0 -0
  10. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/__init__.py +0 -0
  11. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/analysis.py +0 -0
  12. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/code_coverage.py +0 -0
  13. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/colorizer.py +0 -0
  14. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/colorizer_summary.py +0 -0
  15. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/field_detection/__init__.py +0 -0
  16. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/field_detection/field_analysis.py +0 -0
  17. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/field_detection/guards.py +0 -0
  18. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/field_detection/hints.py +0 -0
  19. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/field_detection/malloc.py +0 -0
  20. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/forced_exec/__init__.py +0 -0
  21. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/forced_exec/forced_exec.py +0 -0
  22. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/underlays/__init__.py +0 -0
  23. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/underlays/basic.py +0 -0
  24. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/underlays/underlay.py +0 -0
  25. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/__init__.py +0 -0
  26. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/angr/__init__.py +0 -0
  27. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/angr/base.py +0 -0
  28. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/angr/divergence.py +0 -0
  29. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/angr/model.py +0 -0
  30. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/angr/nwbt.py +0 -0
  31. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/angr/typedefs.py +0 -0
  32. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/angr/utils.py +0 -0
  33. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/angr/visitor.py +0 -0
  34. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/angr_nwbt.py +0 -0
  35. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/code_coverage.py +0 -0
  36. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/code_reachable.py +0 -0
  37. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/control_flow_tracer.py +0 -0
  38. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/analyses/unstable/pointer_finder.py +0 -0
  39. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/arch/__init__.py +0 -0
  40. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/arch/aarch64_arch.py +0 -0
  41. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/arch/amd64_arch.py +0 -0
  42. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/arch/i386_arch.py +0 -0
  43. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/__init__.py +0 -0
  44. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/__init__.py +0 -0
  45. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/angr.py +0 -0
  46. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/default.py +0 -0
  47. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/exceptions.py +0 -0
  48. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/exploration/__init__.py +0 -0
  49. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/exploration/bounds.py +0 -0
  50. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/exploration/default.py +0 -0
  51. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/exploration/terminate.py +0 -0
  52. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/factory.py +0 -0
  53. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/__init__.py +0 -0
  54. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/aarch64.py +0 -0
  55. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/amd64.py +0 -0
  56. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/arm.py +0 -0
  57. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/i386.py +0 -0
  58. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/machdef.py +0 -0
  59. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/mips.py +0 -0
  60. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/mips64.py +0 -0
  61. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/ppc.py +0 -0
  62. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/riscv.py +0 -0
  63. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/machdefs/xtensa.py +0 -0
  64. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/memory/__init__.py +0 -0
  65. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/memory/default.py +0 -0
  66. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/memory/fixups.py +0 -0
  67. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/memory/memtrack.py +0 -0
  68. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/scratch.py +0 -0
  69. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/simos.py +0 -0
  70. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/angr/utils.py +0 -0
  71. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/emulator.py +0 -0
  72. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/hookable.py +0 -0
  73. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/__init__.py +0 -0
  74. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/machdefs/__init__.py +0 -0
  75. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/machdefs/aarch64.py +0 -0
  76. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/machdefs/amd64.py +0 -0
  77. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/machdefs/arm.py +0 -0
  78. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/machdefs/i386.py +0 -0
  79. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/machdefs/machdef.py +0 -0
  80. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/machdefs/mips.py +0 -0
  81. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/machdefs/mips64.py +0 -0
  82. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/machdefs/ppc.py +0 -0
  83. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/panda/panda.py +0 -0
  84. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/unicorn/__init__.py +0 -0
  85. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/unicorn/machdefs/__init__.py +0 -0
  86. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/unicorn/machdefs/aarch64.py +0 -0
  87. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/unicorn/machdefs/amd64.py +0 -0
  88. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/unicorn/machdefs/arm.py +0 -0
  89. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/unicorn/machdefs/i386.py +0 -0
  90. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/unicorn/machdefs/machdef.py +0 -0
  91. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/unicorn/machdefs/mips.py +0 -0
  92. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/emulators/unicorn/unicorn.py +0 -0
  93. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/exceptions/__init__.py +0 -0
  94. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/exceptions/exceptions.py +0 -0
  95. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/exceptions/unstable/__init__.py +0 -0
  96. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/exceptions/unstable/exceptions.py +0 -0
  97. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/extern/__init__.py +0 -0
  98. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/extern/ctypes.py +0 -0
  99. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/extern/unstable/__init__.py +0 -0
  100. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/extern/unstable/ghidra.py +0 -0
  101. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/helpers.py +0 -0
  102. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/hinting/__init__.py +0 -0
  103. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/hinting/hinting.py +0 -0
  104. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/hinting/hints.py +0 -0
  105. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/hinting/unstable/__init__.py +0 -0
  106. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/hinting/utils.py +0 -0
  107. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/instructions/__init__.py +0 -0
  108. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/instructions/aarch64.py +0 -0
  109. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/instructions/arm.py +0 -0
  110. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/instructions/bsid.py +0 -0
  111. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/instructions/instructions.py +0 -0
  112. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/instructions/mips.py +0 -0
  113. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/instructions/x86.py +0 -0
  114. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/logging.py +0 -0
  115. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/platforms.py +0 -0
  116. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/py.typed +0 -0
  117. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/__init__.py +0 -0
  118. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/__init__.py +0 -0
  119. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/aarch64.py +0 -0
  120. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/amd64.py +0 -0
  121. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/arm.py +0 -0
  122. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/cpu.py +0 -0
  123. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/i386.py +0 -0
  124. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/mips.py +0 -0
  125. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/mips64.py +0 -0
  126. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/powerpc.py +0 -0
  127. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/riscv.py +0 -0
  128. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/cpus/xtensa.py +0 -0
  129. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/__init__.py +0 -0
  130. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/__init__.py +0 -0
  131. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/rela/__init__.py +0 -0
  132. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/rela/aarch64.py +0 -0
  133. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/rela/amd64.py +0 -0
  134. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/rela/arm.py +0 -0
  135. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/rela/i386.py +0 -0
  136. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/rela/mips.py +0 -0
  137. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/rela/ppc.py +0 -0
  138. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/rela/rela.py +0 -0
  139. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/rela/riscv64.py +0 -0
  140. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/rela/xtensa.py +0 -0
  141. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/elf/structs.py +0 -0
  142. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/heap.py +0 -0
  143. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/memory.py +0 -0
  144. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/__init__.py +0 -0
  145. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/aarch64.py +0 -0
  146. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/amd64.py +0 -0
  147. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/arm.py +0 -0
  148. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/i386.py +0 -0
  149. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/mips.py +0 -0
  150. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/mips64.py +0 -0
  151. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/ppc.py +0 -0
  152. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/riscv.py +0 -0
  153. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/stack.py +0 -0
  154. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/memory/stack/xtensa.py +0 -0
  155. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/models/__init__.py +0 -0
  156. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/models/mmio.py +0 -0
  157. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/models/model.py +0 -0
  158. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/models/posix.py +0 -0
  159. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/models/x86/__init__.py +0 -0
  160. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/models/x86/microsoftcdecl.py +0 -0
  161. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/models/x86/systemv.py +0 -0
  162. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/state.py +0 -0
  163. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/unstable/__init__.py +0 -0
  164. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/unstable/elf.py +0 -0
  165. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/state/x86_registers.py +0 -0
  166. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld/utils.py +0 -0
  167. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld_re.egg-info/SOURCES.txt +0 -0
  168. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld_re.egg-info/dependency_links.txt +0 -0
  169. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld_re.egg-info/entry_points.txt +0 -0
  170. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld_re.egg-info/not-zip-safe +0 -0
  171. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld_re.egg-info/requires.txt +0 -0
  172. {smallworld_re-1.0.2 → smallworld_re-1.0.3}/smallworld_re.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: smallworld-re
3
- Version: 1.0.2
3
+ Version: 1.0.3
4
4
  Summary: An emulation stack tracking library
5
5
  Home-page: https://github.com/smallworld-re/smallworld
6
6
  Author: MIT Lincoln Laboratory
@@ -30,6 +30,7 @@ Dynamic: description
30
30
  Dynamic: description-content-type
31
31
  Dynamic: home-page
32
32
  Dynamic: license
33
+ Dynamic: license-file
33
34
  Dynamic: provides-extra
34
35
  Dynamic: requires-dist
35
36
  Dynamic: requires-python
@@ -31,7 +31,7 @@ if len(install_requires) != len(immediate_dependencies):
31
31
 
32
32
  setup(
33
33
  name="smallworld-re",
34
- version="1.0.2",
34
+ version="1.0.3",
35
35
  author="MIT Lincoln Laboratory",
36
36
  author_email="smallworld@ll.mit.edu",
37
37
  url="https://github.com/smallworld-re/smallworld",
@@ -33,6 +33,7 @@ class Executable(memory.RawMemory):
33
33
  address: typing.Optional[int] = None,
34
34
  platform: typing.Optional[Platform] = None,
35
35
  ignore_platform: bool = False,
36
+ page_size: int = 0x1000,
36
37
  ):
37
38
  """Load an ELF executable from an open file-like object.
38
39
 
@@ -41,6 +42,7 @@ class Executable(memory.RawMemory):
41
42
  address: The address where this executable should be loaded.
42
43
  platform: Optional platform for header verification
43
44
  ignore_platform: Skip platform ID and verification
45
+ page_size: Page size in bytes
44
46
 
45
47
  Returns:
46
48
  An Executable parsed from the given ELF file-like object.
@@ -50,7 +52,11 @@ class Executable(memory.RawMemory):
50
52
  from .elf import ElfExecutable
51
53
 
52
54
  return ElfExecutable(
53
- file, user_base=address, platform=platform, ignore_platform=ignore_platform
55
+ file,
56
+ user_base=address,
57
+ platform=platform,
58
+ ignore_platform=ignore_platform,
59
+ page_size=page_size,
54
60
  )
55
61
 
56
62
  @classmethod
@@ -368,6 +368,7 @@ class ElfExecutable(Executable):
368
368
  # File base is defined.
369
369
  # We (probably) cannot move the image without problems.
370
370
  raise ConfigurationError("Base address defined for fixed-position ELF")
371
+ log.info(f"Address: {self.address:x}")
371
372
 
372
373
  def _rebase_file(self, val: int):
373
374
  # Rebase an offset from file-relative to image-relative
@@ -389,16 +390,22 @@ class ElfExecutable(Executable):
389
390
  seg_size = self._page_align(phdr.virtual_size + (phdr.file_offset - seg_start))
390
391
 
391
392
  log.debug("Mapping: ")
392
- log.debug(f" f: [ {seg_start:012x} -> {seg_end:012x} ]")
393
- log.debug(f" m: [ {seg_addr:012x} -> {seg_addr + seg_size:012x} ]")
393
+ log.debug(
394
+ f" f: [ {seg_start:012x} -> {seg_end:012x} ] ( {seg_end - seg_start:x} bytes )"
395
+ )
396
+ log.debug(
397
+ f" m: [ {seg_addr:012x} -> {seg_addr + seg_size:012x} ] ( {seg_size:x} bytes )"
398
+ )
394
399
 
395
400
  # Extract segment data
396
401
  seg_data = image[seg_start:seg_end]
397
402
  if len(seg_data) < seg_size:
398
403
  # Segment is shorter than is available from the file;
399
404
  # this will get zero-padded.
400
- seg_data += b"\0" * (seg_size - (seg_start - seg_end))
401
- elif len(seg_data) != seg_size:
405
+ pad_size = seg_size - len(seg_data)
406
+ log.debug(f"Padding segment by {pad_size} bytes")
407
+ seg_data += b"\0" * pad_size
408
+ if len(seg_data) != seg_size:
402
409
  raise ConfigurationError(
403
410
  f"Expected segment of size {seg_size}, but got {len(seg_data)}"
404
411
  )
@@ -408,6 +415,9 @@ class ElfExecutable(Executable):
408
415
 
409
416
  # Add the segment to the memory map
410
417
  seg_value = BytesValue(seg_data, None)
418
+ assert (
419
+ seg_value._size == seg_size
420
+ ), f"Expected {seg_size:x} bytes, got {seg_value._size:x}"
411
421
  self[seg_addr - self.address] = seg_value
412
422
 
413
423
  def _extract_symbols(self, elf):
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: smallworld-re
3
- Version: 1.0.2
3
+ Version: 1.0.3
4
4
  Summary: An emulation stack tracking library
5
5
  Home-page: https://github.com/smallworld-re/smallworld
6
6
  Author: MIT Lincoln Laboratory
@@ -30,6 +30,7 @@ Dynamic: description
30
30
  Dynamic: description-content-type
31
31
  Dynamic: home-page
32
32
  Dynamic: license
33
+ Dynamic: license-file
33
34
  Dynamic: provides-extra
34
35
  Dynamic: requires-dist
35
36
  Dynamic: requires-python
File without changes
File without changes
File without changes