diff options
Diffstat (limited to 'ld/scripttempl/crisaout.sc')
-rw-r--r-- | ld/scripttempl/crisaout.sc | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/ld/scripttempl/crisaout.sc b/ld/scripttempl/crisaout.sc deleted file mode 100644 index c58f56d..0000000 --- a/ld/scripttempl/crisaout.sc +++ /dev/null @@ -1,133 +0,0 @@ -cat <<EOF -OUTPUT_FORMAT("a.out-cris") -OUTPUT_ARCH(cris) -${RELOCATING+ENTRY (__start)} -SECTIONS -{ - .text ${RELOCATING+ ${TEXT_START_ADDR}}: - { - CREATE_OBJECT_SYMBOLS; - ${CONSTRUCTING+ __Stext = .;} - ${RELOCATING+*(.startup)} - *(.text) - ${CONSTRUCTING+__start = DEFINED(__start) ? __start : - DEFINED(_start) ? _start : - DEFINED(start) ? start : - DEFINED(.startup) ? .startup + 2 : 2;} - ${RELOCATING+*(.text.*)} - ${RELOCATING+*(.gnu.linkonce.t*)} - ${RELOCATING+*(.rodata)} - ${RELOCATING+*(.rodata.*)} - ${RELOCATING+*(.gnu.linkonce.r*)} - - /* Do not "provide" init-start and fini-start symbols; they might be - referred to weakly, so the linker would not override the zero - default. - FIXME: It's somewhat unexpected to have code emitted by the linker - script. Some other mechanism could probably do better. */ - ${CONSTRUCTING+ . = ALIGN (2);} - ${CONSTRUCTING+ ___init__start = .;} - ${CONSTRUCTING+ PROVIDE (___do_global_ctors = .);} - ${CONSTRUCTING+ SHORT (0xe1fc); /* push srp */} - ${CONSTRUCTING+ SHORT (0xbe7e);} - ${CONSTRUCTING+ *(.init)} - ${CONSTRUCTING+ SHORT (0x0d3e); /* jump [sp+] */} - ${CONSTRUCTING+ PROVIDE (__init__end = .);} - ${CONSTRUCTING+ PROVIDE (___init__end = .);} - - ${CONSTRUCTING+ . = ALIGN (2);} - ${CONSTRUCTING+ ___fini__start = .;} - ${CONSTRUCTING+ PROVIDE (___do_global_dtors = .);} - ${CONSTRUCTING+ SHORT (0xe1fc); /* push srp */} - ${CONSTRUCTING+ SHORT (0xbe7e);} - ${CONSTRUCTING+ *(.fini)} - ${CONSTRUCTING+ SHORT (0x0d3e); /* jump [sp+] */} - ${CONSTRUCTING+ PROVIDE (__fini__end = .);} - ${CONSTRUCTING+ ___fini__end = .;} - - /* Cater to linking from ELF. */ - ${CONSTRUCTING+ PROVIDE(___ctors = .);} - ${CONSTRUCTING+ ___elf_ctors_dtors_begin = .;} - ${CONSTRUCTING+ KEEP (*crtbegin.o(.ctors))} - ${CONSTRUCTING+ KEEP (*crtbegin?.o(.ctors))} - ${CONSTRUCTING+ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .ctors))} - ${CONSTRUCTING+ KEEP (*(SORT(.ctors.*)))} - ${CONSTRUCTING+ KEEP (*(.ctors))} - ${CONSTRUCTING+ PROVIDE(___ctors_end = .);} - - ${CONSTRUCTING+ PROVIDE(___dtors = .);} - ${CONSTRUCTING+ KEEP (*crtbegin.o(.dtors))} - ${CONSTRUCTING+ KEEP (*crtbegin?.o(.dtors))} - ${CONSTRUCTING+ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .dtors))} - ${CONSTRUCTING+ KEEP (*(SORT(.dtors.*)))} - ${CONSTRUCTING+ KEEP (*(.dtors))} - ${CONSTRUCTING+ PROVIDE(___dtors_end = .);} - ${CONSTRUCTING+ ___elf_ctors_dtors_end = .;} - - /* We include objects that force alignment of the data segment. - Unfortunately that sometimes causes a gap between .text and .data, - which is not detectable since .data does not have a start address - of itself in the a.out header. This should only matter for - testing; for production use, .data is at a "known" location. - We assume .data does not get an alignment larger than 32 bytes. */ - ${CONSTRUCTING+. = ALIGN (32);} - - ${CONSTRUCTING+ __Etext = .;} - - /* Deprecated, use __Etext. */ - ${CONSTRUCTING+ PROVIDE(_etext = .);} - } - - /* Any dot-relative start-expression (such as "ALIGN(2)", also including - the "default" .data alignment expression) will use the initial, raw - size of .text and will be incorrect if the alignment used is less - than the alignment for .text (which might depend on input and obj - format). FIXME: Seems like a bug in ld. Seems hard to fix. Seems - unimportant. */ - .data : - { - ${CONSTRUCTING+ __Sdata = .;} - *(.data); - ${RELOCATING+*(.data.*)} - ${RELOCATING+*(.gnu.linkonce.d*)} - ${RELOCATING+*(.eh_frame) /* FIXME: Make .text */} - ${RELOCATING+*(.gcc_except_table)} - - /* See comment at ALIGN before __Etext. */ - ${CONSTRUCTING+. = ALIGN (32);} - - ${CONSTRUCTING+ __Edata = .;} - - /* Deprecated, use __Edata. */ - ${CONSTRUCTING+ PROVIDE(_edata = .);} - } - - .bss : - { - /* Deprecated, use __Sbss. */ - ${CONSTRUCTING+ PROVIDE(_bss_start = .);} - - ${CONSTRUCTING+ __Sbss = .;} - *(.bss) - ${RELOCATING+*(.bss.*)} - *(COMMON) - ${CONSTRUCTING+ __Ebss = .;} - - /* Deprecated, use __Ebss or __Eall as appropriate. */ - ${CONSTRUCTING+ PROVIDE(_end = .);} - ${CONSTRUCTING+ PROVIDE(__end = .);} - } - ${CONSTRUCTING+ __Eall = .;} - - /* Unfortunately, stabs are not mappable from ELF to a.out. - It can probably be fixed with some amount of work. */ - /DISCARD/ : - { *(.stab) *(.stab*) *(.debug) *(.debug*) *(.comment) *(.gnu.warning.*) } - - /* For the rsim and xsim simulators. */ - ${CONSTRUCTING+ PROVIDE(__Endmem = 0x10000000);} - - /* For elinux. */ - ${CONSTRUCTING+ PROVIDE(__Stacksize = 0);} -} -EOF |