Почему linux использует два раздела GOT в x64? .GOT против .got.plt - PullRequest
3 голосов
/ 24 февраля 2020

Я пытаюсь выяснить разницу между этими двумя разделами, может показаться, что это дубликат этого вопроса , но ответ, приведенный там, мало что объяснил, поэтому я бы как более подробное и краткое объяснение.

1 Ответ

5 голосов
/ 24 февраля 2020

Разделение происходит из-за соображений безопасности. По умолчанию (в прошлом использовалось только значение -Wl,-z,relro) Раздел .got перераспределяется как доступный только для чтения, когда загрузчик динамического доступа c разрешает все перемещения данных при запуске (т. Е. Перед вводом функции main), чтобы предотвратить некоторые виды подвигов . .got.plt не может быть переназначен из-за привязки ленивых символов (если только не были использованы LD_BIND_NOW или -Wl,-z,now, в этом случае отключается привязка ленивых, а также переопределяется .got.plt).

...