smallworld-re 1.0.2__tar.gz → 2.0.0__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 (402) hide show
  1. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/PKG-INFO +76 -43
  2. smallworld_re-1.0.2/smallworld_re.egg-info/PKG-INFO → smallworld_re-2.0.0/README.md +40 -61
  3. smallworld_re-2.0.0/pyproject.toml +56 -0
  4. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/__init__.py +8 -0
  5. smallworld_re-2.0.0/smallworld/analyses/analysis.py +29 -0
  6. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/code_coverage.py +1 -2
  7. smallworld_re-2.0.0/smallworld/analyses/colorizer.py +449 -0
  8. smallworld_re-2.0.0/smallworld/analyses/colorizer_def_use.py +217 -0
  9. smallworld_re-2.0.0/smallworld/analyses/colorizer_summary.py +190 -0
  10. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/field_analysis.py +7 -8
  11. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/hints.py +1 -1
  12. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/malloc.py +2 -2
  13. smallworld_re-2.0.0/smallworld/analyses/trace_execution.py +160 -0
  14. smallworld_re-2.0.0/smallworld/analyses/trace_execution_types.py +42 -0
  15. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/divergence.py +1 -2
  16. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/model.py +5 -6
  17. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr_nwbt.py +3 -4
  18. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/code_coverage.py +2 -3
  19. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/code_reachable.py +2 -3
  20. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/control_flow_tracer.py +2 -3
  21. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/pointer_finder.py +2 -3
  22. smallworld_re-2.0.0/smallworld/analyses/unstable/utils/tui.py +71 -0
  23. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/__init__.py +3 -1
  24. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/angr.py +30 -9
  25. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/__init__.py +2 -0
  26. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/aarch64.py +1 -1
  27. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/amd64.py +0 -4
  28. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/arm.py +0 -2
  29. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/i386.py +0 -2
  30. smallworld_re-2.0.0/smallworld/emulators/angr/machdefs/loongarch.py +340 -0
  31. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/machdef.py +1 -8
  32. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/mips.py +0 -2
  33. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/mips64.py +0 -2
  34. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/ppc.py +1 -2
  35. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/riscv.py +8 -10
  36. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/xtensa.py +7 -4
  37. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/emulator.py +22 -0
  38. smallworld_re-2.0.0/smallworld/emulators/ghidra/__init__.py +37 -0
  39. smallworld_re-2.0.0/smallworld/emulators/ghidra/ghidra.py +513 -0
  40. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/__init__.py +31 -0
  41. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/aarch64.py +289 -0
  42. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/amd64.py +185 -0
  43. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/arm.py +370 -0
  44. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/i386.py +109 -0
  45. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/loongarch.py +162 -0
  46. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/machdef.py +81 -0
  47. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/mips.py +163 -0
  48. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/mips64.py +186 -0
  49. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/ppc.py +98 -0
  50. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/riscv.py +208 -0
  51. smallworld_re-2.0.0/smallworld/emulators/ghidra/machdefs/xtensa.py +21 -0
  52. smallworld_re-2.0.0/smallworld/emulators/ghidra/typing.py +28 -0
  53. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/hookable.py +18 -4
  54. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/__init__.py +2 -2
  55. smallworld_re-2.0.0/smallworld/emulators/panda/machdefs/aarch64.py +268 -0
  56. smallworld_re-2.0.0/smallworld/emulators/panda/machdefs/amd64.py +163 -0
  57. smallworld_re-2.0.0/smallworld/emulators/panda/machdefs/arm.py +285 -0
  58. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/i386.py +30 -7
  59. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/machdef.py +9 -16
  60. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/mips.py +49 -5
  61. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/mips64.py +57 -5
  62. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/ppc.py +38 -13
  63. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/panda.py +146 -44
  64. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/unicorn/__init__.py +2 -0
  65. smallworld_re-2.0.0/smallworld/emulators/unicorn/machdefs/aarch64.py +299 -0
  66. smallworld_re-2.0.0/smallworld/emulators/unicorn/machdefs/amd64.py +321 -0
  67. smallworld_re-2.0.0/smallworld/emulators/unicorn/machdefs/arm.py +309 -0
  68. smallworld_re-2.0.0/smallworld/emulators/unicorn/machdefs/i386.py +131 -0
  69. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/unicorn/machdefs/machdef.py +2 -23
  70. smallworld_re-2.0.0/smallworld/emulators/unicorn/machdefs/mips.py +194 -0
  71. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/unicorn/unicorn.py +52 -13
  72. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/helpers.py +4 -19
  73. smallworld_re-2.0.0/smallworld/hinting/hinting.py +44 -0
  74. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/hinting/hints.py +50 -18
  75. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/bsid.py +8 -8
  76. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/logging.py +4 -2
  77. smallworld_re-2.0.0/smallworld/platforms/__init__.py +12 -0
  78. smallworld_re-2.0.0/smallworld/platforms/defs/__init__.py +36 -0
  79. smallworld_re-2.0.0/smallworld/platforms/defs/aarch64.py +450 -0
  80. smallworld_re-2.0.0/smallworld/platforms/defs/amd64.py +463 -0
  81. smallworld_re-2.0.0/smallworld/platforms/defs/arm.py +519 -0
  82. smallworld_re-2.0.0/smallworld/platforms/defs/i386.py +258 -0
  83. smallworld_re-2.0.0/smallworld/platforms/defs/loongarch.py +270 -0
  84. smallworld_re-2.0.0/smallworld/platforms/defs/mips.py +321 -0
  85. smallworld_re-2.0.0/smallworld/platforms/defs/mips64.py +313 -0
  86. smallworld_re-2.0.0/smallworld/platforms/defs/platformdef.py +97 -0
  87. smallworld_re-2.0.0/smallworld/platforms/defs/powerpc.py +259 -0
  88. smallworld_re-2.0.0/smallworld/platforms/defs/riscv.py +257 -0
  89. smallworld_re-2.0.0/smallworld/platforms/defs/xtensa.py +96 -0
  90. {smallworld_re-1.0.2/smallworld → smallworld_re-2.0.0/smallworld/platforms}/platforms.py +3 -0
  91. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/__init__.py +2 -0
  92. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/aarch64.py +0 -9
  93. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/amd64.py +6 -28
  94. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/arm.py +0 -11
  95. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/cpu.py +0 -11
  96. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/i386.py +0 -7
  97. smallworld_re-2.0.0/smallworld/state/cpus/loongarch.py +299 -0
  98. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/mips.py +4 -47
  99. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/mips64.py +18 -58
  100. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/powerpc.py +2 -9
  101. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/riscv.py +1 -11
  102. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/cpus/xtensa.py +0 -5
  103. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/code.py +44 -2
  104. smallworld_re-2.0.0/smallworld/state/memory/elf/__init__.py +7 -0
  105. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/__init__.py +3 -0
  106. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/coredump.py +46 -0
  107. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/__init__.py +27 -0
  108. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/aarch64.py +46 -0
  109. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/amd64.py +40 -0
  110. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/arm.py +53 -0
  111. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/i386.py +30 -0
  112. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/mips.py +55 -0
  113. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/mips64.py +57 -0
  114. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/ppc.py +82 -0
  115. smallworld_re-2.0.0/smallworld/state/memory/elf/coredump/prstatus/prstatus.py +129 -0
  116. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/elf.py +225 -61
  117. smallworld_re-2.0.0/smallworld/state/memory/elf/register_state.py +36 -0
  118. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/__init__.py +2 -0
  119. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/aarch64.py +3 -1
  120. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/amd64.py +4 -2
  121. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/arm.py +4 -2
  122. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/i386.py +4 -2
  123. smallworld_re-2.0.0/smallworld/state/memory/elf/rela/loongarch.py +32 -0
  124. smallworld_re-2.0.0/smallworld/state/memory/elf/rela/mips.py +66 -0
  125. smallworld_re-2.0.0/smallworld/state/memory/elf/rela/ppc.py +62 -0
  126. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/structs.py +3 -0
  127. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/heap.py +2 -2
  128. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/memory.py +18 -0
  129. smallworld_re-2.0.0/smallworld/state/memory/pe/__init__.py +3 -0
  130. smallworld_re-2.0.0/smallworld/state/memory/pe/pe.py +361 -0
  131. smallworld_re-2.0.0/smallworld/state/memory/pe/structs.py +60 -0
  132. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/__init__.py +2 -0
  133. smallworld_re-2.0.0/smallworld/state/memory/stack/loongarch.py +26 -0
  134. smallworld_re-2.0.0/smallworld/state/models/__init__.py +33 -0
  135. smallworld_re-2.0.0/smallworld/state/models/aarch64/__init__.py +1 -0
  136. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/__init__.py +6 -0
  137. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/__init__.py +12 -0
  138. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/signal.py +16 -0
  139. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/stdio.py +265 -0
  140. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/stdlib.py +169 -0
  141. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/string.py +139 -0
  142. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/c99/time.py +61 -0
  143. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/posix/__init__.py +6 -0
  144. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/posix/libgen.py +16 -0
  145. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/posix/signal.py +157 -0
  146. smallworld_re-2.0.0/smallworld/state/models/aarch64/systemv/systemv.py +80 -0
  147. smallworld_re-2.0.0/smallworld/state/models/amd64/__init__.py +1 -0
  148. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/__init__.py +6 -0
  149. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/__init__.py +12 -0
  150. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/signal.py +16 -0
  151. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/stdio.py +265 -0
  152. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/stdlib.py +169 -0
  153. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/string.py +139 -0
  154. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/c99/time.py +61 -0
  155. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/posix/__init__.py +6 -0
  156. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/posix/libgen.py +16 -0
  157. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/posix/signal.py +157 -0
  158. smallworld_re-2.0.0/smallworld/state/models/amd64/systemv/systemv.py +78 -0
  159. smallworld_re-2.0.0/smallworld/state/models/armel/__init__.py +1 -0
  160. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/__init__.py +6 -0
  161. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/__init__.py +12 -0
  162. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/signal.py +16 -0
  163. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/stdio.py +265 -0
  164. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/stdlib.py +169 -0
  165. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/string.py +139 -0
  166. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/c99/time.py +61 -0
  167. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/posix/__init__.py +6 -0
  168. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/posix/libgen.py +16 -0
  169. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/posix/signal.py +157 -0
  170. smallworld_re-2.0.0/smallworld/state/models/armel/systemv/systemv.py +82 -0
  171. smallworld_re-2.0.0/smallworld/state/models/armhf/__init__.py +1 -0
  172. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/__init__.py +6 -0
  173. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/__init__.py +12 -0
  174. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/signal.py +16 -0
  175. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/stdio.py +265 -0
  176. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/stdlib.py +169 -0
  177. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/string.py +139 -0
  178. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/c99/time.py +61 -0
  179. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/posix/__init__.py +6 -0
  180. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/posix/libgen.py +16 -0
  181. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/posix/signal.py +157 -0
  182. smallworld_re-2.0.0/smallworld/state/models/armhf/systemv/systemv.py +77 -0
  183. smallworld_re-2.0.0/smallworld/state/models/c99/__init__.py +12 -0
  184. smallworld_re-2.0.0/smallworld/state/models/c99/fmt_print.py +915 -0
  185. smallworld_re-2.0.0/smallworld/state/models/c99/fmt_scan.py +864 -0
  186. smallworld_re-2.0.0/smallworld/state/models/c99/math.py +362 -0
  187. smallworld_re-2.0.0/smallworld/state/models/c99/signal.py +71 -0
  188. smallworld_re-2.0.0/smallworld/state/models/c99/stdio.py +1305 -0
  189. smallworld_re-2.0.0/smallworld/state/models/c99/stdlib.py +595 -0
  190. smallworld_re-2.0.0/smallworld/state/models/c99/string.py +674 -0
  191. smallworld_re-2.0.0/smallworld/state/models/c99/time.py +340 -0
  192. smallworld_re-2.0.0/smallworld/state/models/c99/utils.py +89 -0
  193. smallworld_re-2.0.0/smallworld/state/models/cstd.py +759 -0
  194. smallworld_re-2.0.0/smallworld/state/models/errno.py +581 -0
  195. smallworld_re-2.0.0/smallworld/state/models/filedesc.py +515 -0
  196. smallworld_re-2.0.0/smallworld/state/models/i386/__init__.py +1 -0
  197. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/__init__.py +6 -0
  198. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/__init__.py +12 -0
  199. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/signal.py +16 -0
  200. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/stdio.py +265 -0
  201. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/stdlib.py +169 -0
  202. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/string.py +139 -0
  203. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/c99/time.py +61 -0
  204. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/posix/__init__.py +6 -0
  205. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/posix/libgen.py +16 -0
  206. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/posix/signal.py +157 -0
  207. smallworld_re-2.0.0/smallworld/state/models/i386/systemv/systemv.py +71 -0
  208. smallworld_re-2.0.0/smallworld/state/models/loongarch64/__init__.py +1 -0
  209. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/__init__.py +6 -0
  210. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/__init__.py +12 -0
  211. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/signal.py +16 -0
  212. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/stdio.py +265 -0
  213. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/stdlib.py +169 -0
  214. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/string.py +139 -0
  215. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/c99/time.py +61 -0
  216. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/posix/__init__.py +6 -0
  217. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/posix/libgen.py +16 -0
  218. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/posix/signal.py +157 -0
  219. smallworld_re-2.0.0/smallworld/state/models/loongarch64/systemv/systemv.py +83 -0
  220. smallworld_re-2.0.0/smallworld/state/models/mips/__init__.py +1 -0
  221. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/__init__.py +6 -0
  222. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/__init__.py +12 -0
  223. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/signal.py +16 -0
  224. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/stdio.py +265 -0
  225. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/stdlib.py +169 -0
  226. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/string.py +139 -0
  227. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/c99/time.py +61 -0
  228. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/posix/__init__.py +6 -0
  229. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/posix/libgen.py +16 -0
  230. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/posix/signal.py +157 -0
  231. smallworld_re-2.0.0/smallworld/state/models/mips/systemv/systemv.py +78 -0
  232. smallworld_re-2.0.0/smallworld/state/models/mips64/__init__.py +1 -0
  233. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/__init__.py +6 -0
  234. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/__init__.py +12 -0
  235. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/signal.py +16 -0
  236. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/stdio.py +265 -0
  237. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/stdlib.py +169 -0
  238. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/string.py +139 -0
  239. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/c99/time.py +61 -0
  240. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/posix/__init__.py +6 -0
  241. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/posix/libgen.py +16 -0
  242. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/posix/signal.py +157 -0
  243. smallworld_re-2.0.0/smallworld/state/models/mips64/systemv/systemv.py +98 -0
  244. smallworld_re-2.0.0/smallworld/state/models/mips64el/__init__.py +1 -0
  245. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/__init__.py +6 -0
  246. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/__init__.py +12 -0
  247. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/signal.py +16 -0
  248. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/stdio.py +265 -0
  249. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/stdlib.py +169 -0
  250. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/string.py +139 -0
  251. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/c99/time.py +61 -0
  252. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/posix/__init__.py +6 -0
  253. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/posix/libgen.py +16 -0
  254. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/posix/signal.py +157 -0
  255. smallworld_re-2.0.0/smallworld/state/models/mips64el/systemv/systemv.py +96 -0
  256. smallworld_re-2.0.0/smallworld/state/models/mipsel/__init__.py +1 -0
  257. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/__init__.py +6 -0
  258. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/__init__.py +12 -0
  259. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/signal.py +16 -0
  260. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/stdio.py +265 -0
  261. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/stdlib.py +169 -0
  262. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/string.py +139 -0
  263. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/c99/time.py +61 -0
  264. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/posix/__init__.py +6 -0
  265. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/posix/libgen.py +16 -0
  266. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/posix/signal.py +157 -0
  267. smallworld_re-2.0.0/smallworld/state/models/mipsel/systemv/systemv.py +78 -0
  268. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/models/model.py +27 -2
  269. smallworld_re-2.0.0/smallworld/state/models/posix/__init__.py +6 -0
  270. smallworld_re-2.0.0/smallworld/state/models/posix/libgen.py +123 -0
  271. smallworld_re-2.0.0/smallworld/state/models/posix/signal.py +690 -0
  272. smallworld_re-2.0.0/smallworld/state/models/powerpc/__init__.py +1 -0
  273. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/__init__.py +6 -0
  274. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/__init__.py +12 -0
  275. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/signal.py +16 -0
  276. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/stdio.py +265 -0
  277. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/stdlib.py +169 -0
  278. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/string.py +139 -0
  279. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/c99/time.py +61 -0
  280. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/posix/__init__.py +6 -0
  281. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/posix/libgen.py +16 -0
  282. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/posix/signal.py +157 -0
  283. smallworld_re-2.0.0/smallworld/state/models/powerpc/systemv/systemv.py +93 -0
  284. smallworld_re-2.0.0/smallworld/state/models/riscv64/__init__.py +1 -0
  285. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/__init__.py +6 -0
  286. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/__init__.py +12 -0
  287. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/signal.py +16 -0
  288. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/stdio.py +265 -0
  289. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/stdlib.py +169 -0
  290. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/string.py +139 -0
  291. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/c99/time.py +61 -0
  292. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/posix/__init__.py +6 -0
  293. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/posix/libgen.py +16 -0
  294. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/posix/signal.py +157 -0
  295. smallworld_re-2.0.0/smallworld/state/models/riscv64/systemv/systemv.py +85 -0
  296. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/state.py +65 -24
  297. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/unstable/elf.py +16 -31
  298. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/utils.py +6 -1
  299. smallworld_re-2.0.0/smallworld_re.egg-info/PKG-INFO +222 -0
  300. smallworld_re-2.0.0/smallworld_re.egg-info/SOURCES.txt +378 -0
  301. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld_re.egg-info/requires.txt +9 -5
  302. smallworld_re-1.0.2/README.md +0 -152
  303. smallworld_re-1.0.2/setup.py +0 -61
  304. smallworld_re-1.0.2/smallworld/analyses/analysis.py +0 -88
  305. smallworld_re-1.0.2/smallworld/analyses/colorizer.py +0 -682
  306. smallworld_re-1.0.2/smallworld/analyses/colorizer_summary.py +0 -100
  307. smallworld_re-1.0.2/smallworld/emulators/panda/machdefs/aarch64.py +0 -93
  308. smallworld_re-1.0.2/smallworld/emulators/panda/machdefs/amd64.py +0 -71
  309. smallworld_re-1.0.2/smallworld/emulators/panda/machdefs/arm.py +0 -89
  310. smallworld_re-1.0.2/smallworld/emulators/unicorn/machdefs/aarch64.py +0 -310
  311. smallworld_re-1.0.2/smallworld/emulators/unicorn/machdefs/amd64.py +0 -326
  312. smallworld_re-1.0.2/smallworld/emulators/unicorn/machdefs/arm.py +0 -321
  313. smallworld_re-1.0.2/smallworld/emulators/unicorn/machdefs/i386.py +0 -137
  314. smallworld_re-1.0.2/smallworld/emulators/unicorn/machdefs/mips.py +0 -202
  315. smallworld_re-1.0.2/smallworld/hinting/hinting.py +0 -214
  316. smallworld_re-1.0.2/smallworld/state/memory/elf/__init__.py +0 -3
  317. smallworld_re-1.0.2/smallworld/state/memory/elf/rela/mips.py +0 -45
  318. smallworld_re-1.0.2/smallworld/state/memory/elf/rela/ppc.py +0 -45
  319. smallworld_re-1.0.2/smallworld/state/models/__init__.py +0 -6
  320. smallworld_re-1.0.2/smallworld/state/models/x86/__init__.py +0 -2
  321. smallworld_re-1.0.2/smallworld/state/models/x86/microsoftcdecl.py +0 -35
  322. smallworld_re-1.0.2/smallworld/state/models/x86/systemv.py +0 -240
  323. smallworld_re-1.0.2/smallworld_re.egg-info/SOURCES.txt +0 -170
  324. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/LICENSE.txt +0 -0
  325. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/setup.cfg +0 -0
  326. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/__init__.py +0 -0
  327. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/__init__.py +0 -0
  328. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/guards.py +0 -0
  329. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/forced_exec/__init__.py +0 -0
  330. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/forced_exec/forced_exec.py +0 -0
  331. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/underlays/__init__.py +0 -0
  332. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/underlays/basic.py +0 -0
  333. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/underlays/underlay.py +0 -0
  334. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/__init__.py +0 -0
  335. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/__init__.py +0 -0
  336. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/base.py +0 -0
  337. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/nwbt.py +0 -0
  338. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/typedefs.py +0 -0
  339. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/utils.py +0 -0
  340. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/visitor.py +0 -0
  341. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/arch/__init__.py +0 -0
  342. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/arch/aarch64_arch.py +0 -0
  343. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/arch/amd64_arch.py +0 -0
  344. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/arch/i386_arch.py +0 -0
  345. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/__init__.py +0 -0
  346. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/default.py +0 -0
  347. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/exceptions.py +0 -0
  348. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/__init__.py +0 -0
  349. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/bounds.py +0 -0
  350. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/default.py +0 -0
  351. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/terminate.py +0 -0
  352. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/factory.py +0 -0
  353. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/__init__.py +0 -0
  354. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/default.py +0 -0
  355. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/fixups.py +0 -0
  356. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/memtrack.py +0 -0
  357. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/scratch.py +0 -0
  358. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/simos.py +0 -0
  359. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/angr/utils.py +0 -0
  360. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/panda/__init__.py +0 -0
  361. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/emulators/unicorn/machdefs/__init__.py +0 -0
  362. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/exceptions/__init__.py +0 -0
  363. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/exceptions/exceptions.py +0 -0
  364. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/exceptions/unstable/__init__.py +0 -0
  365. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/exceptions/unstable/exceptions.py +0 -0
  366. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/extern/__init__.py +0 -0
  367. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/extern/ctypes.py +0 -0
  368. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/extern/unstable/__init__.py +0 -0
  369. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/extern/unstable/ghidra.py +0 -0
  370. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/hinting/__init__.py +0 -0
  371. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/hinting/unstable/__init__.py +0 -0
  372. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/hinting/utils.py +0 -0
  373. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/__init__.py +0 -0
  374. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/aarch64.py +0 -0
  375. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/arm.py +0 -0
  376. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/instructions.py +0 -0
  377. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/mips.py +0 -0
  378. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/instructions/x86.py +0 -0
  379. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/py.typed +0 -0
  380. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/__init__.py +0 -0
  381. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/__init__.py +0 -0
  382. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/rela.py +0 -0
  383. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/riscv64.py +0 -0
  384. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/xtensa.py +0 -0
  385. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/aarch64.py +0 -0
  386. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/amd64.py +0 -0
  387. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/arm.py +0 -0
  388. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/i386.py +0 -0
  389. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/mips.py +0 -0
  390. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/mips64.py +0 -0
  391. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/ppc.py +0 -0
  392. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/riscv.py +0 -0
  393. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/stack.py +0 -0
  394. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/memory/stack/xtensa.py +0 -0
  395. /smallworld_re-1.0.2/smallworld/state/models/posix.py → /smallworld_re-2.0.0/smallworld/state/models/_posix.py +0 -0
  396. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/models/mmio.py +0 -0
  397. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/unstable/__init__.py +0 -0
  398. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld/state/x86_registers.py +0 -0
  399. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld_re.egg-info/dependency_links.txt +0 -0
  400. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld_re.egg-info/entry_points.txt +0 -0
  401. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld_re.egg-info/not-zip-safe +0 -0
  402. {smallworld_re-1.0.2 → smallworld_re-2.0.0}/smallworld_re.egg-info/top_level.txt +0 -0
