Как указать разделы вывода в файлах C, скомпилированных с использованием GCC?

В языке ассемблера я использую директиву .section, чтобы сообщить ассемблеру, какой раздел вывести, например,

.section init

Есть ли способ сделать то же самое в файлах C. Я хочу, чтобы код для некоторых файлов переходил в другой раздел, поэтому я могу загрузить его на другой адрес памяти. Я знаю, что могу создать script для ld и указать разделы там, но я не хочу этого делать. Есть ли какой-либо компилятор или директива типа .section для файлов C, которые это сделают?

Ответ 1

Существует:

__attribute__((section("section_name")))

Итак, например:

void foo() __attribute__((section(".text_foo")));

....

void foo() {}

Поместите foo в .text_foo

Подробнее см. здесь.