URL
https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk
Subversion Repositories open8_urisc
[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [ld/] [scripttempl/] [mcorepe.sc] - Rev 145
Compare with Previous | Blame | View Log
# Linker script for MCore PE.if test -z "${RELOCATEABLE_OUTPUT_FORMAT}"; thenRELOCATEABLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}fi# We can't easily and portably get an unquoted $ in a shell# substitution, so we do this instead.# Sorting of the .foo$* sections is required by the definition of# grouped sections in PE.# Sorting of the file names in R_IDATA is required by the# current implementation of dlltool (this could probably be changed to# use grouped sections instead).if test "${RELOCATING}"; thenR_TEXT='*(SORT(.text$*))'R_DATA='*(SORT(.data$*))'R_RDATA='*(SORT(.rdata$*))'R_IDATA='SORT(*)(.idata$2)SORT(*)(.idata$3)/* These zeroes mark the end of the import list. */LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);SORT(*)(.idata$4)SORT(*)(.idata$5)SORT(*)(.idata$6)SORT(*)(.idata$7)'R_CRT='*(SORT(.CRT$*))'R_RSRC='*(SORT(.rsrc$*))'elseR_TEXT=R_DATA=R_RDATA=R_IDATA=R_CRT=R_RSRC=fiif test "$RELOCATING"; then# Can't use ${RELOCATING+blah "blah" blah} for this,# because bash 2.x will lose the doublequotes.cat <<EOFOUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}","${LITTLE_OUTPUT_FORMAT}")EOFficat <<EOF${LIB_SEARCH_DIRS}${RELOCATING+ENTRY (_mainCRTStartup)}SECTIONS{.text ${RELOCATING+ __image_base__ + __section_alignment__ } :{${RELOCATING+ *(.init)}*(.text)${R_TEXT}${RELOCATING+ *(.text.*)}*(.glue_7t)*(.glue_7)${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;LONG (-1); *(.ctors); *(.ctor); LONG (0); }${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;LONG (-1); *(.dtors); *(.dtor); LONG (0); }${RELOCATING+ *(.fini)}/* ??? Why is .gcc_exc here? */${RELOCATING+ *(.gcc_exc)}${RELOCATING+ etext = .;}*(.gcc_except_table)}/* The Cygwin32 library uses a section to avoid copying certain dataon fork. This used to be named ".data$nocopy". The linker usedto include this between __data_start__ and __data_end__, but thatbreaks building the cygwin32 dll. Instead, we name the section".data_cygwin_nocopy" and explicitly include it after __data_end__. */.data ${RELOCATING+BLOCK(__section_alignment__)} :{${RELOCATING+__data_start__ = . ;}*(.data)*(.data2)${R_DATA}${RELOCATING+__data_end__ = . ;}${RELOCATING+*(.data_cygwin_nocopy)}}.bss ${RELOCATING+BLOCK(__section_alignment__)} :{${RELOCATING+__bss_start__ = . ;}*(.bss)*(COMMON)${RELOCATING+__bss_end__ = . ;}}.rdata ${RELOCATING+BLOCK(__section_alignment__)} :{*(.rdata)${R_RDATA}*(.eh_frame)}.edata ${RELOCATING+BLOCK(__section_alignment__)} :{*(.edata)}/DISCARD/ :{*(.debug\$S)*(.debug\$T)*(.debug\$F)*(.drectve)}.idata ${RELOCATING+BLOCK(__section_alignment__)} :{/* This cannot currently be handled with grouped sections.See pe.em:sort_sections. */${R_IDATA}}.CRT ${RELOCATING+BLOCK(__section_alignment__)} :{${R_CRT}}.endjunk ${RELOCATING+BLOCK(__section_alignment__)} :{/* end is deprecated, don't use it */${RELOCATING+ end = .;}${RELOCATING+ _end = .;}${RELOCATING+ __end__ = .;}}.reloc ${RELOCATING+BLOCK(__section_alignment__)} :{*(.reloc)}.rsrc ${RELOCATING+BLOCK(__section_alignment__)} :{*(.rsrc)${R_RSRC}}.stab ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :{[ .stab ]}.stabstr ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :{[ .stabstr ]}.stack 0x80000 :{_stack = .;*(.stack)}}EOF
