16 static unsigned char snan8[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x7f };
17 static unsigned char cinit[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
18 static unsigned char zero0[] = { 0x00 };
19 static unsigned char *
init = NULL;
26 int _align =
align > 0 ?
align :
sizeof (
void*);
29 if ((c = posix_memalign (&ptr, _align, size)) != 0)
32 printf (
" c = %d, EINVAL = %d, ENOMEM = %d, align = %d, size = %d\n",
33 c, EINVAL, ENOMEM,
align, size);
36 if ((
init != NULL) && (ptr != NULL))
40 for (i = 0, c = ptr; i <
size; i++)
45 __sync_fetch_and_add (&
count, 1);
53 const char * MEMORY_HOOK_ALIGN = getenv (
"MEMORY_HOOK_ALIGN");
54 const char * MEMORY_HOOK_INIT = getenv (
"MEMORY_HOOK_INIT");
55 const char * MEMORY_HOOK_COUNT = getenv (
"MEMORY_HOOK_COUNT");
58 if (strcasecmp (MEMORY_HOOK_INIT,
"NAN") == 0)
63 else if (strcasecmp (MEMORY_HOOK_INIT,
"ZERO") == 0)
68 else if (strncasecmp (MEMORY_HOOK_INIT,
"0X", 2) == 0)
70 long long unsigned int x = 0;
72 for (c = MEMORY_HOOK_INIT+2; *c; c++)
73 if ((
'0' <= *c) && (*c <=
'9'))
74 x = 16 * x + (*c -
'0');
75 else if ((
'a' <= *c) && (*c <=
'f'))
76 x = 16 * x + (*c -
'a' + 10);
77 else if ((
'A' <= *c) && (*c <=
'F'))
78 x = 16 * x + (*c -
'A' + 10);
82 memcpy (
cinit, &x,
sizeof (x));
85 printf (
" MEMORY_HOOK_INIT = %s\n", MEMORY_HOOK_INIT);
87 if (MEMORY_HOOK_ALIGN)
88 align = atoi (MEMORY_HOOK_ALIGN);
89 if (MEMORY_HOOK_COUNT)
97 printf (
"MEMORY_HOOK_COUNT = %d\n",
count);
static unsigned char snan8[]
static unsigned char * init
static unsigned char cinit[]
void __attribute__((constructor))
static unsigned char zero0[]
void * __wrap_malloc(size_t size, const void *caller)