diff options
Diffstat (limited to 'libgloss/m68k/sim.ld')
-rw-r--r-- | libgloss/m68k/sim.ld | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/libgloss/m68k/sim.ld b/libgloss/m68k/sim.ld new file mode 100644 index 000000000..b44fd07b3 --- /dev/null +++ b/libgloss/m68k/sim.ld @@ -0,0 +1,87 @@ +STARTUP(sim-crt0.o) +OUTPUT_ARCH(m68k) + +SEARCH_DIR(.) +GROUP(-lsim -lc -lgcc -lsim) +__DYNAMIC = 0; + + +MEMORY +{ + ram (rwx) : ORIGIN = 0x80000000, LENGTH = 1M +} + +PROVIDE (__stack = 0); + +SECTIONS +{ + .text : + { + CREATE_OBJECT_SYMBOLS + *(.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) + + . = 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 : + { + *(.shdata) + *(.data) + _edata = .; + } > ram + + .bss : + { + . = ALIGN(0x4); + __bss_start = . ; + *(.shbss) + *(.bss) + *(COMMON) + _end = ALIGN (0x8); + __end = _end; + } > ram + + .stab 0 (NOLOAD) : + { + *(.stab) + } + + .stabstr 0 (NOLOAD) : + { + *(.stabstr) + } +} |