@@ -1007,13 +1007,8 @@ void PrintInternalAllocatorStats() {
10071007 instance.PrintStats ();
10081008}
10091009
1010- void asan_free (void *ptr, BufferedStackTrace *stack, AllocType alloc_type) {
1011- instance.Deallocate (ptr, 0 , 0 , stack, alloc_type);
1012- }
1013-
1014- void asan_delete (void *ptr, uptr size, uptr alignment,
1015- BufferedStackTrace *stack, AllocType alloc_type) {
1016- instance.Deallocate (ptr, size, alignment, stack, alloc_type);
1010+ void asan_free (void *ptr, BufferedStackTrace *stack) {
1011+ instance.Deallocate (ptr, 0 , 0 , stack, FROM_MALLOC);
10171012}
10181013
10191014void *asan_malloc (uptr size, BufferedStackTrace *stack) {
@@ -1068,16 +1063,15 @@ void *asan_pvalloc(uptr size, BufferedStackTrace *stack) {
10681063 instance.Allocate (size, PageSize, stack, FROM_MALLOC, true ));
10691064}
10701065
1071- void *asan_memalign (uptr alignment, uptr size, BufferedStackTrace *stack,
1072- AllocType alloc_type) {
1066+ void *asan_memalign (uptr alignment, uptr size, BufferedStackTrace *stack) {
10731067 if (UNLIKELY (!IsPowerOfTwo (alignment))) {
10741068 errno = errno_EINVAL;
10751069 if (AllocatorMayReturnNull ())
10761070 return nullptr ;
10771071 ReportInvalidAllocationAlignment (alignment, stack);
10781072 }
10791073 return SetErrnoOnNull (
1080- instance.Allocate (size, alignment, stack, alloc_type , true ));
1074+ instance.Allocate (size, alignment, stack, FROM_MALLOC , true ));
10811075}
10821076
10831077void *asan_aligned_alloc (uptr alignment, uptr size, BufferedStackTrace *stack) {
@@ -1117,6 +1111,99 @@ uptr asan_malloc_usable_size(const void *ptr, uptr pc, uptr bp) {
11171111 return usable_size;
11181112}
11191113
1114+ namespace {
1115+
1116+ void *asan_new (uptr size, BufferedStackTrace *stack, bool array) {
1117+ return SetErrnoOnNull (
1118+ instance.Allocate (size, 0 , stack, array ? FROM_NEW_BR : FROM_NEW, true ));
1119+ }
1120+
1121+ void *asan_new_aligned (uptr size, uptr alignment, BufferedStackTrace *stack,
1122+ bool array) {
1123+ if (UNLIKELY (alignment == 0 || !IsPowerOfTwo (alignment))) {
1124+ errno = errno_EINVAL;
1125+ if (AllocatorMayReturnNull ())
1126+ return nullptr ;
1127+ ReportInvalidAllocationAlignment (alignment, stack);
1128+ }
1129+ return SetErrnoOnNull (instance.Allocate (
1130+ size, alignment, stack, array ? FROM_NEW_BR : FROM_NEW, true ));
1131+ }
1132+
1133+ void asan_delete (void *ptr, BufferedStackTrace *stack, bool array) {
1134+ instance.Deallocate (ptr, 0 , 0 , stack, array ? FROM_NEW_BR : FROM_NEW);
1135+ }
1136+
1137+ void asan_delete_aligned (void *ptr, uptr alignment, BufferedStackTrace *stack,
1138+ bool array) {
1139+ instance.Deallocate (ptr, 0 , alignment, stack, array ? FROM_NEW_BR : FROM_NEW);
1140+ }
1141+
1142+ void asan_delete_sized (void *ptr, uptr size, BufferedStackTrace *stack,
1143+ bool array) {
1144+ instance.Deallocate (ptr, size, 0 , stack, array ? FROM_NEW_BR : FROM_NEW);
1145+ }
1146+
1147+ void asan_delete_sized_aligned (void *ptr, uptr size, uptr alignment,
1148+ BufferedStackTrace *stack, bool array) {
1149+ instance.Deallocate (ptr, size, alignment, stack,
1150+ array ? FROM_NEW_BR : FROM_NEW);
1151+ }
1152+
1153+ } // namespace
1154+
1155+ void *asan_new (uptr size, BufferedStackTrace *stack) {
1156+ return asan_new (size, stack, /* array=*/ false );
1157+ }
1158+
1159+ void *asan_new_aligned (uptr size, uptr alignment, BufferedStackTrace *stack) {
1160+ return asan_new_aligned (size, alignment, stack, /* array=*/ false );
1161+ }
1162+
1163+ void *asan_new_array (uptr size, BufferedStackTrace *stack) {
1164+ return asan_new (size, stack, /* array=*/ true );
1165+ }
1166+
1167+ void *asan_new_array_aligned (uptr size, uptr alignment,
1168+ BufferedStackTrace *stack) {
1169+ return asan_new_aligned (size, alignment, stack, /* array=*/ true );
1170+ }
1171+
1172+ void asan_delete (void *ptr, BufferedStackTrace *stack) {
1173+ asan_delete (ptr, stack, /* array=*/ false );
1174+ }
1175+
1176+ void asan_delete_aligned (void *ptr, uptr alignment, BufferedStackTrace *stack) {
1177+ asan_delete_aligned (ptr, alignment, stack, /* array=*/ false );
1178+ }
1179+
1180+ void asan_delete_sized (void *ptr, uptr size, BufferedStackTrace *stack) {
1181+ asan_delete_sized (ptr, size, stack, /* array=*/ false );
1182+ }
1183+
1184+ void asan_delete_sized_aligned (void *ptr, uptr size, uptr alignment,
1185+ BufferedStackTrace *stack) {
1186+ asan_delete_sized_aligned (ptr, size, alignment, stack, /* array=*/ false );
1187+ }
1188+
1189+ void asan_delete_array (void *ptr, BufferedStackTrace *stack) {
1190+ asan_delete (ptr, stack, /* array=*/ true );
1191+ }
1192+
1193+ void asan_delete_array_aligned (void *ptr, uptr alignment,
1194+ BufferedStackTrace *stack) {
1195+ asan_delete_aligned (ptr, alignment, stack, /* array=*/ true );
1196+ }
1197+
1198+ void asan_delete_array_sized (void *ptr, uptr size, BufferedStackTrace *stack) {
1199+ asan_delete_sized (ptr, size, stack, /* array=*/ true );
1200+ }
1201+
1202+ void asan_delete_array_sized_aligned (void *ptr, uptr size, uptr alignment,
1203+ BufferedStackTrace *stack) {
1204+ asan_delete_sized_aligned (ptr, size, alignment, stack, /* array=*/ true );
1205+ }
1206+
11201207uptr asan_mz_size (const void *ptr) {
11211208 return instance.AllocationSize (reinterpret_cast <uptr>(ptr));
11221209}
0 commit comments