[llvm-dev] [PATCH compiler-rt 0/5] Improved support for swapcontext()

Paweł Dziepak via llvm-dev
2016-02-02T14:42:38Z

Hi,

These patches improve ASan support for swapcontext() and friends mainly
focusing on eliminating false positives caused by throwing and catching
exceptions when on a custom user stack.
This is achieved by adding ability to AsanThread to change current
stack (in an async-safe way).

Some of the things that are still not fully supported:
 - swapcontext() and fake stacks
 - changing context from signal handlers
 - changing context using longjmp()
 - final context change via ucontext_t::uc_link

On x64 Linux 'make check-all' passes.

This series is also available at:

  https://github.com/pdziepak/compiler-rt.git asan-swapcontext-v1

Paweł Dziepak (5):
  asan: make getcontext() and swapcontext() write stack description
  asan: introduce AsanThread::StackDescriptor
  lsan: do not expect leaks in coroutines to be not reported
  asan: better support for swapcontext() and setcontext()
  asan: extend swapcontext_test

 lib/asan/asan_interceptors.cc                 | 42 +++++++++++++++++++++
 lib/asan/asan_internal.h                      |  1 +
 lib/asan/asan_linux.cc                        | 10 +++++
 lib/asan/asan_mac.cc                          |  4 ++
 lib/asan/asan_thread.cc                       | 21 +++++++----
 lib/asan/asan_thread.h                        | 54 ++++++++++++++++++++++-----
 lib/asan/asan_win.cc                          |  4 ++
 test/asan/TestCases/Linux/swapcontext_test.cc | 15 ++++++++
 test/lsan/TestCases/swapcontext.cc            |  4 --
 9 files changed, 134 insertions(+), 21 deletions(-)

--
2.5.0