Add a compilation section to disable address maps#3598
Conversation
This commit adds a new `Config::generate_address_map` compilation setting which is used to disable emission of the `.wasmtime.addrmap` section of compiled artifacts. This section is currently around the size of the entire `.text` section itself unfortunately and for size reasons may wish to be omitted. Functionality-wise all that is lost is knowing the precise wasm module offset address of a faulting instruction or in a backtrace of instructions. This also means that if the module has DWARF debugging information available with it Wasmtime isn't able to produce a filename and line number in the backtrace. This option remains enabled by default. This option may not be needed in the future with bytecodealliance#3547 perhaps, but in the meantime it seems reasonable enough to support a configuration mode where the section is entirely omitted if the smallest module possible is desired.
Subscribe to Label Actioncc @peterhuene DetailsThis issue or pull request has been labeled: "wasmtime:api"Thus the following users have been cc'd because of the following labels:
To subscribe or unsubscribe from this label, edit the |
Co-authored-by: Nick Fitzgerald <fitzgen@gmail.com>
Subscribe to Label Actioncc @peterhuene DetailsThis issue or pull request has been labeled: "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 |
pchickey
left a comment
There was a problem hiding this comment.
Could we put a guard around addrs.push(range.clone(), &func.address_map.instructions); so we don't even allocate the memory for the address map when we aren't going to omit it?
|
Also, should this imply |
Ah yes indeed!
While we won't get precise locations within functions (which also means no filenames/line numbers) we do still get the function names in the backtrace due to the |
But only when disabled
This commit adds a new
Config::generate_address_mapcompilationsetting which is used to disable emission of the
.wasmtime.addrmapsection of compiled artifacts. This section is currently around the size
of the entire
.textsection itself unfortunately and for size reasonsmay wish to be omitted. Functionality-wise all that is lost is knowing
the precise wasm module offset address of a faulting instruction or in a
backtrace of instructions. This also means that if the module has DWARF
debugging information available with it Wasmtime isn't able to produce a
filename and line number in the backtrace.
This option remains enabled by default. This option may not be needed in
the future with #3547 perhaps, but in the meantime it seems reasonable
enough to support a configuration mode where the section is entirely
omitted if the smallest module possible is desired.