summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/asan/asan_errors.h
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/lib/asan/asan_errors.h')
-rw-r--r--compiler-rt/lib/asan/asan_errors.h38
1 files changed, 9 insertions, 29 deletions
diff --git a/compiler-rt/lib/asan/asan_errors.h b/compiler-rt/lib/asan/asan_errors.h
index 55b8360a3f7..b9944739bf1 100644
--- a/compiler-rt/lib/asan/asan_errors.h
+++ b/compiler-rt/lib/asan/asan_errors.h
@@ -28,19 +28,12 @@ struct ErrorBase {
};
struct ErrorStackOverflow : ErrorBase {
- uptr addr, pc, bp, sp;
- // ErrorStackOverflow never owns the context.
- void *context;
+ SignalContext signal;
// VS2013 doesn't implement unrestricted unions, so we need a trivial default
// constructor
ErrorStackOverflow() = default;
ErrorStackOverflow(u32 tid, const SignalContext &sig)
- : ErrorBase(tid),
- addr(sig.addr),
- pc(sig.pc),
- bp(sig.bp),
- sp(sig.sp),
- context(sig.context) {
+ : ErrorBase(tid), signal(sig) {
scariness.Clear();
scariness.Scare(10, "stack-overflow");
}
@@ -48,34 +41,21 @@ struct ErrorStackOverflow : ErrorBase {
};
struct ErrorDeadlySignal : ErrorBase {
- uptr addr, pc, bp, sp;
- // ErrorDeadlySignal never owns the context.
- void *context;
- int signo;
- SignalContext::WriteFlag write_flag;
- bool is_memory_access;
+ SignalContext signal;
// VS2013 doesn't implement unrestricted unions, so we need a trivial default
// constructor
ErrorDeadlySignal() = default;
ErrorDeadlySignal(u32 tid, const SignalContext &sig)
- : ErrorBase(tid),
- addr(sig.addr),
- pc(sig.pc),
- bp(sig.bp),
- sp(sig.sp),
- context(sig.context),
- signo(sig.GetType()),
- write_flag(sig.write_flag),
- is_memory_access(sig.is_memory_access) {
+ : ErrorBase(tid), signal(sig) {
scariness.Clear();
- if (is_memory_access) {
- if (addr < GetPageSizeCached()) {
+ if (signal.is_memory_access) {
+ if (signal.addr < GetPageSizeCached()) {
scariness.Scare(10, "null-deref");
- } else if (addr == pc) {
+ } else if (signal.addr == signal.pc) {
scariness.Scare(60, "wild-jump");
- } else if (write_flag == SignalContext::WRITE) {
+ } else if (signal.write_flag == SignalContext::WRITE) {
scariness.Scare(30, "wild-addr-write");
- } else if (write_flag == SignalContext::READ) {
+ } else if (signal.write_flag == SignalContext::READ) {
scariness.Scare(20, "wild-addr-read");
} else {
scariness.Scare(25, "wild-addr");
OpenPOWER on IntegriCloud