powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вопрос по GNU linker
3 сообщений из 3, страница 1 из 1
Вопрос по GNU linker
    #36761813
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно я пишу не в ту ветку, но...
Господа, помогите пожалуйста напиписать скрипт линкера

Я использовал раньше такой скрипт

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
PHDRS
{
    text PT_LOAD;
    data PT_LOAD;
    bss PT_DYNAMIC;
}



SECTIONS
{
    OVERLAY 0x00 :
    {
         .text   {*(.text)}   :text
         .data   {  *(.data) *(.rodata) } :data

    }

     .bss   SIZEOF(.data) (OVERLAY) :  { *(.sbss) *(.bss) *(COMMON) } :bss
}



теперь нужно добавить перед секцией .data еще одину пустую секцию message размером 0x1000
и самое главное
в секциии .text VMA = 0x00
.message VMA = 0x00
.data VMA = 0x1000
.bss VMA = SIZEOF(.data)+ 0x1000

Короче нужно из всех секций сделать два сегмента кода и данных в которых адресация начинается с 0x00
Подскажите как это можно написать?
Спасибо.
...
Рейтинг: 0 / 0
Вопрос по GNU linker
    #36762473
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZ
теперь нужно добавить перед секцией .data еще одину пустую секцию message размером 0x1000
и самое главное
в секциии .text VMA = 0x00
.message VMA = 0x00
.data VMA = 0x1000
.bss VMA = SIZEOF(.data)+ 0x1000

Короче нужно из всех секций сделать два сегмента кода и данных в которых адресация начинается с 0x00
Подскажите как это можно написать?
Спасибо.
Задавай жестко и все. Забудь про OVERLAY, он все-го лишь удобный костыль.
Адреса можно указывать и считать прямо в секциях. А используя AT() указываем что WMA не равняется LMA. Примерно так:
Код: plaintext
1.
2.
3.
.text    0x00                 : { *(.text); }
.message 0x00                 : AT( ADDR(.text) +SIZOF(.text))       : { *(.message); }
.data    0x1000               : AT( ADDR(.message) +SIZOF(.message)) : { *(.data); }
.bss     SIZEOF(.data)+0x1000 : AT( ADDR(.data) +SIZOF(.data))       : { *(.bss) *.(sbss) *(COMMON) }
...
Рейтинг: 0 / 0
Вопрос по GNU linker
    #36765401
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

Спасибо, за исчерпывающий ответ, то что нужно.

а на RSDN.ru не ответили
sql.ru forever
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вопрос по GNU linker
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]