smallworld-re 1.0.3__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.3 → smallworld_re-2.0.0}/PKG-INFO +74 -42
  2. smallworld_re-1.0.3/smallworld_re.egg-info/PKG-INFO → smallworld_re-2.0.0/README.md +40 -62
  3. smallworld_re-2.0.0/pyproject.toml +56 -0
  4. {smallworld_re-1.0.3 → 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.3 → 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.3 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/field_analysis.py +7 -8
  11. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/hints.py +1 -1
  12. {smallworld_re-1.0.3 → 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.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/divergence.py +1 -2
  16. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/model.py +5 -6
  17. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr_nwbt.py +3 -4
  18. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/code_coverage.py +2 -3
  19. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/code_reachable.py +2 -3
  20. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/control_flow_tracer.py +2 -3
  21. {smallworld_re-1.0.3 → 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.3 → smallworld_re-2.0.0}/smallworld/emulators/__init__.py +3 -1
  24. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/angr.py +30 -9
  25. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/__init__.py +2 -0
  26. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/aarch64.py +1 -1
  27. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/amd64.py +0 -4
  28. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/arm.py +0 -2
  29. {smallworld_re-1.0.3 → 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.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/machdef.py +1 -8
  32. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/mips.py +0 -2
  33. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/mips64.py +0 -2
  34. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/ppc.py +1 -2
  35. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/riscv.py +8 -10
  36. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/machdefs/xtensa.py +7 -4
  37. {smallworld_re-1.0.3 → 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.3 → smallworld_re-2.0.0}/smallworld/emulators/hookable.py +18 -4
  54. {smallworld_re-1.0.3 → 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.3 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/i386.py +30 -7
  59. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/machdef.py +9 -16
  60. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/mips.py +49 -5
  61. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/mips64.py +57 -5
  62. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/panda/machdefs/ppc.py +38 -13
  63. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/panda/panda.py +146 -44
  64. {smallworld_re-1.0.3 → 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.3 → 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.3 → smallworld_re-2.0.0}/smallworld/emulators/unicorn/unicorn.py +52 -13
  72. {smallworld_re-1.0.3 → 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.3 → smallworld_re-2.0.0}/smallworld/hinting/hints.py +50 -18
  75. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/instructions/bsid.py +8 -8
  76. {smallworld_re-1.0.3 → 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.3/smallworld → smallworld_re-2.0.0/smallworld/platforms}/platforms.py +3 -0
  91. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/cpus/__init__.py +2 -0
  92. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/cpus/aarch64.py +0 -9
  93. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/cpus/amd64.py +6 -28
  94. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/cpus/arm.py +0 -11
  95. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/cpus/cpu.py +0 -11
  96. {smallworld_re-1.0.3 → 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.3 → smallworld_re-2.0.0}/smallworld/state/cpus/mips.py +4 -47
  99. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/cpus/mips64.py +18 -58
  100. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/cpus/powerpc.py +2 -9
  101. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/cpus/riscv.py +1 -11
  102. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/cpus/xtensa.py +0 -5
  103. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/code.py +38 -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.3 → smallworld_re-2.0.0}/smallworld/state/memory/elf/elf.py +211 -57
  117. smallworld_re-2.0.0/smallworld/state/memory/elf/register_state.py +36 -0
  118. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/__init__.py +2 -0
  119. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/aarch64.py +3 -1
  120. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/amd64.py +4 -2
  121. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/arm.py +4 -2
  122. {smallworld_re-1.0.3 → 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.3 → smallworld_re-2.0.0}/smallworld/state/memory/elf/structs.py +3 -0
  127. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/heap.py +2 -2
  128. {smallworld_re-1.0.3 → 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.3 → 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.3 → 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.3 → smallworld_re-2.0.0}/smallworld/state/state.py +65 -24
  297. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/unstable/elf.py +16 -31
  298. {smallworld_re-1.0.3 → 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.3 → smallworld_re-2.0.0}/smallworld_re.egg-info/requires.txt +9 -5
  302. smallworld_re-1.0.3/README.md +0 -152
  303. smallworld_re-1.0.3/setup.py +0 -61
  304. smallworld_re-1.0.3/smallworld/analyses/analysis.py +0 -88
  305. smallworld_re-1.0.3/smallworld/analyses/colorizer.py +0 -682
  306. smallworld_re-1.0.3/smallworld/analyses/colorizer_summary.py +0 -100
  307. smallworld_re-1.0.3/smallworld/emulators/panda/machdefs/aarch64.py +0 -93
  308. smallworld_re-1.0.3/smallworld/emulators/panda/machdefs/amd64.py +0 -71
  309. smallworld_re-1.0.3/smallworld/emulators/panda/machdefs/arm.py +0 -89
  310. smallworld_re-1.0.3/smallworld/emulators/unicorn/machdefs/aarch64.py +0 -310
  311. smallworld_re-1.0.3/smallworld/emulators/unicorn/machdefs/amd64.py +0 -326
  312. smallworld_re-1.0.3/smallworld/emulators/unicorn/machdefs/arm.py +0 -321
  313. smallworld_re-1.0.3/smallworld/emulators/unicorn/machdefs/i386.py +0 -137
  314. smallworld_re-1.0.3/smallworld/emulators/unicorn/machdefs/mips.py +0 -202
  315. smallworld_re-1.0.3/smallworld/hinting/hinting.py +0 -214
  316. smallworld_re-1.0.3/smallworld/state/memory/elf/__init__.py +0 -3
  317. smallworld_re-1.0.3/smallworld/state/memory/elf/rela/mips.py +0 -45
  318. smallworld_re-1.0.3/smallworld/state/memory/elf/rela/ppc.py +0 -45
  319. smallworld_re-1.0.3/smallworld/state/models/__init__.py +0 -6
  320. smallworld_re-1.0.3/smallworld/state/models/x86/__init__.py +0 -2
  321. smallworld_re-1.0.3/smallworld/state/models/x86/microsoftcdecl.py +0 -35
  322. smallworld_re-1.0.3/smallworld/state/models/x86/systemv.py +0 -240
  323. smallworld_re-1.0.3/smallworld_re.egg-info/SOURCES.txt +0 -170
  324. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/LICENSE.txt +0 -0
  325. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/setup.cfg +0 -0
  326. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/__init__.py +0 -0
  327. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/__init__.py +0 -0
  328. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/field_detection/guards.py +0 -0
  329. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/forced_exec/__init__.py +0 -0
  330. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/forced_exec/forced_exec.py +0 -0
  331. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/underlays/__init__.py +0 -0
  332. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/underlays/basic.py +0 -0
  333. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/underlays/underlay.py +0 -0
  334. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/__init__.py +0 -0
  335. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/__init__.py +0 -0
  336. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/base.py +0 -0
  337. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/nwbt.py +0 -0
  338. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/typedefs.py +0 -0
  339. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/utils.py +0 -0
  340. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/analyses/unstable/angr/visitor.py +0 -0
  341. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/arch/__init__.py +0 -0
  342. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/arch/aarch64_arch.py +0 -0
  343. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/arch/amd64_arch.py +0 -0
  344. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/arch/i386_arch.py +0 -0
  345. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/__init__.py +0 -0
  346. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/default.py +0 -0
  347. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/exceptions.py +0 -0
  348. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/__init__.py +0 -0
  349. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/bounds.py +0 -0
  350. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/default.py +0 -0
  351. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/exploration/terminate.py +0 -0
  352. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/factory.py +0 -0
  353. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/__init__.py +0 -0
  354. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/default.py +0 -0
  355. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/fixups.py +0 -0
  356. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/memory/memtrack.py +0 -0
  357. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/scratch.py +0 -0
  358. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/simos.py +0 -0
  359. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/angr/utils.py +0 -0
  360. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/panda/__init__.py +0 -0
  361. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/emulators/unicorn/machdefs/__init__.py +0 -0
  362. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/exceptions/__init__.py +0 -0
  363. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/exceptions/exceptions.py +0 -0
  364. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/exceptions/unstable/__init__.py +0 -0
  365. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/exceptions/unstable/exceptions.py +0 -0
  366. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/extern/__init__.py +0 -0
  367. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/extern/ctypes.py +0 -0
  368. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/extern/unstable/__init__.py +0 -0
  369. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/extern/unstable/ghidra.py +0 -0
  370. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/hinting/__init__.py +0 -0
  371. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/hinting/unstable/__init__.py +0 -0
  372. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/hinting/utils.py +0 -0
  373. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/instructions/__init__.py +0 -0
  374. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/instructions/aarch64.py +0 -0
  375. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/instructions/arm.py +0 -0
  376. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/instructions/instructions.py +0 -0
  377. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/instructions/mips.py +0 -0
  378. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/instructions/x86.py +0 -0
  379. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/py.typed +0 -0
  380. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/__init__.py +0 -0
  381. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/__init__.py +0 -0
  382. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/rela.py +0 -0
  383. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/riscv64.py +0 -0
  384. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/elf/rela/xtensa.py +0 -0
  385. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/stack/aarch64.py +0 -0
  386. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/stack/amd64.py +0 -0
  387. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/stack/arm.py +0 -0
  388. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/stack/i386.py +0 -0
  389. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/stack/mips.py +0 -0
  390. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/stack/mips64.py +0 -0
  391. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/stack/ppc.py +0 -0
  392. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/stack/riscv.py +0 -0
  393. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/stack/stack.py +0 -0
  394. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/memory/stack/xtensa.py +0 -0
  395. /smallworld_re-1.0.3/smallworld/state/models/posix.py → /smallworld_re-2.0.0/smallworld/state/models/_posix.py +0 -0
  396. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/models/mmio.py +0 -0
  397. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/unstable/__init__.py +0 -0
  398. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld/state/x86_registers.py +0 -0
  399. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld_re.egg-info/dependency_links.txt +0 -0
  400. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld_re.egg-info/entry_points.txt +0 -0
  401. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld_re.egg-info/not-zip-safe +0 -0
  402. {smallworld_re-1.0.3 → smallworld_re-2.0.0}/smallworld_re.egg-info/top_level.txt +0 -0
@@ -1,20 +1,43 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smallworld-re
3
- Version: 1.0.3
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,17 +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
50
+ Requires-Dist: jupyterlab; extra == "development"
51
+ Requires-Dist: notebook; extra == "development"
52
+ Requires-Dist: timeout-decorator; extra == "development"
33
53
  Dynamic: license-file
34
- Dynamic: provides-extra
35
- Dynamic: requires-dist
36
- Dynamic: requires-python
37
- Dynamic: summary
38
54
 
39
55
  # SmallWorld
40
56
 
@@ -57,19 +73,19 @@ There are two fundamental tenets behind SmallWorld
57
73
 
58
74
  The first of these tenets we hope to support with good software APIs. As a very
59
75
  simple example, consider the harnessing script
60
- [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),
61
77
  composed using SmallWorld, in which registers are initialized and a stack is
62
78
  arranged for running the code in
63
- [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).
64
80
  For a more sophisticated example of SmallWorld's harnessing facitilites,
65
81
  consider the code snippet
66
- [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),
67
83
  which assumes a stack and input pointers to a linked list with very specific
68
84
  format. The harnessing script in this case is more complicated, including
69
85
  specifying type information for the linked list element structures as well as
70
86
  use of a simple allocator abstraction provided by SmallWorld to instantiate
71
87
  nodes and link them together appropriately:
72
- [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).
73
89
 
74
90
  The second tenet we address with purpose-built analyses which leverage a
75
91
  (possibly incomplete) harness script and that use techniques such as [Micro
@@ -85,33 +101,40 @@ SmallWorld directly supports yet.
85
101
 
86
102
  ## Installation
87
103
 
88
- To install SmallWorld from this repo, run:
89
-
104
+ SmallWorld can be installed [directly from PyPi](https://pypi.org/project/smallworld-re/), just:
90
105
  ```bash
91
- pip install .
106
+ pip install smallworld-re
92
107
  ```
93
108
 
94
- ## Usage
95
-
96
- 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:
97
110
 
98
111
  ```bash
99
- smallworld --help
112
+ pip install .
100
113
  ```
101
114
 
115
+ The result will be a library that can be used for harnessing and analyzing. See the examples for a walkthrough.
116
+
102
117
  ## Contributing
103
118
 
104
119
  Pull requests and issues more than welcome.
105
120
 
106
121
  ### Development
107
122
 
108
- 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
109
132
  editable mode with extras for development and testing. Use the include
110
133
  constraints to install frozen versions and ensure a consistent development
111
134
  environment.
112
135
 
113
136
  ```bash
114
- pip install -e .[development] -c constraints.txt
137
+ pip install -e ".[development]" -c constraints.txt
115
138
  ```
116
139
 
117
140
  #### Code Style
@@ -124,17 +147,6 @@ installing development dependencies), run:
124
147
  pre-commit install
125
148
  ```
126
149
 
127
- ### Documentation
128
-
129
- To build the full SmallWorld documentation, after installing SmallWorld with
130
- `development` extras enabled, from the `docs/` directory, run:
131
-
132
- ```bash
133
- make html
134
- ```
135
-
136
- Or other [supported Sphinx output formats](https://www.sphinx-doc.org/en/master/usage/builders/index.html).
137
-
138
150
  ### Testing
139
151
 
140
152
  #### Prerequisites
@@ -150,6 +162,9 @@ You can then build the tests by running:
150
162
 
151
163
  ```bash
152
164
  make -C tests
165
+
166
+ ulimit -c unlimited
167
+ make -C tests/elf_core
153
168
  ```
154
169
 
155
170
  #### Running Tests
@@ -162,6 +177,23 @@ python3 tests/unit.py
162
177
  python3 tests/integration.py
163
178
  ```
164
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
+
165
197
  ## Distribution
166
198
 
167
199
  DISTRIBUTION STATEMENT A. Approved for public release. Distribution is
@@ -1,41 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: smallworld-re
3
- Version: 1.0.3
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: license-file
34
- Dynamic: provides-extra
35
- Dynamic: requires-dist
36
- Dynamic: requires-python
37
- Dynamic: summary
38
-
39
1
  # SmallWorld
40
2
 
41
3
  [![commit-style-image]][conventional]
@@ -57,19 +19,19 @@ There are two fundamental tenets behind SmallWorld
57
19
 
58
20
  The first of these tenets we hope to support with good software APIs. As a very
59
21
  simple example, consider the harnessing script
60
- [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),
61
23
  composed using SmallWorld, in which registers are initialized and a stack is
62
24
  arranged for running the code in
63
- [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).
64
26
  For a more sophisticated example of SmallWorld's harnessing facitilites,
65
27
  consider the code snippet
66
- [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),
67
29
  which assumes a stack and input pointers to a linked list with very specific
68
30
  format. The harnessing script in this case is more complicated, including
69
31
  specifying type information for the linked list element structures as well as
70
32
  use of a simple allocator abstraction provided by SmallWorld to instantiate
71
33
  nodes and link them together appropriately:
72
- [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).
73
35
 
74
36
  The second tenet we address with purpose-built analyses which leverage a
75
37
  (possibly incomplete) harness script and that use techniques such as [Micro
@@ -85,33 +47,40 @@ SmallWorld directly supports yet.
85
47
 
86
48
  ## Installation
87
49
 
88
- To install SmallWorld from this repo, run:
89
-
50
+ SmallWorld can be installed [directly from PyPi](https://pypi.org/project/smallworld-re/), just:
90
51
  ```bash
91
- pip install .
52
+ pip install smallworld-re
92
53
  ```
93
54
 
94
- ## Usage
95
-
96
- 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:
97
56
 
98
57
  ```bash
99
- smallworld --help
58
+ pip install .
100
59
  ```
101
60
 
61
+ The result will be a library that can be used for harnessing and analyzing. See the examples for a walkthrough.
62
+
102
63
  ## Contributing
103
64
 
104
65
  Pull requests and issues more than welcome.
105
66
 
106
67
  ### Development
107
68
 
108
- 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
109
78
  editable mode with extras for development and testing. Use the include
110
79
  constraints to install frozen versions and ensure a consistent development
111
80
  environment.
112
81
 
113
82
  ```bash
114
- pip install -e .[development] -c constraints.txt
83
+ pip install -e ".[development]" -c constraints.txt
115
84
  ```
116
85
 
117
86
  #### Code Style
@@ -124,17 +93,6 @@ installing development dependencies), run:
124
93
  pre-commit install
125
94
  ```
126
95
 
127
- ### Documentation
128
-
129
- To build the full SmallWorld documentation, after installing SmallWorld with
130
- `development` extras enabled, from the `docs/` directory, run:
131
-
132
- ```bash
133
- make html
134
- ```
135
-
136
- Or other [supported Sphinx output formats](https://www.sphinx-doc.org/en/master/usage/builders/index.html).
137
-
138
96
  ### Testing
139
97
 
140
98
  #### Prerequisites
@@ -150,6 +108,9 @@ You can then build the tests by running:
150
108
 
151
109
  ```bash
152
110
  make -C tests
111
+
112
+ ulimit -c unlimited
113
+ make -C tests/elf_core
153
114
  ```
154
115
 
155
116
  #### Running Tests
@@ -162,6 +123,23 @@ python3 tests/unit.py
162
123
  python3 tests/integration.py
163
124
  ```
164
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
+
165
143
  ## Distribution
166
144
 
167
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)