patch: link ubsan into shared libraries

Nick Lewycky nlewycky at google.com
Mon Aug 12 16:25:14 PDT 2013


The attached patch causes ubsan to get linked in when building a .so file.
This is different from other sanitizers.

The other sanitizers are harder to deploy because they rely on replacing
malloc. This means that you have to figure out how to link in a single
malloc in the final binary.

ubsan doesn't need this. You could link a .so file with ubsan, then link
the final binary with no knowledge that ubsan was ever involved, and it
will work just fine. (Or rather, it will after this patch.) In particular,
I can't currently build a python module with ubsan and then load it into a
normal python. The attached patch makes this work.

The downside to this patch is that we can end up with multiple copies of
the ubsan runtime linked in. In reality this works fine because the ubsan
runtime doesn't keep much state (and it'd be difficult to make it do so
correctly because it has to support calling through files that are a mix of
built and not build with ubsan). We'll end up with multiple copies of
ubsan's vptr cache, which in turn will probably improve performance by
improving locality.

Please review!

Nick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130812/24d732fc/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ubsan-link-shared-1.patch
Type: application/octet-stream
Size: 1220 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130812/24d732fc/attachment.obj>


More information about the cfe-commits mailing list