Jump to content

    
Sign in to follow this  
zuuuuk

Linker Script Commands + FILE

Recommended Posts

Доброго времени суток.

Подскажите, пожалуйста, пример ld скрипта, в котором можно подключить в .elf файл дополнительный файл с данными по определенному адресу.

 

Я нашёл описания команд по работе с файлами в скрипте линкера.

https://access.redhat.com/site/documentatio...e-commands.html

Но без примера не могу разобраться.

Share this post


Link to post
Share on other sites
Подскажите, пожалуйста, пример ld скрипта, в котором можно подключить в .elf файл дополнительный файл с данными по определенному адресу.

Вроде как, не было такой возможности? Где-то обсуждалось тут уже. В качестве решения предлагалось использовать srecord или что-то навроде того - вписать нужный bin-файл по нужному адресу после завершения работы линкера.

Share this post


Link to post
Share on other sites

Сам не пробовал, но двигался бы таким путем:

1) преобразовал бы .bin в объектный .o при помощи objcopy, разместив содержимое в какую-то секцию с уникальным именем (.my_bin)

2) слинковал бы полученный .o с исходным .elf, указав разместить эту новую секцию по нужным адресам опциями командной строки --section-start=.my_bin=адрес

Share this post


Link to post
Share on other sites

Источник откуда взял мысль, не нашел. Результат тутто : :)

#ifdef __ASSEMBLER__
.altmacro
.macro External_File p q
.globl \p&_begin
\p&_begin:
.incbin \q
\p&_end:
// Put a ".byte 0" here if you know your data is text
// and you wish to use \p&_begin as a C string. It
// doesn't hurt to leave it here even for binary data
// since it is not counted in \p_&len
.byte 0
.globl \p&_len
\p&_len:
.int (\p&_end - \p&_begin)
.endm

#else // Not __ASSEMBLER__

#ifdef __cplusplus
	extern "C" {
#endif
#include <stddef.h>
#define External_File(_NAME) \
 extern const char _NAME##_begin; \
 extern size_t _NAME##_len

#ifdef __cplusplus
	 }
#endif

#endif

Edited by _Pasha

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this