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.
- smallworld/analyses/__init__.py +8 -0
- smallworld/analyses/analysis.py +8 -67
- smallworld/analyses/code_coverage.py +1 -2
- smallworld/analyses/colorizer.py +301 -534
- smallworld/analyses/colorizer_def_use.py +217 -0
- smallworld/analyses/colorizer_summary.py +173 -83
- smallworld/analyses/field_detection/field_analysis.py +7 -8
- smallworld/analyses/field_detection/hints.py +1 -1
- smallworld/analyses/field_detection/malloc.py +2 -2
- smallworld/analyses/trace_execution.py +160 -0
- smallworld/analyses/trace_execution_types.py +42 -0
- smallworld/analyses/unstable/angr/divergence.py +1 -2
- smallworld/analyses/unstable/angr/model.py +5 -6
- smallworld/analyses/unstable/angr_nwbt.py +3 -4
- smallworld/analyses/unstable/code_coverage.py +2 -3
- smallworld/analyses/unstable/code_reachable.py +2 -3
- smallworld/analyses/unstable/control_flow_tracer.py +2 -3
- smallworld/analyses/unstable/pointer_finder.py +2 -3
- smallworld/analyses/unstable/utils/tui.py +71 -0
- smallworld/emulators/__init__.py +3 -1
- smallworld/emulators/angr/angr.py +30 -9
- smallworld/emulators/angr/machdefs/__init__.py +2 -0
- smallworld/emulators/angr/machdefs/aarch64.py +1 -1
- smallworld/emulators/angr/machdefs/amd64.py +0 -4
- smallworld/emulators/angr/machdefs/arm.py +0 -2
- smallworld/emulators/angr/machdefs/i386.py +0 -2
- smallworld/emulators/angr/machdefs/loongarch.py +340 -0
- smallworld/emulators/angr/machdefs/machdef.py +1 -8
- smallworld/emulators/angr/machdefs/mips.py +0 -2
- smallworld/emulators/angr/machdefs/mips64.py +0 -2
- smallworld/emulators/angr/machdefs/ppc.py +1 -2
- smallworld/emulators/angr/machdefs/riscv.py +8 -10
- smallworld/emulators/angr/machdefs/xtensa.py +7 -4
- smallworld/emulators/emulator.py +22 -0
- smallworld/emulators/ghidra/__init__.py +37 -0
- smallworld/emulators/ghidra/ghidra.py +513 -0
- smallworld/emulators/ghidra/machdefs/__init__.py +31 -0
- smallworld/emulators/ghidra/machdefs/aarch64.py +289 -0
- smallworld/emulators/ghidra/machdefs/amd64.py +185 -0
- smallworld/emulators/ghidra/machdefs/arm.py +370 -0
- smallworld/emulators/ghidra/machdefs/i386.py +109 -0
- smallworld/emulators/ghidra/machdefs/loongarch.py +162 -0
- smallworld/emulators/ghidra/machdefs/machdef.py +81 -0
- smallworld/emulators/ghidra/machdefs/mips.py +163 -0
- smallworld/emulators/ghidra/machdefs/mips64.py +186 -0
- smallworld/emulators/ghidra/machdefs/ppc.py +98 -0
- smallworld/emulators/ghidra/machdefs/riscv.py +208 -0
- smallworld/emulators/ghidra/machdefs/xtensa.py +21 -0
- smallworld/emulators/ghidra/typing.py +28 -0
- smallworld/emulators/hookable.py +18 -4
- smallworld/emulators/panda/machdefs/__init__.py +2 -2
- smallworld/emulators/panda/machdefs/aarch64.py +186 -11
- smallworld/emulators/panda/machdefs/amd64.py +103 -11
- smallworld/emulators/panda/machdefs/arm.py +216 -20
- smallworld/emulators/panda/machdefs/i386.py +30 -7
- smallworld/emulators/panda/machdefs/machdef.py +9 -16
- smallworld/emulators/panda/machdefs/mips.py +49 -5
- smallworld/emulators/panda/machdefs/mips64.py +57 -5
- smallworld/emulators/panda/machdefs/ppc.py +38 -13
- smallworld/emulators/panda/panda.py +146 -44
- smallworld/emulators/unicorn/__init__.py +2 -0
- smallworld/emulators/unicorn/machdefs/aarch64.py +253 -264
- smallworld/emulators/unicorn/machdefs/amd64.py +254 -259
- smallworld/emulators/unicorn/machdefs/arm.py +200 -212
- smallworld/emulators/unicorn/machdefs/i386.py +84 -90
- smallworld/emulators/unicorn/machdefs/machdef.py +2 -23
- smallworld/emulators/unicorn/machdefs/mips.py +127 -135
- smallworld/emulators/unicorn/unicorn.py +52 -13
- smallworld/helpers.py +4 -19
- smallworld/hinting/hinting.py +22 -192
- smallworld/hinting/hints.py +50 -18
- smallworld/instructions/bsid.py +8 -8
- smallworld/logging.py +4 -2
- smallworld/platforms/__init__.py +12 -0
- smallworld/platforms/defs/__init__.py +36 -0
- smallworld/platforms/defs/aarch64.py +450 -0
- smallworld/platforms/defs/amd64.py +463 -0
- smallworld/platforms/defs/arm.py +519 -0
- smallworld/platforms/defs/i386.py +258 -0
- smallworld/platforms/defs/loongarch.py +270 -0
- smallworld/platforms/defs/mips.py +321 -0
- smallworld/platforms/defs/mips64.py +313 -0
- smallworld/platforms/defs/platformdef.py +97 -0
- smallworld/platforms/defs/powerpc.py +259 -0
- smallworld/platforms/defs/riscv.py +257 -0
- smallworld/platforms/defs/xtensa.py +96 -0
- smallworld/{platforms.py → platforms/platforms.py} +3 -0
- smallworld/state/cpus/__init__.py +2 -0
- smallworld/state/cpus/aarch64.py +0 -9
- smallworld/state/cpus/amd64.py +6 -28
- smallworld/state/cpus/arm.py +0 -11
- smallworld/state/cpus/cpu.py +0 -11
- smallworld/state/cpus/i386.py +0 -7
- smallworld/state/cpus/loongarch.py +299 -0
- smallworld/state/cpus/mips.py +4 -47
- smallworld/state/cpus/mips64.py +18 -58
- smallworld/state/cpus/powerpc.py +2 -9
- smallworld/state/cpus/riscv.py +1 -11
- smallworld/state/cpus/xtensa.py +0 -5
- smallworld/state/memory/code.py +38 -2
- smallworld/state/memory/elf/__init__.py +5 -1
- smallworld/state/memory/elf/coredump/__init__.py +3 -0
- smallworld/state/memory/elf/coredump/coredump.py +46 -0
- smallworld/state/memory/elf/coredump/prstatus/__init__.py +27 -0
- smallworld/state/memory/elf/coredump/prstatus/aarch64.py +46 -0
- smallworld/state/memory/elf/coredump/prstatus/amd64.py +40 -0
- smallworld/state/memory/elf/coredump/prstatus/arm.py +53 -0
- smallworld/state/memory/elf/coredump/prstatus/i386.py +30 -0
- smallworld/state/memory/elf/coredump/prstatus/mips.py +55 -0
- smallworld/state/memory/elf/coredump/prstatus/mips64.py +57 -0
- smallworld/state/memory/elf/coredump/prstatus/ppc.py +82 -0
- smallworld/state/memory/elf/coredump/prstatus/prstatus.py +129 -0
- smallworld/state/memory/elf/elf.py +211 -57
- smallworld/state/memory/elf/register_state.py +36 -0
- smallworld/state/memory/elf/rela/__init__.py +2 -0
- smallworld/state/memory/elf/rela/aarch64.py +3 -1
- smallworld/state/memory/elf/rela/amd64.py +4 -2
- smallworld/state/memory/elf/rela/arm.py +4 -2
- smallworld/state/memory/elf/rela/i386.py +4 -2
- smallworld/state/memory/elf/rela/loongarch.py +32 -0
- smallworld/state/memory/elf/rela/mips.py +39 -18
- smallworld/state/memory/elf/rela/ppc.py +31 -14
- smallworld/state/memory/elf/structs.py +3 -0
- smallworld/state/memory/heap.py +2 -2
- smallworld/state/memory/memory.py +18 -0
- smallworld/state/memory/pe/__init__.py +3 -0
- smallworld/state/memory/pe/pe.py +361 -0
- smallworld/state/memory/pe/structs.py +60 -0
- smallworld/state/memory/stack/__init__.py +2 -0
- smallworld/state/memory/stack/loongarch.py +26 -0
- smallworld/state/models/__init__.py +29 -2
- smallworld/state/models/aarch64/__init__.py +1 -0
- smallworld/state/models/aarch64/systemv/__init__.py +6 -0
- smallworld/state/models/aarch64/systemv/c99/__init__.py +12 -0
- smallworld/state/models/aarch64/systemv/c99/signal.py +16 -0
- smallworld/state/models/aarch64/systemv/c99/stdio.py +265 -0
- smallworld/state/models/aarch64/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/aarch64/systemv/c99/string.py +139 -0
- smallworld/state/models/aarch64/systemv/c99/time.py +61 -0
- smallworld/state/models/aarch64/systemv/posix/__init__.py +6 -0
- smallworld/state/models/aarch64/systemv/posix/libgen.py +16 -0
- smallworld/state/models/aarch64/systemv/posix/signal.py +157 -0
- smallworld/state/models/aarch64/systemv/systemv.py +80 -0
- smallworld/state/models/amd64/__init__.py +1 -0
- smallworld/state/models/amd64/systemv/__init__.py +6 -0
- smallworld/state/models/amd64/systemv/c99/__init__.py +12 -0
- smallworld/state/models/amd64/systemv/c99/signal.py +16 -0
- smallworld/state/models/amd64/systemv/c99/stdio.py +265 -0
- smallworld/state/models/amd64/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/amd64/systemv/c99/string.py +139 -0
- smallworld/state/models/amd64/systemv/c99/time.py +61 -0
- smallworld/state/models/amd64/systemv/posix/__init__.py +6 -0
- smallworld/state/models/amd64/systemv/posix/libgen.py +16 -0
- smallworld/state/models/amd64/systemv/posix/signal.py +157 -0
- smallworld/state/models/amd64/systemv/systemv.py +78 -0
- smallworld/state/models/armel/__init__.py +1 -0
- smallworld/state/models/armel/systemv/__init__.py +6 -0
- smallworld/state/models/armel/systemv/c99/__init__.py +12 -0
- smallworld/state/models/armel/systemv/c99/signal.py +16 -0
- smallworld/state/models/armel/systemv/c99/stdio.py +265 -0
- smallworld/state/models/armel/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/armel/systemv/c99/string.py +139 -0
- smallworld/state/models/armel/systemv/c99/time.py +61 -0
- smallworld/state/models/armel/systemv/posix/__init__.py +6 -0
- smallworld/state/models/armel/systemv/posix/libgen.py +16 -0
- smallworld/state/models/armel/systemv/posix/signal.py +157 -0
- smallworld/state/models/armel/systemv/systemv.py +82 -0
- smallworld/state/models/armhf/__init__.py +1 -0
- smallworld/state/models/armhf/systemv/__init__.py +6 -0
- smallworld/state/models/armhf/systemv/c99/__init__.py +12 -0
- smallworld/state/models/armhf/systemv/c99/signal.py +16 -0
- smallworld/state/models/armhf/systemv/c99/stdio.py +265 -0
- smallworld/state/models/armhf/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/armhf/systemv/c99/string.py +139 -0
- smallworld/state/models/armhf/systemv/c99/time.py +61 -0
- smallworld/state/models/armhf/systemv/posix/__init__.py +6 -0
- smallworld/state/models/armhf/systemv/posix/libgen.py +16 -0
- smallworld/state/models/armhf/systemv/posix/signal.py +157 -0
- smallworld/state/models/armhf/systemv/systemv.py +77 -0
- smallworld/state/models/c99/__init__.py +12 -0
- smallworld/state/models/c99/fmt_print.py +915 -0
- smallworld/state/models/c99/fmt_scan.py +864 -0
- smallworld/state/models/c99/math.py +362 -0
- smallworld/state/models/c99/signal.py +71 -0
- smallworld/state/models/c99/stdio.py +1305 -0
- smallworld/state/models/c99/stdlib.py +595 -0
- smallworld/state/models/c99/string.py +674 -0
- smallworld/state/models/c99/time.py +340 -0
- smallworld/state/models/c99/utils.py +89 -0
- smallworld/state/models/cstd.py +759 -0
- smallworld/state/models/errno.py +581 -0
- smallworld/state/models/filedesc.py +515 -0
- smallworld/state/models/i386/__init__.py +1 -0
- smallworld/state/models/i386/systemv/__init__.py +6 -0
- smallworld/state/models/i386/systemv/c99/__init__.py +12 -0
- smallworld/state/models/i386/systemv/c99/signal.py +16 -0
- smallworld/state/models/i386/systemv/c99/stdio.py +265 -0
- smallworld/state/models/i386/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/i386/systemv/c99/string.py +139 -0
- smallworld/state/models/i386/systemv/c99/time.py +61 -0
- smallworld/state/models/i386/systemv/posix/__init__.py +6 -0
- smallworld/state/models/i386/systemv/posix/libgen.py +16 -0
- smallworld/state/models/i386/systemv/posix/signal.py +157 -0
- smallworld/state/models/i386/systemv/systemv.py +71 -0
- smallworld/state/models/loongarch64/__init__.py +1 -0
- smallworld/state/models/loongarch64/systemv/__init__.py +6 -0
- smallworld/state/models/loongarch64/systemv/c99/__init__.py +12 -0
- smallworld/state/models/loongarch64/systemv/c99/signal.py +16 -0
- smallworld/state/models/loongarch64/systemv/c99/stdio.py +265 -0
- smallworld/state/models/loongarch64/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/loongarch64/systemv/c99/string.py +139 -0
- smallworld/state/models/loongarch64/systemv/c99/time.py +61 -0
- smallworld/state/models/loongarch64/systemv/posix/__init__.py +6 -0
- smallworld/state/models/loongarch64/systemv/posix/libgen.py +16 -0
- smallworld/state/models/loongarch64/systemv/posix/signal.py +157 -0
- smallworld/state/models/loongarch64/systemv/systemv.py +83 -0
- smallworld/state/models/mips/__init__.py +1 -0
- smallworld/state/models/mips/systemv/__init__.py +6 -0
- smallworld/state/models/mips/systemv/c99/__init__.py +12 -0
- smallworld/state/models/mips/systemv/c99/signal.py +16 -0
- smallworld/state/models/mips/systemv/c99/stdio.py +265 -0
- smallworld/state/models/mips/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/mips/systemv/c99/string.py +139 -0
- smallworld/state/models/mips/systemv/c99/time.py +61 -0
- smallworld/state/models/mips/systemv/posix/__init__.py +6 -0
- smallworld/state/models/mips/systemv/posix/libgen.py +16 -0
- smallworld/state/models/mips/systemv/posix/signal.py +157 -0
- smallworld/state/models/mips/systemv/systemv.py +78 -0
- smallworld/state/models/mips64/__init__.py +1 -0
- smallworld/state/models/mips64/systemv/__init__.py +6 -0
- smallworld/state/models/mips64/systemv/c99/__init__.py +12 -0
- smallworld/state/models/mips64/systemv/c99/signal.py +16 -0
- smallworld/state/models/mips64/systemv/c99/stdio.py +265 -0
- smallworld/state/models/mips64/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/mips64/systemv/c99/string.py +139 -0
- smallworld/state/models/mips64/systemv/c99/time.py +61 -0
- smallworld/state/models/mips64/systemv/posix/__init__.py +6 -0
- smallworld/state/models/mips64/systemv/posix/libgen.py +16 -0
- smallworld/state/models/mips64/systemv/posix/signal.py +157 -0
- smallworld/state/models/mips64/systemv/systemv.py +98 -0
- smallworld/state/models/mips64el/__init__.py +1 -0
- smallworld/state/models/mips64el/systemv/__init__.py +6 -0
- smallworld/state/models/mips64el/systemv/c99/__init__.py +12 -0
- smallworld/state/models/mips64el/systemv/c99/signal.py +16 -0
- smallworld/state/models/mips64el/systemv/c99/stdio.py +265 -0
- smallworld/state/models/mips64el/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/mips64el/systemv/c99/string.py +139 -0
- smallworld/state/models/mips64el/systemv/c99/time.py +61 -0
- smallworld/state/models/mips64el/systemv/posix/__init__.py +6 -0
- smallworld/state/models/mips64el/systemv/posix/libgen.py +16 -0
- smallworld/state/models/mips64el/systemv/posix/signal.py +157 -0
- smallworld/state/models/mips64el/systemv/systemv.py +96 -0
- smallworld/state/models/mipsel/__init__.py +1 -0
- smallworld/state/models/mipsel/systemv/__init__.py +6 -0
- smallworld/state/models/mipsel/systemv/c99/__init__.py +12 -0
- smallworld/state/models/mipsel/systemv/c99/signal.py +16 -0
- smallworld/state/models/mipsel/systemv/c99/stdio.py +265 -0
- smallworld/state/models/mipsel/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/mipsel/systemv/c99/string.py +139 -0
- smallworld/state/models/mipsel/systemv/c99/time.py +61 -0
- smallworld/state/models/mipsel/systemv/posix/__init__.py +6 -0
- smallworld/state/models/mipsel/systemv/posix/libgen.py +16 -0
- smallworld/state/models/mipsel/systemv/posix/signal.py +157 -0
- smallworld/state/models/mipsel/systemv/systemv.py +78 -0
- smallworld/state/models/model.py +27 -2
- smallworld/state/models/posix/__init__.py +6 -0
- smallworld/state/models/posix/libgen.py +123 -0
- smallworld/state/models/posix/signal.py +690 -0
- smallworld/state/models/powerpc/__init__.py +1 -0
- smallworld/state/models/powerpc/systemv/__init__.py +6 -0
- smallworld/state/models/powerpc/systemv/c99/__init__.py +12 -0
- smallworld/state/models/powerpc/systemv/c99/signal.py +16 -0
- smallworld/state/models/powerpc/systemv/c99/stdio.py +265 -0
- smallworld/state/models/powerpc/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/powerpc/systemv/c99/string.py +139 -0
- smallworld/state/models/powerpc/systemv/c99/time.py +61 -0
- smallworld/state/models/powerpc/systemv/posix/__init__.py +6 -0
- smallworld/state/models/powerpc/systemv/posix/libgen.py +16 -0
- smallworld/state/models/powerpc/systemv/posix/signal.py +157 -0
- smallworld/state/models/powerpc/systemv/systemv.py +93 -0
- smallworld/state/models/riscv64/__init__.py +1 -0
- smallworld/state/models/riscv64/systemv/__init__.py +6 -0
- smallworld/state/models/riscv64/systemv/c99/__init__.py +12 -0
- smallworld/state/models/riscv64/systemv/c99/signal.py +16 -0
- smallworld/state/models/riscv64/systemv/c99/stdio.py +265 -0
- smallworld/state/models/riscv64/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/riscv64/systemv/c99/string.py +139 -0
- smallworld/state/models/riscv64/systemv/c99/time.py +61 -0
- smallworld/state/models/riscv64/systemv/posix/__init__.py +6 -0
- smallworld/state/models/riscv64/systemv/posix/libgen.py +16 -0
- smallworld/state/models/riscv64/systemv/posix/signal.py +157 -0
- smallworld/state/models/riscv64/systemv/systemv.py +85 -0
- smallworld/state/state.py +65 -24
- smallworld/state/unstable/elf.py +16 -31
- smallworld/utils.py +6 -1
- {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/METADATA +74 -42
- smallworld_re-2.0.0.dist-info/RECORD +374 -0
- {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/WHEEL +1 -1
- smallworld/state/models/x86/__init__.py +0 -2
- smallworld/state/models/x86/microsoftcdecl.py +0 -35
- smallworld/state/models/x86/systemv.py +0 -240
- smallworld_re-1.0.3.dist-info/RECORD +0 -166
- /smallworld/state/models/{posix.py → _posix.py} +0 -0
- {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/entry_points.txt +0 -0
- {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/licenses/LICENSE.txt +0 -0
- {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,139 @@
|
|
1
|
+
from ....c99 import (
|
2
|
+
Memchr,
|
3
|
+
Memcmp,
|
4
|
+
Memcpy,
|
5
|
+
Memmove,
|
6
|
+
Memset,
|
7
|
+
Strcat,
|
8
|
+
Strchr,
|
9
|
+
Strcmp,
|
10
|
+
Strcoll,
|
11
|
+
Strcpy,
|
12
|
+
Strcspn,
|
13
|
+
Strerror,
|
14
|
+
Strlen,
|
15
|
+
Strncat,
|
16
|
+
Strncmp,
|
17
|
+
Strncpy,
|
18
|
+
Strpbrk,
|
19
|
+
Strrchr,
|
20
|
+
Strspn,
|
21
|
+
Strstr,
|
22
|
+
Strtok,
|
23
|
+
Strxfrm,
|
24
|
+
)
|
25
|
+
from ..systemv import ArmHFSysVModel
|
26
|
+
|
27
|
+
|
28
|
+
class ArmHFSysVMemcpy(Memcpy, ArmHFSysVModel):
|
29
|
+
pass
|
30
|
+
|
31
|
+
|
32
|
+
class ArmHFSysVMemmove(Memmove, ArmHFSysVModel):
|
33
|
+
pass
|
34
|
+
|
35
|
+
|
36
|
+
class ArmHFSysVStrcpy(Strcpy, ArmHFSysVModel):
|
37
|
+
pass
|
38
|
+
|
39
|
+
|
40
|
+
class ArmHFSysVStrncpy(Strncpy, ArmHFSysVModel):
|
41
|
+
pass
|
42
|
+
|
43
|
+
|
44
|
+
class ArmHFSysVStrcat(Strcat, ArmHFSysVModel):
|
45
|
+
pass
|
46
|
+
|
47
|
+
|
48
|
+
class ArmHFSysVStrncat(Strncat, ArmHFSysVModel):
|
49
|
+
pass
|
50
|
+
|
51
|
+
|
52
|
+
class ArmHFSysVMemcmp(Memcmp, ArmHFSysVModel):
|
53
|
+
pass
|
54
|
+
|
55
|
+
|
56
|
+
class ArmHFSysVStrncmp(Strncmp, ArmHFSysVModel):
|
57
|
+
pass
|
58
|
+
|
59
|
+
|
60
|
+
class ArmHFSysVStrcmp(Strcmp, ArmHFSysVModel):
|
61
|
+
pass
|
62
|
+
|
63
|
+
|
64
|
+
class ArmHFSysVStrcoll(Strcoll, ArmHFSysVModel):
|
65
|
+
pass
|
66
|
+
|
67
|
+
|
68
|
+
class ArmHFSysVStrxfrm(Strxfrm, ArmHFSysVModel):
|
69
|
+
pass
|
70
|
+
|
71
|
+
|
72
|
+
class ArmHFSysVMemchr(Memchr, ArmHFSysVModel):
|
73
|
+
pass
|
74
|
+
|
75
|
+
|
76
|
+
class ArmHFSysVStrchr(Strchr, ArmHFSysVModel):
|
77
|
+
pass
|
78
|
+
|
79
|
+
|
80
|
+
class ArmHFSysVStrcspn(Strcspn, ArmHFSysVModel):
|
81
|
+
pass
|
82
|
+
|
83
|
+
|
84
|
+
class ArmHFSysVStrpbrk(Strpbrk, ArmHFSysVModel):
|
85
|
+
pass
|
86
|
+
|
87
|
+
|
88
|
+
class ArmHFSysVStrrchr(Strrchr, ArmHFSysVModel):
|
89
|
+
pass
|
90
|
+
|
91
|
+
|
92
|
+
class ArmHFSysVStrspn(Strspn, ArmHFSysVModel):
|
93
|
+
pass
|
94
|
+
|
95
|
+
|
96
|
+
class ArmHFSysVStrstr(Strstr, ArmHFSysVModel):
|
97
|
+
pass
|
98
|
+
|
99
|
+
|
100
|
+
class ArmHFSysVStrtok(Strtok, ArmHFSysVModel):
|
101
|
+
pass
|
102
|
+
|
103
|
+
|
104
|
+
class ArmHFSysVMemset(Memset, ArmHFSysVModel):
|
105
|
+
pass
|
106
|
+
|
107
|
+
|
108
|
+
class ArmHFSysVStrerror(Strerror, ArmHFSysVModel):
|
109
|
+
pass
|
110
|
+
|
111
|
+
|
112
|
+
class ArmHFSysVStrlen(Strlen, ArmHFSysVModel):
|
113
|
+
pass
|
114
|
+
|
115
|
+
|
116
|
+
__all__ = [
|
117
|
+
"ArmHFSysVMemcpy",
|
118
|
+
"ArmHFSysVMemmove",
|
119
|
+
"ArmHFSysVStrcpy",
|
120
|
+
"ArmHFSysVStrncpy",
|
121
|
+
"ArmHFSysVStrcat",
|
122
|
+
"ArmHFSysVStrncat",
|
123
|
+
"ArmHFSysVMemcmp",
|
124
|
+
"ArmHFSysVStrncmp",
|
125
|
+
"ArmHFSysVStrcmp",
|
126
|
+
"ArmHFSysVStrcoll",
|
127
|
+
"ArmHFSysVStrxfrm",
|
128
|
+
"ArmHFSysVMemchr",
|
129
|
+
"ArmHFSysVStrchr",
|
130
|
+
"ArmHFSysVStrcspn",
|
131
|
+
"ArmHFSysVStrpbrk",
|
132
|
+
"ArmHFSysVStrrchr",
|
133
|
+
"ArmHFSysVStrspn",
|
134
|
+
"ArmHFSysVStrstr",
|
135
|
+
"ArmHFSysVStrtok",
|
136
|
+
"ArmHFSysVMemset",
|
137
|
+
"ArmHFSysVStrerror",
|
138
|
+
"ArmHFSysVStrlen",
|
139
|
+
]
|
@@ -0,0 +1,61 @@
|
|
1
|
+
from ....c99 import (
|
2
|
+
Asctime,
|
3
|
+
Clock,
|
4
|
+
Ctime,
|
5
|
+
Difftime,
|
6
|
+
Gmtime,
|
7
|
+
Localtime,
|
8
|
+
Mktime,
|
9
|
+
Strftime,
|
10
|
+
Time,
|
11
|
+
)
|
12
|
+
from ..systemv import ArmHFSysVModel
|
13
|
+
|
14
|
+
|
15
|
+
class ArmHFSysVTime(Time, ArmHFSysVModel):
|
16
|
+
pass
|
17
|
+
|
18
|
+
|
19
|
+
class ArmHFSysVLocaltime(Localtime, ArmHFSysVModel):
|
20
|
+
pass
|
21
|
+
|
22
|
+
|
23
|
+
class ArmHFSysVGmtime(Gmtime, ArmHFSysVModel):
|
24
|
+
pass
|
25
|
+
|
26
|
+
|
27
|
+
class ArmHFSysVCtime(Ctime, ArmHFSysVModel):
|
28
|
+
pass
|
29
|
+
|
30
|
+
|
31
|
+
class ArmHFSysVAsctime(Asctime, ArmHFSysVModel):
|
32
|
+
pass
|
33
|
+
|
34
|
+
|
35
|
+
class ArmHFSysVStrftime(Strftime, ArmHFSysVModel):
|
36
|
+
pass
|
37
|
+
|
38
|
+
|
39
|
+
class ArmHFSysVDifftime(Difftime, ArmHFSysVModel):
|
40
|
+
pass
|
41
|
+
|
42
|
+
|
43
|
+
class ArmHFSysVMktime(Mktime, ArmHFSysVModel):
|
44
|
+
pass
|
45
|
+
|
46
|
+
|
47
|
+
class ArmHFSysVClock(Clock, ArmHFSysVModel):
|
48
|
+
pass
|
49
|
+
|
50
|
+
|
51
|
+
__all__ = [
|
52
|
+
"ArmHFSysVTime",
|
53
|
+
"ArmHFSysVLocaltime",
|
54
|
+
"ArmHFSysVGmtime",
|
55
|
+
"ArmHFSysVCtime",
|
56
|
+
"ArmHFSysVAsctime",
|
57
|
+
"ArmHFSysVStrftime",
|
58
|
+
"ArmHFSysVDifftime",
|
59
|
+
"ArmHFSysVMktime",
|
60
|
+
"ArmHFSysVClock",
|
61
|
+
]
|
@@ -0,0 +1,16 @@
|
|
1
|
+
from ....posix.libgen import Basename, Dirname
|
2
|
+
from ..systemv import ArmHFSysVModel
|
3
|
+
|
4
|
+
|
5
|
+
class ArmHFSysVBasename(Basename, ArmHFSysVModel):
|
6
|
+
pass
|
7
|
+
|
8
|
+
|
9
|
+
class ArmHFSysVDirname(Dirname, ArmHFSysVModel):
|
10
|
+
pass
|
11
|
+
|
12
|
+
|
13
|
+
__all__ = [
|
14
|
+
"ArmHFSysVBasename",
|
15
|
+
"ArmHFSysVDirname",
|
16
|
+
]
|
@@ -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 ArmHFSysVModel
|
29
|
+
|
30
|
+
|
31
|
+
class ArmHFSysVBsdSignal(BsdSignal, ArmHFSysVModel):
|
32
|
+
pass
|
33
|
+
|
34
|
+
|
35
|
+
class ArmHFSysVKill(Kill, ArmHFSysVModel):
|
36
|
+
pass
|
37
|
+
|
38
|
+
|
39
|
+
class ArmHFSysVKillpg(Killpg, ArmHFSysVModel):
|
40
|
+
pass
|
41
|
+
|
42
|
+
|
43
|
+
class ArmHFSysVPthreadKill(PthreadKill, ArmHFSysVModel):
|
44
|
+
pass
|
45
|
+
|
46
|
+
|
47
|
+
class ArmHFSysVPthreadSigmask(PthreadSigmask, ArmHFSysVModel):
|
48
|
+
pass
|
49
|
+
|
50
|
+
|
51
|
+
class ArmHFSysVSigaction(Sigaction, ArmHFSysVModel):
|
52
|
+
pass
|
53
|
+
|
54
|
+
|
55
|
+
class ArmHFSysVSigaddset(Sigaddset, ArmHFSysVModel):
|
56
|
+
pass
|
57
|
+
|
58
|
+
|
59
|
+
class ArmHFSysVSigaltstack(Sigaltstack, ArmHFSysVModel):
|
60
|
+
pass
|
61
|
+
|
62
|
+
|
63
|
+
class ArmHFSysVSigdelset(Sigdelset, ArmHFSysVModel):
|
64
|
+
pass
|
65
|
+
|
66
|
+
|
67
|
+
class ArmHFSysVSigemptyset(Sigemptyset, ArmHFSysVModel):
|
68
|
+
pass
|
69
|
+
|
70
|
+
|
71
|
+
class ArmHFSysVSigfillset(Sigfillset, ArmHFSysVModel):
|
72
|
+
pass
|
73
|
+
|
74
|
+
|
75
|
+
class ArmHFSysVSighold(Sighold, ArmHFSysVModel):
|
76
|
+
pass
|
77
|
+
|
78
|
+
|
79
|
+
class ArmHFSysVSigignore(Sigignore, ArmHFSysVModel):
|
80
|
+
pass
|
81
|
+
|
82
|
+
|
83
|
+
class ArmHFSysVSiginterrupt(Siginterrupt, ArmHFSysVModel):
|
84
|
+
pass
|
85
|
+
|
86
|
+
|
87
|
+
class ArmHFSysVSigismember(Sigismember, ArmHFSysVModel):
|
88
|
+
pass
|
89
|
+
|
90
|
+
|
91
|
+
class ArmHFSysVSigpause(Sigpause, ArmHFSysVModel):
|
92
|
+
pass
|
93
|
+
|
94
|
+
|
95
|
+
class ArmHFSysVSigpending(Sigpending, ArmHFSysVModel):
|
96
|
+
pass
|
97
|
+
|
98
|
+
|
99
|
+
class ArmHFSysVSigprocmask(Sigprocmask, ArmHFSysVModel):
|
100
|
+
pass
|
101
|
+
|
102
|
+
|
103
|
+
class ArmHFSysVSigqueue(Sigqueue, ArmHFSysVModel):
|
104
|
+
pass
|
105
|
+
|
106
|
+
|
107
|
+
class ArmHFSysVSigrelse(Sigrelse, ArmHFSysVModel):
|
108
|
+
pass
|
109
|
+
|
110
|
+
|
111
|
+
class ArmHFSysVSigset(Sigset, ArmHFSysVModel):
|
112
|
+
pass
|
113
|
+
|
114
|
+
|
115
|
+
class ArmHFSysVSigsuspend(Sigsuspend, ArmHFSysVModel):
|
116
|
+
pass
|
117
|
+
|
118
|
+
|
119
|
+
class ArmHFSysVSigtimedwait(Sigtimedwait, ArmHFSysVModel):
|
120
|
+
pass
|
121
|
+
|
122
|
+
|
123
|
+
class ArmHFSysVSigwait(Sigwait, ArmHFSysVModel):
|
124
|
+
pass
|
125
|
+
|
126
|
+
|
127
|
+
class ArmHFSysVSigwaitinfo(Sigwaitinfo, ArmHFSysVModel):
|
128
|
+
pass
|
129
|
+
|
130
|
+
|
131
|
+
__all__ = [
|
132
|
+
"ArmHFSysVBsdSignal",
|
133
|
+
"ArmHFSysVKill",
|
134
|
+
"ArmHFSysVKillpg",
|
135
|
+
"ArmHFSysVPthreadKill",
|
136
|
+
"ArmHFSysVPthreadSigmask",
|
137
|
+
"ArmHFSysVSigaction",
|
138
|
+
"ArmHFSysVSigaddset",
|
139
|
+
"ArmHFSysVSigaltstack",
|
140
|
+
"ArmHFSysVSigdelset",
|
141
|
+
"ArmHFSysVSigemptyset",
|
142
|
+
"ArmHFSysVSigfillset",
|
143
|
+
"ArmHFSysVSighold",
|
144
|
+
"ArmHFSysVSigignore",
|
145
|
+
"ArmHFSysVSiginterrupt",
|
146
|
+
"ArmHFSysVSigismember",
|
147
|
+
"ArmHFSysVSigpause",
|
148
|
+
"ArmHFSysVSigpending",
|
149
|
+
"ArmHFSysVSigprocmask",
|
150
|
+
"ArmHFSysVSigqueue",
|
151
|
+
"ArmHFSysVSigrelse",
|
152
|
+
"ArmHFSysVSigset",
|
153
|
+
"ArmHFSysVSigsuspend",
|
154
|
+
"ArmHFSysVSigtimedwait",
|
155
|
+
"ArmHFSysVSigwait",
|
156
|
+
"ArmHFSysVSigwaitinfo",
|
157
|
+
]
|
@@ -0,0 +1,77 @@
|
|
1
|
+
import struct
|
2
|
+
|
3
|
+
from ..... import emulators, platforms
|
4
|
+
from ...cstd import ArgumentType, CStdModel
|
5
|
+
|
6
|
+
|
7
|
+
class ArmHFSysVModel(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_V7A, 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 = False
|
45
|
+
_variadic_soft_float = True
|
46
|
+
_floats_are_doubles = False
|
47
|
+
_float_arg_regs = ["s0", "s1", "s2", "s3", "s4", "s5", "s6"]
|
48
|
+
_double_arg_regs = ["d0", "d1", "d2", "d3", "d4", "d5", "d6"]
|
49
|
+
|
50
|
+
_init_stack_offset = 0
|
51
|
+
_align_stack = True
|
52
|
+
_eight_byte_reg_size = 2
|
53
|
+
_double_reg_size = 1
|
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("s0", 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
|
+
emulator.write_register("d0", intval)
|
@@ -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__
|