Как реализуются виртуальные функции в позиционно-независимом коде?
Я знаю, что если в моем классе есть виртуальные функции, компилятор обычно генерирует для него виртуальную таблицу, содержащую адреса всех виртуальных функций, и хранит указатель на виртуальную таблицу в каждом объекте моего класса.
Теперь, если мой код не зависит от позиции, компилятор не может знать адреса виртуальных функций (или любой функции, если на то пошло). Так что же он делает?
Я хотел бы знать, что делают настоящие компиляторы (а не то, что теоретически возможно); меня в основном интересуют 32-битные платформы Linux, но и другие платформы тоже немного интересны.