1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:38:12 +00:00

LibC: Communicate malloc() and free() operations to UserspaceEmulator

Use the sneaky SALC secret mechanism of UserspaceEmulator to inform it
about malloc operations.
This commit is contained in:
Andreas Kling 2020-07-15 21:54:18 +02:00
parent c314292319
commit 4aa81a4fd9
2 changed files with 24 additions and 0 deletions

View file

@ -281,6 +281,10 @@ static void* malloc_impl(size_t size)
#ifdef MALLOC_DEBUG
dbgprintf("LibC: allocated %p (chunk in block %p, size %zu)\n", ptr, block, block->bytes_per_chunk());
#endif
// Tell UserspaceEmulator about this malloc()
send_secret_data_to_userspace_emulator(1, size, reinterpret_cast<FlatPtr>(ptr));
if (s_scrub_malloc)
memset(ptr, MALLOC_SCRUB_BYTE, block->m_size);
return ptr;
@ -382,6 +386,9 @@ void free(void* ptr)
if (s_profiling)
perf_event(PERF_EVENT_FREE, reinterpret_cast<FlatPtr>(ptr), 0);
free_impl(ptr);
// Tell UserspaceEmulator about this free()
send_secret_data_to_userspace_emulator(2, reinterpret_cast<FlatPtr>(ptr), 0);
}
void* calloc(size_t count, size_t size)