blob: d556107209f626a9504e6d8a1327de338a531a82 [file] [log] [blame] [edit]
;;; TOOL: run-gen-wasm
;;; ARGS2: --generate-names
;; NOTE: same test as in test/decompile/names.txt
magic
version
section(TYPE) {
count[2]
function params[0] results[1] i32
function params[0] results[0]
}
section(FUNCTION) {
count[4]
type[0]
type[1]
type[1]
type[1]
}
section(MEMORY) {
count[1]
has_max[0]
initial[0]
}
section(GLOBAL) {
count[2]
;; This has both a sym and export name, prefer sym.
type[i32] mut[0] init_expr[i32.const 0 end]
;; This only has an export name.
type[i32] mut[0] init_expr[i32.const 0 end]
}
section(EXPORT) {
count[5]
str("F1_EXPORT") func_kind func[1]
str("F2_EXPORT") func_kind func[2]
str("F3_EXPORT") func_kind func[3]
str("G0_EXPORT") global_kind global[0]
str("G1_EXPORT") global_kind global[1]
}
section(CODE) {
count[4]
;; Test name section.
func {
locals[decl_count[1] i32_count[1] i32]
get_local 0
}
;; Test naming priorities
;; If there's a name section name, prefer that over sym/export.
func { locals[0] }
;; If there's no name section name, prefer sym over export.
func { locals[0] }
;; If there's only export, use that.
func { locals[0] }
}
section(DATA) {
count[2]
;; These can only be named thru symbols.
memory_index[0]
offset[i32.const 0 end]
data[str("foo")]
memory_index[0]
offset[i32.const 10 end]
data[str("bar")]
}
section("name") {
section(NAME_MODULE) {
str("M0")
}
section(NAME_FUNCTION) {
func_count[2]
index[0]
str("F0")
index[1]
str("F1_NS")
}
section(NAME_LOCALS) {
func_count[1]
index[0]
local_count[1]
index[0]
str("L0")
}
}
section("linking") {
metadata_version[2]
section(LINKING_SYMBOL_TABLE) {
num_symbols[5]
type[0] flags[1] index[1] str("F1_SYM")
type[0] flags[1] index[2] str("F2_SYM")
type[2] flags[1] index[0] str("G0_SYM")
type[1] flags[4] str("D0_SYM") segment[0] offset[0] size[1]
type[1] flags[4] str("D1_SYM") segment[1] offset[0] size[1]
}
}
(;; STDOUT ;;;
(module $M0
(type $t0 (func (result i32)))
(type $t1 (func))
(func $F0 (type $t0) (result i32)
(local $L0 i32)
local.get $L0)
(func $F1_NS (type $t1))
(func $F2_SYM (type $t1))
(func $F3_EXPORT (type $t1))
(memory $M0 0)
(global $G0_SYM i32 (i32.const 0))
(global $G1_EXPORT i32 (i32.const 0))
(export "F1_EXPORT" (func $F1_NS))
(export "F2_EXPORT" (func $F2_SYM))
(export "F3_EXPORT" (func $F3_EXPORT))
(export "G0_EXPORT" (global 0))
(export "G1_EXPORT" (global 1))
(data $D0_SYM (i32.const 0) "foo")
(data $D1_SYM (i32.const 10) "bar"))
;;; STDOUT ;;)