[compiler-rt] r279865 - Revert "Start reifying error descriptions"
Filipe Cabecinhas via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 26 13:59:02 PDT 2016
Author: filcab
Date: Fri Aug 26 15:59:02 2016
New Revision: 279865
URL: http://llvm.org/viewvc/llvm-project?rev=279865&view=rev
Log:
Revert "Start reifying error descriptions"
This reverts r279862 to investigate VS failures.
Removed:
compiler-rt/trunk/lib/asan/asan_errors.cc
compiler-rt/trunk/lib/asan/asan_errors.h
Modified:
compiler-rt/trunk/lib/asan/CMakeLists.txt
compiler-rt/trunk/lib/asan/asan_report.cc
Modified: compiler-rt/trunk/lib/asan/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=279865&r1=279864&r2=279865&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/CMakeLists.txt (original)
+++ compiler-rt/trunk/lib/asan/CMakeLists.txt Fri Aug 26 15:59:02 2016
@@ -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
Removed: compiler-rt/trunk/lib/asan/asan_errors.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_errors.cc?rev=279864&view=auto
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_errors.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_errors.cc (removed)
@@ -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
Removed: compiler-rt/trunk/lib/asan/asan_errors.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_errors.h?rev=279864&view=auto
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_errors.h (original)
+++ compiler-rt/trunk/lib/asan/asan_errors.h (removed)
@@ -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
Modified: compiler-rt/trunk/lib/asan/asan_report.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_report.cc?rev=279865&r1=279864&r2=279865&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_report.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_report.cc Fri Aug 26 15:59:02 2016
@@ -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) {
More information about the llvm-commits
mailing list