Open
Description
I recently read a blog post by @MaskRay comparing different compression algorithms for DWARF: https://maskray.me/blog/2022-09-09-zstd-compressed-debug-sections
The blog post concludes that zstd is the best choice (as it is in many other scenarios), and the author has done some work on establishing ELFCOMPRESS_ZSTD
.
I don’t know if it’s too early, or if anything else is preventing us from doing so, but wanted to file this issue to track support for using zstd to make Go DWARF sections smaller and faster to write and read.
There is a good native Go implementation of zstd available: https://pkg.go.dev/github.com/klauspost/compress/zstd
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
In Progress
Milestone
Relationships
Development
No branches or pull requests
Activity
dsnet commentedon Sep 16, 2022
Would it make sense to consider a standard library "compress/zstd" package first before considering this?
stapelberg commentedon Sep 16, 2022
I don’t think we need to gate landing zstd DWARF on having a zstd package in the standard library — we could just import it into internal, or vendor it, or whatever is the currently preferred approach :)
But, having encoding/zstd in the standard library would certainly be a welcome addition IMHO :)
Can you open a separate issue for that please?
MaskRay commentedon Sep 16, 2022
@mengzhuo added ELFCOMPRESS_ZLIB support to cmd/link and may be interested:)
Foxboron commentedon Sep 16, 2022
I'd like to just point out that
elfutils
without support for ZSTD is going to be painfull for downstream as we can't make debug packages out of it. I'd rather have us disable compression and DWARF headers by default.stapelberg commentedon Sep 16, 2022
Sounds like it should be behind a flag for now, or added only once
elfutils
support for zstd is more widespread.cherrymui commentedon Sep 16, 2022
Do the debuggers support this format? GDB? LLDB? Delve? Thanks.
cc @aarzilli @thanm
dsnet commentedon Sep 16, 2022
Does the runtime ever look at the DWARF section, will we need to link in a zstd decompressor?
cherrymui commentedon Sep 16, 2022
@dsnet the runtime doesn't look at the DWARF sections.
mengzhuo commentedon Sep 17, 2022
I'm glad to do that :) but as @dsnet suggests it looks like we need a
encoding/zstd
in the first place.cc @rsc
aarzilli commentedon Sep 17, 2022
According to the blog post, it was proposed to SysV gABI in june of this year and it is supported by approximately nothing. Delve will support it when debug/elf will support it, so I think it should be added there first (or at least at the same time). Other consideration:
35 remaining items