smallworld-re 1.0.3__py3-none-any.whl → 2.0.0__py3-none-any.whl

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 (306) hide show
  1. smallworld/analyses/__init__.py +8 -0
  2. smallworld/analyses/analysis.py +8 -67
  3. smallworld/analyses/code_coverage.py +1 -2
  4. smallworld/analyses/colorizer.py +301 -534
  5. smallworld/analyses/colorizer_def_use.py +217 -0
  6. smallworld/analyses/colorizer_summary.py +173 -83
  7. smallworld/analyses/field_detection/field_analysis.py +7 -8
  8. smallworld/analyses/field_detection/hints.py +1 -1
  9. smallworld/analyses/field_detection/malloc.py +2 -2
  10. smallworld/analyses/trace_execution.py +160 -0
  11. smallworld/analyses/trace_execution_types.py +42 -0
  12. smallworld/analyses/unstable/angr/divergence.py +1 -2
  13. smallworld/analyses/unstable/angr/model.py +5 -6
  14. smallworld/analyses/unstable/angr_nwbt.py +3 -4
  15. smallworld/analyses/unstable/code_coverage.py +2 -3
  16. smallworld/analyses/unstable/code_reachable.py +2 -3
  17. smallworld/analyses/unstable/control_flow_tracer.py +2 -3
  18. smallworld/analyses/unstable/pointer_finder.py +2 -3
  19. smallworld/analyses/unstable/utils/tui.py +71 -0
  20. smallworld/emulators/__init__.py +3 -1
  21. smallworld/emulators/angr/angr.py +30 -9
  22. smallworld/emulators/angr/machdefs/__init__.py +2 -0
  23. smallworld/emulators/angr/machdefs/aarch64.py +1 -1
  24. smallworld/emulators/angr/machdefs/amd64.py +0 -4
  25. smallworld/emulators/angr/machdefs/arm.py +0 -2
  26. smallworld/emulators/angr/machdefs/i386.py +0 -2
  27. smallworld/emulators/angr/machdefs/loongarch.py +340 -0
  28. smallworld/emulators/angr/machdefs/machdef.py +1 -8
  29. smallworld/emulators/angr/machdefs/mips.py +0 -2
  30. smallworld/emulators/angr/machdefs/mips64.py +0 -2
  31. smallworld/emulators/angr/machdefs/ppc.py +1 -2
  32. smallworld/emulators/angr/machdefs/riscv.py +8 -10
  33. smallworld/emulators/angr/machdefs/xtensa.py +7 -4
  34. smallworld/emulators/emulator.py +22 -0
  35. smallworld/emulators/ghidra/__init__.py +37 -0
  36. smallworld/emulators/ghidra/ghidra.py +513 -0
  37. smallworld/emulators/ghidra/machdefs/__init__.py +31 -0
  38. smallworld/emulators/ghidra/machdefs/aarch64.py +289 -0
  39. smallworld/emulators/ghidra/machdefs/amd64.py +185 -0
  40. smallworld/emulators/ghidra/machdefs/arm.py +370 -0
  41. smallworld/emulators/ghidra/machdefs/i386.py +109 -0
  42. smallworld/emulators/ghidra/machdefs/loongarch.py +162 -0
  43. smallworld/emulators/ghidra/machdefs/machdef.py +81 -0
  44. smallworld/emulators/ghidra/machdefs/mips.py +163 -0
  45. smallworld/emulators/ghidra/machdefs/mips64.py +186 -0
  46. smallworld/emulators/ghidra/machdefs/ppc.py +98 -0
  47. smallworld/emulators/ghidra/machdefs/riscv.py +208 -0
  48. smallworld/emulators/ghidra/machdefs/xtensa.py +21 -0
  49. smallworld/emulators/ghidra/typing.py +28 -0
  50. smallworld/emulators/hookable.py +18 -4
  51. smallworld/emulators/panda/machdefs/__init__.py +2 -2
  52. smallworld/emulators/panda/machdefs/aarch64.py +186 -11
  53. smallworld/emulators/panda/machdefs/amd64.py +103 -11
  54. smallworld/emulators/panda/machdefs/arm.py +216 -20
  55. smallworld/emulators/panda/machdefs/i386.py +30 -7
  56. smallworld/emulators/panda/machdefs/machdef.py +9 -16
  57. smallworld/emulators/panda/machdefs/mips.py +49 -5
  58. smallworld/emulators/panda/machdefs/mips64.py +57 -5
  59. smallworld/emulators/panda/machdefs/ppc.py +38 -13
  60. smallworld/emulators/panda/panda.py +146 -44
  61. smallworld/emulators/unicorn/__init__.py +2 -0
  62. smallworld/emulators/unicorn/machdefs/aarch64.py +253 -264
  63. smallworld/emulators/unicorn/machdefs/amd64.py +254 -259
  64. smallworld/emulators/unicorn/machdefs/arm.py +200 -212
  65. smallworld/emulators/unicorn/machdefs/i386.py +84 -90
  66. smallworld/emulators/unicorn/machdefs/machdef.py +2 -23
  67. smallworld/emulators/unicorn/machdefs/mips.py +127 -135
  68. smallworld/emulators/unicorn/unicorn.py +52 -13
  69. smallworld/helpers.py +4 -19
  70. smallworld/hinting/hinting.py +22 -192
  71. smallworld/hinting/hints.py +50 -18
  72. smallworld/instructions/bsid.py +8 -8
  73. smallworld/logging.py +4 -2
  74. smallworld/platforms/__init__.py +12 -0
  75. smallworld/platforms/defs/__init__.py +36 -0
  76. smallworld/platforms/defs/aarch64.py +450 -0
  77. smallworld/platforms/defs/amd64.py +463 -0
  78. smallworld/platforms/defs/arm.py +519 -0
  79. smallworld/platforms/defs/i386.py +258 -0
  80. smallworld/platforms/defs/loongarch.py +270 -0
  81. smallworld/platforms/defs/mips.py +321 -0
  82. smallworld/platforms/defs/mips64.py +313 -0
  83. smallworld/platforms/defs/platformdef.py +97 -0
  84. smallworld/platforms/defs/powerpc.py +259 -0
  85. smallworld/platforms/defs/riscv.py +257 -0
  86. smallworld/platforms/defs/xtensa.py +96 -0
  87. smallworld/{platforms.py → platforms/platforms.py} +3 -0
  88. smallworld/state/cpus/__init__.py +2 -0
  89. smallworld/state/cpus/aarch64.py +0 -9
  90. smallworld/state/cpus/amd64.py +6 -28
  91. smallworld/state/cpus/arm.py +0 -11
  92. smallworld/state/cpus/cpu.py +0 -11
  93. smallworld/state/cpus/i386.py +0 -7
  94. smallworld/state/cpus/loongarch.py +299 -0
  95. smallworld/state/cpus/mips.py +4 -47
  96. smallworld/state/cpus/mips64.py +18 -58
  97. smallworld/state/cpus/powerpc.py +2 -9
  98. smallworld/state/cpus/riscv.py +1 -11
  99. smallworld/state/cpus/xtensa.py +0 -5
  100. smallworld/state/memory/code.py +38 -2
  101. smallworld/state/memory/elf/__init__.py +5 -1
  102. smallworld/state/memory/elf/coredump/__init__.py +3 -0
  103. smallworld/state/memory/elf/coredump/coredump.py +46 -0
  104. smallworld/state/memory/elf/coredump/prstatus/__init__.py +27 -0
  105. smallworld/state/memory/elf/coredump/prstatus/aarch64.py +46 -0
  106. smallworld/state/memory/elf/coredump/prstatus/amd64.py +40 -0
  107. smallworld/state/memory/elf/coredump/prstatus/arm.py +53 -0
  108. smallworld/state/memory/elf/coredump/prstatus/i386.py +30 -0
  109. smallworld/state/memory/elf/coredump/prstatus/mips.py +55 -0
  110. smallworld/state/memory/elf/coredump/prstatus/mips64.py +57 -0
  111. smallworld/state/memory/elf/coredump/prstatus/ppc.py +82 -0
  112. smallworld/state/memory/elf/coredump/prstatus/prstatus.py +129 -0
  113. smallworld/state/memory/elf/elf.py +211 -57
  114. smallworld/state/memory/elf/register_state.py +36 -0
  115. smallworld/state/memory/elf/rela/__init__.py +2 -0
  116. smallworld/state/memory/elf/rela/aarch64.py +3 -1
  117. smallworld/state/memory/elf/rela/amd64.py +4 -2
  118. smallworld/state/memory/elf/rela/arm.py +4 -2
  119. smallworld/state/memory/elf/rela/i386.py +4 -2
  120. smallworld/state/memory/elf/rela/loongarch.py +32 -0
  121. smallworld/state/memory/elf/rela/mips.py +39 -18
  122. smallworld/state/memory/elf/rela/ppc.py +31 -14
  123. smallworld/state/memory/elf/structs.py +3 -0
  124. smallworld/state/memory/heap.py +2 -2
  125. smallworld/state/memory/memory.py +18 -0
  126. smallworld/state/memory/pe/__init__.py +3 -0
  127. smallworld/state/memory/pe/pe.py +361 -0
  128. smallworld/state/memory/pe/structs.py +60 -0
  129. smallworld/state/memory/stack/__init__.py +2 -0
  130. smallworld/state/memory/stack/loongarch.py +26 -0
  131. smallworld/state/models/__init__.py +29 -2
  132. smallworld/state/models/aarch64/__init__.py +1 -0
  133. smallworld/state/models/aarch64/systemv/__init__.py +6 -0
  134. smallworld/state/models/aarch64/systemv/c99/__init__.py +12 -0
  135. smallworld/state/models/aarch64/systemv/c99/signal.py +16 -0
  136. smallworld/state/models/aarch64/systemv/c99/stdio.py +265 -0
  137. smallworld/state/models/aarch64/systemv/c99/stdlib.py +169 -0
  138. smallworld/state/models/aarch64/systemv/c99/string.py +139 -0
  139. smallworld/state/models/aarch64/systemv/c99/time.py +61 -0
  140. smallworld/state/models/aarch64/systemv/posix/__init__.py +6 -0
  141. smallworld/state/models/aarch64/systemv/posix/libgen.py +16 -0
  142. smallworld/state/models/aarch64/systemv/posix/signal.py +157 -0
  143. smallworld/state/models/aarch64/systemv/systemv.py +80 -0
  144. smallworld/state/models/amd64/__init__.py +1 -0
  145. smallworld/state/models/amd64/systemv/__init__.py +6 -0
  146. smallworld/state/models/amd64/systemv/c99/__init__.py +12 -0
  147. smallworld/state/models/amd64/systemv/c99/signal.py +16 -0
  148. smallworld/state/models/amd64/systemv/c99/stdio.py +265 -0
  149. smallworld/state/models/amd64/systemv/c99/stdlib.py +169 -0
  150. smallworld/state/models/amd64/systemv/c99/string.py +139 -0
  151. smallworld/state/models/amd64/systemv/c99/time.py +61 -0
  152. smallworld/state/models/amd64/systemv/posix/__init__.py +6 -0
  153. smallworld/state/models/amd64/systemv/posix/libgen.py +16 -0
  154. smallworld/state/models/amd64/systemv/posix/signal.py +157 -0
  155. smallworld/state/models/amd64/systemv/systemv.py +78 -0
  156. smallworld/state/models/armel/__init__.py +1 -0
  157. smallworld/state/models/armel/systemv/__init__.py +6 -0
  158. smallworld/state/models/armel/systemv/c99/__init__.py +12 -0
  159. smallworld/state/models/armel/systemv/c99/signal.py +16 -0
  160. smallworld/state/models/armel/systemv/c99/stdio.py +265 -0
  161. smallworld/state/models/armel/systemv/c99/stdlib.py +169 -0
  162. smallworld/state/models/armel/systemv/c99/string.py +139 -0
  163. smallworld/state/models/armel/systemv/c99/time.py +61 -0
  164. smallworld/state/models/armel/systemv/posix/__init__.py +6 -0
  165. smallworld/state/models/armel/systemv/posix/libgen.py +16 -0
  166. smallworld/state/models/armel/systemv/posix/signal.py +157 -0
  167. smallworld/state/models/armel/systemv/systemv.py +82 -0
  168. smallworld/state/models/armhf/__init__.py +1 -0
  169. smallworld/state/models/armhf/systemv/__init__.py +6 -0
  170. smallworld/state/models/armhf/systemv/c99/__init__.py +12 -0
  171. smallworld/state/models/armhf/systemv/c99/signal.py +16 -0
  172. smallworld/state/models/armhf/systemv/c99/stdio.py +265 -0
  173. smallworld/state/models/armhf/systemv/c99/stdlib.py +169 -0
  174. smallworld/state/models/armhf/systemv/c99/string.py +139 -0
  175. smallworld/state/models/armhf/systemv/c99/time.py +61 -0
  176. smallworld/state/models/armhf/systemv/posix/__init__.py +6 -0
  177. smallworld/state/models/armhf/systemv/posix/libgen.py +16 -0
  178. smallworld/state/models/armhf/systemv/posix/signal.py +157 -0
  179. smallworld/state/models/armhf/systemv/systemv.py +77 -0
  180. smallworld/state/models/c99/__init__.py +12 -0
  181. smallworld/state/models/c99/fmt_print.py +915 -0
  182. smallworld/state/models/c99/fmt_scan.py +864 -0
  183. smallworld/state/models/c99/math.py +362 -0
  184. smallworld/state/models/c99/signal.py +71 -0
  185. smallworld/state/models/c99/stdio.py +1305 -0
  186. smallworld/state/models/c99/stdlib.py +595 -0
  187. smallworld/state/models/c99/string.py +674 -0
  188. smallworld/state/models/c99/time.py +340 -0
  189. smallworld/state/models/c99/utils.py +89 -0
  190. smallworld/state/models/cstd.py +759 -0
  191. smallworld/state/models/errno.py +581 -0
  192. smallworld/state/models/filedesc.py +515 -0
  193. smallworld/state/models/i386/__init__.py +1 -0
  194. smallworld/state/models/i386/systemv/__init__.py +6 -0
  195. smallworld/state/models/i386/systemv/c99/__init__.py +12 -0
  196. smallworld/state/models/i386/systemv/c99/signal.py +16 -0
  197. smallworld/state/models/i386/systemv/c99/stdio.py +265 -0
  198. smallworld/state/models/i386/systemv/c99/stdlib.py +169 -0
  199. smallworld/state/models/i386/systemv/c99/string.py +139 -0
  200. smallworld/state/models/i386/systemv/c99/time.py +61 -0
  201. smallworld/state/models/i386/systemv/posix/__init__.py +6 -0
  202. smallworld/state/models/i386/systemv/posix/libgen.py +16 -0
  203. smallworld/state/models/i386/systemv/posix/signal.py +157 -0
  204. smallworld/state/models/i386/systemv/systemv.py +71 -0
  205. smallworld/state/models/loongarch64/__init__.py +1 -0
  206. smallworld/state/models/loongarch64/systemv/__init__.py +6 -0
  207. smallworld/state/models/loongarch64/systemv/c99/__init__.py +12 -0
  208. smallworld/state/models/loongarch64/systemv/c99/signal.py +16 -0
  209. smallworld/state/models/loongarch64/systemv/c99/stdio.py +265 -0
  210. smallworld/state/models/loongarch64/systemv/c99/stdlib.py +169 -0
  211. smallworld/state/models/loongarch64/systemv/c99/string.py +139 -0
  212. smallworld/state/models/loongarch64/systemv/c99/time.py +61 -0
  213. smallworld/state/models/loongarch64/systemv/posix/__init__.py +6 -0
  214. smallworld/state/models/loongarch64/systemv/posix/libgen.py +16 -0
  215. smallworld/state/models/loongarch64/systemv/posix/signal.py +157 -0
  216. smallworld/state/models/loongarch64/systemv/systemv.py +83 -0
  217. smallworld/state/models/mips/__init__.py +1 -0
  218. smallworld/state/models/mips/systemv/__init__.py +6 -0
  219. smallworld/state/models/mips/systemv/c99/__init__.py +12 -0
  220. smallworld/state/models/mips/systemv/c99/signal.py +16 -0
  221. smallworld/state/models/mips/systemv/c99/stdio.py +265 -0
  222. smallworld/state/models/mips/systemv/c99/stdlib.py +169 -0
  223. smallworld/state/models/mips/systemv/c99/string.py +139 -0
  224. smallworld/state/models/mips/systemv/c99/time.py +61 -0
  225. smallworld/state/models/mips/systemv/posix/__init__.py +6 -0
  226. smallworld/state/models/mips/systemv/posix/libgen.py +16 -0
  227. smallworld/state/models/mips/systemv/posix/signal.py +157 -0
  228. smallworld/state/models/mips/systemv/systemv.py +78 -0
  229. smallworld/state/models/mips64/__init__.py +1 -0
  230. smallworld/state/models/mips64/systemv/__init__.py +6 -0
  231. smallworld/state/models/mips64/systemv/c99/__init__.py +12 -0
  232. smallworld/state/models/mips64/systemv/c99/signal.py +16 -0
  233. smallworld/state/models/mips64/systemv/c99/stdio.py +265 -0
  234. smallworld/state/models/mips64/systemv/c99/stdlib.py +169 -0
  235. smallworld/state/models/mips64/systemv/c99/string.py +139 -0
  236. smallworld/state/models/mips64/systemv/c99/time.py +61 -0
  237. smallworld/state/models/mips64/systemv/posix/__init__.py +6 -0
  238. smallworld/state/models/mips64/systemv/posix/libgen.py +16 -0
  239. smallworld/state/models/mips64/systemv/posix/signal.py +157 -0
  240. smallworld/state/models/mips64/systemv/systemv.py +98 -0
  241. smallworld/state/models/mips64el/__init__.py +1 -0
  242. smallworld/state/models/mips64el/systemv/__init__.py +6 -0
  243. smallworld/state/models/mips64el/systemv/c99/__init__.py +12 -0
  244. smallworld/state/models/mips64el/systemv/c99/signal.py +16 -0
  245. smallworld/state/models/mips64el/systemv/c99/stdio.py +265 -0
  246. smallworld/state/models/mips64el/systemv/c99/stdlib.py +169 -0
  247. smallworld/state/models/mips64el/systemv/c99/string.py +139 -0
  248. smallworld/state/models/mips64el/systemv/c99/time.py +61 -0
  249. smallworld/state/models/mips64el/systemv/posix/__init__.py +6 -0
  250. smallworld/state/models/mips64el/systemv/posix/libgen.py +16 -0
  251. smallworld/state/models/mips64el/systemv/posix/signal.py +157 -0
  252. smallworld/state/models/mips64el/systemv/systemv.py +96 -0
  253. smallworld/state/models/mipsel/__init__.py +1 -0
  254. smallworld/state/models/mipsel/systemv/__init__.py +6 -0
  255. smallworld/state/models/mipsel/systemv/c99/__init__.py +12 -0
  256. smallworld/state/models/mipsel/systemv/c99/signal.py +16 -0
  257. smallworld/state/models/mipsel/systemv/c99/stdio.py +265 -0
  258. smallworld/state/models/mipsel/systemv/c99/stdlib.py +169 -0
  259. smallworld/state/models/mipsel/systemv/c99/string.py +139 -0
  260. smallworld/state/models/mipsel/systemv/c99/time.py +61 -0
  261. smallworld/state/models/mipsel/systemv/posix/__init__.py +6 -0
  262. smallworld/state/models/mipsel/systemv/posix/libgen.py +16 -0
  263. smallworld/state/models/mipsel/systemv/posix/signal.py +157 -0
  264. smallworld/state/models/mipsel/systemv/systemv.py +78 -0
  265. smallworld/state/models/model.py +27 -2
  266. smallworld/state/models/posix/__init__.py +6 -0
  267. smallworld/state/models/posix/libgen.py +123 -0
  268. smallworld/state/models/posix/signal.py +690 -0
  269. smallworld/state/models/powerpc/__init__.py +1 -0
  270. smallworld/state/models/powerpc/systemv/__init__.py +6 -0
  271. smallworld/state/models/powerpc/systemv/c99/__init__.py +12 -0
  272. smallworld/state/models/powerpc/systemv/c99/signal.py +16 -0
  273. smallworld/state/models/powerpc/systemv/c99/stdio.py +265 -0
  274. smallworld/state/models/powerpc/systemv/c99/stdlib.py +169 -0
  275. smallworld/state/models/powerpc/systemv/c99/string.py +139 -0
  276. smallworld/state/models/powerpc/systemv/c99/time.py +61 -0
  277. smallworld/state/models/powerpc/systemv/posix/__init__.py +6 -0
  278. smallworld/state/models/powerpc/systemv/posix/libgen.py +16 -0
  279. smallworld/state/models/powerpc/systemv/posix/signal.py +157 -0
  280. smallworld/state/models/powerpc/systemv/systemv.py +93 -0
  281. smallworld/state/models/riscv64/__init__.py +1 -0
  282. smallworld/state/models/riscv64/systemv/__init__.py +6 -0
  283. smallworld/state/models/riscv64/systemv/c99/__init__.py +12 -0
  284. smallworld/state/models/riscv64/systemv/c99/signal.py +16 -0
  285. smallworld/state/models/riscv64/systemv/c99/stdio.py +265 -0
  286. smallworld/state/models/riscv64/systemv/c99/stdlib.py +169 -0
  287. smallworld/state/models/riscv64/systemv/c99/string.py +139 -0
  288. smallworld/state/models/riscv64/systemv/c99/time.py +61 -0
  289. smallworld/state/models/riscv64/systemv/posix/__init__.py +6 -0
  290. smallworld/state/models/riscv64/systemv/posix/libgen.py +16 -0
  291. smallworld/state/models/riscv64/systemv/posix/signal.py +157 -0
  292. smallworld/state/models/riscv64/systemv/systemv.py +85 -0
  293. smallworld/state/state.py +65 -24
  294. smallworld/state/unstable/elf.py +16 -31
  295. smallworld/utils.py +6 -1
  296. {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/METADATA +74 -42
  297. smallworld_re-2.0.0.dist-info/RECORD +374 -0
  298. {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/WHEEL +1 -1
  299. smallworld/state/models/x86/__init__.py +0 -2
  300. smallworld/state/models/x86/microsoftcdecl.py +0 -35
  301. smallworld/state/models/x86/systemv.py +0 -240
  302. smallworld_re-1.0.3.dist-info/RECORD +0 -166
  303. /smallworld/state/models/{posix.py → _posix.py} +0 -0
  304. {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/entry_points.txt +0 -0
  305. {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/licenses/LICENSE.txt +0 -0
  306. {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,157 @@
1
+ from ....posix.signal import (
2
+ BsdSignal,
3
+ Kill,
4
+ Killpg,
5
+ PthreadKill,
6
+ PthreadSigmask,
7
+ Sigaction,
8
+ Sigaddset,
9
+ Sigaltstack,
10
+ Sigdelset,
11
+ Sigemptyset,
12
+ Sigfillset,
13
+ Sighold,
14
+ Sigignore,
15
+ Siginterrupt,
16
+ Sigismember,
17
+ Sigpause,
18
+ Sigpending,
19
+ Sigprocmask,
20
+ Sigqueue,
21
+ Sigrelse,
22
+ Sigset,
23
+ Sigsuspend,
24
+ Sigtimedwait,
25
+ Sigwait,
26
+ Sigwaitinfo,
27
+ )
28
+ from ..systemv import ArmELSysVModel
29
+
30
+
31
+ class ArmELSysVBsdSignal(BsdSignal, ArmELSysVModel):
32
+ pass
33
+
34
+
35
+ class ArmELSysVKill(Kill, ArmELSysVModel):
36
+ pass
37
+
38
+
39
+ class ArmELSysVKillpg(Killpg, ArmELSysVModel):
40
+ pass
41
+
42
+
43
+ class ArmELSysVPthreadKill(PthreadKill, ArmELSysVModel):
44
+ pass
45
+
46
+
47
+ class ArmELSysVPthreadSigmask(PthreadSigmask, ArmELSysVModel):
48
+ pass
49
+
50
+
51
+ class ArmELSysVSigaction(Sigaction, ArmELSysVModel):
52
+ pass
53
+
54
+
55
+ class ArmELSysVSigaddset(Sigaddset, ArmELSysVModel):
56
+ pass
57
+
58
+
59
+ class ArmELSysVSigaltstack(Sigaltstack, ArmELSysVModel):
60
+ pass
61
+
62
+
63
+ class ArmELSysVSigdelset(Sigdelset, ArmELSysVModel):
64
+ pass
65
+
66
+
67
+ class ArmELSysVSigemptyset(Sigemptyset, ArmELSysVModel):
68
+ pass
69
+
70
+
71
+ class ArmELSysVSigfillset(Sigfillset, ArmELSysVModel):
72
+ pass
73
+
74
+
75
+ class ArmELSysVSighold(Sighold, ArmELSysVModel):
76
+ pass
77
+
78
+
79
+ class ArmELSysVSigignore(Sigignore, ArmELSysVModel):
80
+ pass
81
+
82
+
83
+ class ArmELSysVSiginterrupt(Siginterrupt, ArmELSysVModel):
84
+ pass
85
+
86
+
87
+ class ArmELSysVSigismember(Sigismember, ArmELSysVModel):
88
+ pass
89
+
90
+
91
+ class ArmELSysVSigpause(Sigpause, ArmELSysVModel):
92
+ pass
93
+
94
+
95
+ class ArmELSysVSigpending(Sigpending, ArmELSysVModel):
96
+ pass
97
+
98
+
99
+ class ArmELSysVSigprocmask(Sigprocmask, ArmELSysVModel):
100
+ pass
101
+
102
+
103
+ class ArmELSysVSigqueue(Sigqueue, ArmELSysVModel):
104
+ pass
105
+
106
+
107
+ class ArmELSysVSigrelse(Sigrelse, ArmELSysVModel):
108
+ pass
109
+
110
+
111
+ class ArmELSysVSigset(Sigset, ArmELSysVModel):
112
+ pass
113
+
114
+
115
+ class ArmELSysVSigsuspend(Sigsuspend, ArmELSysVModel):
116
+ pass
117
+
118
+
119
+ class ArmELSysVSigtimedwait(Sigtimedwait, ArmELSysVModel):
120
+ pass
121
+
122
+
123
+ class ArmELSysVSigwait(Sigwait, ArmELSysVModel):
124
+ pass
125
+
126
+
127
+ class ArmELSysVSigwaitinfo(Sigwaitinfo, ArmELSysVModel):
128
+ pass
129
+
130
+
131
+ __all__ = [
132
+ "ArmELSysVBsdSignal",
133
+ "ArmELSysVKill",
134
+ "ArmELSysVKillpg",
135
+ "ArmELSysVPthreadKill",
136
+ "ArmELSysVPthreadSigmask",
137
+ "ArmELSysVSigaction",
138
+ "ArmELSysVSigaddset",
139
+ "ArmELSysVSigaltstack",
140
+ "ArmELSysVSigdelset",
141
+ "ArmELSysVSigemptyset",
142
+ "ArmELSysVSigfillset",
143
+ "ArmELSysVSighold",
144
+ "ArmELSysVSigignore",
145
+ "ArmELSysVSiginterrupt",
146
+ "ArmELSysVSigismember",
147
+ "ArmELSysVSigpause",
148
+ "ArmELSysVSigpending",
149
+ "ArmELSysVSigprocmask",
150
+ "ArmELSysVSigqueue",
151
+ "ArmELSysVSigrelse",
152
+ "ArmELSysVSigset",
153
+ "ArmELSysVSigsuspend",
154
+ "ArmELSysVSigtimedwait",
155
+ "ArmELSysVSigwait",
156
+ "ArmELSysVSigwaitinfo",
157
+ ]
@@ -0,0 +1,82 @@
1
+ import struct
2
+
3
+ from ..... import emulators, platforms
4
+ from ...cstd import ArgumentType, CStdModel
5
+
6
+
7
+ class ArmELSysVModel(CStdModel):
8
+ """Base class for C models using the ARM32 GNU EABI
9
+
10
+ This is a specific ARM System V ABI.
11
+ It generally applies to ARMv5t or ARMv6.
12
+ """
13
+
14
+ platform = platforms.Platform(
15
+ platforms.Architecture.ARM_V5T, platforms.Byteorder.LITTLE
16
+ )
17
+ abi = platforms.ABI.SYSTEMV
18
+
19
+ _int_sign_mask = 0x80000000
20
+ _int_inv_mask = 0xFFFFFFFF
21
+ _long_sign_mask = 0x80000000
22
+ _long_inv_mask = 0xFFFFFFFF
23
+ _long_long_sign_mask = 0x8000000000000000
24
+ _long_long_inv_mask = 0xFFFFFFFFFFFFFFFF
25
+
26
+ _four_byte_types = {
27
+ ArgumentType.INT,
28
+ ArgumentType.UINT,
29
+ ArgumentType.LONG,
30
+ ArgumentType.ULONG,
31
+ ArgumentType.SIZE_T,
32
+ ArgumentType.SSIZE_T,
33
+ ArgumentType.POINTER,
34
+ }
35
+
36
+ _eight_byte_types = {
37
+ ArgumentType.LONGLONG,
38
+ ArgumentType.ULONGLONG,
39
+ }
40
+
41
+ _four_byte_arg_regs = ["r0", "r1", "r2", "r3"]
42
+ _eight_byte_arg_regs = ["r0", "r1", "r2", "r3"]
43
+
44
+ _soft_float = True
45
+ _variadic_soft_float = True
46
+ _floats_are_doubles = False
47
+ _float_arg_regs = []
48
+ _double_arg_regs = []
49
+
50
+ _init_stack_offset = 0
51
+ _align_stack = True
52
+ _eight_byte_reg_size = 2
53
+ _double_reg_size = 2
54
+ _four_byte_stack_size = 4
55
+ _eight_byte_stack_size = 8
56
+ _float_stack_size = 4
57
+ _double_stack_size = 8
58
+
59
+ def _return_4_byte(self, emulator: emulators.Emulator, val: int) -> None:
60
+ emulator.write_register("r0", val)
61
+
62
+ def _return_8_byte(self, emulator: emulators.Emulator, val: int) -> None:
63
+ lo = val & self._int_inv_mask
64
+ hi = val >> 32 & self._int_inv_mask
65
+
66
+ emulator.write_register("r0", lo)
67
+ emulator.write_register("r1", hi)
68
+
69
+ def _return_float(self, emulator: emulators.Emulator, val: float) -> None:
70
+ data = struct.pack("<f", val)
71
+ intval = int.from_bytes(data, "little")
72
+ emulator.write_register("r0", intval)
73
+
74
+ def _return_double(self, emulator: emulators.Emulator, val: float) -> None:
75
+ data = struct.pack("<d", val)
76
+ intval = int.from_bytes(data, "little")
77
+
78
+ lo = intval & self._int_inv_mask
79
+ hi = (intval >> 32) & self._int_inv_mask
80
+
81
+ emulator.write_register("r0", lo)
82
+ emulator.write_register("r1", hi)
@@ -0,0 +1 @@
1
+ from .systemv import __all__ as __sysv__ # noqa: F401
@@ -0,0 +1,6 @@
1
+ from .c99 import * # noqa: F401,F403
2
+ from .c99 import __all__ as __c99__
3
+ from .posix import * # noqa: F401,F403
4
+ from .posix import __all__ as __posix__
5
+
6
+ __all__ = __c99__ + __posix__
@@ -0,0 +1,12 @@
1
+ from .signal import * # noqa F401,F403
2
+ from .signal import __all__ as __signal__
3
+ from .stdio import * # noqa F401,F403
4
+ from .stdio import __all__ as __stdio__
5
+ from .stdlib import * # noqa F401,F403
6
+ from .stdlib import __all__ as __stdlib__
7
+ from .string import * # noqa F401,F403
8
+ from .string import __all__ as __string__
9
+ from .time import * # noqa F401,F403
10
+ from .time import __all__ as __time__
11
+
12
+ __all__ = __signal__ + __stdlib__ + __string__ + __stdio__ + __time__
@@ -0,0 +1,16 @@
1
+ from ....c99.signal import Raise, Signal
2
+ from ..systemv import ArmHFSysVModel
3
+
4
+
5
+ class ArmHFSysVRaise(Raise, ArmHFSysVModel):
6
+ pass
7
+
8
+
9
+ class ArmHFSysVSignal(Signal, ArmHFSysVModel):
10
+ pass
11
+
12
+
13
+ __all__ = [
14
+ "ArmHFSysVRaise",
15
+ "ArmHFSysVSignal",
16
+ ]
@@ -0,0 +1,265 @@
1
+ from ....c99 import (
2
+ Clearerr,
3
+ Fclose,
4
+ Feof,
5
+ Ferror,
6
+ Fflush,
7
+ Fgetc,
8
+ Fgetpos,
9
+ Fgets,
10
+ Fopen,
11
+ Fprintf,
12
+ Fputc,
13
+ Fputs,
14
+ Fread,
15
+ Freopen,
16
+ Fscanf,
17
+ Fseek,
18
+ Fsetpos,
19
+ Ftell,
20
+ Fwrite,
21
+ Getc,
22
+ Getchar,
23
+ Gets,
24
+ Printf,
25
+ Putc,
26
+ Putchar,
27
+ Puts,
28
+ Remove,
29
+ Rename,
30
+ Rewind,
31
+ Scanf,
32
+ Snprintf,
33
+ Sprintf,
34
+ Sscanf,
35
+ Tmpfile,
36
+ Tmpnam,
37
+ Ungetc,
38
+ Vfprintf,
39
+ Vfscanf,
40
+ Vprintf,
41
+ Vscanf,
42
+ Vsnprintf,
43
+ Vsprintf,
44
+ Vsscanf,
45
+ )
46
+ from ..systemv import ArmHFSysVModel
47
+
48
+
49
+ class ArmHFSysVFclose(Fclose, ArmHFSysVModel):
50
+ pass
51
+
52
+
53
+ class ArmHFSysVFeof(Feof, ArmHFSysVModel):
54
+ pass
55
+
56
+
57
+ class ArmHFSysVFerror(Ferror, ArmHFSysVModel):
58
+ pass
59
+
60
+
61
+ class ArmHFSysVFgetc(Fgetc, ArmHFSysVModel):
62
+ pass
63
+
64
+
65
+ class ArmHFSysVFgets(Fgets, ArmHFSysVModel):
66
+ pass
67
+
68
+
69
+ class ArmHFSysVFopen(Fopen, ArmHFSysVModel):
70
+ pass
71
+
72
+
73
+ class ArmHFSysVFprintf(Fprintf, ArmHFSysVModel):
74
+ pass
75
+
76
+
77
+ class ArmHFSysVFputc(Fputc, ArmHFSysVModel):
78
+ pass
79
+
80
+
81
+ class ArmHFSysVFputs(Fputs, ArmHFSysVModel):
82
+ pass
83
+
84
+
85
+ class ArmHFSysVFread(Fread, ArmHFSysVModel):
86
+ pass
87
+
88
+
89
+ class ArmHFSysVFscanf(Fscanf, ArmHFSysVModel):
90
+ pass
91
+
92
+
93
+ class ArmHFSysVFseek(Fseek, ArmHFSysVModel):
94
+ pass
95
+
96
+
97
+ class ArmHFSysVFtell(Ftell, ArmHFSysVModel):
98
+ pass
99
+
100
+
101
+ class ArmHFSysVFwrite(Fwrite, ArmHFSysVModel):
102
+ pass
103
+
104
+
105
+ class ArmHFSysVGetc(Getc, ArmHFSysVModel):
106
+ pass
107
+
108
+
109
+ class ArmHFSysVGetchar(Getchar, ArmHFSysVModel):
110
+ pass
111
+
112
+
113
+ class ArmHFSysVGets(Gets, ArmHFSysVModel):
114
+ pass
115
+
116
+
117
+ class ArmHFSysVPrintf(Printf, ArmHFSysVModel):
118
+ pass
119
+
120
+
121
+ class ArmHFSysVPutc(Putc, ArmHFSysVModel):
122
+ pass
123
+
124
+
125
+ class ArmHFSysVPutchar(Putchar, ArmHFSysVModel):
126
+ pass
127
+
128
+
129
+ class ArmHFSysVPuts(Puts, ArmHFSysVModel):
130
+ pass
131
+
132
+
133
+ class ArmHFSysVRemove(Remove, ArmHFSysVModel):
134
+ pass
135
+
136
+
137
+ class ArmHFSysVRename(Rename, ArmHFSysVModel):
138
+ pass
139
+
140
+
141
+ class ArmHFSysVRewind(Rewind, ArmHFSysVModel):
142
+ pass
143
+
144
+
145
+ class ArmHFSysVScanf(Scanf, ArmHFSysVModel):
146
+ pass
147
+
148
+
149
+ class ArmHFSysVSnprintf(Snprintf, ArmHFSysVModel):
150
+ pass
151
+
152
+
153
+ class ArmHFSysVSprintf(Sprintf, ArmHFSysVModel):
154
+ pass
155
+
156
+
157
+ class ArmHFSysVSscanf(Sscanf, ArmHFSysVModel):
158
+ pass
159
+
160
+
161
+ class ArmHFSysVClearerr(Clearerr, ArmHFSysVModel):
162
+ pass
163
+
164
+
165
+ class ArmHFSysVFflush(Fflush, ArmHFSysVModel):
166
+ pass
167
+
168
+
169
+ class ArmHFSysVFreopen(Freopen, ArmHFSysVModel):
170
+ pass
171
+
172
+
173
+ class ArmHFSysVFgetpos(Fgetpos, ArmHFSysVModel):
174
+ pass
175
+
176
+
177
+ class ArmHFSysVFsetpos(Fsetpos, ArmHFSysVModel):
178
+ pass
179
+
180
+
181
+ class ArmHFSysVTmpfile(Tmpfile, ArmHFSysVModel):
182
+ pass
183
+
184
+
185
+ class ArmHFSysVTmpnam(Tmpnam, ArmHFSysVModel):
186
+ pass
187
+
188
+
189
+ class ArmHFSysVUngetc(Ungetc, ArmHFSysVModel):
190
+ pass
191
+
192
+
193
+ class ArmHFSysVVfprintf(Vfprintf, ArmHFSysVModel):
194
+ pass
195
+
196
+
197
+ class ArmHFSysVVfscanf(Vfscanf, ArmHFSysVModel):
198
+ pass
199
+
200
+
201
+ class ArmHFSysVVprintf(Vprintf, ArmHFSysVModel):
202
+ pass
203
+
204
+
205
+ class ArmHFSysVVscanf(Vscanf, ArmHFSysVModel):
206
+ pass
207
+
208
+
209
+ class ArmHFSysVVsnprintf(Vsnprintf, ArmHFSysVModel):
210
+ pass
211
+
212
+
213
+ class ArmHFSysVVsprintf(Vsprintf, ArmHFSysVModel):
214
+ pass
215
+
216
+
217
+ class ArmHFSysVVsscanf(Vsscanf, ArmHFSysVModel):
218
+ pass
219
+
220
+
221
+ __all__ = [
222
+ "ArmHFSysVFclose",
223
+ "ArmHFSysVFeof",
224
+ "ArmHFSysVFerror",
225
+ "ArmHFSysVFgetc",
226
+ "ArmHFSysVFgets",
227
+ "ArmHFSysVFopen",
228
+ "ArmHFSysVFprintf",
229
+ "ArmHFSysVFputc",
230
+ "ArmHFSysVFputs",
231
+ "ArmHFSysVFread",
232
+ "ArmHFSysVFscanf",
233
+ "ArmHFSysVFseek",
234
+ "ArmHFSysVFtell",
235
+ "ArmHFSysVFwrite",
236
+ "ArmHFSysVGetc",
237
+ "ArmHFSysVGetchar",
238
+ "ArmHFSysVGets",
239
+ "ArmHFSysVPrintf",
240
+ "ArmHFSysVPutc",
241
+ "ArmHFSysVPutchar",
242
+ "ArmHFSysVPuts",
243
+ "ArmHFSysVRemove",
244
+ "ArmHFSysVRename",
245
+ "ArmHFSysVRewind",
246
+ "ArmHFSysVScanf",
247
+ "ArmHFSysVSnprintf",
248
+ "ArmHFSysVSprintf",
249
+ "ArmHFSysVSscanf",
250
+ "ArmHFSysVClearerr",
251
+ "ArmHFSysVFflush",
252
+ "ArmHFSysVFreopen",
253
+ "ArmHFSysVFgetpos",
254
+ "ArmHFSysVFsetpos",
255
+ "ArmHFSysVTmpfile",
256
+ "ArmHFSysVTmpnam",
257
+ "ArmHFSysVUngetc",
258
+ "ArmHFSysVVfprintf",
259
+ "ArmHFSysVVfscanf",
260
+ "ArmHFSysVVprintf",
261
+ "ArmHFSysVVscanf",
262
+ "ArmHFSysVVsnprintf",
263
+ "ArmHFSysVVsprintf",
264
+ "ArmHFSysVVsscanf",
265
+ ]
@@ -0,0 +1,169 @@
1
+ from ....c99 import (
2
+ Abort,
3
+ Abs,
4
+ Atexit,
5
+ Atof,
6
+ Atoi,
7
+ Atol,
8
+ Atoll,
9
+ Calloc,
10
+ Div,
11
+ Exit,
12
+ Free,
13
+ Getenv,
14
+ LAbs,
15
+ LDiv,
16
+ LLAbs,
17
+ LLDiv,
18
+ Malloc,
19
+ Mblen,
20
+ Mbstowcs,
21
+ Mbtowc,
22
+ QSort,
23
+ Rand,
24
+ Realloc,
25
+ Srand,
26
+ System,
27
+ Wcstombs,
28
+ Wctomb,
29
+ )
30
+ from ..systemv import ArmHFSysVModel
31
+
32
+
33
+ class ArmHFSysVAbs(Abs, ArmHFSysVModel):
34
+ pass
35
+
36
+
37
+ class ArmHFSysVLAbs(LAbs, ArmHFSysVModel):
38
+ pass
39
+
40
+
41
+ class ArmHFSysVLLAbs(LLAbs, ArmHFSysVModel):
42
+ pass
43
+
44
+
45
+ class ArmHFSysVAtof(Atof, ArmHFSysVModel):
46
+ pass
47
+
48
+
49
+ class ArmHFSysVAtoi(Atoi, ArmHFSysVModel):
50
+ pass
51
+
52
+
53
+ class ArmHFSysVAtol(Atol, ArmHFSysVModel):
54
+ pass
55
+
56
+
57
+ class ArmHFSysVAtoll(Atoll, ArmHFSysVModel):
58
+ pass
59
+
60
+
61
+ class ArmHFSysVCalloc(Calloc, ArmHFSysVModel):
62
+ pass
63
+
64
+
65
+ class ArmHFSysVDiv(Div, ArmHFSysVModel):
66
+ pass
67
+
68
+
69
+ class ArmHFSysVLDiv(LDiv, ArmHFSysVModel):
70
+ pass
71
+
72
+
73
+ class ArmHFSysVLLDiv(LLDiv, ArmHFSysVModel):
74
+ pass
75
+
76
+
77
+ class ArmHFSysVExit(Exit, ArmHFSysVModel):
78
+ pass
79
+
80
+
81
+ class ArmHFSysVFree(Free, ArmHFSysVModel):
82
+ pass
83
+
84
+
85
+ class ArmHFSysVMalloc(Malloc, ArmHFSysVModel):
86
+ pass
87
+
88
+
89
+ class ArmHFSysVQSort(QSort, ArmHFSysVModel):
90
+ pass
91
+
92
+
93
+ class ArmHFSysVRand(Rand, ArmHFSysVModel):
94
+ pass
95
+
96
+
97
+ class ArmHFSysVRealloc(Realloc, ArmHFSysVModel):
98
+ pass
99
+
100
+
101
+ class ArmHFSysVSrand(Srand, ArmHFSysVModel):
102
+ pass
103
+
104
+
105
+ class ArmHFSysVAbort(Abort, ArmHFSysVModel):
106
+ pass
107
+
108
+
109
+ class ArmHFSysVAtexit(Atexit, ArmHFSysVModel):
110
+ pass
111
+
112
+
113
+ class ArmHFSysVGetenv(Getenv, ArmHFSysVModel):
114
+ pass
115
+
116
+
117
+ class ArmHFSysVMblen(Mblen, ArmHFSysVModel):
118
+ pass
119
+
120
+
121
+ class ArmHFSysVMbstowcs(Mbstowcs, ArmHFSysVModel):
122
+ pass
123
+
124
+
125
+ class ArmHFSysVMbtowc(Mbtowc, ArmHFSysVModel):
126
+ pass
127
+
128
+
129
+ class ArmHFSysVSystem(System, ArmHFSysVModel):
130
+ pass
131
+
132
+
133
+ class ArmHFSysVWcstombs(Wcstombs, ArmHFSysVModel):
134
+ pass
135
+
136
+
137
+ class ArmHFSysVWctomb(Wctomb, ArmHFSysVModel):
138
+ pass
139
+
140
+
141
+ __all__ = [
142
+ "ArmHFSysVAbs",
143
+ "ArmHFSysVLAbs",
144
+ "ArmHFSysVLLAbs",
145
+ "ArmHFSysVAtof",
146
+ "ArmHFSysVAtoi",
147
+ "ArmHFSysVAtol",
148
+ "ArmHFSysVAtoll",
149
+ "ArmHFSysVCalloc",
150
+ "ArmHFSysVDiv",
151
+ "ArmHFSysVLDiv",
152
+ "ArmHFSysVLLDiv",
153
+ "ArmHFSysVExit",
154
+ "ArmHFSysVFree",
155
+ "ArmHFSysVMalloc",
156
+ "ArmHFSysVQSort",
157
+ "ArmHFSysVRand",
158
+ "ArmHFSysVRealloc",
159
+ "ArmHFSysVSrand",
160
+ "ArmHFSysVAbort",
161
+ "ArmHFSysVAtexit",
162
+ "ArmHFSysVGetenv",
163
+ "ArmHFSysVMblen",
164
+ "ArmHFSysVMbstowcs",
165
+ "ArmHFSysVMbtowc",
166
+ "ArmHFSysVSystem",
167
+ "ArmHFSysVWcstombs",
168
+ "ArmHFSysVWctomb",
169
+ ]