Obter nomes de funções em uma biblioteca compartilhada programaticamente
Posso obter uma lista de todos os nomes de funções de uma biblioteca compartilhada (apenas Linux) programaticamente quando estou usandodl_open()
?
Eu quero algo como isto:
std::vector<std::string> list_all_functions(void *dl) {
//... what can I do here?
}
int main() {
void * dl = dl_open("./mylib.so", RTLD_NOW);
auto functions = list_all_functions(dl);
//...
dl_close(dl);
return 0;
}
Biblioteca de exemplos (mylib.so)
Cabeçalho (.h):
extern "C" {
int sum (int a, int b);
}
Fonte (.c):
int sum (int a, int b) { return a + b; }
Hack sujo que eu conheço: usenm
ouobjdump
Utilitário