📄 coldfire.ld
字号:
.data _vma_ : _lma_ \
{ \
__ram_data_start = ABSOLUTE(.); \
*(.data*) \
__GOT1_START__ = ABSOLUTE(.); \
*(.got1) \
__GOT1_END__ = ABSOLUTE(.); \
. = ALIGN (4); \
/* Put .ctors and .dtors next to the .got2 section, so that */ \
/* the pointers get relocated with -mrelocatable. */ \
__CTOR_LIST__ = ABSOLUTE(.); \
KEEP(*(SORT(.ctors*))); \
__CTOR_END__ = ABSOLUTE(.); \
__DTOR_LIST__ = ABSOLUTE(.); \
KEEP(*(SORT(.dtors*))) \
__DTOR_END__ = ABSOLUTE(.); \
. = ALIGN(4); \
KEEP(*( SORT (.ecos.table.*))); \
. = ALIGN (4); \
*( .2ram.*) ; \
__GOT2_START__ = ABSOLUTE(.); \
*(.got2) \
__GOT2_END__ = ABSOLUTE(.); \
__GOT_START = ABSOLUTE(.); \
_GLOBAL_OFFSET_TABLE_ = ABSOLUTE(. + 32768); \
_SDA_BASE_ = ABSOLUTE(.); \
*(.got.plt) *(.got) \
__GOT_END__ = ABSOLUTE(.); \
*(.dynamic) \
*(.eh_frame) \
/* We want the small data sections together, so single-instruction */ \
/* offsets can access them all, and initialized data all before */ \
/* uninitialized, so we can shorten the on-disk segment size. */ \
__SDATA_START__ = ABSOLUTE(.); \
*(.sdata) *(.sdata.*) \
__SDATA2_START__ = ABSOLUTE(.); \
*(.sdata2*) \
. = ALIGN(4); \
__ram_data_end = ABSOLUTE(.); \
__ram_data_size = ABSOLUTE (.) - ABSOLUTE(__ram_data_start); \
} \
> _region_ \
__rom_data_start = LOADADDR(.data); \
__rom_data_size = SIZEOF(.data); \
__rom_data_end = __rom_data_start + __rom_data_size;
#define SECTION_bss(_region_, _vma_, _lma_) \
.bss _vma_ : _lma_ \
{ \
__bss_start = ABSOLUTE (.); \
FORCE_OUTPUT; \
*(.dynbss*) *(.bss*) *(COMMON) *(.sbss*) *(.scommon*) \
. = ALIGN(4); \
__bss_end = ABSOLUTE (.); \
__bss_size = ABSOLUTE (.) - ABSOLUTE(__bss_start); \
} \
> _region_
#define SECTION_stab \
.stab 0 (NOLOAD) : \
{ \
*(.stab) \
}
#define SECTION_stabstr \
.stabstr 0 (NOLOAD) : \
{ \
*(.stabstr) \
}
#define SECTION_comment \
.comment 0 (NOLOAD) : \
{ \
*(.comment) \
}
#define SECTION_uninvar(_region_, _vma_, _lma_) \
.uninvar _vma_ : _lma_ \
{ \
__uninvar_start = ABSOLUTE (.); \
FORCE_OUTPUT; \
*(.uninvar); \
. = ALIGN(4); \
__uninvar_end = ABSOLUTE (.); \
__uninvar_size = ABSOLUTE (.) - ABSOLUTE(__uninvar_start); \
} \
> _region_
#define SECTION_romvec(_region_, _vma_, _lma_) \
.romvec _vma_ : _lma_ \
{ \
__romvec_start = ABSOLUTE (.); \
FORCE_OUTPUT; \
KEEP(*(.romvec)); \
. = ALIGN(4); \
__romvec_end = ABSOLUTE (.); \
__romvec_size = ABSOLUTE (.) - ABSOLUTE(__romvec_start); \
} \
> _region_
#define SECTION_ramvec(_region_, _vma_, _lma_) \
.ramvec _vma_ : _lma_ \
{ \
__ramvec_start = ABSOLUTE (.); \
FORCE_OUTPUT; \
KEEP(*(.ramvec)); \
. = ALIGN(4); \
__ramvec_end = ABSOLUTE (.); \
__ramvec_size = ABSOLUTE (.) - ABSOLUTE(__ramvec_start); \
} \
> _region_
#define SECTION_virtual_vec_table(_region_, _vma_, _lma_) \
.virtual_vec_table _vma_ : _lma_ \
{ \
__virtual_vec_table_start = ABSOLUTE (.); \
. += 0x100; \
__virtual_vec_table_end = ABSOLUTE (.); \
__virtual_vec_table_size = ABSOLUTE (.) - ABSOLUTE(__virtual_vec_table_start); \
} \
> _region_
#define SECTIONS_END \
SECTION_stab \
SECTION_stabstr \
SECTION_comment \
. = ALIGN(0x4); _end = .; PROVIDE (end = .);
#include <pkgconf/system.h>
#include CYGHWR_MEMORY_LAYOUT_LDI
hal_virtual_vector_table = __virtual_vec_table_start;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -