nterposição de funções no Linux sem dls
tualmente, estou trabalhando em um projeto em que preciso rastrear o uso de várias chamadas do sistema e funções de baixo nível comommap
, brk
, sbrk
. Até agora, eu tenho feito isso usando a interposição de funções: escrevo uma função wrapper com o mesmo nome da função que estou substituindo mmap
por exemplo) e carrego-o em um programa definindo oLD_PRELOAD
variável de ambiente. Chamo a função real através de um ponteiro que carrego comdlsym
.
Infelizmente, uma das funções que quero agrupar,sbrk
, é usado internamente pordlsym
, então o programa trava quando tento carregar o símbolo.sbrk
não é uma chamada de sistema no Linux, então não posso simplesmente usarsyscall
para chamá-lo indiretament
Então, minha pergunta é: como posso chamar uma função de biblioteca de uma função de wrapper com o mesmo nome sem usardlsym
? Existe algum truque do compilador (usando o gcc) que me permita consultar a função origina