如何将指针分配给使用 GCC 编译后添加的自定义部分?

How do I assign a pointer to a custom section that is added after compilation with GCC?

我正在使用 GCC 并为 STM32 编写嵌入式软件。

如何阅读添加了 --add-section 的部分?

我想在 elf 中添加一个部分,并在我的程序中分配一个指向该部分数据的指针。

例如:

extern char * ptr_to_my_section = &my_array;

然后我会编译一个文件my_data.cpp并将其注入特定的部分my_section

my_data.cpp

char my_array[] = "This is the custom data";

最后我将创建二进制可执行文件。

Then I will compile a file my_data.cpp and inject it into a specific section my_section.

不需要为此使用objcopy --add-section。您可以简单地要求 GCC 使用 __attribute__((section("my_section"))).

将您的数组放入 my_section

要找到本节的开头,您可以使用链接器“神奇地”为您添加的 {__start,__end} 符号:

const char *ptr_to_my_section = &__start_my_section;
const char *end_my_section = &__stop_my_section;