diff options
| author | Filipe Cabecinhas <me@filcab.net> | 2016-08-26 20:59:02 +0000 | 
|---|---|---|
| committer | Filipe Cabecinhas <me@filcab.net> | 2016-08-26 20:59:02 +0000 | 
| commit | d2cc63779306427672fcdcdb2c6fff1bce31f86f (patch) | |
| tree | 373e6acb597a8c6dfe464f2b6a84962c441bb33a /compiler-rt/lib/asan | |
| parent | 21395f9839d71e581370e6534e30558571057409 (diff) | |
| download | bcm5719-llvm-d2cc63779306427672fcdcdb2c6fff1bce31f86f.tar.gz bcm5719-llvm-d2cc63779306427672fcdcdb2c6fff1bce31f86f.zip  | |
Revert "Start reifying error descriptions"
This reverts r279862 to investigate VS failures.
llvm-svn: 279865
Diffstat (limited to 'compiler-rt/lib/asan')
| -rw-r--r-- | compiler-rt/lib/asan/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | compiler-rt/lib/asan/asan_errors.cc | 36 | ||||
| -rw-r--r-- | compiler-rt/lib/asan/asan_errors.h | 78 | ||||
| -rw-r--r-- | compiler-rt/lib/asan/asan_report.cc | 27 | 
4 files changed, 12 insertions, 130 deletions
diff --git a/compiler-rt/lib/asan/CMakeLists.txt b/compiler-rt/lib/asan/CMakeLists.txt index e37705e0d66..be274df2a6b 100644 --- a/compiler-rt/lib/asan/CMakeLists.txt +++ b/compiler-rt/lib/asan/CMakeLists.txt @@ -5,7 +5,6 @@ set(ASAN_SOURCES    asan_activation.cc    asan_debugging.cc    asan_descriptions.cc -  asan_errors.cc    asan_fake_stack.cc    asan_flags.cc    asan_globals.cc diff --git a/compiler-rt/lib/asan/asan_errors.cc b/compiler-rt/lib/asan/asan_errors.cc deleted file mode 100644 index ea30c1cb219..00000000000 --- a/compiler-rt/lib/asan/asan_errors.cc +++ /dev/null @@ -1,36 +0,0 @@ -//===-- asan_errors.cc ------------------------------------------*- C++ -*-===// -// -//                     The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file is a part of AddressSanitizer, an address sanity checker. -// -// ASan implementation for error structures. -//===----------------------------------------------------------------------===// - -#include "asan_errors.h" -#include "asan_stack.h" - -namespace __asan { - -void ErrorStackOverflow::Print() { -  Decorator d; -  Printf("%s", d.Warning()); -  Report( -      "ERROR: AddressSanitizer: stack-overflow on address %p" -      " (pc %p bp %p sp %p T%d)\n", -      (void *)addr, (void *)pc, (void *)bp, (void *)sp, tid); -  Printf("%s", d.EndWarning()); -  scariness.Print(); -  BufferedStackTrace stack; -  GetStackTraceWithPcBpAndContext(&stack, kStackTraceMax, pc, bp, context, -                                  common_flags()->fast_unwind_on_fatal); -  stack.Print(); -  ReportErrorSummary("stack-overflow", &stack); -} - -}  // namespace __asan diff --git a/compiler-rt/lib/asan/asan_errors.h b/compiler-rt/lib/asan/asan_errors.h deleted file mode 100644 index a41cb2334b5..00000000000 --- a/compiler-rt/lib/asan/asan_errors.h +++ /dev/null @@ -1,78 +0,0 @@ -//===-- asan_errors.h -------------------------------------------*- C++ -*-===// -// -//                     The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file is a part of AddressSanitizer, an address sanity checker. -// -// ASan-private header for error structures. -//===----------------------------------------------------------------------===// -#ifndef ASAN_ERRORS_H -#define ASAN_ERRORS_H - -#include "asan_descriptions.h" -#include "asan_scariness_score.h" - -namespace __asan { - -struct ErrorBase { -  ScarinessScore scariness; -}; - -struct ErrorStackOverflow : ErrorBase { -  u32 tid; -  uptr addr, pc, bp, sp; -  // ErrorStackOverflow never owns the context. -  void *context; -  ErrorStackOverflow(const SignalContext &sig, u32 tid_) -      : tid(tid_), -        addr(sig.addr), -        pc(sig.pc), -        bp(sig.bp), -        sp(sig.sp), -        context(sig.context) { -    scariness.Scare(10, "stack-overflow"); -  } -  void Print(); -}; - -enum ErrorKind { -  kErrorKindInvalid = 0, -  kErrorKindStackOverflow, -}; - -struct ErrorDescription { -  ErrorKind kind; -  // We're using a tagged union because it allows us to have a trivially -  // copiable type and use the same structures as the public interface. -  // -  // We can add a wrapper around it to make it "more c++-like", but that would -  // add a lot of code and the benefit wouldn't be that big. -  union { -    ErrorStackOverflow stack_overflow; -  }; -  ErrorDescription() { internal_memset(this, 0, sizeof(*this)); } -  ErrorDescription(const ErrorStackOverflow &e)  // NOLINT -      : kind(kErrorKindStackOverflow), -        stack_overflow(e) {} - -  bool IsValid() { return kind != kErrorKindInvalid; } -  void Print() { -    switch (kind) { -      case kErrorKindStackOverflow: -        stack_overflow.Print(); -        return; -      case kErrorKindInvalid: -        CHECK(0); -    } -    CHECK(0); -  } -}; - -}  // namespace __asan - -#endif  // ASAN_ERRORS_H diff --git a/compiler-rt/lib/asan/asan_report.cc b/compiler-rt/lib/asan/asan_report.cc index c8395a5c25d..337720e85f4 100644 --- a/compiler-rt/lib/asan/asan_report.cc +++ b/compiler-rt/lib/asan/asan_report.cc @@ -12,7 +12,6 @@  // This file contains error reporting code.  //===----------------------------------------------------------------------===// -#include "asan_errors.h"  #include "asan_flags.h"  #include "asan_descriptions.h"  #include "asan_internal.h" @@ -268,8 +267,6 @@ class ScopedInErrorReport {    }    ~ScopedInErrorReport() { -    if (current_error_.IsValid()) current_error_.Print(); -      // Make sure the current thread is announced.      DescribeThread(GetCurrentThread());      // We may want to grab this lock again when printing stats. @@ -304,12 +301,6 @@ class ScopedInErrorReport {      }    } -  void ReportError(const ErrorDescription &description) { -    // Can only report one error per ScopedInErrorReport. -    CHECK_EQ(current_error_.kind, kErrorKindInvalid); -    current_error_ = description; -  } -   private:    void StartReporting(ReportData *report) {      if (report) report_data = *report; @@ -328,20 +319,26 @@ class ScopedInErrorReport {    static StaticSpinMutex lock_;    static u32 reporting_thread_tid_; -  // Error currently being reported. This enables the destructor to interact -  // with the debugger and point it to an error description. -  static ErrorDescription current_error_;    bool halt_on_error_;  };  StaticSpinMutex ScopedInErrorReport::lock_;  u32 ScopedInErrorReport::reporting_thread_tid_ = kInvalidTid; -ErrorDescription ScopedInErrorReport::current_error_;  void ReportStackOverflow(const SignalContext &sig) {    ScopedInErrorReport in_report(/*report*/ nullptr, /*fatal*/ true); -  ErrorStackOverflow error{sig, GetCurrentTidOrInvalid()};  // NOLINT -  in_report.ReportError(error); +  Decorator d; +  Printf("%s", d.Warning()); +  Report( +      "ERROR: AddressSanitizer: stack-overflow on address %p" +      " (pc %p bp %p sp %p T%d)\n", +      (void *)sig.addr, (void *)sig.pc, (void *)sig.bp, (void *)sig.sp, +      GetCurrentTidOrInvalid()); +  Printf("%s", d.EndWarning()); +  ScarinessScore::PrintSimple(10, "stack-overflow"); +  GET_STACK_TRACE_SIGNAL(sig); +  stack.Print(); +  ReportErrorSummary("stack-overflow", &stack);  }  void ReportDeadlySignal(const char *description, const SignalContext &sig) {  | 

