forked from OSchip/llvm-project
Revert r296419 since the strings appear to need some tweaking.
llvm-svn: 296428
This commit is contained in:
parent
23847fbefe
commit
6e36c11d2a
|
@ -58,16 +58,6 @@ 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());
|
||||
|
@ -87,7 +77,6 @@ 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,
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
// RUN: %clangxx_asan %s -o %t
|
||||
// RUN: not %run %t 0 2>&1 | FileCheck %s
|
||||
// RUN: not %run %t n 2>&1 | FileCheck %s -check-prefix=CHECK -check-prefix=NON_EXEC
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
typedef void void_f();
|
||||
int main(int argc, char **argv) {
|
||||
char array[42];
|
||||
void_f *func;
|
||||
assert(argc > 1);
|
||||
if (argv[1][0] == '0') {
|
||||
func = (void_f *)0x04;
|
||||
} else {
|
||||
assert(argv[1][0] == 'n');
|
||||
func = (void_f *)array;
|
||||
}
|
||||
|
||||
func();
|
||||
// x86 reports the SEGV with both address=X and pc=X.
|
||||
// On PowerPC64 ELFv1, the pointer is taken to be a function-descriptor
|
||||
// pointer out of which three 64-bit quantities are read. This will SEGV, but
|
||||
// the compiler is free to choose the order. As a result, the address is
|
||||
// either X, X+0x8 or X+0x10. The pc is still in main() because it has not
|
||||
// actually made the call when the faulting access occurs.
|
||||
// CHECK: DEADLYSIGNAL
|
||||
// CHECK: {{AddressSanitizer: (SEGV|access-violation).*(address|pc) }}
|
||||
// NON_EXEC: PC is at a non-executable region. Maybe a wild jump?
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue