Я вижу, что сегмент .text файлов ELF, который связан с аргументом -pie при загрузке в память, находится где-то в адресах виртуальной памяти, например 0x00005xxxxxxxxxxxx в Linux x86_64. Я проверил несколько запущенных процессов, и кажется, что адрес сегмента .text все из них имеет префикс 0x00005, например, я не смог найти ни одного с префиксом 0x00004.
Есть ли причина, по которой динамический компоновщик выбирает этот диапазон адресов (0x00005xxxxxxxxxxxxx) для поиска сегмента .text? Почему он не выбирает некоторые адреса, начиная с 4 МБ и более, например двоичные файлы, связанные без аргумента -pie?
Подробнее здесь: https://stackoverflow.com/questions/781 ... nux-x86-64