<div dir="ltr"><div><span style="font-size:12.8px">I'm sharing some notes on a strange LLDB issue I hit locally, in case anyone else hits the same problem. The symptoms are symbols unexpectedly not working for some modules and/or warning messages complaining about "unsupported DW_FORMs", ex:</span></div><div><span style="font-size:12.8px;text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><i><span style="font-size:12.8px;text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">warning: (x86_64) /lib/x86_64-linux-gnu/libz.so.</span><wbr style="font-size:12.8px;text-decoration-style:initial;text-decoration-color:initial"><span style="font-size:12.8px;text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">1.2.8 unsupported DW_FORM values: 0x2 0x1b 0x1c 0x1d 0x1e 0x1f 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 ... lots more values ...</span></i></blockquote><div><br></div><div>Tools like dwarfdump, objdump and realelf didn't raise any complains about the affected symbols so the symbols themselves seemed fine. The LLDB warning was fired during parsing the .debug_abbrev section but dumping it showed nothing out of the ordinary(*)</div><div><br></div><div>The first hint that the problem was on the LLDB/LLVM side came from llvm-dwarfdump:</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">.debug_info contents:<br>error: failed to decompress '.debug_aranges', zlib is not available<br>error: failed to decompress '.debug_info', zlib is not available<br>error: failed to decompress '.debug_abbrev', zlib is not available</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">...</blockquote><div><br></div><div>Sure enough, the sections were compressed. LLDB tried to decompress, but when failed to do so it carried on returning and alter attempting to parse the compressed bytes as is.</div><div><br></div><div>Why weren't my local LLVM & LLDB builds able to decompress the sections? CMake! Apparently the project files didn't get correctly regenerated and my CMakeCache.txt had an unfortunate set of flags:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">LLVM_ENABLE_ZLIB:BOOL=ON (great!)<br>HAVE_LIBZ_ZLIB:INTERNAL= (empty, hmm...)</blockquote><div><div><br></div></div><div> It should have something like this instead:</div></div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">LLVM_ENABLE_ZLIB:BOOL=ON<br>HAVE_ZLIB_H:INTERNAL=1</blockquote></div><div><br></div><div>So there you have it folks. If it doesn't work, <b style="font-weight:normal" id="gmail-docs-internal-guid-11c99868-7fff-275a-d6a2-30cddf62c2f2"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:line-through;vertical-align:baseline;white-space:pre-wrap">reboot</span></b> regenerate your cmake projects and try again.</div><div><br></div><div><i>(*) none of the tools bothered to make a note that the sections are compressed (<span style="color:rgb(0,0,0);font-family:"Droid Sans Mono",monospace,monospace,"Droid Sans Fallback";white-space:pre">SHF_COMPRESSED)</span></i></div><div><i><span style="color:rgb(0,0,0);font-family:"Droid Sans Mono",monospace,monospace,"Droid Sans Fallback";white-space:pre"><br></span></i></div></div>