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,362 @@
|
|
1
|
+
from .... import emulators
|
2
|
+
from ..cstd import CStdModel
|
3
|
+
|
4
|
+
|
5
|
+
class Acos(CStdModel):
|
6
|
+
name = "acos"
|
7
|
+
|
8
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
9
|
+
# double acos(double x);
|
10
|
+
raise NotImplementedError()
|
11
|
+
|
12
|
+
|
13
|
+
class Acosf(CStdModel):
|
14
|
+
name = "acosf"
|
15
|
+
|
16
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
17
|
+
# float acosf(float x);
|
18
|
+
raise NotImplementedError()
|
19
|
+
|
20
|
+
|
21
|
+
class Acosl(CStdModel):
|
22
|
+
name = "acosl"
|
23
|
+
|
24
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
25
|
+
# long double acosl(long double x);
|
26
|
+
raise NotImplementedError()
|
27
|
+
|
28
|
+
|
29
|
+
class Asin(CStdModel):
|
30
|
+
name = "asin"
|
31
|
+
|
32
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
33
|
+
# double asin(double x);
|
34
|
+
raise NotImplementedError()
|
35
|
+
|
36
|
+
|
37
|
+
class Asinf(CStdModel):
|
38
|
+
name = "asinf"
|
39
|
+
|
40
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
41
|
+
# float asinf(float x);
|
42
|
+
raise NotImplementedError()
|
43
|
+
|
44
|
+
|
45
|
+
class Asinl(CStdModel):
|
46
|
+
name = "asinl"
|
47
|
+
|
48
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
49
|
+
# long double asinl(long double x);
|
50
|
+
raise NotImplementedError()
|
51
|
+
|
52
|
+
|
53
|
+
class Asinh(CStdModel):
|
54
|
+
name = "asinh"
|
55
|
+
|
56
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
57
|
+
# double asinh(double x);
|
58
|
+
raise NotImplementedError()
|
59
|
+
|
60
|
+
|
61
|
+
class Asinhf(CStdModel):
|
62
|
+
name = "asinhf"
|
63
|
+
|
64
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
65
|
+
# float asinhf(float x);
|
66
|
+
raise NotImplementedError()
|
67
|
+
|
68
|
+
|
69
|
+
class Asinhl(CStdModel):
|
70
|
+
name = "asinhl"
|
71
|
+
|
72
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
73
|
+
# long double asinhl(long double x);
|
74
|
+
raise NotImplementedError()
|
75
|
+
|
76
|
+
|
77
|
+
class Atan(CStdModel):
|
78
|
+
name = "atan"
|
79
|
+
|
80
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
81
|
+
# double atan(double x);
|
82
|
+
raise NotImplementedError()
|
83
|
+
|
84
|
+
|
85
|
+
class Atanf(CStdModel):
|
86
|
+
name = "atanf"
|
87
|
+
|
88
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
89
|
+
# float atanf(double x);
|
90
|
+
raise NotImplementedError()
|
91
|
+
|
92
|
+
|
93
|
+
class Atanl(CStdModel):
|
94
|
+
name = "atanl"
|
95
|
+
|
96
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
97
|
+
# long double atanl(long double x);
|
98
|
+
raise NotImplementedError()
|
99
|
+
|
100
|
+
|
101
|
+
class Atan2(CStdModel):
|
102
|
+
name = "atan2"
|
103
|
+
|
104
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
105
|
+
# double atan2(double x, double y);
|
106
|
+
raise NotImplementedError()
|
107
|
+
|
108
|
+
|
109
|
+
class Atan2f(CStdModel):
|
110
|
+
name = "atan2f"
|
111
|
+
|
112
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
113
|
+
# float atan2(float x, float y);
|
114
|
+
raise NotImplementedError()
|
115
|
+
|
116
|
+
|
117
|
+
class Atan2l(CStdModel):
|
118
|
+
name = "atan2l"
|
119
|
+
|
120
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
121
|
+
# long double atan2l(long double x, long double y);
|
122
|
+
raise NotImplementedError()
|
123
|
+
|
124
|
+
|
125
|
+
class Atanh(CStdModel):
|
126
|
+
name = "atanh"
|
127
|
+
|
128
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
129
|
+
# double atanh(double x);
|
130
|
+
raise NotImplementedError()
|
131
|
+
|
132
|
+
|
133
|
+
class Atanhf(CStdModel):
|
134
|
+
name = "atanhf"
|
135
|
+
|
136
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
137
|
+
# float atanhf(float x);
|
138
|
+
raise NotImplementedError()
|
139
|
+
|
140
|
+
|
141
|
+
class Atanhl(CStdModel):
|
142
|
+
name = "atanhl"
|
143
|
+
|
144
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
145
|
+
# long double atanhl(long double x);
|
146
|
+
raise NotImplementedError()
|
147
|
+
|
148
|
+
|
149
|
+
class Cbrt(CStdModel):
|
150
|
+
name = "cbrt"
|
151
|
+
|
152
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
153
|
+
# double cbrt(double x);
|
154
|
+
raise NotImplementedError()
|
155
|
+
|
156
|
+
|
157
|
+
class Cbrtf(CStdModel):
|
158
|
+
name = "cbrtf"
|
159
|
+
|
160
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
161
|
+
# float cbrtf(float x);
|
162
|
+
raise NotImplementedError()
|
163
|
+
|
164
|
+
|
165
|
+
class Cbrtl(CStdModel):
|
166
|
+
name = "cbrtl"
|
167
|
+
|
168
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
169
|
+
# long double long cbrtl(double x);
|
170
|
+
raise NotImplementedError()
|
171
|
+
|
172
|
+
|
173
|
+
class Ceil(CStdModel):
|
174
|
+
name = "ceil"
|
175
|
+
|
176
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
177
|
+
# double ceil(double x);
|
178
|
+
raise NotImplementedError()
|
179
|
+
|
180
|
+
|
181
|
+
class Ceilf(CStdModel):
|
182
|
+
name = "ceilf"
|
183
|
+
|
184
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
185
|
+
# float ceilf(float x);
|
186
|
+
raise NotImplementedError()
|
187
|
+
|
188
|
+
|
189
|
+
class Ceill(CStdModel):
|
190
|
+
name = "ceill"
|
191
|
+
|
192
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
193
|
+
# long double ceill(long double x);
|
194
|
+
raise NotImplementedError()
|
195
|
+
|
196
|
+
|
197
|
+
class Copysign(CStdModel):
|
198
|
+
name = "copysign"
|
199
|
+
|
200
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
201
|
+
# double copysign(double x, double y);
|
202
|
+
raise NotImplementedError()
|
203
|
+
|
204
|
+
|
205
|
+
class Copysignf(CStdModel):
|
206
|
+
name = "copysignf"
|
207
|
+
|
208
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
209
|
+
# float copysignf(float x, float y);
|
210
|
+
raise NotImplementedError()
|
211
|
+
|
212
|
+
|
213
|
+
class Copysignl(CStdModel):
|
214
|
+
name = "copysignl"
|
215
|
+
|
216
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
217
|
+
# long double copysignl(long double x, long double y);
|
218
|
+
raise NotImplementedError()
|
219
|
+
|
220
|
+
|
221
|
+
class Cos(CStdModel):
|
222
|
+
name = "cos"
|
223
|
+
|
224
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
225
|
+
# double cos(double x);
|
226
|
+
raise NotImplementedError()
|
227
|
+
|
228
|
+
|
229
|
+
class Cosf(CStdModel):
|
230
|
+
name = "cosf"
|
231
|
+
|
232
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
233
|
+
# float cosf(float x);
|
234
|
+
raise NotImplementedError()
|
235
|
+
|
236
|
+
|
237
|
+
class Cosl(CStdModel):
|
238
|
+
name = "cosl"
|
239
|
+
|
240
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
241
|
+
# long double cosl(long double x);
|
242
|
+
raise NotImplementedError()
|
243
|
+
|
244
|
+
|
245
|
+
class Cosh(CStdModel):
|
246
|
+
name = "cosh"
|
247
|
+
|
248
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
249
|
+
# double cosh(double x);
|
250
|
+
raise NotImplementedError()
|
251
|
+
|
252
|
+
|
253
|
+
class Coshf(CStdModel):
|
254
|
+
name = "coshf"
|
255
|
+
|
256
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
257
|
+
# float coshf(float x);
|
258
|
+
raise NotImplementedError()
|
259
|
+
|
260
|
+
|
261
|
+
class Coshl(CStdModel):
|
262
|
+
name = "coshl"
|
263
|
+
|
264
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
265
|
+
# long double coshl(long double x);
|
266
|
+
raise NotImplementedError()
|
267
|
+
|
268
|
+
|
269
|
+
class Exp(CStdModel):
|
270
|
+
name = "exp"
|
271
|
+
|
272
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
273
|
+
# double exp(double x);
|
274
|
+
raise NotImplementedError()
|
275
|
+
|
276
|
+
|
277
|
+
class Expf(CStdModel):
|
278
|
+
name = "expf"
|
279
|
+
|
280
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
281
|
+
# float expf(float x);
|
282
|
+
raise NotImplementedError()
|
283
|
+
|
284
|
+
|
285
|
+
class Expl(CStdModel):
|
286
|
+
name = "expl"
|
287
|
+
|
288
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
289
|
+
# long double expl(long double x);
|
290
|
+
raise NotImplementedError()
|
291
|
+
|
292
|
+
|
293
|
+
class Exp2(CStdModel):
|
294
|
+
name = "exp2"
|
295
|
+
|
296
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
297
|
+
# double exp2(double x);
|
298
|
+
raise NotImplementedError()
|
299
|
+
|
300
|
+
|
301
|
+
class Exp2f(CStdModel):
|
302
|
+
name = "exp2f"
|
303
|
+
|
304
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
305
|
+
# float exp2f(float x);
|
306
|
+
raise NotImplementedError()
|
307
|
+
|
308
|
+
|
309
|
+
class Exp2l(CStdModel):
|
310
|
+
name = "exp2l"
|
311
|
+
|
312
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
313
|
+
# long double exp2l(long double x);
|
314
|
+
raise NotImplementedError()
|
315
|
+
|
316
|
+
|
317
|
+
class Expm1(CStdModel):
|
318
|
+
name = "expm1"
|
319
|
+
|
320
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
321
|
+
# double expm1(double x);
|
322
|
+
raise NotImplementedError()
|
323
|
+
|
324
|
+
|
325
|
+
class Expm1f(CStdModel):
|
326
|
+
name = "expm1f"
|
327
|
+
|
328
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
329
|
+
# float expm1f(float x);
|
330
|
+
raise NotImplementedError()
|
331
|
+
|
332
|
+
|
333
|
+
class Expm1l(CStdModel):
|
334
|
+
name = "expm1l"
|
335
|
+
|
336
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
337
|
+
# long double expm1l(long double x);
|
338
|
+
raise NotImplementedError()
|
339
|
+
|
340
|
+
|
341
|
+
class Erf(CStdModel):
|
342
|
+
name = "erf"
|
343
|
+
|
344
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
345
|
+
# double erf(double x);
|
346
|
+
raise NotImplementedError()
|
347
|
+
|
348
|
+
|
349
|
+
class Erff(CStdModel):
|
350
|
+
name = "erff"
|
351
|
+
|
352
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
353
|
+
# float erff(float x);
|
354
|
+
raise NotImplementedError()
|
355
|
+
|
356
|
+
|
357
|
+
class Erfl(CStdModel):
|
358
|
+
name = "erfl"
|
359
|
+
|
360
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
361
|
+
# long double erfl(long double x);
|
362
|
+
raise NotImplementedError()
|
@@ -0,0 +1,71 @@
|
|
1
|
+
import typing
|
2
|
+
|
3
|
+
from .... import emulators
|
4
|
+
from ..cstd import ArgumentType, CStdModel
|
5
|
+
|
6
|
+
# NOTE: Most of signal.h is not defined in C99
|
7
|
+
#
|
8
|
+
# If you're familiar with Linux,
|
9
|
+
# the rest of the functions you're looking for
|
10
|
+
# are part of the POSIX standard.
|
11
|
+
#
|
12
|
+
# Windows only implements the C99 API;
|
13
|
+
# I suspect it keeps most process lifecycle controls
|
14
|
+
# internal to its own application runtimes.
|
15
|
+
|
16
|
+
|
17
|
+
class Raise(CStdModel):
|
18
|
+
name = "raise"
|
19
|
+
|
20
|
+
# int raise(int sig);
|
21
|
+
argument_types = [ArgumentType.INT]
|
22
|
+
return_type = ArgumentType.INT
|
23
|
+
|
24
|
+
# Most of our emulators can't model signals.
|
25
|
+
# I'm not sure it's possible to model raising one.
|
26
|
+
imprecise = True
|
27
|
+
|
28
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
29
|
+
super().model(emulator)
|
30
|
+
|
31
|
+
# Not really modeled; just return success
|
32
|
+
self.set_return_value(emulator, 0)
|
33
|
+
|
34
|
+
|
35
|
+
class Signal(CStdModel):
|
36
|
+
name = "signal"
|
37
|
+
|
38
|
+
# typedef void (*sighandler_t)(int);
|
39
|
+
# sighandler_t signal(int sig, sighandler_t func);
|
40
|
+
argument_types = [ArgumentType.INT, ArgumentType.POINTER]
|
41
|
+
return_type = ArgumentType.POINTER
|
42
|
+
|
43
|
+
# Most of our emulators can't model signals.
|
44
|
+
imprecise = True
|
45
|
+
|
46
|
+
def __init__(self, address: int):
|
47
|
+
super().__init__(address)
|
48
|
+
# Track any registered handlers.
|
49
|
+
# Sometimes programs care about this.
|
50
|
+
self.handlers: typing.Dict[int, int] = dict()
|
51
|
+
|
52
|
+
def model(self, emulator: emulators.Emulator) -> None:
|
53
|
+
super().model(emulator)
|
54
|
+
|
55
|
+
sig = self.get_arg1(emulator)
|
56
|
+
func = self.get_arg2(emulator)
|
57
|
+
|
58
|
+
assert isinstance(sig, int)
|
59
|
+
assert isinstance(func, int)
|
60
|
+
|
61
|
+
# Get the old handler. Default to SIG_DFL, or NULL.
|
62
|
+
old_func = self.handlers.get(sig, 0)
|
63
|
+
self.handlers[sig] = func
|
64
|
+
|
65
|
+
self.set_return_value(emulator, old_func)
|
66
|
+
|
67
|
+
|
68
|
+
__all__ = [
|
69
|
+
"Raise",
|
70
|
+
"Signal",
|
71
|
+
]
|