¿Se podría usar el código de modificación automática para acelerar la llamada de funciones en bibliotecas vinculadas dinámicamente?
Por lo que yo entiendo, las bibliotecas compartidas ELF usan una especie de tabla de salto indirecta (la tabla de vinculación de procedimientos, o PLT) para permitir la unión diferida de las funciones de la biblioteca. El propósito parece ser evitar tener que modificar la tabla en el segmento de código mientras se habilita la resolución diferida de las posiciones de función en la primera llamada.
¿No sería más rápido crear dinámicamente el código para esa tabla en el momento de la carga, o posiblemente incluso en la primera llamada a la función?
¿Es para permitir compartir el segmento de código entre procesos tanto como sea posible (una tabla dinámica sería privada para un proceso)? ¿Es por razones de seguridad (el código editable no debe ser ejecutable , pero los JIT lo hacen todo el tiempo y el cargador puede agregar y eliminar el permiso de escritura antes de iniciar realmente el programa)?
¿O es una combinación de esos, y la pequeña ganancia de rendimiento por llamada de función simplemente no valdría la pena?