DavidSpickett wrote:

This is an overly harsh way of phrasing it, but hopefully it gives you an idea 
of why I'm asking for an overview of this effort:
* We already have at least one barely tested architecture, I would like to 
avoid picking up another one.

I think WASM is cool (all WASM userspace when?), I think not having bugs is 
cool too. I personally trust that you have done the leg work, but I have to 
verify that at least a bit, as I would with any other random contributor.

I also know that WASM is a hot topic so for this work to get the best 
reception, a statement of intent might draw interest, and set expectations 
appropriately.

But ok, as an RFC would be unlikely to generate actual objections, I'll say 
what I think here.

> The biggest difference is that I'm breaking it down in smaller pieces to make 
> reviewing them easier.

Great, they were a bit much.

> I've been told that the runtime can have a different stack (separate from the 
> native stack) for the Wasm code and also that the format of call frames may 
> not match native stack frame ABI.

So they have designed their server specifically to allow debugging both? I 
wonder how they manage that. A multi-architecture target would be interesting 
(ala ARM64EC on Windows) but I presume it's different targets. Can lldb handle 
that? It doesn't have to but it sounds pretty cool if it can.

> Wasmtime
> It also supports translating the generated DWARF debug info, so that native 
> debuggers can work with it to debug the JIT-compiled code.

So for this, you aren't stepping WASM instructions, you're debugging it like 
any other native JIT. The input to that JIT just happens to be WASM.

> Chrome has a [DevTools Plugin for debugging C/C++ 
> WebAssembly](https://developer.chrome.com/docs/devtools/wasm) applications 
> (using DWARF debug information). It uses LLDB to parse DWARF, but otherwise 
> relies on Chrome’s integrated debugging support for Wasm.

Yeah, 99% of the internet says "just use chrome" to debug. So we're not going 
to plug in to this part of it then.

> I'm not aware of any other runtimes besides WAMR that support debugging 
> through GDB remote. Of all the approaches, I think it's the most "desirable" 
> going forward. The fact that there is a ByteCode Alliance runtime that 
> supports it makes it even more compelling.

We will need to state which runtime we intend to support and one from the 
people writing the standard is the best choice I agree.

I suppose it running on small devices that cannot host a browser is why they 
went that way, do the debugger UI stuff elsewhere.

> Yes, long term it would be cool if we can build inferiors and decide where to 
> run them (e.g. QEMU, WAMR, etc). In the short term, we can get pretty good 
> test coverage with the GDB remote test cases.

We can get a surprising amount of coverage that way, that is true.

What we can't do is answer `is random lldb command supposed to work with wasm`? 
That's what a test suite run would provide.

Ultimately I would prefer regular test suite runs using this WASM runtime, but 
I would settle for a manual run that gives us a snapshot of the state of WASM 
support.

Finally, could you open a meta-issue for WASM support? Like we have for 
[RISC-V](https://github.com/llvm/llvm-project/issues/55383) and 
[LoongArch](https://github.com/llvm/llvm-project/issues/112693).

Ofc these issues get outdated pretty fast but at least it's something we can 
put on the website and folks can ask their "should X work" questions.

...now I've ranted enough about process let me review some actual code :)

https://github.com/llvm/llvm-project/pull/150143
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to