summaryrefslogtreecommitdiff
path: root/tests/micropython
diff options
context:
space:
mode:
Diffstat (limited to 'tests/micropython')
-rw-r--r--tests/micropython/import_mpy_invalid.py1
-rw-r--r--tests/micropython/import_mpy_invalid.py.exp1
-rw-r--r--tests/micropython/import_mpy_native_gc.py8
-rw-r--r--tests/micropython/import_mpy_native_x64.py63
4 files changed, 42 insertions, 31 deletions
diff --git a/tests/micropython/import_mpy_invalid.py b/tests/micropython/import_mpy_invalid.py
index 02fd4b125..b02312a7a 100644
--- a/tests/micropython/import_mpy_invalid.py
+++ b/tests/micropython/import_mpy_invalid.py
@@ -49,7 +49,6 @@ user_files = {
"/mod0.mpy": b"", # empty file
"/mod1.mpy": b"M", # too short header
"/mod2.mpy": b"M\x00\x00\x00", # bad version
- "/mod3.mpy": b"M\x00\x00\x00\x7f", # qstr window too large
}
# create and mount a user filesystem
diff --git a/tests/micropython/import_mpy_invalid.py.exp b/tests/micropython/import_mpy_invalid.py.exp
index ea748ff6c..1727ea1ce 100644
--- a/tests/micropython/import_mpy_invalid.py.exp
+++ b/tests/micropython/import_mpy_invalid.py.exp
@@ -1,4 +1,3 @@
mod0 ValueError incompatible .mpy file
mod1 ValueError incompatible .mpy file
mod2 ValueError incompatible .mpy file
-mod3 ValueError incompatible .mpy file
diff --git a/tests/micropython/import_mpy_native_gc.py b/tests/micropython/import_mpy_native_gc.py
index f982a4ee1..6f37b15ab 100644
--- a/tests/micropython/import_mpy_native_gc.py
+++ b/tests/micropython/import_mpy_native_gc.py
@@ -49,14 +49,14 @@ class UserFS:
# by the required value of sys.implementation.mpy.
features0_file_contents = {
# -march=x64
- 0xA05: b'M\x05\x0a\x1f \x84b\xe9/\x00\x00\x00SH\x8b\x1ds\x00\x00\x00\xbe\x02\x00\x00\x00\xffS\x18\xbf\x01\x00\x00\x00H\x85\xc0u\x0cH\x8bC \xbe\x02\x00\x00\x00[\xff\xe0H\x0f\xaf\xf8H\xff\xc8\xeb\xe6ATUSH\x8b\x1dA\x00\x00\x00H\x8b\x7f\x08L\x8bc(A\xff\xd4H\x8d5\x1f\x00\x00\x00H\x89\xc5H\x8b\x05-\x00\x00\x00\x0f\xb78\xffShH\x89\xefA\xff\xd4H\x8b\x03[]A\\\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x84@\x12factorial\x10\x00\x00\r \x01"\x9f\x1c\x01\x1e\xff',
+ 0xA06: b'M\x06\n\x1f\x01\x004build/features0.native.mpy\x00\x8aB\xe9/\x00\x00\x00SH\x8b\x1d\x83\x00\x00\x00\xbe\x02\x00\x00\x00\xffS\x18\xbf\x01\x00\x00\x00H\x85\xc0u\x0cH\x8bC \xbe\x02\x00\x00\x00[\xff\xe0H\x0f\xaf\xf8H\xff\xc8\xeb\xe6ATUSH\x8b\x1dQ\x00\x00\x00H\x8bG\x08L\x8bc(H\x8bx\x08A\xff\xd4H\x8d5+\x00\x00\x00H\x89\xc5H\x8b\x059\x00\x00\x00\x0f\xb78\xffShH\x89\xefA\xff\xd4H\x8b\x03[]A\\\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x85\x00\x12factorial\x00\x10\r$\x01&\x9f \x01"\xff',
# -march=armv7m
- 0x1605: b"M\x05\x16\x1f \x84\x12\x1a\xe0\x00\x00\x13\xb5\nK\nJ{D\x9cX\x02!\xe3h\x98G\x03F\x01 3\xb9\x02!#i\x01\x93\x02\xb0\xbd\xe8\x10@\x18GXC\x01;\xf4\xe7\x00\xbfj\x00\x00\x00\x00\x00\x00\x00\xf8\xb5\tN\tK~D\xf4X@hgi\xb8G\x05F\x07K\x07I\xf2XyD\x10\x88ck\x98G(F\xb8G h\xf8\xbd6\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x01\x84\x00\x12factorial\x10\x00\x00\r<\x01>\x9f8\x01:\xff",
+ 0x1606: b"M\x06\x16\x1f\x01\x004build/features0.native.mpy\x00\x88B\x1a\xe0\x00\x00\x13\xb5\nK\nJ{D\x9cX\x02!\xe3h\x98G\x03F\x01 3\xb9\x02!#i\x01\x93\x02\xb0\xbd\xe8\x10@\x18GXC\x01;\xf4\xe7\x00\xbfn\x00\x00\x00\x00\x00\x00\x00\xf8\xb5\nN\nK~D\xf4XChgiXh\xb8G\x05F\x07K\x08I\xf2XyD\x10\x88ck\x98G(F\xb8G h\xf8\xbd\x00\xbf:\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x01\x84\x10\x12factorial\x00\x10\r>\x01@\x9f:\x01<\xff",
}
# Populate other armv7m-derived archs based on armv7m.
-for arch in (0x1A05, 0x1E05, 0x2205):
- features0_file_contents[arch] = features0_file_contents[0x1605]
+for arch in (0x1A06, 0x1E06, 0x2206):
+ features0_file_contents[arch] = features0_file_contents[0x1606]
if sys.implementation.mpy not in features0_file_contents:
print("SKIP")
diff --git a/tests/micropython/import_mpy_native_x64.py b/tests/micropython/import_mpy_native_x64.py
index ff0142a9c..3a25df186 100644
--- a/tests/micropython/import_mpy_native_x64.py
+++ b/tests/micropython/import_mpy_native_x64.py
@@ -52,49 +52,62 @@ class UserFS:
# fmt: off
user_files = {
# bad architecture
- '/mod0.mpy': b'M\x05\xfe\x00\x10',
+ '/mod0.mpy': b'M\x06\xfe\x00\x10',
# test loading of viper and asm
'/mod1.mpy': (
- b'M\x05\x0a\x1f\x20' # header
+ b'M\x06\x0a\x1f' # header
- b'\x20' # n bytes, bytecode
- b'\x00\x08\x02m\x02m' # prelude
+ b'\x02' # n_qstr
+ b'\x00' # n_obj
+
+ b'\x0emod1.py\x00' # qstr0 = "mod1.py"
+ b'\x0aouter\x00' # qstr1 = "outer"
+
+ b'\x2c' # 5 bytes, have children, bytecode
+ b'\x00\x02' # prelude
+ b'\x01' # simple name (qstr index)
b'\x51' # LOAD_CONST_NONE
b'\x63' # RETURN_VALUE
- b'\x00\x02' # n_obj, n_raw_code
+ b'\x02' # 2 children
- b'\x22' # n bytes, viper code
- b'\x00\x00\x00\x00\x00\x00' # dummy machine code
- b'\x00\x00' # qstr0
- b'\x01\x0c\x0aprint' # n_qstr, qstr0
- b'\x00\x00\x00' # scope_flags, n_obj, n_raw_code
+ b'\x42' # 8 bytes, no children, viper code
+ b'\x00\x00\x00\x00\x00\x00' # dummy machine code
+ b'\x00\x00' # slot for qstr0
+ b'\x01\x0c\x0aprint\x00' # n_qstr=1, qstr0
+ b'\x00' # scope_flags
- b'\x23' # n bytes, asm code
- b'\x00\x00\x00\x00\x00\x00\x00\x00' # dummy machine code
- b'\x00\x00\x00' # scope_flags, n_pos_args, type_sig
+ b'\x43' # 8 bytes, no children, asm code
+ b'\x00\x00\x00\x00\x00\x00\x00\x00' # dummy machine code
+ b'\x00\x00\x00' # scope_flags, n_pos_args, type_sig
),
# test loading viper with additional scope flags and relocation
'/mod2.mpy': (
- b'M\x05\x0a\x1f\x20' # header
+ b'M\x06\x0a\x1f' # header
+
+ b'\x02' # n_qstr
+ b'\x00' # n_obj
+
+ b'\x0emod2.py\x00' # qstr0 = "mod2.py"
+ b'\x0aouter\x00' # qstr1 = "outer"
- b'\x20' # n bytes, bytecode
- b'\x00\x08\x02m\x02m' # prelude
+ b'\x2c' # 5 bytes, have children, bytecode
+ b'\x00\x02' # prelude
+ b'\x01' # simple name (qstr index)
b'\x51' # LOAD_CONST_NONE
b'\x63' # RETURN_VALUE
- b'\x00\x01' # n_obj, n_raw_code
+ b'\x01' # 1 child
- b'\x12' # n bytes(=4), viper code
- b'\x00\x00\x00\x00' # dummy machine code
- b'\x00' # n_qstr
- b'\x70' # scope_flags: VIPERBSS | VIPERRODATA | VIPERRELOC
- b'\x00\x00' # n_obj, n_raw_code
- b'\x06rodata' # rodata, 6 bytes
- b'\x04' # bss, 4 bytes
- b'\x03\x01\x00' # dummy relocation of rodata
+ b'\x22' # 4 bytes, no children, viper code
+ b'\x00\x00\x00\x00' # dummy machine code
+ b'\x00' # n_qstr=0
+ b'\x70' # scope_flags: VIPERBSS | VIPERRODATA | VIPERRELOC
+ b'\x06\x04' # rodata=6 bytes, bss=4 bytes
+ b'rodata' # rodata content
+ b'\x03\x01\x00' # dummy relocation of rodata
),
}
# fmt: on