summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/asan/asan_report.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/lib/asan/asan_report.cc')
-rw-r--r--compiler-rt/lib/asan/asan_report.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/compiler-rt/lib/asan/asan_report.cc b/compiler-rt/lib/asan/asan_report.cc
index ad031b00dc7..f912336c21d 100644
--- a/compiler-rt/lib/asan/asan_report.cc
+++ b/compiler-rt/lib/asan/asan_report.cc
@@ -755,7 +755,7 @@ void ReportStackOverflow(const SignalContext &sig) {
}
void ReportDeadlySignal(const char *description, const SignalContext &sig) {
- ScopedInErrorReport in_report(/*report*/nullptr, /*fatal*/true);
+ ScopedInErrorReport in_report(/*report*/ nullptr, /*fatal*/ true);
Decorator d;
Printf("%s", d.Warning());
Report(
@@ -768,17 +768,22 @@ void ReportDeadlySignal(const char *description, const SignalContext &sig) {
if (sig.pc < GetPageSizeCached())
Report("Hint: pc points to the zero page.\n");
if (sig.is_memory_access) {
- Report("The signal is caused by a %s memory access.\n",
- sig.is_write ? "WRITE" : "READ");
+ const char *access_type =
+ sig.write_flag == SignalContext::WRITE
+ ? "WRITE"
+ : (sig.write_flag == SignalContext::READ ? "READ" : "UNKNOWN");
+ Report("The signal is caused by a %s memory access.\n", access_type);
if (sig.addr < GetPageSizeCached()) {
Report("Hint: address points to the zero page.\n");
SS.Scare(10, "null-deref");
} else if (sig.addr == sig.pc) {
SS.Scare(60, "wild-jump");
- } else if (sig.is_write) {
+ } else if (sig.write_flag == SignalContext::WRITE) {
SS.Scare(30, "wild-addr-write");
- } else {
+ } else if (sig.write_flag == SignalContext::READ) {
SS.Scare(20, "wild-addr-read");
+ } else {
+ SS.Scare(25, "wild-addr");
}
} else {
SS.Scare(10, "signal");
OpenPOWER on IntegriCloud