È possibile utilizzare un codice di modifica automatica per accelerare la chiamata di funzioni in librerie collegate dinamicamente?
Per quanto ne so, le librerie condivise ELF usano una sorta di tabella di salto indiretto (la tabella di collegamento delle procedure o PLT) per abilitare il binding pigro delle funzioni delle librerie. Lo scopo sembra essere quello di evitare di dover modificare la tabella nel segmento di codice pur consentendo la risoluzione lenta delle posizioni delle funzioni alla prima chiamata.
Non sarebbe più veloce creare dinamicamente il codice per quella tabella al momento del caricamento, o forse anche alla prima chiamata di funzione?
Consentire il più possibile la condivisione del segmento di codice tra processi (una tabella dinamica sarebbe privata di un processo)? È per motivi di sicurezza (il codice scrivibile non dovrebbe essere eseguibile , ma i JIT lo fanno sempre e l'autorizzazione di scrittura potrebbe essere aggiunta e rimossa dal caricatore prima di avviare effettivamente il programma)?
O è una combinazione di questi, e il piccolo guadagno in termini di prestazioni per chiamata di funzione non varrebbe la pena?