...

Text file src/github.com/tetratelabs/wazero/internal/integration_test/spectest/v1/testdata/binary.wast

Documentation: github.com/tetratelabs/wazero/internal/integration_test/spectest/v1/testdata

     1(module binary "\00asm\01\00\00\00")
     2(module binary "\00asm" "\01\00\00\00")
     3(module $M1 binary "\00asm\01\00\00\00")
     4(module $M2 binary "\00asm" "\01\00\00\00")
     5
     6(assert_malformed (module binary "") "unexpected end")
     7(assert_malformed (module binary "\01") "unexpected end")
     8(assert_malformed (module binary "\00as") "unexpected end")
     9(assert_malformed (module binary "asm\00") "magic header not detected")
    10(assert_malformed (module binary "msa\00") "magic header not detected")
    11(assert_malformed (module binary "msa\00\01\00\00\00") "magic header not detected")
    12(assert_malformed (module binary "msa\00\00\00\00\01") "magic header not detected")
    13(assert_malformed (module binary "asm\01\00\00\00\00") "magic header not detected")
    14(assert_malformed (module binary "wasm\01\00\00\00") "magic header not detected")
    15(assert_malformed (module binary "\7fasm\01\00\00\00") "magic header not detected")
    16(assert_malformed (module binary "\80asm\01\00\00\00") "magic header not detected")
    17(assert_malformed (module binary "\82asm\01\00\00\00") "magic header not detected")
    18(assert_malformed (module binary "\ffasm\01\00\00\00") "magic header not detected")
    19
    20;; 8-byte endian-reversed.
    21(assert_malformed (module binary "\00\00\00\01msa\00") "magic header not detected")
    22
    23;; Middle-endian byte orderings.
    24(assert_malformed (module binary "a\00ms\00\01\00\00") "magic header not detected")
    25(assert_malformed (module binary "sm\00a\00\00\01\00") "magic header not detected")
    26
    27;; Upper-cased.
    28(assert_malformed (module binary "\00ASM\01\00\00\00") "magic header not detected")
    29
    30;; EBCDIC-encoded magic.
    31(assert_malformed (module binary "\00\81\a2\94\01\00\00\00") "magic header not detected")
    32
    33;; Leading UTF-8 BOM.
    34(assert_malformed (module binary "\ef\bb\bf\00asm\01\00\00\00") "magic header not detected")
    35
    36;; Malformed binary version.
    37(assert_malformed (module binary "\00asm") "unexpected end")
    38(assert_malformed (module binary "\00asm\01") "unexpected end")
    39(assert_malformed (module binary "\00asm\01\00\00") "unexpected end")
    40(assert_malformed (module binary "\00asm\00\00\00\00") "unknown binary version")
    41(assert_malformed (module binary "\00asm\0d\00\00\00") "unknown binary version")
    42(assert_malformed (module binary "\00asm\0e\00\00\00") "unknown binary version")
    43(assert_malformed (module binary "\00asm\00\01\00\00") "unknown binary version")
    44(assert_malformed (module binary "\00asm\00\00\01\00") "unknown binary version")
    45(assert_malformed (module binary "\00asm\00\00\00\01") "unknown binary version")
    46
    47
    48;; call_indirect reserved byte equal to zero.
    49(assert_malformed
    50  (module binary
    51    "\00asm" "\01\00\00\00"
    52    "\01\04\01\60\00\00"      ;; Type section
    53    "\03\02\01\00"            ;; Function section
    54    "\04\04\01\70\00\00"      ;; Table section
    55    "\0a\09\01"               ;; Code section
    56
    57    ;; function 0
    58    "\07\00"
    59    "\41\00"                   ;; i32.const 0
    60    "\11\00"                   ;; call_indirect (type 0)
    61    "\01"                      ;; call_indirect reserved byte is not equal to zero!
    62    "\0b"                      ;; end
    63  )
    64  "zero flag expected"
    65)
    66
    67;; call_indirect reserved byte should not be a "long" LEB128 zero.
    68(assert_malformed
    69  (module binary
    70    "\00asm" "\01\00\00\00"
    71    "\01\04\01\60\00\00"      ;; Type section
    72    "\03\02\01\00"            ;; Function section
    73    "\04\04\01\70\00\00"      ;; Table section
    74    "\0a\0a\01"               ;; Code section
    75
    76    ;; function 0
    77    "\07\00"
    78    "\41\00"                   ;; i32.const 0
    79    "\11\00"                   ;; call_indirect (type 0)
    80    "\80\00"                   ;; call_indirect reserved byte
    81    "\0b"                      ;; end
    82  )
    83  "zero flag expected"
    84)
    85
    86;; Same as above for 3, 4, and 5-byte zero encodings.
    87(assert_malformed
    88  (module binary
    89    "\00asm" "\01\00\00\00"
    90    "\01\04\01\60\00\00"      ;; Type section
    91    "\03\02\01\00"            ;; Function section
    92    "\04\04\01\70\00\00"      ;; Table section
    93    "\0a\0b\01"               ;; Code section
    94
    95    ;; function 0
    96    "\08\00"
    97    "\41\00"                   ;; i32.const 0
    98    "\11\00"                   ;; call_indirect (type 0)
    99    "\80\80\00"                ;; call_indirect reserved byte
   100    "\0b"                      ;; end
   101  )
   102  "zero flag expected"
   103)
   104
   105(assert_malformed
   106  (module binary
   107    "\00asm" "\01\00\00\00"
   108    "\01\04\01\60\00\00"      ;; Type section
   109    "\03\02\01\00"            ;; Function section
   110    "\04\04\01\70\00\00"      ;; Table section
   111    "\0a\0c\01"               ;; Code section
   112
   113    ;; function 0
   114    "\09\00"
   115    "\41\00"                   ;; i32.const 0
   116    "\11\00"                   ;; call_indirect (type 0)
   117    "\80\80\80\00"             ;; call_indirect reserved byte
   118    "\0b"                      ;; end
   119  )
   120  "zero flag expected"
   121)
   122
   123(assert_malformed
   124  (module binary
   125    "\00asm" "\01\00\00\00"
   126    "\01\04\01\60\00\00"      ;; Type section
   127    "\03\02\01\00"            ;; Function section
   128    "\04\04\01\70\00\00"      ;; Table section
   129    "\0a\0d\01"               ;; Code section
   130
   131    ;; function 0
   132    "\0a\00"
   133    "\41\00"                   ;; i32.const 0
   134    "\11\00"                   ;; call_indirect (type 0)
   135    "\80\80\80\80\00"          ;; call_indirect reserved byte
   136    "\0b"                      ;; end
   137  )
   138  "zero flag expected"
   139)
   140
   141;; memory.grow reserved byte equal to zero.
   142(assert_malformed
   143  (module binary
   144    "\00asm" "\01\00\00\00"
   145    "\01\04\01\60\00\00"       ;; Type section
   146    "\03\02\01\00"             ;; Function section
   147    "\05\03\01\00\00"          ;; Memory section
   148    "\0a\09\01"                ;; Code section
   149
   150    ;; function 0
   151    "\07\00"
   152    "\41\00"                   ;; i32.const 0
   153    "\40"                      ;; memory.grow
   154    "\01"                      ;; memory.grow reserved byte is not equal to zero!
   155    "\1a"                      ;; drop
   156    "\0b"                      ;; end
   157  )
   158  "zero flag expected"
   159)
   160
   161;; memory.grow reserved byte should not be a "long" LEB128 zero.
   162(assert_malformed
   163  (module binary
   164    "\00asm" "\01\00\00\00"
   165    "\01\04\01\60\00\00"       ;; Type section
   166    "\03\02\01\00"             ;; Function section
   167    "\05\03\01\00\00"          ;; Memory section
   168    "\0a\0a\01"                ;; Code section
   169
   170    ;; function 0
   171    "\08\00"
   172    "\41\00"                   ;; i32.const 0
   173    "\40"                      ;; memory.grow
   174    "\80\00"                   ;; memory.grow reserved byte
   175    "\1a"                      ;; drop
   176    "\0b"                      ;; end
   177  )
   178  "zero flag expected"
   179)
   180
   181;; Same as above for 3, 4, and 5-byte zero encodings.
   182(assert_malformed
   183  (module binary
   184    "\00asm" "\01\00\00\00"
   185    "\01\04\01\60\00\00"       ;; Type section
   186    "\03\02\01\00"             ;; Function section
   187    "\05\03\01\00\00"          ;; Memory section
   188    "\0a\0b\01"                ;; Code section
   189
   190    ;; function 0
   191    "\09\00"
   192    "\41\00"                   ;; i32.const 0
   193    "\40"                      ;; memory.grow
   194    "\80\80\00"                ;; memory.grow reserved byte
   195    "\1a"                      ;; drop
   196    "\0b"                      ;; end
   197  )
   198  "zero flag expected"
   199)
   200
   201(assert_malformed
   202  (module binary
   203    "\00asm" "\01\00\00\00"
   204    "\01\04\01\60\00\00"       ;; Type section
   205    "\03\02\01\00"             ;; Function section
   206    "\05\03\01\00\00"          ;; Memory section
   207    "\0a\0c\01"                ;; Code section
   208
   209    ;; function 0
   210    "\0a\00"
   211    "\41\00"                   ;; i32.const 0
   212    "\40"                      ;; memory.grow
   213    "\80\80\80\00"             ;; memory.grow reserved byte
   214    "\1a"                      ;; drop
   215    "\0b"                      ;; end
   216  )
   217  "zero flag expected"
   218)
   219
   220(assert_malformed
   221  (module binary
   222    "\00asm" "\01\00\00\00"
   223    "\01\04\01\60\00\00"       ;; Type section
   224    "\03\02\01\00"             ;; Function section
   225    "\05\03\01\00\00"          ;; Memory section
   226    "\0a\0d\01"                ;; Code section
   227
   228    ;; function 0
   229    "\0b\00"
   230    "\41\00"                   ;; i32.const 0
   231    "\40"                      ;; memory.grow
   232    "\80\80\80\80\00"          ;; memory.grow reserved byte
   233    "\1a"                      ;; drop
   234    "\0b"                      ;; end
   235  )
   236  "zero flag expected"
   237)
   238
   239;; memory.size reserved byte equal to zero.
   240(assert_malformed
   241  (module binary
   242    "\00asm" "\01\00\00\00"
   243    "\01\04\01\60\00\00"       ;; Type section
   244    "\03\02\01\00"             ;; Function section
   245    "\05\03\01\00\00"          ;; Memory section
   246    "\0a\07\01"                ;; Code section
   247
   248    ;; function 0
   249    "\05\00"
   250    "\3f"                      ;; memory.size
   251    "\01"                      ;; memory.size reserved byte is not equal to zero!
   252    "\1a"                      ;; drop
   253    "\0b"                      ;; end
   254  )
   255  "zero flag expected"
   256)
   257
   258;; memory.size reserved byte should not be a "long" LEB128 zero.
   259(assert_malformed
   260  (module binary
   261    "\00asm" "\01\00\00\00"
   262    "\01\04\01\60\00\00"       ;; Type section
   263    "\03\02\01\00"             ;; Function section
   264    "\05\03\01\00\00"          ;; Memory section
   265    "\0a\08\01"                ;; Code section
   266
   267    ;; function 0
   268    "\06\00"
   269    "\3f"                      ;; memory.size
   270    "\80\00"                   ;; memory.size reserved byte
   271    "\1a"                      ;; drop
   272    "\0b"                      ;; end
   273  )
   274  "zero flag expected"
   275)
   276
   277;; Same as above for 3, 4, and 5-byte zero encodings.
   278(assert_malformed
   279  (module binary
   280    "\00asm" "\01\00\00\00"
   281    "\01\04\01\60\00\00"       ;; Type section
   282    "\03\02\01\00"             ;; Function section
   283    "\05\03\01\00\00"          ;; Memory section
   284    "\0a\09\01"                ;; Code section
   285
   286    ;; function 0
   287    "\07\00"
   288    "\3f"                      ;; memory.size
   289    "\80\80\00"                ;; memory.size reserved byte
   290    "\1a"                      ;; drop
   291    "\0b"                      ;; end
   292  )
   293  "zero flag expected"
   294)
   295
   296(assert_malformed
   297  (module binary
   298    "\00asm" "\01\00\00\00"
   299    "\01\04\01\60\00\00"       ;; Type section
   300    "\03\02\01\00"             ;; Function section
   301    "\05\03\01\00\00"          ;; Memory section
   302    "\0a\0a\01"                ;; Code section
   303
   304    ;; function 0
   305    "\08\00"
   306    "\3f"                      ;; memory.size
   307    "\80\80\80\00"             ;; memory.size reserved byte
   308    "\1a"                      ;; drop
   309    "\0b"                      ;; end
   310  )
   311  "zero flag expected"
   312)
   313
   314(assert_malformed
   315  (module binary
   316    "\00asm" "\01\00\00\00"
   317    "\01\04\01\60\00\00"       ;; Type section
   318    "\03\02\01\00"             ;; Function section
   319    "\05\03\01\00\00"          ;; Memory section
   320    "\0a\0b\01"                ;; Code section
   321
   322    ;; function 0
   323    "\09\00"
   324    "\3f"                      ;; memory.size
   325    "\80\80\80\80\00"          ;; memory.size reserved byte
   326    "\1a"                      ;; drop
   327    "\0b"                      ;; end
   328  )
   329  "zero flag expected"
   330)
   331
   332;; No more than 2^32 locals.
   333(assert_malformed
   334  (module binary
   335    "\00asm" "\01\00\00\00"
   336    "\01\04\01\60\00\00"       ;; Type section
   337    "\03\02\01\00"             ;; Function section
   338    "\0a\0c\01"                ;; Code section
   339
   340    ;; function 0
   341    "\0a\02"
   342    "\ff\ff\ff\ff\0f\7f"       ;; 0xFFFFFFFF i32
   343    "\02\7e"                   ;; 0x00000002 i64
   344    "\0b"                      ;; end
   345  )
   346  "too many locals"
   347)
   348
   349;; Local count can be 0.
   350(module binary
   351  "\00asm" "\01\00\00\00"
   352  "\01\04\01\60\00\00"     ;; Type section
   353  "\03\02\01\00"           ;; Function section
   354  "\0a\0a\01"              ;; Code section
   355
   356  ;; function 0
   357  "\08\03"
   358  "\00\7f"                 ;; 0 i32
   359  "\00\7e"                 ;; 0 i64
   360  "\02\7d"                 ;; 2 f32
   361  "\0b"                    ;; end
   362)
   363
   364;; Function section has non-zero count, but code section is absent.
   365(assert_malformed
   366  (module binary
   367    "\00asm" "\01\00\00\00"
   368    "\01\04\01\60\00\00"  ;; Type section
   369    "\03\03\02\00\00"     ;; Function section with 2 functions
   370  )
   371  "function and code section have inconsistent lengths"
   372)
   373
   374;; Code section has non-zero count, but function section is absent.
   375(assert_malformed
   376  (module binary
   377    "\00asm" "\01\00\00\00"
   378    "\0a\04\01\02\00\0b"  ;; Code section with 1 empty function
   379  )
   380  "function and code section have inconsistent lengths"
   381)
   382
   383;; Function section count > code section count
   384(assert_malformed
   385  (module binary
   386    "\00asm" "\01\00\00\00"
   387    "\01\04\01\60\00\00"  ;; Type section
   388    "\03\03\02\00\00"     ;; Function section with 2 functions
   389    "\0a\04\01\02\00\0b"  ;; Code section with 1 empty function
   390  )
   391  "function and code section have inconsistent lengths"
   392)
   393
   394;; Function section count < code section count
   395(assert_malformed
   396  (module binary
   397    "\00asm" "\01\00\00\00"
   398    "\01\04\01\60\00\00"           ;; Type section
   399    "\03\02\01\00"                 ;; Function section with 1 function
   400    "\0a\07\02\02\00\0b\02\00\0b"  ;; Code section with 2 empty functions
   401  )
   402  "function and code section have inconsistent lengths"
   403)
   404
   405;; Function section has zero count, and code section is absent.
   406(module binary
   407  "\00asm" "\01\00\00\00"
   408  "\03\01\00"  ;; Function section with 0 functions
   409)
   410
   411;; Code section has zero count, and function section is absent.
   412(module binary
   413  "\00asm" "\01\00\00\00"
   414  "\0a\01\00"  ;; Code section with 0 functions
   415)
   416
   417;; Type count can be zero
   418(module binary
   419  "\00asm" "\01\00\00\00"
   420  "\01\01\00"                               ;; type count can be zero
   421)
   422
   423;; 2 type declared, 1 given
   424(assert_malformed
   425  (module binary
   426    "\00asm" "\01\00\00\00"
   427    "\01\07\02"                             ;; type section with inconsistent count (2 declared, 1 given)
   428    "\60\00\00"                             ;; 1st type
   429    ;; "\60\00\00"                          ;; 2nd type (missed)
   430  )
   431  "unexpected end of section or function"
   432)
   433
   434;; 1 type declared, 2 given
   435(assert_malformed
   436  (module binary
   437    "\00asm" "\01\00\00\00"
   438    "\01\07\01"                             ;; type section with inconsistent count (1 declared, 2 given)
   439    "\60\00\00"                             ;; 1st type
   440    "\60\00\00"                             ;; 2nd type (redundant)
   441  )
   442  "section size mismatch"
   443)
   444
   445;; Import count can be zero
   446(module binary
   447    "\00asm" "\01\00\00\00"
   448    "\01\05\01"                             ;; type section
   449    "\60\01\7f\00"                          ;; type 0
   450    "\02\01\00"                             ;; import count can be zero
   451)
   452
   453;; 2 import declared, 1 given
   454(assert_malformed
   455  (module binary
   456      "\00asm" "\01\00\00\00"
   457      "\01\05\01"                           ;; type section
   458      "\60\01\7f\00"                        ;; type 0
   459      "\02\16\02"                           ;; import section with inconsistent count (2 declared, 1 given)
   460      ;; 1st import
   461      "\08"                                 ;; string length
   462      "\73\70\65\63\74\65\73\74"            ;; spectest
   463      "\09"                                 ;; string length
   464      "\70\72\69\6e\74\5f\69\33\32"         ;; print_i32
   465      "\00\00"                              ;; import kind, import signature index
   466      ;; 2nd import
   467      ;; (missed)
   468  )
   469  "unexpected end of section or function"
   470)
   471
   472;; 1 import declared, 2 given
   473(assert_malformed
   474  (module binary
   475      "\00asm" "\01\00\00\00"
   476      "\01\09\02"                           ;; type section
   477      "\60\01\7f\00"                        ;; type 0
   478      "\60\01\7d\00"                        ;; type 1
   479      "\02\2b\01"                           ;; import section with inconsistent count (1 declared, 2 given)
   480      ;; 1st import
   481      "\08"                                 ;; string length
   482      "\73\70\65\63\74\65\73\74"            ;; spectest
   483      "\09"                                 ;; string length
   484      "\70\72\69\6e\74\5f\69\33\32"         ;; print_i32
   485      "\00\00"                              ;; import kind, import signature index
   486      ;; 2nd import
   487      ;; (redundant)
   488      "\08"                                 ;; string length
   489      "\73\70\65\63\74\65\73\74"            ;; spectest
   490      "\09"                                 ;; string length
   491      "\70\72\69\6e\74\5f\66\33\32"         ;; print_f32
   492      "\00\01"                              ;; import kind, import signature index
   493  )
   494  "section size mismatch"
   495)
   496
   497;; Table count can be zero
   498(module binary
   499    "\00asm" "\01\00\00\00"
   500    "\04\01\00"                             ;; table count can be zero
   501)
   502
   503;; 1 table declared, 0 given
   504(assert_malformed
   505  (module binary
   506      "\00asm" "\01\00\00\00"
   507      "\04\01\01"                           ;; table section with inconsistent count (1 declared, 0 given)
   508      ;; "\70\01\00\00"                     ;; table entity
   509  )
   510  "unexpected end of section or function"
   511)
   512
   513;; Memory count can be zero
   514(module binary
   515    "\00asm" "\01\00\00\00"
   516    "\05\01\00"                             ;; memory count can be zero
   517)
   518
   519;; 1 memory declared, 0 given
   520(assert_malformed
   521  (module binary
   522      "\00asm" "\01\00\00\00"
   523      "\05\01\01"                           ;; memory section with inconsistent count (1 declared, 0 given)
   524      ;; "\00\00"                           ;; memory 0 (missed)
   525  )
   526  "unexpected end of section or function"
   527)
   528
   529;; Global count can be zero
   530(module binary
   531  "\00asm" "\01\00\00\00"
   532  "\06\01\00"                               ;; global count can be zero
   533)
   534
   535;; 2 global declared, 1 given
   536(assert_malformed
   537  (module binary
   538    "\00asm" "\01\00\00\00"
   539    "\06\06\02"                             ;; global section with inconsistent count (2 declared, 1 given)
   540    "\7f\00\41\00\0b"                       ;; global 0
   541    ;; "\7f\00\41\00\0b"                    ;; global 1 (missed)
   542  )
   543  "unexpected end of section or function"
   544)
   545
   546;; 1 global declared, 2 given
   547(assert_malformed
   548  (module binary
   549    "\00asm" "\01\00\00\00"
   550    "\06\0b\01"                             ;; global section with inconsistent count (1 declared, 2 given)
   551    "\7f\00\41\00\0b"                       ;; global 0
   552    "\7f\00\41\00\0b"                       ;; global 1 (redundant)
   553  )
   554  "section size mismatch"
   555)
   556
   557;; Export count can be 0
   558(module binary
   559  "\00asm" "\01\00\00\00"
   560  "\01\04\01"                               ;; type section
   561  "\60\00\00"                               ;; type 0
   562  "\03\03\02\00\00"                         ;; func section
   563  "\07\01\00"                               ;; export count can be zero
   564  "\0a\07\02"                               ;; code section
   565  "\02\00\0b"                               ;; function body 0
   566  "\02\00\0b"                               ;; function body 1
   567)
   568
   569;; 2 export declared, 1 given
   570(assert_malformed
   571  (module binary
   572    "\00asm" "\01\00\00\00"
   573    "\01\04\01"                             ;; type section
   574    "\60\00\00"                             ;; type 0
   575    "\03\03\02\00\00"                       ;; func section
   576    "\07\06\02"                             ;; export section with inconsistent count (2 declared, 1 given)
   577    "\02"                                   ;; export 0
   578    "\66\31"                                ;; export name
   579    "\00\00"                                ;; export kind, export func index
   580    ;; "\02"                                ;; export 1 (missed)
   581    ;; "\66\32"                             ;; export name
   582    ;; "\00\01"                             ;; export kind, export func index
   583    "\0a\07\02"                             ;; code section
   584    "\02\00\0b"                             ;; function body 0
   585    "\02\00\0b"                             ;; function body 1
   586  )
   587  "unexpected end of section or function"
   588)
   589
   590;; 1 export declared, 2 given
   591(assert_malformed
   592  (module binary
   593    "\00asm" "\01\00\00\00"
   594    "\01\04\01"                             ;; type section
   595    "\60\00\00"                             ;; type 0
   596    "\03\03\02\00\00"                       ;; func section
   597    "\07\0b\01"                             ;; export section with inconsistent count (1 declared, 2 given)
   598    "\02"                                   ;; export 0
   599    "\66\31"                                ;; export name
   600    "\00\00"                                ;; export kind, export func index
   601    "\02"                                   ;; export 1 (redundant)
   602    "\66\32"                                ;; export name
   603    "\00\01"                                ;; export kind, export func index
   604    "\0a\07\02"                             ;; code section
   605    "\02\00\0b"                             ;; function body 0
   606    "\02\00\0b"                             ;; function body 1
   607  )
   608  "section size mismatch"
   609)
   610
   611;; elem segment count can be zero
   612(module binary
   613  "\00asm" "\01\00\00\00"
   614  "\01\04\01"                               ;; type section
   615  "\60\00\00"                               ;; type 0
   616  "\03\02\01\00"                            ;; func section
   617  "\04\04\01"                               ;; table section
   618  "\70\00\01"                               ;; table 0
   619  "\09\01\00"                               ;; elem segment count can be zero
   620  "\0a\04\01"                               ;; code section
   621  "\02\00\0b"                               ;; function body
   622)
   623
   624;; 2 elem segment declared, 1 given
   625(assert_malformed
   626  (module binary
   627    "\00asm" "\01\00\00\00"
   628    "\01\04\01"                             ;; type section
   629    "\60\00\00"                             ;; type 0
   630    "\03\02\01\00"                          ;; func section
   631    "\04\04\01"                             ;; table section
   632    "\70\00\01"                             ;; table 0
   633    "\09\07\02"                             ;; elem with inconsistent segment count (2 declared, 1 given)
   634    "\00\41\00\0b\01\00"                    ;; elem 0
   635    ;; "\00\41\00\0b\01\00"                 ;; elem 1 (missed)
   636    "\0a\04\01"                             ;; code section
   637    "\02\00\0b"                             ;; function body
   638  )
   639  "invalid value type"
   640)
   641
   642;; 1 elem segment declared, 2 given
   643(assert_malformed
   644  (module binary
   645    "\00asm" "\01\00\00\00"
   646    "\01\04\01"                             ;; type section
   647    "\60\00\00"                             ;; type 0
   648    "\03\02\01\00"                          ;; func section
   649    "\04\04\01"                             ;; table section
   650    "\70\00\01"                             ;; table 0
   651    "\09\0d\01"                             ;; elem with inconsistent segment count (1 declared, 2 given)
   652    "\00\41\00\0b\01\00"                    ;; elem 0
   653    "\00\41\00\0b\01\00"                    ;; elem 1 (redundant)
   654    "\0a\04\01"                             ;; code section
   655    "\02\00\0b"                             ;; function body
   656  )
   657  "section size mismatch"
   658)
   659
   660;; data segment count can be zero
   661(module binary
   662  "\00asm" "\01\00\00\00"
   663  "\05\03\01"                               ;; memory section
   664  "\00\01"                                  ;; memory 0
   665  "\0b\01\00"                               ;; data segment count can be zero
   666)
   667
   668;; 2 data segment declared, 1 given
   669(assert_malformed
   670  (module binary
   671    "\00asm" "\01\00\00\00"
   672    "\05\03\01"                             ;; memory section
   673    "\00\01"                                ;; memory 0
   674    "\0b\07\02"                             ;; data with inconsistent segment count (2 declared, 1 given)
   675    "\00\41\00\0b\01\61"                    ;; data 0
   676    ;; "\00\41\01\0b\01\62"                 ;; data 1 (missed)
   677  )
   678  "unexpected end of section or function"
   679)
   680
   681;; 1 data segment declared, 2 given
   682(assert_malformed
   683  (module binary
   684    "\00asm" "\01\00\00\00"
   685    "\05\03\01"                             ;; memory section
   686    "\00\01"                                ;; memory 0
   687    "\0b\0d\01"                             ;; data with inconsistent segment count (1 declared, 2 given)
   688    "\00\41\00\0b\01\61"                    ;; data 0
   689    "\00\41\01\0b\01\62"                    ;; data 1 (redundant)
   690  )
   691  "section size mismatch"
   692)
   693
   694;; data segment has 7 bytes declared, but 6 bytes given
   695(assert_malformed
   696  (module binary
   697    "\00asm" "\01\00\00\00"
   698    "\05\03\01"                             ;; memory section
   699    "\00\01"                                ;; memory 0
   700    "\0b\0c\01"                             ;; data section
   701    "\00\41\03\0b"                          ;; data segment 0
   702    "\07"                                   ;; data segment size with inconsistent lengths (7 declared, 6 given)
   703    "\61\62\63\64\65\66"                    ;; 6 bytes given
   704  )
   705  "unexpected end of section or function"
   706)
   707
   708;; data segment has 5 bytes declared, but 6 bytes given
   709(assert_malformed
   710  (module binary
   711    "\00asm" "\01\00\00\00"
   712    "\05\03\01"                             ;; memory section
   713    "\00\01"                                ;; memory 0
   714    "\0b\0c\01"                             ;; data section
   715    "\00\41\00\0b"                          ;; data segment 0
   716    "\05"                                   ;; data segment size with inconsistent lengths (5 declared, 6 given)
   717    "\61\62\63\64\65\66"                    ;; 6 bytes given
   718  )
   719  "section size mismatch"
   720)
   721
   722;; br_table target count can be zero
   723(module binary
   724  "\00asm" "\01\00\00\00"
   725  "\01\04\01"                               ;; type section
   726  "\60\00\00"                               ;; type 0
   727  "\03\02\01\00"                            ;; func section
   728  "\0a\11\01"                               ;; code section
   729  "\0f\00"                                  ;; func 0
   730  "\02\40"                                  ;; block 0
   731  "\41\01"                                  ;; condition of if 0
   732  "\04\40"                                  ;; if 0
   733  "\41\01"                                  ;; index of br_table element
   734  "\0e\00"                                  ;; br_table target count can be zero
   735  "\02"                                     ;; break depth for default
   736  "\0b\0b\0b"                               ;; end
   737)
   738
   739;; 2 br_table target declared, 1 given
   740(assert_malformed
   741  (module binary
   742    "\00asm" "\01\00\00\00"
   743    "\01\04\01"                             ;; type section
   744    "\60\00\00"                             ;; type 0
   745    "\03\02\01\00"                          ;; func section
   746    "\0a\12\01"                             ;; code section
   747    "\10\00"                                ;; func 0
   748    "\02\40"                                ;; block 0
   749    "\41\01"                                ;; condition of if 0
   750    "\04\40"                                ;; if 0
   751    "\41\01"                                ;; index of br_table element
   752    "\0e\02"                                ;; br_table with inconsistent target count (2 declared, 1 given)
   753    "\00"                                   ;; break depth 0
   754    ;; "\01"                                ;; break depth 1 (missed)
   755    "\02"                                   ;; break depth for default
   756    "\0b\0b\0b"                             ;; end
   757  )
   758  "unexpected end of section or function"
   759)
   760
   761;; 1 br_table target declared, 2 given
   762(assert_malformed
   763  (module binary
   764    "\00asm" "\01\00\00\00"
   765    "\01\04\01"                             ;; type section
   766    "\60\00\00"                             ;; type 0
   767    "\03\02\01\00"                          ;; func section
   768    "\0a\12\01"                             ;; code section
   769    "\11\00"                                ;; func 0
   770    "\02\40"                                ;; block 0
   771    "\41\01"                                ;; condition of if 0
   772    "\04\40"                                ;; if 0
   773    "\41\01"                                ;; index of br_table element
   774    "\0e\01"                                ;; br_table with inconsistent target count (1 declared, 2 given)
   775    "\00"                                   ;; break depth 0
   776    "\01"                                   ;; break depth 1
   777    "\02"                                   ;; break depth for default
   778    "\0b\0b\0b"                             ;; end
   779  )
   780  "invalid value type"
   781)

View as plain text