@@ -1007,13 +1007,8 @@ void PrintInternalAllocatorStats() {
1007
1007
instance.PrintStats ();
1008
1008
}
1009
1009
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);
1017
1012
}
1018
1013
1019
1014
void *asan_malloc (uptr size, BufferedStackTrace *stack) {
@@ -1068,16 +1063,15 @@ void *asan_pvalloc(uptr size, BufferedStackTrace *stack) {
1068
1063
instance.Allocate (size, PageSize, stack, FROM_MALLOC, true ));
1069
1064
}
1070
1065
1071
- void *asan_memalign (uptr alignment, uptr size, BufferedStackTrace *stack,
1072
- AllocType alloc_type) {
1066
+ void *asan_memalign (uptr alignment, uptr size, BufferedStackTrace *stack) {
1073
1067
if (UNLIKELY (!IsPowerOfTwo (alignment))) {
1074
1068
errno = errno_EINVAL;
1075
1069
if (AllocatorMayReturnNull ())
1076
1070
return nullptr ;
1077
1071
ReportInvalidAllocationAlignment (alignment, stack);
1078
1072
}
1079
1073
return SetErrnoOnNull (
1080
- instance.Allocate (size, alignment, stack, alloc_type , true ));
1074
+ instance.Allocate (size, alignment, stack, FROM_MALLOC , true ));
1081
1075
}
1082
1076
1083
1077
void *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) {
1117
1111
return usable_size;
1118
1112
}
1119
1113
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
+
1120
1207
uptr asan_mz_size (const void *ptr) {
1121
1208
return instance.AllocationSize (reinterpret_cast <uptr>(ptr));
1122
1209
}
0 commit comments