Я пытаюсь перехватить malloc
вызов, используя LD_PRELOAD
. Я хочу переместить все выделение памяти в разделяемую память, изменив malloc
на shm_open
, а затем mmap
. Как мне это сделать?
LD_PRELOAD из malloc
работает нормально. Я могу перехватить каждый malloc
вызов. Однако вызов shm_open
в перехваченном malloc
завершается ошибкой, потому что shm_open
требует связывания librt
, которое ссылается на libdl
, которое требует dlsym
в LD_PRELOAD. Есть рекурсивная интерпозиция. Я думал о создании статической библиотеки обернутого выделения разделяемой памяти. Затем вызовите его из перехваченного malloc
. Но librt
нельзя связать динамически.