1663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include <string.h> 2663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include <stdio.h> 3663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include <stdlib.h> 4663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include <assert.h> 5663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include "valgrind.h" 6663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include "../memcheck.h" 7663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 8663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct super { int x; }; 9663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstatic struct super superblock = { 12345 }; 10663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 11663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* run with `valgrind -q --malloc-fill=0xaf --free-fill=0xdb` */ 12663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengint main(int argc, char **argv) 13663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ 14663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng unsigned char *s; 15663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng VALGRIND_CREATE_MEMPOOL(&superblock, /*rzB=*/0, /*is_zeroed=*/0); 16663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng s = malloc(40); 17663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng assert(s); 18663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng assert(*s == 0xaf); 19663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng *s = 0x05; 20663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng VALGRIND_MEMPOOL_ALLOC(&superblock, s, 40); 21663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("*s=%#hhx after MEMPOOL_ALLOC\n", *s); 22663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng VALGRIND_MEMPOOL_FREE(&superblock, s); 23663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("*s=%#hhx after MEMPOOL_FREE\n", *s); 24663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng VALGRIND_MEMPOOL_ALLOC(&superblock, s, 40); 25663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("*s=%#hhx after second MEMPOOL_ALLOC\n", *s); 26663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng free(s); 27663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng VALGRIND_DESTROY_MEMPOOL(&superblock); 28663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 29663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng s = malloc(40); 30663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng assert(s); 31663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng assert(*s == 0xaf); 32663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng *s = 0x05; 33663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng VALGRIND_MALLOCLIKE_BLOCK(s, 40, 0/*rzB*/, 0/*is_zeroed*/); 34663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("*s=%#hhx after MALLOCLIKE_BLOCK\n", *s); 35663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng VALGRIND_FREELIKE_BLOCK(s, 0/*rzB*/); 36663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("*s=%#hhx after FREELIKE_BLOCK\n", *s); 37663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng VALGRIND_MALLOCLIKE_BLOCK(s, 40, 0/*rzB*/, 0/*is_zeroed*/); 38663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("*s=%#hhx after second MALLOCLIKE_BLOCK\n", *s); 39663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 40663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng return 0; 41663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} 42663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 43