реклама на сайте
подробности

 
 
> секция .eh_frame, в ПЗУ или в ОЗУ
Genadi Zawidowsk...
сообщение Aug 23 2009, 20:59
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Перешёл на новый yagarto с gcc 4.4.1 - как и предупреждал автор, в выходных файлах (ил в библиотечных модулях) появилась эта секция (.eh_frame).

Кто-нибудь знает точно - эта секция должна быть к чему при линковке отнесена:
К сегменту text (инициализированные данные, при работе не модифицируются)
К сегменту data (инициализированные данные, модифицируемые при работе программы)
К сегменту bss (неинициализированная область данных)

И ещё - если в start-up не подготавливается ничего для обработки ексепшинов - можно ли (какой синтаксис ld script) может "вынести совсем" эти секции из результирующего образа программы (и не отводить ни ПЗУ ни ОЗУ)?

Я видел запись
Цитата
{
что-то тут
} >ram = 0

Это оно?

Сообщение отредактировал Genadi Zawidowski - Aug 23 2009, 20:59
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Aug 24 2009, 07:22
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Сделал так:

Код
ENTRY(ResetHandler)
SEARCH_DIR(.)

/*
* Define stack size here
*/
FIQ_STACK_SIZE = 0x0100;
IRQ_STACK_SIZE = 0x0100;
ABT_STACK_SIZE = 0x0100;
UND_STACK_SIZE = 0x0100;
SVC_STACK_SIZE = 0x0400;


MEMORY
{
  rom : org = 0x00100000, len = 64k
  ram : org = 0x00200000, len = 16k
}

/*
* Do not change the next code
*/
SECTIONS
{
  .text :
  {
    *(.vectors);
    . = ALIGN(4);
    *(.init);
    . = ALIGN(4);
    *(.text);
    . = ALIGN(4);
    *(.rodata);
    . = ALIGN(4);
    *(.rodata*);
    . = ALIGN(4);
    *(.glue_7t);
    . = ALIGN(4);
    *(.glue_7);
/*
    . = ALIGN(4);
     KEEP (*(.eh_frame))
*/
    . = ALIGN(4);
    etext = .;
  } > rom

  .data : AT (ADDR (.text) + SIZEOF (.text))
  {
    PROVIDE (__data_start = .);
    *(.ramfunc)
    . = ALIGN(4);
    *(.data)
    . = ALIGN(4);
    edata = .;
    _edata = .;
    PROVIDE (__data_end = .);
  } > ram

  .bss :
  {
    PROVIDE (__bss_start = .);
    *(.bss)
    *(COMMON)
    . = ALIGN(4);
    PROVIDE (__bss_end = .);
    
    . = ALIGN(256);
    
    PROVIDE (__stack_start = .);
    
    PROVIDE (__stack_fiq_start = .);
    . += FIQ_STACK_SIZE;
    . = ALIGN(4);
    PROVIDE (__stack_fiq_end = .);

    PROVIDE (__stack_irq_start = .);
    . += IRQ_STACK_SIZE;
    . = ALIGN(4);
    PROVIDE (__stack_irq_end = .);

    PROVIDE (__stack_abt_start = .);
    . += ABT_STACK_SIZE;
    . = ALIGN(4);
    PROVIDE (__stack_abt_end = .);

    PROVIDE (__stack_und_start = .);
    . += UND_STACK_SIZE;
    . = ALIGN(4);
    PROVIDE (__stack_und_end = .);

    PROVIDE (__stack_svc_start = .);
    . += SVC_STACK_SIZE;
    . = ALIGN(4);
    PROVIDE (__stack_svc_end = .);
    PROVIDE (__stack_end = .);
    PROVIDE (__heap_start = .);  
  } > ram

/DISCARD/ :
    {
        *(.eh_frame_hdr)
        *(.eh_frame)
    }

}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 10:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01287 секунд с 7
ELECTRONIX ©2004-2016