diff options
Diffstat (limited to 'libgloss/m68k/dbug-cf.sc')
-rw-r--r-- | libgloss/m68k/dbug-cf.sc | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/libgloss/m68k/dbug-cf.sc b/libgloss/m68k/dbug-cf.sc new file mode 100644 index 000000000..0342ed1fd --- /dev/null +++ b/libgloss/m68k/dbug-cf.sc @@ -0,0 +1,112 @@ +# a linker script template. +# RAMSTART - start of board's ram +# RAMSIZE - size of board's ram +# RAMDBUG - bytes at start of RAM for DBUG use + +cat <<EOF +STARTUP(crt0.o) +OUTPUT_ARCH(m68k) +/* DBUG loads SREC files */ +/*OUTPUT_FORMAT(srec)*/ +ENTRY(start) +SEARCH_DIR(.) +GROUP(-ldbug -lc -lgcc -ldbug) +__DYNAMIC = 0; + +MEMORY +{ + ram (rwx) : ORIGIN = ${RAMSTART} + ${RAMDBUG:-0}, + LENGTH = ${RAMSIZE} - ${RAMDBUG:-0} +} + +PROVIDE (__stack = ${RAMSTART} + ${RAMSIZE}); + +/* + * Initalize some symbols to be zero so we can reference them in the + * crt0 without core dumping. These functions are all optional, but + * we do this so we can have our crt0 always use them if they exist. + * This is so BSPs work better when using the crt0 installed gcc. + * We have to initalize them twice, so we cover a.out (which prepends + * an underscore) and coff object file formats. + */ +PROVIDE (hardware_init_hook = 0); +PROVIDE (_hardware_init_hook = 0); +PROVIDE (software_init_hook = 0); +PROVIDE (_software_init_hook = 0); +/* + * stick everything in ram (of course) + */ +SECTIONS +{ + .text : + { + CREATE_OBJECT_SYMBOLS + *(.text .text.*) + + . = ALIGN(0x4); + /* These are for running static constructors and destructors under ELF. */ + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + + *(.rodata .rodata.*) + + . = ALIGN(0x4); + *(.gcc_except_table) + + . = ALIGN(0x4); + *(.eh_frame) + + . = ALIGN(0x4); + __INIT_SECTION__ = . ; + LONG (0x4e560000) /* linkw %fp,#0 */ + *(.init) + SHORT (0x4e5e) /* unlk %fp */ + SHORT (0x4e75) /* rts */ + + . = ALIGN(0x4); + __FINI_SECTION__ = . ; + LONG (0x4e560000) /* linkw %fp,#0 */ + *(.fini) + SHORT (0x4e5e) /* unlk %fp */ + SHORT (0x4e75) /* rts */ + + _etext = .; + *(.lit) + } > ram + + .data : + { + *(.got.plt) *(.got) + *(.shdata) + *(.data .data.*) + _edata = .; + } > ram + + .bss : + { + . = ALIGN(0x4); + __bss_start = . ; + *(.shbss) + *(.bss .bss.*) + *(COMMON) + _end = ALIGN (0x8); + __end = _end; + } > ram + + .stab 0 (NOLOAD) : + { + *(.stab) + } + + .stabstr 0 (NOLOAD) : + { + *(.stabstr) + } +} +EOF |