@@ -997,13 +997,8 @@ void PrintInternalAllocatorStats() {
997
997
instance.PrintStats ();
998
998
}
999
999
1000
- void asan_free (void *ptr, BufferedStackTrace *stack, AllocType alloc_type) {
1001
- instance.Deallocate (ptr, 0 , 0 , stack, alloc_type);
1002
- }
1003
-
1004
- void asan_delete (void *ptr, uptr size, uptr alignment,
1005
- BufferedStackTrace *stack, AllocType alloc_type) {
1006
- instance.Deallocate (ptr, size, alignment, stack, alloc_type);
1000
+ void asan_free (void *ptr, BufferedStackTrace *stack) {
1001
+ instance.Deallocate (ptr, 0 , 0 , stack, FROM_MALLOC);
1007
1002
}
1008
1003
1009
1004
void *asan_malloc (uptr size, BufferedStackTrace *stack) {
@@ -1058,16 +1053,15 @@ void *asan_pvalloc(uptr size, BufferedStackTrace *stack) {
1058
1053
instance.Allocate (size, PageSize, stack, FROM_MALLOC, true ));
1059
1054
}
1060
1055
1061
- void *asan_memalign (uptr alignment, uptr size, BufferedStackTrace *stack,
1062
- AllocType alloc_type) {
1056
+ void *asan_memalign (uptr alignment, uptr size, BufferedStackTrace *stack) {
1063
1057
if (UNLIKELY (!IsPowerOfTwo (alignment))) {
1064
1058
errno = errno_EINVAL;
1065
1059
if (AllocatorMayReturnNull ())
1066
1060
return nullptr ;
1067
1061
ReportInvalidAllocationAlignment (alignment, stack);
1068
1062
}
1069
1063
return SetErrnoOnNull (
1070
- instance.Allocate (size, alignment, stack, alloc_type , true ));
1064
+ instance.Allocate (size, alignment, stack, FROM_MALLOC , true ));
1071
1065
}
1072
1066
1073
1067
void *asan_aligned_alloc (uptr alignment, uptr size, BufferedStackTrace *stack) {
@@ -1107,6 +1101,99 @@ uptr asan_malloc_usable_size(const void *ptr, uptr pc, uptr bp) {
1107
1101
return usable_size;
1108
1102
}
1109
1103
1104
+ namespace {
1105
+
1106
+ void *asan_new (uptr size, BufferedStackTrace *stack, bool array) {
1107
+ return SetErrnoOnNull (
1108
+ instance.Allocate (size, 0 , stack, array ? FROM_NEW_BR : FROM_NEW, true ));
1109
+ }
1110
+
1111
+ void *asan_new_aligned (uptr size, uptr alignment, BufferedStackTrace *stack,
1112
+ bool array) {
1113
+ if (UNLIKELY (alignment == 0 || !IsPowerOfTwo (alignment))) {
1114
+ errno = errno_EINVAL;
1115
+ if (AllocatorMayReturnNull ())
1116
+ return nullptr ;
1117
+ ReportInvalidAllocationAlignment (alignment, stack);
1118
+ }
1119
+ return SetErrnoOnNull (instance.Allocate (
1120
+ size, alignment, stack, array ? FROM_NEW_BR : FROM_NEW, true ));
1121
+ }
1122
+
1123
+ void asan_delete (void *ptr, BufferedStackTrace *stack, bool array) {
1124
+ instance.Deallocate (ptr, 0 , 0 , stack, array ? FROM_NEW_BR : FROM_NEW);
1125
+ }
1126
+
1127
+ void asan_delete_aligned (void *ptr, uptr alignment, BufferedStackTrace *stack,
1128
+ bool array) {
1129
+ instance.Deallocate (ptr, 0 , alignment, stack, array ? FROM_NEW_BR : FROM_NEW);
1130
+ }
1131
+
1132
+ void asan_delete_sized (void *ptr, uptr size, BufferedStackTrace *stack,
1133
+ bool array) {
1134
+ instance.Deallocate (ptr, size, 0 , stack, array ? FROM_NEW_BR : FROM_NEW);
1135
+ }
1136
+
1137
+ void asan_delete_sized_aligned (void *ptr, uptr size, uptr alignment,
1138
+ BufferedStackTrace *stack, bool array) {
1139
+ instance.Deallocate (ptr, size, alignment, stack,
1140
+ array ? FROM_NEW_BR : FROM_NEW);
1141
+ }
1142
+
1143
+ } // namespace
1144
+
1145
+ void *asan_new (uptr size, BufferedStackTrace *stack) {
1146
+ return asan_new (size, stack, /* array=*/ false );
1147
+ }
1148
+
1149
+ void *asan_new_aligned (uptr size, uptr alignment, BufferedStackTrace *stack) {
1150
+ return asan_new_aligned (size, alignment, stack, /* array=*/ false );
1151
+ }
1152
+
1153
+ void *asan_new_array (uptr size, BufferedStackTrace *stack) {
1154
+ return asan_new (size, stack, /* array=*/ true );
1155
+ }
1156
+
1157
+ void *asan_new_array_aligned (uptr size, uptr alignment,
1158
+ BufferedStackTrace *stack) {
1159
+ return asan_new_aligned (size, alignment, stack, /* array=*/ true );
1160
+ }
1161
+
1162
+ void asan_delete (void *ptr, BufferedStackTrace *stack) {
1163
+ asan_delete (ptr, stack, /* array=*/ false );
1164
+ }
1165
+
1166
+ void asan_delete_aligned (void *ptr, uptr alignment, BufferedStackTrace *stack) {
1167
+ asan_delete_aligned (ptr, alignment, stack, /* array=*/ false );
1168
+ }
1169
+
1170
+ void asan_delete_sized (void *ptr, uptr size, BufferedStackTrace *stack) {
1171
+ asan_delete_sized (ptr, size, stack, /* array=*/ false );
1172
+ }
1173
+
1174
+ void asan_delete_sized_aligned (void *ptr, uptr size, uptr alignment,
1175
+ BufferedStackTrace *stack) {
1176
+ asan_delete_sized_aligned (ptr, size, alignment, stack, /* array=*/ false );
1177
+ }
1178
+
1179
+ void asan_delete_array (void *ptr, BufferedStackTrace *stack) {
1180
+ asan_delete (ptr, stack, /* array=*/ true );
1181
+ }
1182
+
1183
+ void asan_delete_array_aligned (void *ptr, uptr alignment,
1184
+ BufferedStackTrace *stack) {
1185
+ asan_delete_aligned (ptr, alignment, stack, /* array=*/ true );
1186
+ }
1187
+
1188
+ void asan_delete_array_sized (void *ptr, uptr size, BufferedStackTrace *stack) {
1189
+ asan_delete_sized (ptr, size, stack, /* array=*/ true );
1190
+ }
1191
+
1192
+ void asan_delete_array_sized_aligned (void *ptr, uptr size, uptr alignment,
1193
+ BufferedStackTrace *stack) {
1194
+ asan_delete_sized_aligned (ptr, size, alignment, stack, /* array=*/ true );
1195
+ }
1196
+
1110
1197
uptr asan_mz_size (const void *ptr) {
1111
1198
return instance.AllocationSize (reinterpret_cast <uptr>(ptr));
1112
1199
}
0 commit comments