Меня интересует: что находится в секциях .sdata и .sbss elf-файла. Архитектура MIPS. Нашел некоторое описание:
.sdata
This section holds initialized short data that contribute to the
program memory image. See "Global Data Area" below for de-
tails.
.sbss
This section holds uninitialized short data that contribute to the
program memory image. By definition, the system initializes
the data with zeros when the program begins to run. See "Glo-
bal Data Area" below for details.
Т.е. это какие-то короткие данные, но суть мне не понятна, что из программы туда попадет и почему?
Some compilers/architectures also support the SBSS segment for "small data". Typically these data items can be accessed by leaner code using instructions that can only access a certain range of addresses.
This section stores initialised data that are addressable via small data area pointers (%a0)
.sbss
Location of non-initialised data. Addressing is effected via small data area pointers %a0
.sdata.rodata
Location of read-only data that can be small adressed
Вот что еще нашел, видимо sdata и sbss - секции где хранятся данные, которые как-то коротко адресуются, т.е. наверно имеется ввиду относительная адресация.
Я не очень понял, что значит в данном контексте small addressed... Сегмент .sdata хранит инициализированные данные (т.е. данные, которые уже известны на момент компиляции); .sbss - неинициализированные (насколько я понимаю, в исполнимом файле он должен только упоминаться, а места не занимать) - это место под данные, которые станут известны только во время выполнения программы.