xref: /wasmtime-44.0.1/tests/disas/debug.wat (revision bbd12e92)
1;;! target = "x86_64"
2;;! test = "compile"
3;;! flags = ["-Dguest-debug=yes"]
4;;! objdump = "--funcs all"
5
6(module
7  (func (export "main") (param i32 i32) (result i32)
8    local.get 0
9    local.get 1
10    i32.add))
11;; wasm[0]::function[0]:
12;;       pushq   %rbp
13;;       movq    %rsp, %rbp
14;;       subq    $0x30, %rsp
15;;       movq    %rbx, 0x20(%rsp)
16;;       movl    %edx, 8(%rsp)
17;;       movl    %ecx, 0xc(%rsp)
18;;       movq    8(%rdi), %rax
19;;       movq    0x10(%rax), %rax
20;;       movq    %rsp, %r8
21;;       cmpq    %rax, %r8
22;;       jb      0x62
23;;   29: movq    %rdi, (%rsp)
24;;       nopl    (%rax, %rax)
25;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 36, slot at FP-0x30, locals I32 @ slot+0x8, I32 @ slot+0xc, stack
26;;       ╰─╼ breakpoint patch: wasm PC 36, patch bytes [232, 176, 1, 0, 0]
27;;       movl    %edx, 0x10(%rsp)
28;;       nopl    (%rax, %rax)
29;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 38, slot at FP-0x30, locals I32 @ slot+0x8, I32 @ slot+0xc, stack I32 @ slot+0x10
30;;       ╰─╼ breakpoint patch: wasm PC 38, patch bytes [232, 167, 1, 0, 0]
31;;       movl    %ecx, 0x14(%rsp)
32;;       nopl    (%rax, %rax)
33;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 40, slot at FP-0x30, locals I32 @ slot+0x8, I32 @ slot+0xc, stack I32 @ slot+0x10, I32 @ slot+0x14
34;;       ╰─╼ breakpoint patch: wasm PC 40, patch bytes [232, 158, 1, 0, 0]
35;;       leal    (%rdx, %rcx), %eax
36;;       movl    %eax, 0x10(%rsp)
37;;       nopl    (%rax, %rax)
38;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 41, slot at FP-0x30, locals I32 @ slot+0x8, I32 @ slot+0xc, stack I32 @ slot+0x10
39;;       ╰─╼ breakpoint patch: wasm PC 41, patch bytes [232, 146, 1, 0, 0]
40;;       movl    %eax, 0x10(%rsp)
41;;       movq    0x20(%rsp), %rbx
42;;       addq    $0x30, %rsp
43;;       movq    %rbp, %rsp
44;;       popq    %rbp
45;;       retq
46;;   62: movq    %rdi, %rbx
47;;   65: xorl    %esi, %esi
48;;   67: callq   0x186
49;;   6c: movq    %rbx, %rdi
50;;   6f: callq   0x1b6
51;;   74: ud2
52;;
53;; wasm[0]::array_to_wasm_trampoline[0]:
54;;       pushq   %rbp
55;;       movq    %rsp, %rbp
56;;       subq    $0x40, %rsp
57;;       movq    %rbx, 0x10(%rsp)
58;;       movq    %r12, 0x18(%rsp)
59;;       movq    %r13, 0x20(%rsp)
60;;       movq    %r14, 0x28(%rsp)
61;;       movq    %r15, 0x30(%rsp)
62;;       movl    (%rdx), %r10d
63;;       movl    0x10(%rdx), %ecx
64;;       movq    %rdx, (%rsp)
65;;       movq    8(%rdi), %r11
66;;       movq    %rbp, %rax
67;;       movq    %rax, 0x40(%r11)
68;;       movq    %rsp, %rax
69;;       movq    %rax, 0x38(%r11)
70;;       leaq    0x39(%rip), %rax
71;;       movq    %rax, 0x48(%r11)
72;;       movq    %r10, %rdx
73;;       callq   0
74;;       ├─╼ exception frame offset: SP = FP - 0x40
75;;       ╰─╼ exception handler: default handler, no dynamic context, handler=0xf3
76;;       movq    (%rsp), %rdx
77;;       movl    %eax, (%rdx)
78;;       movl    $1, %eax
79;;       movq    0x10(%rsp), %rbx
80;;       movq    0x18(%rsp), %r12
81;;       movq    0x20(%rsp), %r13
82;;       movq    0x28(%rsp), %r14
83;;       movq    0x30(%rsp), %r15
84;;       addq    $0x40, %rsp
85;;       movq    %rbp, %rsp
86;;       popq    %rbp
87;;       retq
88;;   f3: xorl    %eax, %eax
89;;   f5: movq    0x10(%rsp), %rbx
90;;   fa: movq    0x18(%rsp), %r12
91;;   ff: movq    0x20(%rsp), %r13
92;;  104: movq    0x28(%rsp), %r14
93;;  109: movq    0x30(%rsp), %r15
94;;  10e: addq    $0x40, %rsp
95;;  112: movq    %rbp, %rsp
96;;  115: popq    %rbp
97;;  116: retq
98;;
99;; signatures[0]::wasm_to_array_trampoline:
100;;       pushq   %rbp
101;;       movq    %rsp, %rbp
102;;       subq    $0x30, %rsp
103;;       movq    %r14, 0x20(%rsp)
104;;       movq    %rdx, %rax
105;;       movq    8(%rsi), %r9
106;;       movq    %rbp, %r10
107;;       movq    %r10, 0x28(%r9)
108;;       movq    %rbp, %r10
109;;       movq    8(%r10), %r11
110;;       movq    %r11, 0x30(%r9)
111;;       leaq    (%rsp), %rdx
112;;       movq    %rax, %r11
113;;       movl    %r11d, (%rsp)
114;;       movl    %ecx, 0x10(%rsp)
115;;       movq    8(%rdi), %r8
116;;       movl    $2, %ecx
117;;       movq    %rsi, %r14
118;;       callq   *%r8
119;;       testb   %al, %al
120;;       je      0x174
121;;  163: movl    (%rsp), %eax
122;;       movq    0x20(%rsp), %r14
123;;       addq    $0x30, %rsp
124;;       movq    %rbp, %rsp
125;;       popq    %rbp
126;;       retq
127;;  174: movq    0x10(%r14), %rcx
128;;  178: movq    0x198(%rcx), %rcx
129;;  17f: movq    %r14, %rdi
130;;  182: callq   *%rcx
131;;  184: ud2
132;;
133;; wasmtime_builtin_trap:
134;;       pushq   %rbp
135;;       movq    %rsp, %rbp
136;;       movq    8(%rdi), %rax
137;;       movq    %rbp, %rcx
138;;       movq    %rcx, 0x28(%rax)
139;;       movq    %rbp, %rcx
140;;       movq    8(%rcx), %rcx
141;;       movq    %rcx, 0x30(%rax)
142;;       movq    0x10(%rdi), %rax
143;;       movq    0x190(%rax), %rax
144;;       movzbq  %sil, %rsi
145;;       callq   *%rax
146;;       movq    %rbp, %rsp
147;;       popq    %rbp
148;;       retq
149;;
150;; wasmtime_builtin_raise:
151;;       pushq   %rbp
152;;       movq    %rsp, %rbp
153;;       movq    8(%rdi), %r10
154;;       movq    %rbp, %r11
155;;       movq    %r11, 0x28(%r10)
156;;       movq    %rbp, %r11
157;;       movq    8(%r11), %rsi
158;;       movq    %rsi, 0x30(%r10)
159;;       movq    0x10(%rdi), %rsi
160;;       movq    0x198(%rsi), %rsi
161;;       callq   *%rsi
162;;       movq    %rbp, %rsp
163;;       popq    %rbp
164;;       retq
165;;
166;; wasmtime_patchable_builtin_breakpoint:
167;;       pushq   %rbp
168;;       movq    %rsp, %rbp
169;;       subq    $0x150, %rsp
170;;       movq    %rax, (%rsp)
171;;       movq    %rcx, 8(%rsp)
172;;       movq    %rdx, 0x10(%rsp)
173;;       movq    %rbx, 0x18(%rsp)
174;;       movq    %rsi, 0x20(%rsp)
175;;       movq    %rdi, 0x28(%rsp)
176;;       movq    %r8, 0x30(%rsp)
177;;       movq    %r9, 0x38(%rsp)
178;;       movq    %r10, 0x40(%rsp)
179;;       movq    %r11, 0x48(%rsp)
180;;       movdqu  %xmm0, 0x50(%rsp)
181;;       movdqu  %xmm1, 0x60(%rsp)
182;;       movdqu  %xmm2, 0x70(%rsp)
183;;       movdqu  %xmm3, 0x80(%rsp)
184;;       movdqu  %xmm4, 0x90(%rsp)
185;;       movdqu  %xmm5, 0xa0(%rsp)
186;;       movdqu  %xmm6, 0xb0(%rsp)
187;;       movdqu  %xmm7, 0xc0(%rsp)
188;;       movdqu  %xmm8, 0xd0(%rsp)
189;;       movdqu  %xmm9, 0xe0(%rsp)
190;;       movdqu  %xmm10, 0xf0(%rsp)
191;;       movdqu  %xmm11, 0x100(%rsp)
192;;       movdqu  %xmm12, 0x110(%rsp)
193;;       movdqu  %xmm13, 0x120(%rsp)
194;;       movdqu  %xmm14, 0x130(%rsp)
195;;       movdqu  %xmm15, 0x140(%rsp)
196;;       movq    8(%rdi), %rax
197;;       movq    %rbp, %rcx
198;;       movq    %rcx, 0x28(%rax)
199;;       movq    %rbp, %rcx
200;;       movq    8(%rcx), %rcx
201;;       movq    %rcx, 0x30(%rax)
202;;       movq    0x10(%rdi), %rcx
203;;       movq    0x1c8(%rcx), %rcx
204;;       movq    %rdi, %rbx
205;;       callq   *%rcx
206;;       testb   %al, %al
207;;       je      0x3a7
208;;  2db: movq    (%rsp), %rax
209;;       movq    8(%rsp), %rcx
210;;       movq    0x10(%rsp), %rdx
211;;       movq    0x18(%rsp), %rbx
212;;       movq    0x20(%rsp), %rsi
213;;       movq    0x28(%rsp), %rdi
214;;       movq    0x30(%rsp), %r8
215;;       movq    0x38(%rsp), %r9
216;;       movq    0x40(%rsp), %r10
217;;       movq    0x48(%rsp), %r11
218;;       movdqu  0x50(%rsp), %xmm0
219;;       movdqu  0x60(%rsp), %xmm1
220;;       movdqu  0x70(%rsp), %xmm2
221;;       movdqu  0x80(%rsp), %xmm3
222;;       movdqu  0x90(%rsp), %xmm4
223;;       movdqu  0xa0(%rsp), %xmm5
224;;       movdqu  0xb0(%rsp), %xmm6
225;;       movdqu  0xc0(%rsp), %xmm7
226;;       movdqu  0xd0(%rsp), %xmm8
227;;       movdqu  0xe0(%rsp), %xmm9
228;;       movdqu  0xf0(%rsp), %xmm10
229;;       movdqu  0x100(%rsp), %xmm11
230;;       movdqu  0x110(%rsp), %xmm12
231;;       movdqu  0x120(%rsp), %xmm13
232;;       movdqu  0x130(%rsp), %xmm14
233;;       movdqu  0x140(%rsp), %xmm15
234;;       addq    $0x150, %rsp
235;;       movq    %rbp, %rsp
236;;       popq    %rbp
237;;       retq
238;;  3a7: movq    0x10(%rbx), %r8
239;;  3ab: movq    0x198(%r8), %r8
240;;  3b2: movq    %rbx, %rdi
241;;  3b5: callq   *%r8
242;;  3b8: ud2
243