@@ -1,20 +1,43 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: smallworld-re
3
- Version: 1.0.2
3
+ Version: 2.0.0
4
4
  Summary: An emulation stack tracking library
5
- Home-page: https://github.com/smallworld-re/smallworld
6
5
  Author: MIT Lincoln Laboratory
7
6
  Author-email: smallworld@ll.mit.edu
8
- License: MIT
7
+ License: MIT License
8
+
9
+ © 2023 Massachusetts Institute of Technology
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
12
+ this software and associated documentation files (the "Software"), to deal in
13
+ the Software without restriction, including without limitation the rights to
14
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
15
+ of the Software, and to permit persons to whom the Software is furnished to do
16
+ so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+
29
+ Project-URL: Homepage, https://github.com/smallworld-re/smallworld
30
+ Project-URL: Issues, https://github.com/smallworld-re/smallworld/issues
9
31
  Requires-Python: >=3.10
10
32
  Description-Content-Type: text/markdown
11
33
  License-File: LICENSE.txt
34
+ Requires-Dist: angr
35
+ Requires-Dist: capstone
36
+ Requires-Dist: jsons
37
+ Requires-Dist: lief
12
38
  Requires-Dist: pyhidra==1.3.0
13
- Requires-Dist: angr==9.2.137
14
- Requires-Dist: capstone==5.0.3
15
- Requires-Dist: lief==0.14.1
16
- Requires-Dist: pypcode==3.0
17
- Requires-Dist: unicorn==2.0.1.post1
39
+ Requires-Dist: pypcode
40
+ Requires-Dist: unicorn
18
41
  Provides-Extra: development
