Stream: git-wasmtime

Topic: wasmtime / issue #9486 Large `.rela` sections for debug info


view this post on Zulip Wasmtime GitHub notifications bot (Oct 19 2024 at 22:01):

SingleAccretion edited issue #9486:

Reproduction:

> wasmtime compile -D debug-info -O opt-level=0 wasm-with-di.wasm
> llvm-objdump wasm-with-di.cwasm

Expected result: the output does not contain an excessive number of relocations.

Actual result: there are lots of them:

  8 .debug_abbrev      000704e1 0000000000000000 DEBUG
  9 .debug_str         00164a48 0000000000000000 DEBUG
 10 .debug_line        00247334 0000000000000000 DEBUG
 11 .rela.debug_line   00055ef0 0000000000000000
 12 .debug_ranges      0003e530 0000000000000000 DEBUG
 13 .rela.debug_ranges 00097fb0 0000000000000000
 14 .debug_loc         0062e922 0000000000000000 DEBUG
 15 .rela.debug_loc    00cc02a0 0000000000000000
 16 .debug_info        00200ebf 0000000000000000 DEBUG
 17 .rela.debug_info   0065c958 0000000000000000
 18 .debug_frame       0009ada8 0000000000000000 DEBUG
 19 .rela.debug_frame  000abe40 0000000000000000

Looking at .debug_loc in particular, we can see the following for the very first location list:

> llvm-objdump -j .rela.debug_loc -x wasm-with-di.cwasm > rel.txt

RELOCATION RECORDS FOR [.debug_loc]:
OFFSET           TYPE                     VALUE
0000000000000000 R_X86_64_64              wasm[0]::function[41]::_start+0x26
0000000000000008 R_X86_64_64              wasm[0]::function[41]::_start+0x5b
0000000000000013 R_X86_64_64              wasm[0]::function[41]::_start+0x5b
000000000000001b R_X86_64_64              wasm[0]::function[41]::_start+0x68
0000000000000026 R_X86_64_64              wasm[0]::function[41]::_start+0x68
000000000000002e R_X86_64_64              wasm[0]::function[41]::_start+0x91
0000000000000049 R_X86_64_64              wasm[0]::function[41]::_start+0x73
0000000000000051 R_X86_64_64              wasm[0]::function[41]::_start+0x81
000000000000005c R_X86_64_64              wasm[0]::function[41]::_start+0x81
0000000000000064 R_X86_64_64              wasm[0]::function[41]::_start+0x88

The debug info and code are part of the same 'object file' - much of this should be unnecessary.

view this post on Zulip Wasmtime GitHub notifications bot (Oct 22 2024 at 15:00):

alexcrichton commented on issue #9486:

Oh wow yeah those are huge! Definitely seems reasonable to remove as it's all local within the same binary.

view this post on Zulip Wasmtime GitHub notifications bot (Oct 24 2024 at 18:37):

alexcrichton added the wasmtime:debugging label to Issue #9486.


Last updated: Dec 23 2024 at 12:05 UTC