#ifdef __x86_64__ OUTPUT_FORMAT(pei-x86-64) SEARCH_DIR("/usr/x86_64-pc-cygwin/lib/w32api"); SEARCH_DIR("=/usr/lib/w32api"); #else #undef i386 OUTPUT_FORMAT(pei-i386) SEARCH_DIR("/usr/i686-pc-cygwin/lib/w32api"); SEARCH_DIR("=/usr/lib/w32api"); #endif #define __CONCAT1(a,b) a##b #define __CONCAT(a,b) __CONCAT1(a,b) #define _SYM(x) __CONCAT(__USER_LABEL_PREFIX__, x) SECTIONS { .text __image_base__ + __section_alignment__ : { *(.init) *(.text) *(.text.*) *(SORT(.text$*)) *(.glue_7t) *(.glue_7) #ifdef __x86_64__ . = ALIGN(8); ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); LONG (-1); *(SORT(.ctors.*)); *(.ctors); *(.ctor); LONG (0); LONG (0); ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); LONG (-1); *(SORT(.dtors.*)); *(.dtors); *(.dtor); LONG (0); LONG (0); #else ___CTOR_LIST__ = .; __CTOR_LIST__ = .; LONG (-1); *(SORT(.ctors.*)); *(.ctors); *(.ctor); LONG (0); ___DTOR_LIST__ = .; __DTOR_LIST__ = .; LONG (-1); *(SORT(.dtors.*)); *(.dtors); *(.dtor); LONG (0); #endif *(.fini) /* ??? Why is .gcc_exc here? */ *(.gcc_exc) etext = .; *(.gcc_except_table) } .autoload_text ALIGN(__section_alignment__) : { *(.*_autoload_text); } /* The Cygwin DLL uses a section to avoid copying certain data on fork. This used to be named ".data$nocopy". The linker used to include this between __data_start__ and __data_end__, but that breaks building the cygwin dll. Instead, we name the section ".data_cygwin_nocopy" and explicitly include it after __data_end__. */ .data ALIGN(__section_alignment__) : { __data_start__ = .; *(.data) *(.data2) *(SORT(.data$*)) __data_end__ = .; *(.data_cygwin_nocopy) } .rdata ALIGN(__section_alignment__) : { *(.rdata) *(SORT(.rdata$*)) *(.rdata_cygwin_nocopy) ___RUNTIME_PSEUDO_RELOC_LIST__ = .; __RUNTIME_PSEUDO_RELOC_LIST__ = .; *(.rdata_runtime_pseudo_reloc) ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; } .eh_frame ALIGN(__section_alignment__) : { *(.eh_frame*) } .pdata ALIGN(__section_alignment__) : { *(.pdata*) } #ifdef __x86_64__ .xdata ALIGN(__section_alignment__) : { *(.xdata*) } #endif .bss ALIGN(__section_alignment__) : { __bss_start__ = .; *(.bss) *(COMMON) __bss_end__ = .; } .edata ALIGN(__section_alignment__) : { *(.edata) } .reloc BLOCK(__section_alignment__) : { *(.reloc) } .cygwin_dll_common ALIGN(__section_alignment__): { *(.cygwin_dll_common) } .idata ALIGN(__section_alignment__) : { /* This cannot currently be handled with grouped sections. See pe.em:sort_sections. */ 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) . = ALIGN(16); } .gnu_debuglink_overlay ALIGN(__section_alignment__) (NOLOAD): { BYTE(0) /* c */ BYTE(0) /* y */ BYTE(0) /* g */ BYTE(0) /* w */ BYTE(0) /* i */ BYTE(0) /* n */ BYTE(0) /* 1 */ BYTE(0) /* . */ BYTE(0) /* d */ BYTE(0) /* b */ BYTE(0) /* g */ BYTE(0) /* \0 */ LONG(0) /* checksum */ } .rsrc BLOCK(__section_alignment__) : { *(.rsrc) *(SORT(.rsrc$*)) _SYM (_cygheap_start) = .; } .cygheap ALIGN(__section_alignment__) : { #ifdef __x86_64__ . = . + (3072 * 1024); #else . = . + (2048 * 1024); #endif . = ALIGN(0x10000); _SYM (_cygheap_end) = .; } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) *(.drectve) } .stab ALIGN(__section_alignment__) (NOLOAD) : { *(.stab) } .stabstr ALIGN(__section_alignment__) (NOLOAD) : { *(.stabstr) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_aranges) } .debug_pubnames ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_pubnames) } .debug_pubtypes ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_pubtypes) } /* DWARF 2 */ .debug_info ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_info) } .debug_abbrev ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_abbrev) } .debug_line ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_line) } .debug_frame ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_frame) } .debug_str ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_str) } .debug_loc ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_loc) } .debug_macinfo ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_weaknames) } .debug_funcnames ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_funcnames) } .debug_typenames ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_typenames) } .debug_varnames ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_varnames) } .debug_macro ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_macro) } /* DWARF 3. */ .debug_ranges ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_ranges) } /* DWARF 4. */ .debug_types ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_types .gnu.linkonce.wt.*) } }