X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=mymemory.cc;h=1f8b616020e481e795fd36f74bfa1d2ab56722cc;hp=66a4fb973066621e3531b3963f045eafb63977f7;hb=651e9182baf50ef1e235ad7a587730b989bb44c7;hpb=c8b9d01f03c5ceae9b3ad503e29f6900564cc242 diff --git a/mymemory.cc b/mymemory.cc index 66a4fb97..1f8b6160 100644 --- a/mymemory.cc +++ b/mymemory.cc @@ -71,6 +71,31 @@ void *model_malloc(size_t size) #endif } +/** Non-snapshotting malloc for our use. */ +void *model_realloc(void *ptr, size_t size) +{ +#if USE_MPROTECT_SNAPSHOT + static void *(*reallocp)(void *ptr, size_t size) = NULL; + char *error; + void *newptr; + + /* get address of libc malloc */ + if (!reallocp) { + reallocp = (void * (*)(size_t))dlsym(RTLD_NEXT, "realloc"); + if ((error = dlerror()) != NULL) { + fputs(error, stderr); + exit(EXIT_FAILURE); + } + } + newptr = reallocp(ptr, size); + return newptr; +#else + if (!sStaticSpace) + sStaticSpace = create_shared_mspace(); + return mspace_realloc(sStaticSpace, ptr, size); +#endif +} + /** @brief Snapshotting malloc, for use by model-checker (not user progs) */ void * snapshot_malloc(size_t size) {