[PATCH] D46998: [XRay][clang+compiler-rt] Make XRay depend on a C++ standard lib

Dean Michael Berris via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu May 17 19:10:44 PDT 2018


dberris added a comment.

In https://reviews.llvm.org/D46998#1103397, @dblaikie wrote:

> "In the future we can revisit this when we have a better idea as to why not depending on the C++ ABI functionality is a better solution."  - this was discussed previously in the thread linked from the bug.
>
> A big thing, so far as I understand it, is that Clang doesn't require some specific C++ library, so wouldn't this break for users who didn't have the specific C++ library installed that compiler-rt for XRay was built against?


We don't use anything from the C++ library directly, we depend on some features provided by the implementation. In some cases, this isn't a library:

  extern int g();
  
  int f() {
    static int val = g();
    return val;
  }

This will emit calls to guards for the thread-safe initialisation of val.

The alternatives here are that XRay just avoids these completely, and use pthreads instead to do a pthread_once_init(...).

The other alternative is to avoid pthreads and use the sanitizer_common mutexes too, to make it self-contained in compiler-rt.

The other alternative is to just link in the ABI library (libcxxabi or something else) instead of the standard library.

I can make one of those changes work, but that's also a lot of work, which I suppose is worth doing anyway (unless I'm missing something simpler).

Any preferences/stack-ranking of which solution might be more palatable?


https://reviews.llvm.org/D46998





More information about the cfe-commits mailing list