diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2000-07-20 17:16:06 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@axis.com> | 2000-07-20 17:16:06 +0000 |
commit | 9d06555c53d713330444973dbaa93b1b4075a581 (patch) | |
tree | 8468cd4e20f3b14a196b9ece66a7f81ac063ae69 /ld/scripttempl | |
parent | 041ff4dd56f6deddc34a4c9670b789b7ca09b4da (diff) | |
download | gdb-9d06555c53d713330444973dbaa93b1b4075a581.zip gdb-9d06555c53d713330444973dbaa93b1b4075a581.tar.gz gdb-9d06555c53d713330444973dbaa93b1b4075a581.tar.bz2 |
* Makefile.am (ALL_EMULATIONS): Add ecrisaout.o, ecriself.o,
ecrislinux.o.
(ecrisaout.c, ecriself.c, ecrislinux.c): New rules.
Regenerate dependencies.
* Makefile.in: Rebuild.
* configure.tgt (cris-*-*): New target.
* emulparams/crisaout.sh, emulparams/criself.sh,
emulparams/crislinux.sh, scripttempl/crisaout.sc: New files.
* po/POTFILES.in, po/ld.pot: Regenerate.
Diffstat (limited to 'ld/scripttempl')
-rw-r--r-- | ld/scripttempl/crisaout.sc | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/ld/scripttempl/crisaout.sc b/ld/scripttempl/crisaout.sc new file mode 100644 index 0000000..6777482 --- /dev/null +++ b/ld/scripttempl/crisaout.sc @@ -0,0 +1,122 @@ +cat <<EOF +OUTPUT_FORMAT("a.out-cris") +OUTPUT_ARCH(cris) +ENTRY(_start) +SECTIONS +{ + .text ${RELOCATING+ ${TEXT_START_ADDR}}: + { + CREATE_OBJECT_SYMBOLS; + ${RELOCATING+ __Stext = .;} + ${RELOCATING+*(.startup)} + *(.text) + ${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. */ + ${RELOCATING+. = ALIGN (2);} + ${RELOCATING+ ___init__start = .;} + ${RELOCATING+PROVIDE (___do_global_ctors = .);} + ${RELOCATING+SHORT (0xe1fc); /* push srp */} + ${RELOCATING+SHORT (0xbe7e);} + ${RELOCATING+*(.init)} + ${RELOCATING+SHORT (0x0d3e); /* jump [sp+] */} + ${RELOCATING+PROVIDE (__init__end = .);} + ${RELOCATING+PROVIDE (___init__end = .);} + + ${RELOCATING+. = ALIGN (2);} + ${RELOCATING+ ___fini__start = .;} + ${RELOCATING+PROVIDE (___do_global_dtors = .);} + ${RELOCATING+SHORT (0xe1fc); /* push srp */} + ${RELOCATING+SHORT (0xbe7e);} + ${RELOCATING+*(.fini)} + ${RELOCATING+SHORT (0x0d3e); /* jump [sp+] */} + ${RELOCATING+PROVIDE (__fini__end = .);} + ${RELOCATING+ ___fini__end = .;} + + /* Putting constructors in constant store is sane as long as + there's no need for dynamic fixups. */ + /* The constructors and destructors set symbols are unused now that + collect2 has its wicked way. */ + ${CONSTRUCTING+ ___aout_ctors_dtors_begin = .;} + ${CONSTRUCTING+ SORT(CONSTRUCTORS);} + ${CONSTRUCTING+ ___aout_ctors_dtors_end = .;} + + /* Cater to linking from ELF. */ + ${CONSTRUCTING+ PROVIDE(___ctors = .);} + ${CONSTRUCTING+ ___elf_ctors_dtors_begin = .;} + ${CONSTRUCTING+ KEEP (*crtbegin.o(.ctors))} + ${CONSTRUCTING+ KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))} + ${CONSTRUCTING+ KEEP (*(SORT(.ctors.*)))} + ${CONSTRUCTING+ KEEP (*(.ctors))} + ${CONSTRUCTING+ PROVIDE(___ctors_end = .);} + + ${CONSTRUCTING+ PROVIDE(___dtors = .);} + ${CONSTRUCTING+ KEEP (*crtbegin.o(.dtors))} + ${CONSTRUCTING+ KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))} + ${CONSTRUCTING+ KEEP (*(SORT(.dtors.*)))} + ${CONSTRUCTING+ KEEP (*(.dtors))} + ${CONSTRUCTING+ PROVIDE(___dtors_end = .);} + ${CONSTRUCTING+ ___elf_ctors_dtors_end = .;} + + ${RELOCATING+ __Etext = .;} + + /* Deprecated, use __Etext. */ + ${RELOCATING+ 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 : + { + ${RELOCATING+ __Sdata = .;} + *(.data); + ${RELOCATING+*(.data.*)} + ${RELOCATING+*(.gnu.linkonce.d*)} + ${RELOCATING+*(.eh_frame) /* FIXME: Make .text */} + ${RELOCATING+*(.gcc_except_table)} + ${RELOCATING+ __Edata = .;} + + /* Deprecated, use __Edata. */ + ${RELOCATING+ PROVIDE(_edata = .);} + } + + .bss : + { + /* Deprecated, use __Sbss. */ + ${RELOCATING+ PROVIDE(_bss_start = .);} + + ${RELOCATING+ __Sbss = .;} + *(.bss) + ${RELOCATING+*(.bss.*)} + *(COMMON) + ${RELOCATING+ __Ebss = .;} + + /* Deprecated, use __Ebss or __Eall as appropriate. */ + ${RELOCATING+ PROVIDE(_end = .);} + ${RELOCATING+ PROVIDE(__end = .);} + } + ${RELOCATING+ __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) } + + /* For the rsim and xsim simulators. */ + ${RELOCATING+ PROVIDE(__Endmem = 0x10000000);} + + /* For elinux. */ + ${RELOCATING+ PROVIDE(__Stacksize = 0);} +} +EOF |