Dynamically detect libgcc-vs-libunwind #8028
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When native unwinding information is enabled Wasmtime will use the
__register_frame
API on Unix platforms to inform the runtime of the unwinding information generated for wasm modules. This function, however, has a different interface in libgcc vs libunwind. This means that we need to detect which is being used and adapt our calls to it appropriately.Previously this decision was static. FreeBSD and Linux glibc would assume libgcc and everything else was assumed to be libunwind. It's possible to use libgcc on other platforms, however, such as with musl. The goal of this PR is to make the detection here more robust.
Specifically this PR now probes for a symbol at runtime rather than relying on a compile-time decision. That way we can see what we got at runtime and make the decision then.
Closes #7997