1# Linker script for PE. 2# 3# Copyright (C) 2014-2016 Free Software Foundation, Inc. 4# 5# Copying and distribution of this file, with or without modification, 6# are permitted in any medium without royalty provided the copyright 7# notice and this notice are preserved. 8 9if test -z "${RELOCATEABLE_OUTPUT_FORMAT}"; then 10 RELOCATEABLE_OUTPUT_FORMAT=${OUTPUT_FORMAT} 11fi 12 13# We can't easily and portably get an unquoted $ in a shell 14# substitution, so we do this instead. 15if test "${RELOCATING}"; then 16 R_TEXT='*(.text$*)' 17 R_DATA='*(.data$*)' 18 R_RDATA='*(.rdata$*)' 19 R_IDATA=' 20 *(.idata$2) 21 *(.idata$3) 22 /* These zeroes mark the end of the import list. */ 23 LONG (0); LONG (0); LONG (0); LONG (0); LONG (0); 24 *(.idata$4) 25 *(.idata$5) 26 *(.idata$6) 27 *(.idata$7)' 28 R_CRT='*(.CRT$*)' 29 R_RSRC='*(.rsrc$*)' 30 R_EXC='*(.exc$*)' 31else 32 R_TEXT= 33 R_DATA= 34 R_RDATA= 35 R_IDATA= 36 R_CRT= 37 R_RSRC= 38 R_EXC= 39fi 40 41cat <<EOF 42/* Copyright (C) 2014-2016 Free Software Foundation, Inc. 43 44 Copying and distribution of this script, with or without modification, 45 are permitted in any medium without royalty provided the copyright 46 notice and this notice are preserved. */ 47 48${RELOCATING+OUTPUT_FORMAT(${OUTPUT_FORMAT})} 49${RELOCATING-OUTPUT_FORMAT(${RELOCATEABLE_OUTPUT_FORMAT})} 50 51${LIB_SEARCH_DIRS} 52 53${RELOCATING+ENTRY (__start)} 54${RELOCATING+header = .;} 55${RELOCATING+__fltused = .; /* set up floating pt for MS .obj\'s */} 56${RELOCATING+__ldused = .;} 57SECTIONS 58{ 59 .text ${RELOCATING+ __image_base__ + __section_alignment__ } : 60 { 61 ${RELOCATING+ __text_start__ = . ;} 62 ${RELOCATING+ *(.init)} 63 *(.text) 64 ${R_TEXT} 65 *(.glue_7t) 66 *(.glue_7) 67 ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ; 68 LONG (-1); *(.ctors); *(.ctor); LONG (0); } 69 ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; 70 LONG (-1); *(.dtors); *(.dtor); LONG (0); } 71 ${RELOCATING+ *(.fini)} 72 /* ??? Why is .gcc_exc here? */ 73 ${RELOCATING+ *(.gcc_exc)} 74 ${RELOCATING+ etext = .;} 75 ${RELOCATING+ __text_end__ = .;} 76 *(.gcc_except_table) 77 } 78 79 /* The Cygwin32 library uses a section to avoid copying certain data 80 on fork. This used to be named ".data$nocopy". The linker used 81 to include this between __data_start__ and __data_end__, but that 82 breaks building the cygwin32 dll. Instead, we name the section 83 ".data_cygwin_nocopy" and explicitly include it after __data_end__. */ 84 85 .data ${RELOCATING+BLOCK(__section_alignment__)} : 86 { 87 ${RELOCATING+__data_start__ = . ;} 88 *(.data) 89 *(.data2) 90 ${R_DATA} 91 ${RELOCATING+__data_end__ = . ;} 92 ${RELOCATING+*(.data_cygwin_nocopy)} 93 } 94 95 .bss ${RELOCATING+BLOCK(__section_alignment__)} : 96 { 97 ${RELOCATING+__bss_start__ = . ;} 98 *(.bss) 99 *(COMMON) 100 /* link.exe apparently pulls in .obj's because of UNDEF common 101 symbols, which is not the coff way, but that's MS for you. */ 102 *(.CRT\$XCA) 103 *(.CRT\$XCZ) 104 *(.CRT\$XIA) 105 *(.CRT\$XIZ) 106 ${RELOCATING+__bss_end__ = . ;} 107 } 108 109 .rdata ${RELOCATING+BLOCK(__section_alignment__)} : 110 { 111 *(.rdata) 112 ${R_RDATA} 113 *(.eh_frame) 114 } 115 116 .edata ${RELOCATING+BLOCK(__section_alignment__)} : 117 { 118 *(.edata) 119 } 120 121 /DISCARD/ : 122 { 123 *(.debug\$S) 124 *(.debug\$T) 125 *(.debug\$F) 126 *(.drectve) 127 *(.debug*) 128 } 129 130 .idata ${RELOCATING+BLOCK(__section_alignment__)} : 131 { 132 /* This cannot currently be handled with grouped sections. 133 See pe.em:sort_sections. */ 134 ${R_IDATA} 135 } 136 .CRT ${RELOCATING+BLOCK(__section_alignment__)} : 137 { 138 ${R_CRT} 139 } 140 141 .endjunk ${RELOCATING+BLOCK(__section_alignment__)} : 142 { 143 /* end is deprecated, don't use it */ 144 ${RELOCATING+ end = .;} 145 ${RELOCATING+ _end = .;} 146 ${RELOCATING+ __end__ = .;} 147 } 148 149 .reloc ${RELOCATING+BLOCK(__section_alignment__)} : 150 { 151 *(.reloc) 152 } 153 154 .rsrc ${RELOCATING+BLOCK(__section_alignment__)} : 155 { 156 *(.rsrc) 157 ${R_RSRC} 158 } 159 160 .exc ${RELOCATING+BLOCK(__section_alignment__)} : 161 { 162 *(.exc) 163 ${R_EXC} 164 } 165 166 .stab ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} : 167 { 168 [ .stab ] 169 } 170 171 .stabstr ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} : 172 { 173 [ .stabstr ] 174 } 175EOF 176 177. $srcdir/scripttempl/DWARF.sc 178 179cat <<EOF 180} 181EOF 182