diff options
| author | Filipe Cabecinhas <me@filcab.net> | 2017-03-01 18:52:11 +0000 |
|---|---|---|
| committer | Filipe Cabecinhas <me@filcab.net> | 2017-03-01 18:52:11 +0000 |
| commit | 74ad311556099eac82005f4ce6c1d78bc65cfcb1 (patch) | |
| tree | dd340c174fbd0e31286ae38ccc1c0fcff9ca7d44 /compiler-rt/lib/asan/asan_errors.cc | |
| parent | 91d74813a6020e26301059d3e62490645eb400cd (diff) | |
| download | bcm5719-llvm-74ad311556099eac82005f4ce6c1d78bc65cfcb1.tar.gz bcm5719-llvm-74ad311556099eac82005f4ce6c1d78bc65cfcb1.zip | |
Reapply r296419: [asan] Print a "PC is at a non-executable memory region" message if that's the case
Summary: Points the user to look at function pointer assignments.
Reviewers: kcc, eugenis, kubamracek
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D30432
llvm-svn: 296653
Diffstat (limited to 'compiler-rt/lib/asan/asan_errors.cc')
| -rw-r--r-- | compiler-rt/lib/asan/asan_errors.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler-rt/lib/asan/asan_errors.cc b/compiler-rt/lib/asan/asan_errors.cc index 7829dd1dcda..eb3ed001205 100644 --- a/compiler-rt/lib/asan/asan_errors.cc +++ b/compiler-rt/lib/asan/asan_errors.cc @@ -58,6 +58,16 @@ static void MaybeDumpRegisters(void *context) { SignalContext::DumpAllRegisters(context); } +static void MaybeReportNonExecRegion(uptr pc) { + MemoryMappingLayout proc_maps(/*cache_enabled*/ true); + uptr start, end, protection; + while (proc_maps.Next(&start, &end, nullptr, nullptr, 0, &protection)) { + if (pc >= start && pc < end && + !(protection & MemoryMappingLayout::kProtectionExecute)) + Report("Hint: PC is at a non-executable region. Maybe a wild jump?\n"); + } +} + void ErrorDeadlySignal::Print() { Decorator d; Printf("%s", d.Warning()); @@ -77,6 +87,7 @@ void ErrorDeadlySignal::Print() { if (addr < GetPageSizeCached()) Report("Hint: address points to the zero page.\n"); } + MaybeReportNonExecRegion(pc); scariness.Print(); BufferedStackTrace stack; GetStackTraceWithPcBpAndContext(&stack, kStackTraceMax, pc, bp, context, |

