Fix wasm hotpatching for zero-sized data symbols #4747
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.
Summary
Motivation
data_symbolsmap; when crates liketracing,tracing_subscriber, orsharded_slabemit zero-sized statics (e.g.sharded_slab::tid::REGISTRY,tracing_subscriber::layer::NONE_LAYER_MARKER,tracing_core::dispatcher::NO_SUBSCRIBER), wasm-ld writes them to the symbol table withsize = 0create_wasm_jump_tablelooked them up by index, failed withFailed to find data symbol by its index, and aborted hot-patching back to a full rebuildRationale
Testing
dx new wasm-tracing(or reuse any Dioxus web app), addtracing = "0.1"andtracing-subscriber = "0.3", and initialize a subscriber inmaindx serve --hot-patch --web, editsrc/main.rsto trigger a hot patch, and verify the build stays incremental withoutFailed to find data symbol by its index