19
42
  Requires-Dist: black; extra == "development"
20
43
  Requires-Dist: isort; extra == "development"
@@ -24,16 +47,10 @@ Requires-Dist: pip-tools; extra == "development"
24
47
  Requires-Dist: pre-commit; extra == "development"
25
48
  Requires-Dist: sphinx; extra == "development"
26
49
  Requires-Dist: sphinxcontrib-programoutput; extra == "development"
27
- Dynamic: author
28
- Dynamic: author-email
29
- Dynamic: description
30
- Dynamic: description-content-type
31
- Dynamic: home-page
32
- Dynamic: license
33
- Dynamic: provides-extra
34
- Dynamic: requires-dist
35
- Dynamic: requires-python
36
- Dynamic: summary
50
+ Requires-Dist: jupyterlab; extra == "development"
51
+ Requires-Dist: notebook; extra == "development"
52
+ Requires-Dist: timeout-decorator; extra == "development"
53
+ Dynamic: license-file
37
54
 
38
55
  # SmallWorld
39
56
 
@@ -56,19 +73,19 @@ There are two fundamental tenets behind SmallWorld
56
73
 
57
74
  The first of these tenets we hope to support with good software APIs. As a very
58
75
  simple example, consider the harnessing script
59
- [stack.py](https://github.com/smallworld-re/smallworld/blob/main/tests/square.py),
76
+ [square.amd64.py](https://github.com/smallworld-re/smallworld/blob/main/tests/square/square.amd64.py),
60
77
  composed using SmallWorld, in which registers are initialized and a stack is
61
78
  arranged for running the code in
62
- [stack.s](https://github.com/smallworld-re/smallworld/blob/main/tests/stack.s).
79
+ [square.amd64.s](https://github.com/smallworld-re/smallworld/blob/main/tests/square/square.amd64.s).
63
80
  For a more sophisticated example of SmallWorld's harnessing facitilites,
64
81
  consider the code snippet
65
- [struct.s](https://github.com/smallworld-re/smallworld/blob/main/tests/struct.s),
82
+ [struct.amd64.s](https://github.com/smallworld-re/smallworld/blob/main/tests/struct/struct.amd64.s),
66
83
  which assumes a stack and input pointers to a linked list with very specific
67
84
  format. The harnessing script in this case is more complicated, including
68
85
  specifying type information for the linked list element structures as well as
69
86
  use of a simple allocator abstraction provided by SmallWorld to instantiate
70
87
  nodes and link them together appropriately:
71
- [struct.py](https://github.com/smallworld-re/smallworld/blob/main/tests/struct.py).
88
+ [struct.amd64.py](https://github.com/smallworld-re/smallworld/blob/main/tests/struct/struct.amd64.py).
72
89
 
73
90
  The second tenet we address with purpose-built analyses which leverage a
74
91
  (possibly incomplete) harness script and that use techniques such as [Micro
@@ -84,33 +101,40 @@ SmallWorld directly supports yet.
84
101
 
85
102
  ## Installation
86
103
 
87
- To install SmallWorld from this repo, run:
88
-
104
+ SmallWorld can be installed [directly from PyPi](https://pypi.org/project/smallworld-re/), just:
89
105
  ```bash
90
- pip install .
106
+ pip install smallworld-re
91
107
  ```
92
108
 
93
- ## Usage
94
-
95
- Print basic usage and help:
109
+ If you'd like to install the latest changes or do development, you can install directly. To install SmallWorld from this repo, [optionally set up a venv](https://docs.python.org/3/library/venv.html) and then run:
96
110
 
97
111
  ```bash
98
- smallworld --help
112
+ pip install .
99
113
  ```
100
114
 
115
+ The result will be a library that can be used for harnessing and analyzing. See the examples for a walkthrough.
116
+
101
117
  ## Contributing
102
118
 
103
119
  Pull requests and issues more than welcome.
104
120
 
105
121
  ### Development
106
122
 
107
- To set up a development environment from this repo, install SmallWorld in
123
+ #### The Easy Way
124
+ To set up a development environment from this repo, the easiest method is to use
125
+ the install script `install.sh`. This has been tested on Ubuntu 22.04 and may be run
126
+ as the root user, or a non-root user with sudo permissions.
127
+ This will both install SmallWorld and build the unit and integration tests.
128
+ Note that installation will not work fully on an ARM and is not supported.
129
+
130
+ #### The Hard Way
131
+ To manually set up a development environment from this repo, install SmallWorld in
108
132
  editable mode with extras for development and testing. Use the include
109
133
  constraints to install frozen versions and ensure a consistent development
110
134
  environment.
111
135
 
112
136
  ```bash
113
- pip install -e .[development] -c constraints.txt
137
+ pip install -e ".[development]" -c constraints.txt
114
138
  ```
115
139
 
116
140
  #### Code Style
@@ -123,17 +147,6 @@ installing development dependencies), run:
123
147
  pre-commit install
124
148
  ```
125
149
 
126
- ### Documentation
127
-
128
- To build the full SmallWorld documentation, after installing SmallWorld with
129
- `development` extras enabled, from the `docs/` directory, run:
130
-
131
- ```bash
132
- make html
133
- ```
134
-
135
- Or other [supported Sphinx output formats](https://www.sphinx-doc.org/en/master/usage/builders/index.html).
136
-
137
150
  ### Testing
138
151
 
139
152
  #### Prerequisites
@@ -149,6 +162,9 @@ You can then build the tests by running:
149
162
 
150
163
  ```bash
151
164
  make -C tests
165
+
166
+ ulimit -c unlimited
167
+ make -C tests/elf_core
152
168
  ```
153
169
 
154
170
  #### Running Tests
@@ -161,6 +177,23 @@ python3 tests/unit.py
161
177
  python3 tests/integration.py
162
178
  ```
163
179
 
180
+ ### Documentation
181
+
182
+ To build the full SmallWorld documentation
183
+ * verify [Sphinx](https://www.sphinx-doc.org/) has been installed
184
+ * install SmallWorld with `development` extras enabled
185
+ * make sure you have built the tests since the documentation generation requires output from those tests
186
+ * from the `docs/` directory, run:
187
+
188
+ ```bash
189
+ make html
190
+ ```
191
+
192
+ The resulting documentation will be in `docs/build/html/`
193
+
194
+ Other [supported Sphinx output formats](https://www.sphinx-doc.org/en/master/usage/builders/index.html) can also be generated.
195
+
196
+
164
197
  ## Distribution
165
198
 
166
199
  DISTRIBUTION STATEMENT A. Approved for public release. Distribution is
@@ -1,40 +1,3 @@
1
- Metadata-Version: 2.2
2
- Name: smallworld-re
3
- Version: 1.0.2
4
- Summary: An emulation stack tracking library
5
- Home-page: https://github.com/smallworld-re/smallworld
6
- Author: MIT Lincoln Laboratory
7
- Author-email: smallworld@ll.mit.edu
8
- License: MIT
9
- Requires-Python: >=3.10
10
- Description-Content-Type: text/markdown
11
- License-File: LICENSE.txt
12
- Requires-Dist: pyhidra==1.3.0
13
- Requires-Dist: angr==9.2.137
14
- Requires-Dist: capstone==5.0.3
15
- Requires-Dist: lief==0.14.1
16
- Requires-Dist: pypcode==3.0
17
- Requires-Dist: unicorn==2.0.1.post1
18
- Provides-Extra: development
19
- Requires-Dist: black; extra == "development"
20
- Requires-Dist: isort; extra == "development"
21
- Requires-Dist: flake8; extra == "development"
22
- Requires-Dist: mypy; extra == "development"
23
- Requires-Dist: pip-tools; extra == "development"
24
- Requires-Dist: pre-commit; extra == "development"
25
- Requires-Dist: sphinx; extra == "development"
26
- Requires-Dist: sphinxcontrib-programoutput; extra == "development"
27
- Dynamic: author
28
- Dynamic: author-email
29
- Dynamic: description
30
- Dynamic: description-content-type
31
- Dynamic: home-page
32
- Dynamic: license
33
- Dynamic: provides-extra
34
- Dynamic: requires-dist
35
- Dynamic: requires-python
36
- Dynamic: summary
37
-
38
1
  # SmallWorld
39
2
 
40
3
  [![commit-style-image]][conventional]
@@ -56,19 +19,19 @@ There are two fundamental tenets behind SmallWorld
56
19
 
57
20
  The first of these tenets we hope to support with good software APIs. As a very
58
21
  simple example, consider the harnessing script
59
- [stack.py](https://github.com/smallworld-re/smallworld/blob/main/tests/square.py),
22
+ [square.amd64.py](https://github.com/smallworld-re/smallworld/blob/main/tests/square/square.amd64.py),
60
23
  composed using SmallWorld, in which registers are initialized and a stack is
61
24
  arranged for running the code in
62
- [stack.s](https://github.com/smallworld-re/smallworld/blob/main/tests/stack.s).
25
+ [square.amd64.s](https://github.com/smallworld-re/smallworld/blob/main/tests/square/square.amd64.s).
63
26
  For a more sophisticated example of SmallWorld's harnessing facitilites,
64
27
  consider the code snippet
65
- [struct.s](https://github.com/smallworld-re/smallworld/blob/main/tests/struct.s),
28
+ [struct.amd64.s](https://github.com/smallworld-re/smallworld/blob/main/tests/struct/struct.amd64.s),
66
29
  which assumes a stack and input pointers to a linked list with very specific
67
30
  format. The harnessing script in this case is more complicated, including
68
31
  specifying type information for the linked list element structures as well as
69
32
  use of a simple allocator abstraction provided by SmallWorld to instantiate
70
33
  nodes and link them together appropriately:
71
- [struct.py](https://github.com/smallworld-re/smallworld/blob/main/tests/struct.py).
34
+ [struct.amd64.py](https://github.com/smallworld-re/smallworld/blob/main/tests/struct/struct.amd64.py).
72
35
 
73
36
  The second tenet we address with purpose-built analyses which leverage a
74
37
  (possibly incomplete) harness script and that use techniques such as [Micro
@@ -84,33 +47,40 @@ SmallWorld directly supports yet.
84
47
 
85
48
  ## Installation
86
49
 
87
- To install SmallWorld from this repo, run:
88
-
50
+ SmallWorld can be installed [directly from PyPi](https://pypi.org/project/smallworld-re/), just:
89
51
  ```bash
90
- pip install .
52
+ pip install smallworld-re
91
53
  ```
92
54
 
93
- ## Usage
94
-
95
- Print basic usage and help:
55
+ If you'd like to install the latest changes or do development, you can install directly. To install SmallWorld from this repo, [optionally set up a venv](https://docs.python.org/3/library/venv.html) and then run:
96
56
 
97
57
  ```bash
98
- smallworld --help
58
+ pip install .
99
59
  ```
100
60
 
61
+ The result will be a library that can be used for harnessing and analyzing. See the examples for a walkthrough.
62
+
101
63
  ## Contributing
102
64
 
103
65
  Pull requests and issues more than welcome.
104
66
 
105
67
  ### Development
106
68
 
107
- To set up a development environment from this repo, install SmallWorld in
69
+ #### The Easy Way
70
+ To set up a development environment from this repo, the easiest method is to use
71
+ the install script `install.sh`. This has been tested on Ubuntu 22.04 and may be run
72
+ as the root user, or a non-root user with sudo permissions.
73
+ This will both install SmallWorld and build the unit and integration tests.
74
+ Note that installation will not work fully on an ARM and is not supported.
75
+
76
+ #### The Hard Way
77
+ To manually set up a development environment from this repo, install SmallWorld in
108
78
  editable mode with extras for development and testing. Use the include
109
79
  constraints to install frozen versions and ensure a consistent development
110
80
  environment.
111
81
 
112
82
  ```bash
113
- pip install -e .[development] -c constraints.txt
83
+ pip install -e ".[development]" -c constraints.txt
114
84
  ```
115
85
 
116
86
  #### Code Style
@@ -123,17 +93,6 @@ installing development dependencies), run:
123
93
  pre-commit install
124
94
  ```
125
95
 
126
- ### Documentation
127
-
128
- To build the full SmallWorld documentation, after installing SmallWorld with
129
- `development` extras enabled, from the `docs/` directory, run:
130
-
131
- ```bash
132
- make html
133
- ```
134
-
135
- Or other [supported Sphinx output formats](https://www.sphinx-doc.org/en/master/usage/builders/index.html).
136
-
137
96
  ### Testing
138
97
 
139
98
  #### Prerequisites
@@ -149,6 +108,9 @@ You can then build the tests by running:
149
108
 
150
109
  ```bash
151
110
  make -C tests
111
+
112
+ ulimit -c unlimited
113
+ make -C tests/elf_core
152
114
  ```
153
115
 
154
116
  #### Running Tests
@@ -161,6 +123,23 @@ python3 tests/unit.py
161
123
  python3 tests/integration.py
162
124
  ```
163
125
 
126
+ ### Documentation
127
+
128
+ To build the full SmallWorld documentation
129
+ * verify [Sphinx](https://www.sphinx-doc.org/) has been installed
130
+ * install SmallWorld with `development` extras enabled
131
+ * make sure you have built the tests since the documentation generation requires output from those tests
132
+ * from the `docs/` directory, run:
133
+
134
+ ```bash
135
+ make html
136
+ ```
137
+
138
+ The resulting documentation will be in `docs/build/html/`
139
+
140
+ Other [supported Sphinx output formats](https://www.sphinx-doc.org/en/master/usage/builders/index.html) can also be generated.
141
+
142
+
164
143
  ## Distribution
165
144
 
166
145
  DISTRIBUTION STATEMENT A. Approved for public release. Distribution is
@@ -0,0 +1,56 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "smallworld-re"
7
+ version = "2.0.0"
8
+ description = "An emulation stack tracking library"
9
+ readme = { file = "README.md", content-type = "text/markdown" }
10
+ requires-python = ">=3.10"
11
+ license = { file = "LICENSE.txt" }
12
+ authors = [
13
+ { name = "MIT Lincoln Laboratory" },
14
+ { email = "smallworld@ll.mit.edu" },
15
+ ]
16
+
17
+ dependencies = [
18
+ "angr",
19
+ "capstone",
20
+ "jsons",
21
+ "lief",
22
+ "pyhidra==1.3.0", # pip-compile does not pin pyhidra in constraints.txt for some reason
23
+ "pypcode",
24
+ "unicorn",
25
+ ]
26
+
27
+ [project.urls]
28
+ Homepage = "https://github.com/smallworld-re/smallworld"
29
+ Issues = "https://github.com/smallworld-re/smallworld/issues"
30
+
31
+ [project.optional-dependencies]
32
+ development = [
33
+ "black",
34
+ "isort",
35
+ "flake8",
36
+ "mypy",
37
+ "pip-tools",
38
+ "pre-commit",
39
+ "sphinx",
40
+ "sphinxcontrib-programoutput",
41
+ "jupyterlab",
42
+ "notebook",
43
+ "timeout-decorator",
44
+ ]
45
+
46
+ [project.scripts]
47
+ smallworld = "smallworld.__main__:main"
48
+
49
+ [tool.setuptools]
50
+ include-package-data = true
51
+ zip-safe = false
52
+ license-files = ["LICENSE.txt"]
53
+
54
+ [tool.setuptools.packages.find]
55
+ include = ["smallworld*"]
56
+
@@ -1,14 +1,22 @@
1
1
  from .analysis import * # noqa: F401, F403
2
2
  from .analysis import __all__ as __analysis__
3
3
  from .colorizer import Colorizer
4
+ from .colorizer_def_use import ColorizerDefUse
4
5
  from .colorizer_summary import ColorizerSummary
5
6
  from .field_detection import FieldDetectionAnalysis, ForcedFieldDetectionAnalysis
6
7
  from .forced_exec import ForcedExecution
8
+ from .trace_execution import TraceExecution
9
+ from .trace_execution_types import CmpInfo, TraceElement, TraceRes
7
10
 
8
11
  __all__ = __analysis__ + [
9
12
  "Colorizer",
10
13
  "ColorizerSummary",
14
+ "ColorizerDefUse",
11
15
  "FieldDetectionAnalysis",
12
16
  "ForcedFieldDetectionAnalysis",
13
17
  "ForcedExecution",
18
+ "TraceExecution",
19
+ "TraceElement",
20
+ "TraceRes",
21
+ "CmpInfo",
14
22
  ]
@@ -0,0 +1,29 @@
1
+ import abc
2
+
3
+ from smallworld.hinting.hinting import Hinter
4
+
5
+ from .. import state, utils
6
+
7
+
8
+ class Analysis(utils.MetadataMixin):
9
+ """An analysis that emits some information about some code, possibly to help with harnessing."""
10
+
11
+ def __init__(self, hinter: Hinter, *args, **kwargs) -> None:
12
+ super().__init__(*args, **kwargs)
13
+ self.hinter = hinter
14
+
15
+ @abc.abstractmethod
16
+ def run(self, machine: state.Machine) -> None:
17
+ """Run the analysis.
18
+
19
+ This function **should not** modify the provided Machine. Instead, it
20
+ should be coppied before modification.
21
+
22
+ Arguments:
23
+ machine: A machine state object on which this analysis should run.
24
+ """
25
+
26
+ pass
27
+
28
+
29
+ __all__ = ["Analysis"]
@@ -5,7 +5,6 @@ from .. import emulators, hinting
5
5
  from . import analysis
6
6
 
7
7
  logger = logging.getLogger(__name__)
8
- hinter = hinting.get_hinter(__name__)
9
8
 
10
9
 
11
10
  class CodeCoverage(analysis.Analysis):
@@ -28,4 +27,4 @@ class CodeCoverage(analysis.Analysis):
28
27
  coverage[pc] = 1
29
28
 
30
29
  hint = hinting.CoverageHint(message="Coverage for execution", coverage=coverage)
31
- hinter.info(hint)
30
+ self.hinter.send(hint)