Ситуация следующая: есть исходники на ассемблере и один на Си. Линкуются они следующим образом: есть входной файл, указанный в STARTUP в линкере(startup.S), т.е. он первый по адресам, далее идет все остальное, т.е. по секциям в выходную секцию .text. идет все секции .text из всех исходников, тоже для .data, .bss и т.д., где-то посредине вставляется секция .text из Си'шного файла. Мне же надо чтобы секция .text из Cи'шного файла была как можно ближе к началу выходного файла, скажем сразу после startup.S, но желательно без редактироваия скрипта линкера. Или может как-то можно влепить Си'шный файл в startup.S?
P.S. компилятор - gcc, линкер - gnu ld.
Компановка - Си и Ассемблер
Модератор: Модераторы разделов
-
DRUID3
- Сообщения: 8
- ОС: Linux mandriva 2009.1 pwp
Re: Компановка - Си и Ассемблер
Дам Вам еще один свой индусский совет
...
Как вариант -S - даст Вам листинг на asm возьмите и сделайте его одним целым с startup.S
.
Но вообще непонятно ограничение на редактирование скрипта линкера. Прописать там руками и все будет ОК, зачем себя мучить?
Как вариант -S - даст Вам листинг на asm возьмите и сделайте его одним целым с startup.S
Но вообще непонятно ограничение на редактирование скрипта линкера. Прописать там руками и все будет ОК, зачем себя мучить?
-
savigm
- Сообщения: 127
- ОС: openSUSE
-
AestheteAnimus
- Сообщения: 135
- ОС: FreeBSD 8.0-RELEASE amd64
Re: Компановка - Си и Ассемблер
Так что, сишный файл всего один? Тогда я бы разместил все функции в этом файле в отдельной секции (__attribute__ ((section ("section_name")))) и эту секцию разместил бы в нужном месте. К тому же, на порядок линковки влияет порядок объектных файлов в командой строке, вот только бага это или фича - я не знаю
Показать его нам. А иначе Вы вынуждаете нас заниматься гаданием на кофейной гуще.
-
savigm
- Сообщения: 127
- ОС: openSUSE
Re: Компановка - Си и Ассемблер
AestheteAnimus писал(а): ↑15.09.2009 14:45
Показать его нам. А иначе Вы вынуждаете нас заниматься гаданием на кофейной гуще.
В скрипте примерно следующее:
Код: Выделить всё
SECTIONS
{
.text ALIGN(0x8):
*(.text);
.data ALIGN(0x8):
*(.data);
.rodata ALIGN(0x8):
*(.rodata);
.sdata ALIGN(0x8):
*(.sdata);
.bss ALIGN(0x8):
*(.bss);
}