[LLVMdev] RFC: Using zlib to decompress debug info sections.

James Courtier-Dutton james.dutton at gmail.com
Tue May 7 03:10:10 PDT 2013

On May 7, 2013 10:27 AM, "Evgeniy Stepanov" <eugeni.stepanov at gmail.com>
> This might be a bit late, but I've got another argument for bundling
> zlib source with LLVM.
> Sanitizer tools need to symbolize stack traces in the reports. We've
> been using standalone symbolizer binary until now; sanitizer runtime
> spawns a new process as soon as an error is found, and communicates
> with it over a pipe. This is very cumbersome to deploy, because we
> need to keep another binary around, specify a path to it at runtime,
> etc. LLVM lit.cfg already carries some of this burden.
> A much better solution would be to statically link symbolization code
> into the user application, the same as sanitizer runtime library.
> Unfortunately, symbolizer depends on several LLVM libraries, C++
> runtime, zlib, etc. Statically linking all that stuff with user code
> results in symbol name conflicts.
> We've come up with what seems to be a perfect solution (thanks to a
> Chandler's advice at the recent developer meeting). We build
> everything down to (but not including) libc into LLVM bitcode. This
> includes LLVMSupport, LLVMObject, LLVMDebugInfo, libc++, libc++abi,
> zlib (!). Then we bundle it all together and internalize all
> non-interface symbols: llvm-link && opt -internalize. Then compile
> down to a single object file.
> This results in a perfect isolation of symbolizer internals. One
> drawback is that this requires source for all the things that I
> mentioned - and at the moment we've got everything but zlib.
> We'd like this to be a part of the normal LLVM build, but that
> requires zlib source available somewhere. We could add a
> cmake/configure option to point to an externally available source, but
> that sounds like a complication we would like to avoid.
> On Wed, Apr 17, 2013 at 5:02 PM, Alexey Samsonov <samsonov at google.com>
> >
> > On Wed, Apr 17, 2013 at 12:37 AM, Chris Lattner <clattner at apple.com>
> >>
> >> On Apr 16, 2013, at 11:53 AM, Eric Christopher <echristo at gmail.com>
> >> > Historically we've done the former. The latter would require Chris
> >> > wanting to do that.
> >>
> >> This case isn't so clearcut.  We like to include libraries in the
> >> to make it easy to get up and running without having to install a ton
> >> dependencies.  However, this has license implications and is generally
> >> annoying.
> >
> >
> > Looks like zlib license is good enough to avoid implications, but I
> > really judge.
> >>
> >>
> >> Given that zlib is so widely available by default, and that the
> >> can generate correct (albeit uncompressed) debug info, I think the best
> >> thing is to *not* include a copy in llvm.  Just detect and use it if
we can
> >> find it, but otherwise generate uncompressed output.
> >
> >
> > Sure, I'll go this way then. Thanks!
> >
> > --

It is possible to do both. Include an internal one and also link to and
external one, and make it a compile time option which to use.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130507/1683a105/attachment.html>

More information about the llvm-dev mailing list