<div dir="ltr">Hi!<div><br></div><div style>TL;DR WDYT of adding zlib decompression capabilities to LLVMObject library?</div><div><br></div><div>ld.gold from GNU binutils has --compress-debug-sections=zlib option,</div><div>
which uses zlib to compress .debug_xxx sections and renames them to .zdebug_xxx.</div><div style>binutils (and GDB) support this properly, while LLVM command line tools don't:</div><div style><div><br></div><div>$ ld --version</div>
<div>GNU gold (GNU Binutils for Ubuntu 2.22) 1.11</div></div><div style>$ ./bin/clang++ -g a.cc -Wl,--compress-debug-sections=zlib<br></div><div style><div>$ objdump -h a.out | grep debug</div><div> 26 .debug_info   00000066  0000000000000000  0000000000000000  00002010  2**0</div>
<div> 27 .debug_abbrev 00000048  0000000000000000  0000000000000000  00002068  2**0</div><div> 28 .debug_aranges 00000000  0000000000000000  0000000000000000  000020bb  2**0</div><div> 29 .debug_macinfo 00000000  0000000000000000  0000000000000000  000020cf  2**0</div>
<div> 30 .debug_line   00000053  0000000000000000  0000000000000000  000020e3  2**0</div><div> 31 .debug_loc    00000000  0000000000000000  0000000000000000  0000213e  2**0</div><div> 32 .debug_pubtypes 00000000  0000000000000000  0000000000000000  00002152  2**0</div>
<div> 33 .debug_str    00000069  0000000000000000  0000000000000000  00002166  2**0</div><div> 34 .debug_ranges 00000000  0000000000000000  0000000000000000  000021d9  2**0</div></div><div><div>$ ./bin/llvm-objdump -h a.out | grep debug</div>
<div> 27 .zdebug_info  00000058 0000000000000000 </div><div> 28 .zdebug_abbrev 00000053 0000000000000000 </div><div> 29 .zdebug_aranges 00000014 0000000000000000 </div><div> 30 .zdebug_macinfo 00000014 0000000000000000 </div>
<div> 31 .zdebug_line  0000005b 0000000000000000 </div><div> 32 .zdebug_loc   00000014 0000000000000000 </div><div> 33 .zdebug_pubtypes 00000014 0000000000000000 </div><div> 34 .zdebug_str   00000073 0000000000000000 </div>
<div> 35 .zdebug_ranges 00000014 0000000000000000</div></div><div><br></div><div style>Decompression and proper handling of debug info sections may be needed</div><div style>in llvm-dwarfdump and llvm-symbolizer tools. We can implement this by:</div>
<div style>1) Checking if zlib is present in the system during configuration.</div><div style>2) Adding zlib decompression to llvm::MemoryBuffer, and section decompression to LLVMObject (this would require optional linking with -lz).</div>
<div style>3) Using the methods in LLVM tools where needed.</div><div style><br></div><div style>Does this make sense to you?</div><div style><br></div><div>-- <br></div><div><div>Alexey Samsonov, MSK</div>
</div></div>