Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/cygwin.sc.in')
-rw-r--r--winsup/cygwin/cygwin.sc.in181
1 files changed, 181 insertions, 0 deletions
diff --git a/winsup/cygwin/cygwin.sc.in b/winsup/cygwin/cygwin.sc.in
new file mode 100644
index 000000000..db64a80e4
--- /dev/null
+++ b/winsup/cygwin/cygwin.sc.in
@@ -0,0 +1,181 @@
+#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$*))
+ *(.eh_frame)
+ *(.rdata_cygwin_nocopy)
+ }
+ .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)
+ }
+ .rsrc BLOCK(__section_alignment__) :
+ {
+ *(.rsrc)
+ *(SORT(.rsrc$*))
+ }
+ .reloc BLOCK(__section_alignment__) :
+ {
+ *(.reloc)
+ }
+ .cygwin_dll_common ALIGN(__section_alignment__):
+ {
+ *(.cygwin_dll_common)
+ }
+ .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 */
+ }
+ .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);
+ _SYM (_cygheap_start) = ABSOLUTE(.);
+ }
+ .cygheap ALIGN(__section_alignment__) :
+ {
+#ifdef __x86_64__
+ . = . + (3072 * 1024);
+#else
+ . = . + (2048 * 1024);
+#endif
+ . = ALIGN(0x10000);
+ _SYM (_cygheap_end) = ABSOLUTE(.);
+ }
+ /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.*) }
+}