X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=ld%2Fscripttempl%2Fv850.sc;h=df8302cd9094af792b9d70671d8492a60e42cac2;hb=2bf2bf23da;hp=6b2f7e545640307b36587fe256d8d7db7a0f90b0;hpb=5b64ad42d36e6d487e1f7287d37fbc243a178e72;p=binutils-gdb.git diff --git a/ld/scripttempl/v850.sc b/ld/scripttempl/v850.sc index 6b2f7e54564..df8302cd909 100644 --- a/ld/scripttempl/v850.sc +++ b/ld/scripttempl/v850.sc @@ -1,35 +1,49 @@ +# Copyright (C) 2014-2018 Free Software Foundation, Inc. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. + cat << EOF +/* Copyright (C) 2014-2018 Free Software Foundation, Inc. + + Copying and distribution of this script, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. */ + OUTPUT_FORMAT("elf32-v850", "elf32-v850", "elf32-v850") -OUTPUT_ARCH(v850) -ENTRY(_start) +OUTPUT_ARCH(v850:old-gcc-abi) +${RELOCATING+ENTRY(_start)} SEARCH_DIR(.); -/*/critters/slug/grossman/install/sun4/v850-elf/lib*/ +${RELOCATING+EXTERN(__ctbp __ep __gp)}; SECTIONS { /* This saves a little space in the ELF file, since the zda starts at a higher location that the ELF headers take up. */ - .zdata ${ZDATA_START_ADDR} : { + .zdata ${ZDATA_START_ADDR} : + { *(.zdata) - *(.zbss) + ${RELOCATING+*(.zbss) *(reszdata) - *(.zcommon) + *(.zcommon)} } /* This is the read only part of the zero data area. - Having it as a seperate section prevents its + Having it as a separate section prevents its attributes from being inherited by the zdata section. Specifically it prevents the zdata section from being marked READONLY. */ - .rozdata ${ROZDATA_START_ADDR} : { + .rozdata ${ROZDATA_START_ADDR} : + { *(.rozdata) - *(romzdata) - *(romzbss) + ${RELOCATING+*(romzdata) + *(romzbss)} } - /* Read-only sections, merged into text segment: */ + /* Read-only sections, merged into text segment. */ . = ${TEXT_START_ADDR}; .interp : { *(.interp) } .hash : { *(.hash) } @@ -41,6 +55,8 @@ SECTIONS .rela.data : { *(.rela.data) } .rel.rodata : { *(.rel.rodata) } .rela.rodata : { *(.rela.rodata) } + .rel.gcc_except_table : { *(.rel.gcc_except_table) } + .rela.gcc_except_table : { *(.rela.gcc_except_table) } .rel.got : { *(.rel.got) } .rela.got : { *(.rela.got) } .rel.ctors : { *(.rel.ctors) } @@ -58,12 +74,14 @@ SECTIONS .init : { KEEP (*(.init)) } =0 .plt : { *(.plt) } - .text : { + .text : + { *(.text) ${RELOCATING+*(.text.*)} + /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) - *(.gnu.linkonce.t*) + ${RELOCATING+*(.gnu.linkonce.t*)} } =0 ${RELOCATING+_etext = .;} @@ -73,70 +91,91 @@ SECTIONS It contains a small lookup table at the start followed by the code pointed to by entries in the lookup table. */ - .call_table_data ${CALL_TABLE_START_ADDR} : { + .call_table_data ${CALL_TABLE_START_ADDR} : + { ${RELOCATING+PROVIDE(__ctbp = .);} *(.call_table_data) - } = 0xff /* fill gaps with 0xff */ - .call_table_text : { + } = 0xff /* Fill gaps with 0xff. */ + + .call_table_text : + { *(.call_table_text) } - .fini : { KEEP (*(.fini)) } =0 - .rodata : { *(.rodata) ${RELOCATING+*(.rodata.*)} *(.gnu.linkonce.r*) } + .fini : { KEEP (*(.fini)) } =0 + .rodata : { *(.rodata) ${RELOCATING+*(.rodata.*) *(.gnu.linkonce.r*)} } .rodata1 : { *(.rodata1) } - .data : { + .data : + { *(.data) - ${RELOCATING+*(.data.*)} - *(.gnu.linkonce.d*) - CONSTRUCTORS + ${RELOCATING+*(.data.*) + *(.gnu.linkonce.d*)} + ${CONSTRUCTING+CONSTRUCTORS} } .data1 : { *(.data1) } - .ctors : { - ${RELOCATING+___ctors = .;} - KEEP (*(.ctors)) - ${RELOCATING+___ctors_end = .;} + .ctors : + { + ${CONSTRUCTING+___ctors = .;} + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + ${RELOCATING+KEEP (*(SORT(.ctors.*)))} + KEEP (*crtend(.ctors)) + ${CONSTRUCTING+___ctors_end = .;} } - - .dtors : { - ${RELOCATING+___dtors = .;} - KEEP (*(.dtors)) - ${RELOCATING+___dtors_end = .;} + .dtors : + { + ${CONSTRUCTING+___dtors = .;} + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + ${RELOCATING+KEEP (*(SORT(.dtors.*)))} + KEEP (*crtend.o(.dtors)) + ${CONSTRUCTING+___dtors_end = .;} + } + .jcr : + { + KEEP (*(.jcr)) } - .got : { *(.got.plt) *(.got) } + .gcc_except_table : { *(.gcc_except_table) } + + .got : {${RELOCATING+ *(.got.plt)} *(.got) } .dynamic : { *(.dynamic) } - .tdata ${TDATA_START_ADDR} : { - ${RELOCATING+PROVIDE (__ep = .);} + .tdata ${TDATA_START_ADDR} : + { + ${RELOCATING+PROVIDE (__ep = .); *(.tbyte) - *(.tcommon_byte) + *(.tcommon_byte)} *(.tdata) - *(.tbss) - *(.tcommon) + ${RELOCATING+*(.tbss) + *(.tcommon)} } /* We want the small data sections together, so single-instruction offsets can access them all, and initialized data all before uninitialized, so we can shorten the on-disk segment size. */ - .sdata ${SDATA_START_ADDR} : { + + .sdata ${SDATA_START_ADDR} : + { ${RELOCATING+PROVIDE (__gp = . + 0x8000);} *(.sdata) } /* See comment about .rozdata. */ - .rosdata ${ROSDATA_START_ADDR} : { + .rosdata ${ROSDATA_START_ADDR} : + { *(.rosdata) } /* We place the .sbss data section AFTER the .rosdata section, so that - it can directly preceed the .bss section. This allows runtime startup + it can directly precede the .bss section. This allows runtime startup code to initialise all the zero-data sections by simply taking the - value of '_edata' and zeroing until it reaches '_end' */ - .sbss : { + value of '_edata' and zeroing until it reaches '_end'. */ + + .sbss : + { ${RELOCATING+__sbss_start = .;} *(.sbss) - *(.scommon) + ${RELOCATING+*(.scommon)} } ${RELOCATING+_edata = DEFINED (__sbss_start) ? __sbss_start : . ;} @@ -146,13 +185,16 @@ SECTIONS { ${RELOCATING+__bss_start = DEFINED (__sbss_start) ? __sbss_start : . ;} ${RELOCATING+__real_bss_start = . ;} - *(.dynbss) + ${RELOCATING+*(.dynbss)} *(.bss) - *(COMMON) + ${RELOCATING+*(COMMON)} } ${RELOCATING+_end = . ;} ${RELOCATING+PROVIDE (end = .);} + ${RELOCATING+PROVIDE (_heap_start = .);} + + .note.renesas 0 : { KEEP(*(.note.renesas)) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } @@ -163,42 +205,16 @@ SECTIONS .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - - /* User stack */ - .stack 0x200000 : { +EOF + +. $srcdir/scripttempl/DWARF.sc + +cat <