Loading...
--- libmalloc/libmalloc-521.120.7/tests/malloc_with_options_test.c
+++ libmalloc/libmalloc-792.1.1/tests/malloc_with_options_test.c
@@ -6,10 +6,16 @@
//
#include <stdlib.h>
#include <darwintest.h>
-#include "malloc_private.h"
+#include <malloc_private.h>
+#include <time.h>
+
+#include "../src/platform.h"
+
+#if !MALLOC_TARGET_EXCLAVES
+#include <dispatch/dispatch.h>
#include "trace.h"
#include <ktrace.h>
-#include <dispatch/dispatch.h>
+#endif // !MALLOC_TARGET_EXCLAVES
static bool
@@ -43,19 +49,19 @@
const int MAX_POINTERS = 64;
void *pointers[MAX_POINTERS] = { NULL };
for (int iteration = 0; iteration < iterations; iteration++) {
- int index = random() % MAX_POINTERS;
- int opt_rand = random();
+ int index = rand() % MAX_POINTERS;
+ int opt_rand = rand();
bool aligned = opt_rand & 0x1;
bool zeroed = opt_rand & 0x2;
- malloc_options_np_t options = 0;
+ malloc_zone_malloc_options_t options = MALLOC_ZONE_MALLOC_OPTION_NONE;
if (zeroed) {
- options |= MALLOC_NP_OPTION_CLEAR;
- }
-
-
- opt_rand = random();
+ options |= MALLOC_ZONE_MALLOC_OPTION_CLEAR;
+ }
+
+
+ opt_rand = rand();
size_t align = 0;
size_t size = 0;
if (aligned) {
@@ -73,8 +79,16 @@
free(pointers[index]);
- pointers[index] = malloc_zone_malloc_with_options_np(NULL, align, size,
+ if (opt_rand % 2) {
+ pointers[index] = malloc_zone_malloc_with_options(NULL, align, size,
options);
+ } else {
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ pointers[index] = malloc_zone_malloc_with_options_np(NULL, align,
+ size, options);
+#pragma GCC diagnostic pop
+ }
T_QUIET; T_ASSERT_NOTNULL(pointers[index], "Allocation failed\n");
if (zeroed) {
@@ -87,7 +101,7 @@
}
// Scribble the memory to make sure that malloc is properly clearing
- // when MALLOC_NP_OPTION_CLEAR is set
+ // when MALLOC_ZONE_MALLOC_OPTION_CLEAR is set
scribble_memory(pointers[index], size);
}
@@ -97,41 +111,55 @@
}
T_DECL(malloc_options, "malloc with options",
- T_META_TAG_XZONE)
-{
- unsigned seed = time(NULL);
- T_LOG("seed value = %u", seed);
- srandom(seed);
+ T_META_TAG_XZONE, T_META_TAG_VM_NOT_PREFERRED)
+{
+ unsigned seed = time(NULL);
+ T_LOG("seed value = %u", seed);
+ srand(seed);
run_options_test(10000);
}
T_DECL(malloc_pgm_options, "malloc with options, but PGM is enabled",
T_META_ENVVAR("ProbGuardMalloc=1"),
- T_META_TAG_XZONE)
-{
- unsigned seed = time(NULL);
- T_LOG("seed value = %u", seed);
- srandom(seed);
+ T_META_TAG_XZONE, T_META_TAG_VM_NOT_PREFERRED)
+{
+ unsigned seed = time(NULL);
+ T_LOG("seed value = %u", seed);
+ srand(seed);
run_options_test(10000);
}
T_DECL(malloc_msl_lite_options, "malloc with options, but MSL Lite is enabled",
T_META_ENVVAR("MallocStackLogging=lite"),
- T_META_TAG_XZONE)
-{
- unsigned seed = time(NULL);
- T_LOG("seed value = %u", seed);
- srandom(seed);
-
- run_options_test(10000);
-}
-
+ T_META_TAG_XZONE, T_META_TAG_VM_NOT_PREFERRED)
+{
+ unsigned seed = time(NULL);
+ T_LOG("seed value = %u", seed);
+ srand(seed);
+
+ run_options_test(10000);
+}
+
+T_DECL(malloc_data_only_options, "Malloc with options, all xzones pure data",
+ T_META_ENVVAR("MallocXzoneDataOnly=1"),
+ T_META_ENVVAR("MallocXzoneGuarded=1"),
+ T_META_TAG_XZONE_ONLY)
+{
+ unsigned seed = time(NULL);
+ T_LOG("seed value = %u", seed);
+ srand(seed);
+
+ run_options_test(10000);
+}
+
+#if !MALLOC_TARGET_EXCLAVES
T_DECL(malloc_options_traced, "malloc with options, but tracing is enabled",
T_META_ENVVAR("MallocTracing=1"),
T_META_ASROOT(true),
- T_META_TAG_XZONE_ONLY)
+ T_META_TAG_XZONE_ONLY,
+ T_META_TAG_VM_NOT_ELIGIBLE)
{
/* The runtime calls malloc/calloc repeatedly, but it doesn't seem
* to call memalign. Therefore, we can check that the malloc_with_options
@@ -168,8 +196,8 @@
T_ASSERT_POSIX_ZERO(ktrace_start(s, dispatch_get_main_queue()), NULL);
- void *ptr = malloc_zone_malloc_with_options_np(NULL, expected_alignment,
- expected_size, MALLOC_NP_OPTION_CLEAR);
+ void *ptr = malloc_zone_malloc_with_options(NULL, expected_alignment,
+ expected_size, MALLOC_ZONE_MALLOC_OPTION_CLEAR);
T_ASSERT_NOTNULL(ptr, "allocate");
T_ASSERT_TRUE(check_zeroed_memory(ptr, expected_size), "zeroed");
T_ASSERT_TRUE(check_ptr_is_aligned(ptr, expected_alignment), "aligned");
@@ -179,3 +207,4 @@
dispatch_main();
}
+#endif // !MALLOC_TARGET_EXCLAVES