aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Lex/ModuleMap.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2020-11-30 10:21:14 -0800
committerReid Kleckner <rnk@google.com>2020-11-30 16:39:22 -0800
commitb5af5787b367198f8b87626431cb3f66fef460c1 (patch)
tree2326fb8e8bcdac14457608deea49d093d343fe5e /clang/lib/Lex/ModuleMap.cpp
parent87ff156414370043cf149e0c77513c5227b336b1 (diff)
downloadllvm-b5af5787b367198f8b87626431cb3f66fef460c1.zip
llvm-b5af5787b367198f8b87626431cb3f66fef460c1.tar.gz
llvm-b5af5787b367198f8b87626431cb3f66fef460c1.tar.bz2
[WinASan] Improve exception reporting accuracy
Previously, ASan would produce reports like this: ERROR: AddressSanitizer: breakpoint on unknown address 0x000000000000 (pc 0x7fffdd7c5e86 ...) This is unhelpful, because the developer may think this is a null pointer dereference, and not a breakpoint exception on some PC. The cause was that SignalContext::GetAddress would read the ExceptionInformation array to retreive an address for any kind of exception. That data is only available for access violation exceptions. This changes it to be conditional on the exception type, and to use the PC otherwise. I added a variety of tests for common exception types: - int div zero - breakpoint - ud2a / illegal instruction - SSE misalignment I also tightened up IsMemoryAccess and GetWriteFlag to check the ExceptionCode rather than looking at ExceptionInformation[1] directly. Differential Revision: https://reviews.llvm.org/D92344
Diffstat (limited to 'clang/lib/Lex/ModuleMap.cpp')
0 files changed, 0 insertions, 0 deletions