Почему нестатические глобальные переменные определены в общих объектах, на которые ссылается GOT? - PullRequest
1 голос
/ 01 февраля 2011

Я имею в виду нестатические глобальные переменные, которые определены в модуле, а не внешне.

Почему на него нужно ссылаться через GOT? Почему не использовать относительный адрес? (Поскольку расстояние между глобальной переменной в разделе .data и ссылкой в ​​разделе .text является константой, оно также не зависит от позиции)

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

Поскольку ваша переменная не static, в ELF ее можно вставить (подумайте о LD_PRELOAD).

0 голосов
/ 01 марта 2011

У меня тоже такая же путаница. Если в обоих DSO определена одна глобальная переменная с одинаковым именем и они динамически связаны в один исполняемый файл, будут ли обе библиотеки иметь доступ к одной и той же копии переменной? И какая библиотека (раздел данных библиотеки), в которой находится переменная, зависит от порядка загрузки библиотек?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...