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