Цитата(ArtemK @ Jun 9 2006, 12:27)

Собираю библиотеку стороннего разработчика. В библиотеке сделано предположение, что все неинициализированные вручную переменные содержат нули. При старте программы сегмент bss инициализируется нулями до вызова main(). Однако компоновщик по каой-то причине располагает неинициализированные переменные в сегмент data. Зато если вручную проинициализировать переменные нулями, то они ложатся в bss (почему так???). Как сказать компоновщику, что неинициализированные данные должны лежать в bss.
Написать свой скрипт для линкера. В этом случае все будет под Вашим котролем, в том числе и bss.
Цитата(beer_warrior @ Jun 9 2006, 15:08)

А если попробовать
Код
int some_variable __attribute__ ((section (".bss")));
?
Оно и так, скорее всего, в .bss, но если в скрипте линкера, который используется по умолчанию есть что-то вроде:
Код
.data {
*(.bss)
} > ram
То что бы Вы ни делали, а bss все-равно ляжет в .data. Нужно править скрипт линкера.