r177605 - Split ubsan runtime into three pieces (clang part):

Jean-Daniel Dupas devlists at shadowlab.org
Thu Mar 21 02:31:34 PDT 2013


Le 21 mars 2013 à 00:49, Richard Smith <richard-llvm at metafoo.co.uk> a écrit :

> Author: rsmith
> Date: Wed Mar 20 18:49:07 2013
> New Revision: 177605
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=177605&view=rev
> Log:
> Split ubsan runtime into three pieces (clang part):
> * libclang_rt-san-* is sanitizer_common, and is linked in only if no other
>   sanitizer runtime is present.
> * libclang_rt-ubsan-* is the piece of the runtime which doesn't depend on
>   a C++ ABI library, and is always linked in.
> * libclang_rt-ubsan_cxx-* is the piece of the runtime which depends on a
>   C++ ABI library, and is only linked in when linking a C++ binary.
> 
> This change also switches us to using -whole-archive for the ubsan runtime
> (which is made possible by the above split), and switches us to only linking
> the sanitizer runtime into the main binary and not into DSOs (which is made
> possible by using -whole-archive).
> 
> The motivation for this is to only link a single copy of sanitizer_common
> into any binary. This is becoming important now because we want to share
> more state between multiple sanitizers in the same process (for instance,
> we want a single shared output mutex).
> 
> The Darwin ubsan runtime is unchanged; because we use a DSO there, we don't
> need this complexity.
> 

AFAIK, while Darwin uses DSO for asan, I still uses static library for ubsan, except if it has changed recently.

-- Jean-Daniel








More information about the cfe-commits mailing list