[asan] Reify ErrorGeneric
authorFilipe Cabecinhas <me@filcab.net>
Wed, 21 Sep 2016 20:18:18 +0000 (20:18 +0000)
committerFilipe Cabecinhas <me@filcab.net>
Wed, 21 Sep 2016 20:18:18 +0000 (20:18 +0000)
commita8b5f5e9d1d5f1f280f1ec2b1948b8e1bc05ef4b
tree9a4ea5a49e58bbd850ae558aa1aa28b23ef33173
parent0a5aac3fc4298babb8668ca297f32504ce0a7950
[asan] Reify ErrorGeneric

Summary:
Finish work on PR30351 (last one, after D24551, D24552, and D24554 land)

Also replace the old ReportData structure/variable with the current_error_ static
member of the ScopedInErrorReport class.

This has the following side-effects:
  - Move ASAN_ON_ERROR(); call to the start of the destructor, instead
    of in StartReporting().
      - We only generate the error structure after the
        ScopedInErrorReport constructor finishes, so we can't call
        ASAN_ON_ERROR() during the constructor. I think this makes more
        sense, since we end up never running two of the ASAN_ON_ERROR()
        callback. This also works the same way as error reporting, since
        we end up having a lock around it. Otherwise we could end up
        with the ASAN_ON_ERROR() call for error 1, then the
        ASAN_ON_ERROR() call for error 2, and then lock the mutex for
        reporting error 1.
  - The __asan_get_report_* functions will be able to, in the future,
    provide information about other errors that aren't a "generic
    error". But we might want to rethink that API, since it's too
    restricted. Ideally we teach lldb about the current_error_ member of
    ScopedInErrorReport.

Reviewers: vitalybuka, kcc, eugenis

Subscribers: kubabrecka, llvm-commits

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

llvm-svn: 282107
compiler-rt/lib/asan/asan_descriptions.h
compiler-rt/lib/asan/asan_errors.cc
compiler-rt/lib/asan/asan_errors.h
compiler-rt/lib/asan/asan_report.cc