Это то, что я тоже задавался вопросом о специфике.Оно появилось лишь в последние несколько лет, но я не уверен, что за изменение ответственны GNU binutils или динамический компоновщик glibc (ld-linux.so.2
).
Сначала я подумал, что этосвоего рода защитная область, созданная динамическим компоновщиком для защиты от неограниченного доступа к сегменту данных библиотеки, но нет смысла быть таким большим.Вполне возможно, что это полная карта файла while, так что динамический компоновщик может сделать его снова читаемым в будущем (возможно, при вызовах dlopen
или dlsym
) для доступа к метаданным ELF, которые обычно не нужныбыть сопоставленным.
В любом случае, это мерзость, особенно на 32-битных машинах, где виртуальное адресное пространство является ценным ресурсом.Это также увеличивает объем страниц страниц ядра, увеличивая ресурсы пространства ядра, используемые процессом.
PS Извините, это не совсем ответ.Я знаю, что это просто случайные фрагменты, которые могут помочь привести к ответу, но это было слишком долго для комментария.