求高手能否说明下*.ld文件格式和语法。 <br /><br /><br />/***********************************************************************/<br />/* */<br />/* ROM.ld: Linker Script File */<br />/* */<br />/***********************************************************************/<br />ENTRY(_boot)<br />STACK_SIZE = 0x400;<br /><br />/* Memory Definitions */<br />MEMORY<br />{<br /> ROM (rx) : ORIGIN = 0x00000000, LENGTH = 0x00020000<br /> RAM (rw) : ORIGIN = 0x40000000, LENGTH = 0x00010000<br />}<br /><br />/* Section Definitions */<br />SECTIONS<br />{<br /> /* first section is .text which is used for code */<br /> .text :<br /> {<br /> *crt0.o (.text) /* Startup code */<br /> *(.text) /* remaining code */<br /> *(.rodata) /* read-only data (constants) */<br /> *(.rodata*)<br /> *(.glue_7)<br /> *(.glue_7t)<br /> } > ROM<br /><br /> . = ALIGN(4);<br /> _etext = . ;<br /> PROVIDE (etext = .);<br /><br /> /* .data section which is used for initialized data */<br /> .data : AT (_etext)<br /> {<br /> _data = .;<br /> *(.data)<br /> } > RAM<br /> <br /> . = ALIGN(4);<br /> _edata = . ;<br /> PROVIDE (edata = .);<br /><br /> /* .bss section which is used for uninitialized data */<br /> .bss (NOLOAD) :<br /> {<br /> __bss_start = . ;<br /> __bss_start__ = . ;<br /> *(.bss)<br /> *(COMMON)<br /> . = ALIGN(4);<br /> } > RAM<br /><br /> . = ALIGN(4);<br /> __bss_end__ = . ;<br /> PROVIDE (__bss_end = .);<br /><br /> .stack ALIGN(256) :<br /> {<br /> . += STACK_SIZE;<br /> PROVIDE (_stack = .);<br /> } > RAM<br /><br /> _end = . ;<br /> PROVIDE (end = .);<br /><br /> /* Stabs debugging sections. */<br /> .stab 0 : { *(.stab) }<br /> .stabstr 0 : { *(.stabstr) }<br /> .stab.excl 0 : { *(.stab.excl) }<br /> .stab.exclstr 0 : { *(.stab.exclstr) }<br /> .stab.index 0 : { *(.stab.index) }<br /> .stab.indexstr 0 : { *(.stab.indexstr) }<br /> .comment 0 : { *(.comment) }<br /> /* DWARF debug sections.<br /> Symbols in the DWARF debugging sections are relative to the beginning<br /> of the section so we begin them at 0. */<br /> /* DWARF 1 */<br /> .debug 0 : { *(.debug) }<br /> .line 0 : { *(.line) }<br /> /* GNU DWARF 1 extensions */<br /> .debug_srcinfo 0 : { *(.debug_srcinfo) }<br /> .debug_sfnames 0 : { *(.debug_sfnames) }<br /> /* DWARF 1.1 and DWARF 2 */<br /> .debug_aranges 0 : { *(.debug_aranges) }<br /> .debug_pubnames 0 : { *(.debug_pubnames) }<br /> /* DWARF 2 */<br /> .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }<br /> .debug_abbrev 0 : { *(.debug_abbrev) }<br /> .debug_line 0 : { *(.debug_line) }<br /> .debug_frame 0 : { *(.debug_frame) }<br /> .debug_str 0 : { *(.debug_str) }<br /> .debug_loc 0 : { *(.debug_loc) }<br /> .debug_macinfo 0 : { *(.debug_macinfo) }<br /> /* SGI/MIPS DWARF 2 extensions */<br /> .debug_weaknames 0 : { *(.debug_weaknames) }<br /> .debug_funcnames 0 : { *(.debug_funcnames) }<br /> .debug_typenames 0 : { *(.debug_typenames) }<br /> .debug_varnames 0 : { *(.debug_varnames) }<br />}<br /> |
|