你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

链接脚本文件ld语法

[复制链接]
huahuahnu 提问时间:2023-11-30 10:56 / 未解决
下面是一个ld文件的内容,以下6个地方不明白代表什么意思,求解答!
1、KEEP (*(.ctors))  ctors代表什么意思?
2、KEEP (*(.dtors)) dtors代表什么意思?
3、KEEP (*(.init_array*)) init_array代表什么意思?
4、*(.init),*(.fini*)代表什么意思?
5、*(.ARM.exidx* .gnu.linkonce.armexidx.*)什么意思?
6、*(.ARM.extab* .gnu.linkonce.armextab.*)什么意思?


  1. MEMORY
  2. {
  3.     FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x00040000
  4.     SRAM (WX)  : ORIGIN = 0x20000000, LENGTH = 0x00008000
  5. }

  6. REGION_ALIAS("REGION_TEXT", FLASH);
  7. REGION_ALIAS("REGION_BSS", SRAM);
  8. REGION_ALIAS("REGION_DATA", SRAM);
  9. REGION_ALIAS("REGION_STACK", SRAM);
  10. REGION_ALIAS("REGION_HEAP", SRAM);
  11. REGION_ALIAS("REGION_ARM_EXIDX", FLASH);
  12. REGION_ALIAS("REGION_ARM_EXTAB", FLASH);

  13. SECTIONS {

  14.     PROVIDE (_intvecs_base_address =
  15.         DEFINED(_intvecs_base_address) ? _intvecs_base_address : 0x0);

  16.     .intvecs (_intvecs_base_address) : AT (_intvecs_base_address) {
  17.         KEEP (*(.intvecs))
  18.     } > REGION_TEXT

  19.     PROVIDE (_vtable_base_address =
  20.         DEFINED(_vtable_base_address) ? _vtable_base_address : 0x20000000);

  21.     .vtable (_vtable_base_address) (NOLOAD) : {
  22.         KEEP (*(.vtable))
  23.     } > REGION_DATA

  24.     .text : {
  25.         CREATE_OBJECT_SYMBOLS
  26.         *(.text)
  27.         *(.text.*)
  28.         . = ALIGN(0x4);
  29.         KEEP (*(.ctors))
  30.         . = ALIGN(0x4);
  31.         KEEP (*(.dtors))
  32.         . = ALIGN(0x4);
  33.         __init_array_start = .;
  34.         KEEP (*(.init_array*))
  35.         __init_array_end = .;
  36.         *(.init)
  37.         *(.fini*)
  38.     } > REGION_TEXT AT> REGION_TEXT

  39.     PROVIDE (__etext = .);
  40.     PROVIDE (_etext = .);
  41.     PROVIDE (etext = .);

  42.     .rodata : {
  43.         *(.rodata)
  44.         *(.rodata*)
  45.     } > REGION_TEXT AT> REGION_TEXT

  46.     .data : ALIGN (4) {
  47.         __data_load__ = LOADADDR (.data);
  48.         __data_start__ = .;
  49.         *(.data)
  50.         *(.data*)
  51.         . = ALIGN (4);
  52.         __data_end__ = .;
  53.     } > REGION_DATA AT> REGION_TEXT

  54.     .ARM.exidx : {
  55.         __exidx_start = .;
  56.         *(.ARM.exidx* .gnu.linkonce.armexidx.*)
  57.         __exidx_end = .;
  58.     } > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX

  59.     .ARM.extab : {
  60.         *(.ARM.extab* .gnu.linkonce.armextab.*)
  61.     } > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB

  62.     .bss : {
  63.         __bss_start__ = .;
  64.         *(.shbss)
  65.         *(.bss)
  66.         *(.bss.*)
  67.         *(COMMON)
  68.         . = ALIGN (4);
  69.         __bss_end__ = .;
  70.     } > REGION_BSS AT> REGION_BSS

  71.     .heap : {
  72.         __heap_start__ = .;
  73.         end = __heap_start__;
  74.         _end = end;
  75.         __end = end;
  76.         KEEP(*(.heap))
  77.         __heap_end__ = .;
  78.         __HeapLimit = __heap_end__;
  79.     } > REGION_HEAP AT> REGION_HEAP

  80.     .stack (NOLOAD) : ALIGN(0x8) {
  81.         _stack = .;
  82.         __stack = .;
  83.         KEEP(*(.stack))
  84.     } > REGION_STACK AT> REGION_STACK
  85. }
复制代码


收藏 评论3 发布时间:2023-11-30 10:56

举报

3个回答
huahuahnu 回答时间:2023-11-30 15:46:14

watershade 发表于 2023-11-30 14:09
<a href="https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_chapter/ld_3.html">https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_chapter/ld_3.html</a>

谢谢,看过类似的,但都解释不全

余烬 回答时间:2023-12-1 09:01:12

希望能多解析一下link

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版