Из руководства GCC:
Некоторые форматы файлов не поддерживают произвольные разделы, поэтому атрибут раздела доступен не на всех платформах. Если вам необходимо сопоставить все содержимое модуля с определенным разделом, рассмотрите возможность использования средств компоновщика.
IIRC, в linux используется модель с плоской памятью, так что вы ничего не получите, «в любом случае», «втиснув» вещи в один раздел, не так ли?
Хм. Я полагаю, вы могли бы сделать функцию asm, чтобы зарезервировать пространство, а затем сделать указатель foo, чтобы получить его адрес. Может быть, хочу обернуть уродливые в макрос ...
Еще одна мысль - разделить проблему пополам; напишите небольшой пример того, что вы можете, и все еще скомпилируете, получите ассемблерный код и поработайте с ним, чтобы увидеть, что вы можете преодолеть на последующих этапах. Если ничего другого, вы могли бы написать что-нибудь, чтобы напутать ассемблерный код для этого модуля, поместить его в ваш файл make и назвать это хорошим.
Еще одна мысль: попробуйте поместить определения переменных в небольшой модуль asm (e, g, как db или любой другой с правильными объявлениями раздела) и позвольте компоновщику обработать его.