Skip to content

Commit c9f0376

Browse files
authored
[compiler-rt][memprof] adding free_sized/free_aligned_sized intercept… (#154011)
…ions.
1 parent 803edce commit c9f0376

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

compiler-rt/lib/memprof/memprof_malloc_linux.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,24 @@ INTERCEPTOR(void, cfree, void *ptr) {
5050
}
5151
#endif // SANITIZER_INTERCEPT_CFREE
5252

53+
#if SANITIZER_INTERCEPT_FREE_SIZED
54+
INTERCEPTOR(void, free_sized, void *ptr, uptr size) {
55+
if (DlsymAlloc::PointerIsMine(ptr))
56+
return DlsymAlloc::Free(ptr);
57+
GET_STACK_TRACE_FREE;
58+
memprof_delete(ptr, size, 0, &stack, FROM_MALLOC);
59+
}
60+
#endif // SANITIZER_INTERCEPT_FREE_SIZED
61+
62+
#if SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED
63+
INTERCEPTOR(void, free_aligned_sized, void *ptr, uptr alignment, uptr size) {
64+
if (DlsymAlloc::PointerIsMine(ptr))
65+
return DlsymAlloc::Free(ptr);
66+
GET_STACK_TRACE_FREE;
67+
memprof_delete(ptr, size, alignment, &stack, FROM_MALLOC);
68+
}
69+
#endif // SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED
70+
5371
INTERCEPTOR(void *, malloc, uptr size) {
5472
if (DlsymAlloc::Use())
5573
return DlsymAlloc::Allocate(size);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// RUN: %clangxx_memprof %s -o %t
2+
3+
// RUN: %env_memprof_opts=print_text=true:log_path=stdout %run %t | FileCheck %s
4+
5+
#include <stdlib.h>
6+
#include <unistd.h>
7+
8+
extern "C" {
9+
void free_sized(void *ptr, size_t size);
10+
void free_aligned_sized(void *ptr, size_t alignement, size_t size);
11+
}
12+
13+
int main() {
14+
void *p = aligned_alloc(16, 32);
15+
free_aligned_sized(p, 16, 32);
16+
p = malloc(10);
17+
free_sized(p, 10);
18+
return 0;
19+
}
20+
// CHECK: Memory allocation stack id
21+
// CHECK: Memory allocation stack id

0 commit comments

Comments
 (0)