Czy można użyć kodu samomodyfikującego do przyspieszenia wywoływania funkcji w dynamicznie połączonych bibliotekach?
O ile rozumiem, biblioteki współdzielone ELF używają pewnego rodzaju pośredniej tablicy skoków (tabela łączenia procedur lub PLT), aby umożliwić leniwe wiązanie funkcji bibliotecznych. Wydaje się, że celem jest uniknięcie konieczności modyfikowania tabeli w segmencie kodu, jednocześnie umożliwiając leniwe rozwiązywanie pozycji funkcji przy pierwszym wywołaniu.
Czy nie byłoby szybciej dynamicznie tworzyć kodu dla tej tabeli w czasie ładowania, a może nawet przy pierwszym wywołaniu funkcji?
Czy ma to umożliwić udostępnianie segmentu kodu między procesami w jak największym stopniu (dynamiczna tabela byłaby prywatna dla procesu)? Czy to ze względów bezpieczeństwa (kod do zapisu nie powinien być wykonywalny - ale JIT robią to cały czas, a moduł ładujący może dodawać i usuwać uprawnienia przed uruchomieniem programu)?
A może jest to kombinacja tych działań, a niewielki wzrost wydajności na wywołanie funkcji po prostu nie byłby wart wysiłku?