¿Cómo se implementan las funciones virtuales en el código de posición independiente?Código independiente de posición y tabla variable
Sé que si mi clase tiene funciones virtuales, el compilador generalmente genera un vtable para él que contiene las direcciones de todas las funciones virtuales, y almacena un puntero al vtable en cada objeto de mi clase.
Ahora, si mi código es independiente de la posición, el compilador no puede conocer las direcciones de las funciones virtuales (o cualquier función, para el caso). Entonces ¿Qué es lo que hace?
Me gustaría saber qué hacen los compiladores reales (no lo que es teóricamente posible); Me interesan principalmente las plataformas Linux de 32 bits, pero otras plataformas también son un poco interesantes.
El vinculador sabe que no tendrá problemas para arreglar los desplazamientos, siempre que no crucen los límites del módulo. Encontrar uno que realmente haga esto sería el problema más difícil. –