;;; TOOL: run-objdump
;;; ARGS0: -v --debug-names --enable-all
;;; ARGS1: -x
(type $type1 (func (param i32)))
(table $table1 1 funcref)
(table $table2 1 funcref)
(memory $mem2 1 1)
(data $data1 "hello")
(tag $mytag1 (param i64))
(tag $mytag2 (param i32))
(func
  i32.const 0
  throw $mytag2
  data.drop 0
)
(func
  i32.const 0
  i32.const 0
  call_indirect $table1 (type $type1)
)
;; A function with locals but no params
(func
  (local $local1 i32)
  (local $local2 i64)
  i32.const 0
  local.set 0
  local.get 0
  drop
  i64.const 0
  local.set 1
  local.get 1
  drop
)
;; A function with locals and params
(func
  (local $param1 i32)
  (local $param2 i64)
  (local $local1 i32)
  (local $local2 i64)
  i32.const 0
  local.set 0
  local.get 0
  drop
  i64.const 0
  local.set 1
  local.get 1
  drop
  i32.const 0
  local.set 2
  local.get 2
  drop
  i64.const 0
  local.set 3
  local.get 3
  drop
)

(elem $elem1 func 0)
(global $g1 (mut i32) (i32.const 1))
(global $g2 i32 (i32.const 2))
(;; STDERR ;;;
0000000: 0061 736d                                 ; WASM_BINARY_MAGIC
0000004: 0100 0000                                 ; WASM_BINARY_VERSION
; section "Type" (1)
0000008: 01                                        ; section code
0000009: 00                                        ; section size (guess)
000000a: 03                                        ; num types
; func type 0
000000b: 60                                        ; func
000000c: 01                                        ; num params
000000d: 7f                                        ; i32
000000e: 00                                        ; num results
; func type 1
000000f: 60                                        ; func
0000010: 01                                        ; num params
0000011: 7e                                        ; i64
0000012: 00                                        ; num results
; func type 2
0000013: 60                                        ; func
0000014: 00                                        ; num params
0000015: 00                                        ; num results
0000009: 0c                                        ; FIXUP section size
; section "Function" (3)
0000016: 03                                        ; section code
0000017: 00                                        ; section size (guess)
0000018: 04                                        ; num functions
0000019: 02                                        ; function 0 signature index
000001a: 02                                        ; function 1 signature index
000001b: 02                                        ; function 2 signature index
000001c: 02                                        ; function 3 signature index
0000017: 05                                        ; FIXUP section size
; section "Table" (4)
000001d: 04                                        ; section code
000001e: 00                                        ; section size (guess)
000001f: 02                                        ; num tables
; table 0
0000020: 70                                        ; funcref
0000021: 00                                        ; limits: flags
0000022: 01                                        ; limits: initial
; table 1
0000023: 70                                        ; funcref
0000024: 00                                        ; limits: flags
0000025: 01                                        ; limits: initial
000001e: 07                                        ; FIXUP section size
; section "Memory" (5)
0000026: 05                                        ; section code
0000027: 00                                        ; section size (guess)
0000028: 01                                        ; num memories
; memory 0
0000029: 01                                        ; limits: flags
000002a: 01                                        ; limits: initial
000002b: 01                                        ; limits: max
0000027: 04                                        ; FIXUP section size
; section "Tag" (13)
000002c: 0d                                        ; section code
000002d: 00                                        ; section size (guess)
000002e: 02                                        ; tag count
; tag 0
000002f: 00                                        ; tag attribute
0000030: 01                                        ; tag signature index
; tag 1
0000031: 00                                        ; tag attribute
0000032: 00                                        ; tag signature index
000002d: 05                                        ; FIXUP section size
; section "Global" (6)
0000033: 06                                        ; section code
0000034: 00                                        ; section size (guess)
0000035: 02                                        ; num globals
0000036: 7f                                        ; i32
0000037: 01                                        ; global mutability
0000038: 41                                        ; i32.const
0000039: 01                                        ; i32 literal
000003a: 0b                                        ; end
000003b: 7f                                        ; i32
000003c: 00                                        ; global mutability
000003d: 41                                        ; i32.const
000003e: 02                                        ; i32 literal
000003f: 0b                                        ; end
0000034: 0b                                        ; FIXUP section size
; section "Elem" (9)
0000040: 09                                        ; section code
0000041: 00                                        ; section size (guess)
0000042: 01                                        ; num elem segments
; elem segment header 0
0000043: 01                                        ; segment flags
0000044: 00                                        ; elem list type
0000045: 01                                        ; num elems
0000046: 00                                        ; elem function index
0000041: 05                                        ; FIXUP section size
; section "DataCount" (12)
0000047: 0c                                        ; section code
0000048: 00                                        ; section size (guess)
0000049: 01                                        ; data count
0000048: 01                                        ; FIXUP section size
; section "Code" (10)
000004a: 0a                                        ; section code
000004b: 00                                        ; section size (guess)
000004c: 04                                        ; num functions
; function body 0
000004d: 00                                        ; func body size (guess)
000004e: 00                                        ; local decl count
000004f: 41                                        ; i32.const
0000050: 00                                        ; i32 literal
0000051: 08                                        ; throw
0000052: 01                                        ; throw tag
0000053: fc                                        ; prefix
0000054: 09                                        ; data.drop
0000055: 00                                        ; data.drop segment
0000056: 0b                                        ; end
000004d: 09                                        ; FIXUP func body size
; function body 1
0000057: 00                                        ; func body size (guess)
0000058: 00                                        ; local decl count
0000059: 41                                        ; i32.const
000005a: 00                                        ; i32 literal
000005b: 41                                        ; i32.const
000005c: 00                                        ; i32 literal
000005d: 11                                        ; call_indirect
000005e: 00                                        ; signature index
000005f: 00                                        ; table index
0000060: 0b                                        ; end
0000057: 09                                        ; FIXUP func body size
; function body 2
0000061: 00                                        ; func body size (guess)
0000062: 02                                        ; local decl count
0000063: 01                                        ; local type count
0000064: 7f                                        ; i32
0000065: 01                                        ; local type count
0000066: 7e                                        ; i64
0000067: 41                                        ; i32.const
0000068: 00                                        ; i32 literal
0000069: 21                                        ; local.set
000006a: 00                                        ; local index
000006b: 20                                        ; local.get
000006c: 00                                        ; local index
000006d: 1a                                        ; drop
000006e: 42                                        ; i64.const
000006f: 00                                        ; i64 literal
0000070: 21                                        ; local.set
0000071: 01                                        ; local index
0000072: 20                                        ; local.get
0000073: 01                                        ; local index
0000074: 1a                                        ; drop
0000075: 0b                                        ; end
0000061: 14                                        ; FIXUP func body size
; function body 3
0000076: 00                                        ; func body size (guess)
0000077: 04                                        ; local decl count
0000078: 01                                        ; local type count
0000079: 7f                                        ; i32
000007a: 01                                        ; local type count
000007b: 7e                                        ; i64
000007c: 01                                        ; local type count
000007d: 7f                                        ; i32
000007e: 01                                        ; local type count
000007f: 7e                                        ; i64
0000080: 41                                        ; i32.const
0000081: 00                                        ; i32 literal
0000082: 21                                        ; local.set
0000083: 00                                        ; local index
0000084: 20                                        ; local.get
0000085: 00                                        ; local index
0000086: 1a                                        ; drop
0000087: 42                                        ; i64.const
0000088: 00                                        ; i64 literal
0000089: 21                                        ; local.set
000008a: 01                                        ; local index
000008b: 20                                        ; local.get
000008c: 01                                        ; local index
000008d: 1a                                        ; drop
000008e: 41                                        ; i32.const
000008f: 00                                        ; i32 literal
0000090: 21                                        ; local.set
0000091: 02                                        ; local index
0000092: 20                                        ; local.get
0000093: 02                                        ; local index
0000094: 1a                                        ; drop
0000095: 42                                        ; i64.const
0000096: 00                                        ; i64 literal
0000097: 21                                        ; local.set
0000098: 03                                        ; local index
0000099: 20                                        ; local.get
000009a: 03                                        ; local index
000009b: 1a                                        ; drop
000009c: 0b                                        ; end
0000076: 26                                        ; FIXUP func body size
000004b: 51                                        ; FIXUP section size
; section "Data" (11)
000009d: 0b                                        ; section code
000009e: 00                                        ; section size (guess)
000009f: 01                                        ; num data segments
; data segment header 0
00000a0: 01                                        ; segment flags
00000a1: 05                                        ; data segment size
; data segment data 0
00000a2: 6865 6c6c 6f                              ; data segment data
000009e: 08                                        ; FIXUP section size
; section "name"
00000a7: 00                                        ; section code
00000a8: 00                                        ; section size (guess)
00000a9: 04                                        ; string length
00000aa: 6e61 6d65                                name  ; custom section name
00000ae: 02                                        ; local name type
00000af: 00                                        ; subsection size (guess)
00000b0: 04                                        ; num functions
00000b1: 00                                        ; function index
00000b2: 00                                        ; num locals
00000b3: 01                                        ; function index
00000b4: 00                                        ; num locals
00000b5: 02                                        ; function index
00000b6: 02                                        ; num locals
00000b7: 00                                        ; local index
00000b8: 06                                        ; string length
00000b9: 6c6f 6361 6c31                           local1  ; local name 0
00000bf: 01                                        ; local index
00000c0: 06                                        ; string length
00000c1: 6c6f 6361 6c32                           local2  ; local name 1
00000c7: 03                                        ; function index
00000c8: 04                                        ; num locals
00000c9: 00                                        ; local index
00000ca: 06                                        ; string length
00000cb: 7061 7261 6d31                           param1  ; local name 0
00000d1: 01                                        ; local index
00000d2: 06                                        ; string length
00000d3: 7061 7261 6d32                           param2  ; local name 1
00000d9: 02                                        ; local index
00000da: 06                                        ; string length
00000db: 6c6f 6361 6c31                           local1  ; local name 2
00000e1: 03                                        ; local index
00000e2: 06                                        ; string length
00000e3: 6c6f 6361 6c32                           local2  ; local name 3
00000af: 39                                        ; FIXUP subsection size
00000e9: 04                                        ; name subsection type
00000ea: 00                                        ; subsection size (guess)
00000eb: 01                                        ; num names
00000ec: 00                                        ; elem index
00000ed: 05                                        ; string length
00000ee: 7479 7065 31                             type1  ; elem name 0
00000ea: 08                                        ; FIXUP subsection size
00000f3: 05                                        ; name subsection type
00000f4: 00                                        ; subsection size (guess)
00000f5: 02                                        ; num names
00000f6: 00                                        ; elem index
00000f7: 06                                        ; string length
00000f8: 7461 626c 6531                           table1  ; elem name 0
00000fe: 01                                        ; elem index
00000ff: 06                                        ; string length
0000100: 7461 626c 6532                           table2  ; elem name 1
00000f4: 11                                        ; FIXUP subsection size
0000106: 06                                        ; name subsection type
0000107: 00                                        ; subsection size (guess)
0000108: 01                                        ; num names
0000109: 00                                        ; elem index
000010a: 04                                        ; string length
000010b: 6d65 6d32                                mem2  ; elem name 0
0000107: 07                                        ; FIXUP subsection size
000010f: 07                                        ; name subsection type
0000110: 00                                        ; subsection size (guess)
0000111: 02                                        ; num names
0000112: 00                                        ; elem index
0000113: 02                                        ; string length
0000114: 6731                                     g1  ; elem name 0
0000116: 01                                        ; elem index
0000117: 02                                        ; string length
0000118: 6732                                     g2  ; elem name 1
0000110: 09                                        ; FIXUP subsection size
000011a: 08                                        ; name subsection type
000011b: 00                                        ; subsection size (guess)
000011c: 01                                        ; num names
000011d: 00                                        ; elem index
000011e: 05                                        ; string length
000011f: 656c 656d 31                             elem1  ; elem name 0
000011b: 08                                        ; FIXUP subsection size
0000124: 09                                        ; name subsection type
0000125: 00                                        ; subsection size (guess)
0000126: 01                                        ; num names
0000127: 00                                        ; elem index
0000128: 05                                        ; string length
0000129: 6461 7461 31                             data1  ; elem name 0
0000125: 08                                        ; FIXUP subsection size
000012e: 0b                                        ; name subsection type
000012f: 00                                        ; subsection size (guess)
0000130: 02                                        ; num names
0000131: 00                                        ; elem index
0000132: 06                                        ; string length
0000133: 6d79 7461 6731                           mytag1  ; elem name 0
0000139: 01                                        ; elem index
000013a: 06                                        ; string length
000013b: 6d79 7461 6732                           mytag2  ; elem name 1
000012f: 11                                        ; FIXUP subsection size
; move data: [a9, 141) -> [aa, 142)
00000a8: 9801                                      ; FIXUP section size
;;; STDERR ;;)
(;; STDOUT ;;;

extended-names.wasm:	file format wasm 0x1

Section Details:

Type[3]:
 - type[0] (i32) -> nil
 - type[1] (i64) -> nil
 - type[2] () -> nil
Function[4]:
 - func[0] sig=2
 - func[1] sig=2
 - func[2] sig=2
 - func[3] sig=2
Table[2]:
 - table[0] type=funcref initial=1 <table1>
 - table[1] type=funcref initial=1 <table2>
Memory[1]:
 - memory[0] pages: initial=1 max=1
Tag[2]:
 - tag[0] sig=1
 - tag[1] sig=0
Global[2]:
 - global[0] i32 mutable=1 <g1> - init i32=1
 - global[1] i32 mutable=0 <g2> - init i32=2
Elem[1]:
 - segment[0] flags=1 table=0 count=1
  - elem[0] = ref.func:0
DataCount:
 - data count: 1
Code[4]:
 - func[0] size=9
 - func[1] size=9
 - func[2] size=20
 - func[3] size=38
Data[1]:
 - segment[0] <data1> passive size=5
  - 0000000: 6865 6c6c 6f                             hello
Custom:
 - name: "name"
 - func[2] local[0] <local1>
 - func[2] local[1] <local2>
 - func[3] local[0] <param1>
 - func[3] local[1] <param2>
 - func[3] local[2] <local1>
 - func[3] local[3] <local2>
 - type[0] <type1>
 - table[0] <table1>
 - table[1] <table2>
 - memory[0] <mem2>
 - global[0] <g1>
 - global[1] <g2>
 - elemseg[0] <elem1>
 - dataseg[0] <data1>
 - tag[0] <mytag1>
 - tag[1] <mytag2>

Code Disassembly:

00004e func[0]:
 00004f: 41 00                      | i32.const 0
 000051: 08 01                      | throw 1 <mytag2>
 000053: fc 09 00                   | data.drop 0 <data1>
 000056: 0b                         | end
000058 func[1]:
 000059: 41 00                      | i32.const 0
 00005b: 41 00                      | i32.const 0
 00005d: 11 00 00                   | call_indirect 0 <table1> (type 0 <type1>)
 000060: 0b                         | end
000062 func[2]:
 000063: 01 7f                      | local[0] type=i32
 000065: 01 7e                      | local[1] type=i64
 000067: 41 00                      | i32.const 0
 000069: 21 00                      | local.set 0 <local1>
 00006b: 20 00                      | local.get 0 <local1>
 00006d: 1a                         | drop
 00006e: 42 00                      | i64.const 0
 000070: 21 01                      | local.set 1 <local2>
 000072: 20 01                      | local.get 1 <local2>
 000074: 1a                         | drop
 000075: 0b                         | end
000077 func[3]:
 000078: 01 7f                      | local[0] type=i32
 00007a: 01 7e                      | local[1] type=i64
 00007c: 01 7f                      | local[2] type=i32
 00007e: 01 7e                      | local[3] type=i64
 000080: 41 00                      | i32.const 0
 000082: 21 00                      | local.set 0 <param1>
 000084: 20 00                      | local.get 0 <param1>
 000086: 1a                         | drop
 000087: 42 00                      | i64.const 0
 000089: 21 01                      | local.set 1 <param2>
 00008b: 20 01                      | local.get 1 <param2>
 00008d: 1a                         | drop
 00008e: 41 00                      | i32.const 0
 000090: 21 02                      | local.set 2 <local1>
 000092: 20 02                      | local.get 2 <local1>
 000094: 1a                         | drop
 000095: 42 00                      | i64.const 0
 000097: 21 03                      | local.set 3 <local2>
 000099: 20 03                      | local.get 3 <local2>
 00009b: 1a                         | drop
 00009c: 0b                         | end
;;; STDOUT ;;)
