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