Насколько я помню, одна из первоначальных проблем с форматом a.out заключалась в том, что он поддерживал только три раздела: текст, данные и bss. ELF позволяет любое число (или, по крайней мере, многие другие). Формат заголовка a.out был очень прост, что-то вроде:
word <magic>
word <text size>
word <data size>
word <bss size>
Формат ELF, напротив, имеет заголовки разделов, с именами, размерами и т. Д.
Наличие большего количества разделов допускает стандартные разделы, но также дает нам константные разделы, разделы конструктора и даже один раздел на функцию, если мы этого хотим.