Чи може самостійно змінювати код для прискорення виклику функцій у динамічно пов'язаних бібліотеках?
Наскільки я розумію, бібліотеки спільного використання ELF використовують своєрідну таблицю непрямих стрибків (таблиця зв’язків процедур або PLT), щоб увімкнути ледачі зв'язування функцій бібліотеки. Здається, мета полягає у тому, щоб уникнути необхідності змінювати таблицю в кодовому сегменті, одночасно дозволяючи ледаче вирішення функціональних позицій під час першого дзвінка.
Чи не було б швидше динамічно створити код для цієї таблиці під час завантаження або, можливо, навіть під час першого виклику функції?
Чи варто максимально дозволити обмін сегментом коду між процесами (динамічна таблиця буде приватною для процесу)? Це з міркувань безпеки (код для запису не повинен бути виконуваним - але JIT роблять це постійно, і дозвіл на запис може бути доданий і видалений завантажувачем перед тим, як реально запустити програму)?
Або це комбінація таких, і невеликий приріст продуктивності на виклик функції просто не вартує зусиль?