Да, ОС заполнит раздел .bss нулями.
В общем, Linux (и другие версии Unix) в любом случае обнулят все «новые» страницы в процессе, чтобы избежать утечки контента от «предыдущего владельца» (подумайте об этом, как об уничтожении вашей переработки).
Редактировать:
В конечном счете, компоновщик и загрузчик отвечают за фактическое расположение раздела .bss. Как правило, он находится в конце раздела данных, как описано в спецификации ELF 1.2, рисунок 2.5.
Как описано в разделе «Разделы», раздел .bss имеет тип SHT_NOBITS
. Хотя он не занимает места в файле, он вносит свой вклад в образ памяти сегмента. Обычно эти неинициализированные данные находятся в конце сегмента, поэтому p_memsz
больше, чем p_filesz
.
(В другом месте объясняется, что содержимое гарантированно равно нулю)
Вы можете найти спецификацию здесь (и во многих других местах, но на этом сайте также есть некоторые полезные документы по расширениям и т. д.) http://refspecs.linuxbase.org/
Исходный код LLVM и связанная с ним документация также довольно удобочитаемы (IMO): http://llvm.org/docs/doxygen/html/Support_2ELF_8h_source.html
Информация о том, как указать связывание и порядок, расположение разделов: http://www.math.utah.edu/docs/info/ld_3.html
person
Mats Petersson
schedule
04.04.2014