[all-commits] [llvm/llvm-project] 26e0fb: [TSan] Support initialize/finalize hooks in dynami...

Julian Lettner via All-commits all-commits at lists.llvm.org
Wed Mar 24 12:39:40 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 26e0fb88a30ad1ab96f66969f4d6da3e71c697b1
      https://github.com/llvm/llvm-project/commit/26e0fb88a30ad1ab96f66969f4d6da3e71c697b1
  Author: Julian Lettner <julian.lettner at apple.com>
  Date:   2021-03-24 (Wed, 24 Mar 2021)

  Changed paths:
    M compiler-rt/include/sanitizer/tsan_interface.h
    M compiler-rt/lib/tsan/rtl/tsan_interface.h
    M compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
    A compiler-rt/test/tsan/on_initialize_finalize_hooks.cpp

  Log Message:
  -----------
  [TSan] Support initialize/finalize hooks in dynamic libraries

Make TSan runtime initialization and finalization hooks work
even if these hooks are not built in the main executable.  When these
hooks are defined in another library that is not directly linked against
the TSan runtime (e.g., Swift runtime) we cannot rely on the "strong-def
overriding weak-def" mechanics and have to look them up via `dlsym()`.

Let's also define hooks that are easier to use from C-only code:
```
extern "C" void __tsan_on_initialize();
extern "C" int __tsan_on_finalize(int failed);
```
For now, these will call through to the old hooks.  Eventually, we want
to adopt the new hooks downstream and remove the old ones.

This is part of the effort to support Swift Tasks (async/await and
actors) in TSan.

rdar://74256720

Reviewed By: vitalybuka, delcypher

Differential Revision: https://reviews.llvm.org/D98810




More information about the All-commits mailing list