mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 10:46:06 +00:00
[sanitizer] Skip /include/c++/ from summary (#78534)
std:: usually is not a cause of the bug. We now display ``` SUMMARY: AddressSanitizer: allocation-size-too-big path/to/allocator_returns_null.cpp:92:7 in main ``` instead of ``` SUMMARY: AddressSanitizer: allocation-size-too-big /usr/lib/../include/c++/13/bits/new_allocator.h:147:27 in std::__new_allocator<char>::allocate(unsigned long, void const*) ``` `/include/c++/` matches both libc++ and libstdc++ include paths.
This commit is contained in:
parent
c82b7fddfc
commit
ecd47811b7
@ -34,7 +34,8 @@ static bool FrameIsInternal(const SymbolizedStack *frame) {
|
||||
return true;
|
||||
const char *file = frame->info.file;
|
||||
const char *module = frame->info.module;
|
||||
if (file && (internal_strstr(file, "/compiler-rt/lib/")))
|
||||
if (file && (internal_strstr(file, "/compiler-rt/lib/") ||
|
||||
internal_strstr(file, "/include/c++/")))
|
||||
return true;
|
||||
if (module && (internal_strstr(module, "libclang_rt.")))
|
||||
return true;
|
||||
|
@ -34,17 +34,20 @@
|
||||
// RUN: | FileCheck %s --check-prefix=CHECK-nnCRASH
|
||||
// RUN: %env_tool_opts=allocator_may_return_null=1 %run %t new-nothrow 2>&1 \
|
||||
// RUN: | FileCheck %s --check-prefix=CHECK-NULL
|
||||
// RUN: %env_tool_opts=allocator_may_return_null=0 not %run %t vector 2>&1 \
|
||||
// RUN: | FileCheck %s --check-prefix=CHECK-vCRASH
|
||||
|
||||
// TODO(alekseyshl): win32 is disabled due to failing errno tests, fix it there.
|
||||
// UNSUPPORTED: ubsan, target={{.*windows-msvc.*}}
|
||||
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <limits>
|
||||
#include <new>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits>
|
||||
#include <new>
|
||||
#include <vector>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
assert(argc == 2);
|
||||
@ -60,6 +63,8 @@ int main(int argc, char **argv) {
|
||||
(3UL << 30) + 1;
|
||||
#endif
|
||||
|
||||
std::vector<char> v;
|
||||
|
||||
void *x = nullptr;
|
||||
if (!strcmp(action, "malloc")) {
|
||||
x = malloc(kMaxAllowedMallocSizePlusOne);
|
||||
@ -82,6 +87,14 @@ int main(int argc, char **argv) {
|
||||
x = operator new(kMaxAllowedMallocSizePlusOne);
|
||||
} else if (!strcmp(action, "new-nothrow")) {
|
||||
x = operator new(kMaxAllowedMallocSizePlusOne, std::nothrow);
|
||||
} else if (!strcmp(action, "vector")) {
|
||||
#if __LP64__ || defined(_WIN64)
|
||||
v.resize(kMaxAllowedMallocSizePlusOne);
|
||||
x = v.data();
|
||||
#else
|
||||
// Fake it: 32bit fails early in std.
|
||||
x = malloc(kMaxAllowedMallocSizePlusOne);
|
||||
#endif
|
||||
} else {
|
||||
assert(0);
|
||||
}
|
||||
@ -117,6 +130,8 @@ int main(int argc, char **argv) {
|
||||
// CHECK-nnCRASH: new-nothrow:
|
||||
// CHECK-nnCRASH: #{{[0-9]+.*}}allocator_returns_null.cpp
|
||||
// CHECK-nnCRASH: {{SUMMARY: .*Sanitizer: allocation-size-too-big.*allocator_returns_null.cpp.*}} in main
|
||||
// CHECK-vCRASH: #{{[0-9]+.*}}allocator_returns_null.cpp
|
||||
// CHECK-vCRASH: {{SUMMARY: .*Sanitizer: allocation-size-too-big.*allocator_returns_null.cpp.*}} in main
|
||||
|
||||
// CHECK-NULL: {{malloc|calloc|calloc-overflow|realloc|realloc-after-malloc|new-nothrow}}
|
||||
// CHECK-NULL: errno: 12, x: 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user