@@ -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