-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add initial support for DWARF Fission #8055
Conversation
Subscribe to Label Actioncc @peterhuene
This issue or pull request has been labeled: "wasi", "wasmtime:api", "wasmtime:c-api"
Thus the following users have been cc'd because of the following labels:
To subscribe or unsubscribe from this label, edit the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this! I've got some high level comments about the rough structure here, mostly to help centralize things bit more in the "dwarf processing area" and additionally API guidance for enabling usage of this in all case but not necessarily requiring it to be front-and-center in the embedding API.
add dwarf_package to state for cache
pass the dwarf as binary as low as module_environ.rs
I think I've addressed the first set of feedback and I think it looks cleaner. There are some |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good! I wanted to offer, though, if you'd like I'm happy to help out with the refactoring required to make ModuleBuilder
come into existence. That's a big chunk of this change and isn't related directly to DWARF fission, so I can help out land the refactorings required to get ModuleBuilder
itself in place and that would help slim down this change to just DWARF fission.
I say this because I've got a number of comments about specific details about the API, but I don't want to bog you down too much if you're mainly interested in the DWARF bits.
remove some `use`s
remove unused 'use's
remove unused 'use's
That would be very kind, thanks! You are right my primary goal is DWARF fission, so I can land dotnet/runtimelab#2264 which I can't really do properly without wasmtime support. |
@yowl this failure looks legitimate in the sense of probably-caused-by-this PR. Do you know if that perhaps means the LLDB we're using in CI is missing something and/or is too old? |
This looks relevant llvm/llvm-project#55575 Seems like we have to add some missing python stuff. |
Although its odd the other tests are passing. What version of Ubuntu is it? Can we run |
I'm not sure myself, we don't have anything special beyond the standard github actions runners. If you'd like you can push up a commit with "prtest:full" in the commit message and it'll run the full test suite here on the PR to help debug. |
…nto dwarf-att-string
@alexcrichton , change a couple of things Added workaround for https://bugs.launchpad.net/ubuntu/+source/llvm-defaults/+bug/1972855 |
Wasmtime supports debugging with DWARF, and this PR adds initial support for DWARF fission. DWARF fission has advantages in linking and wasm size (https://developer.chrome.com/blog/faster-wasm-debugging) as it separates the debug_info section into a separate file leaving a
DW_TAG_skeleton_unit
in the main wasm file.This PR only supports DWARF pacakges,
.dwp
files. It should also be possible to support.dwo
files, but I've not done that here.