From kde-cygwin Fri Oct 22 10:32:33 2004 From: Ralf Habacker Date: Fri, 22 Oct 2004 10:32:33 +0000 To: kde-cygwin Subject: Re: FW: Question about QT Message-Id: <200410221232.33251.ralf.habacker () freenet ! de> X-MARC-Message: https://marc.info/?l=kde-cygwin&m=109844101400400 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--Boundary-00=_BHOeBA2VG2pVTy8" --Boundary-00=_BHOeBA2VG2pVTy8 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline On Friday 22 October 2004 10:54, Ralf Habacker wrote: > On Friday 22 October 2004 07:23, Yaakov Selkowitz wrote: > > Ralf Habacker wrote: > > | To be sure, you are using gcc 3.4 ? And you haven't the 0xc000000 > > | error ? > > | > > | This is very interesting to hear because I'm searching for a solution > > | for > > this annoying bug. > > > Cygwin gcc-3.3.3-3 includes a number of things backported from gcc-3.4; > > I believe this is one of them. > > > > When building the tools apps OOTB I did get the Oxc0000005 errors, but > > the cause is known; it's been discussed quite a bit on the cygwin lists > > since September. For example, these threads: > > > > http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html > > http://www.cygwin.com/ml/cygwin-apps/2004-09/msg00309.html > > > Since then, cygwin libtool has been updated to help compensate for this > > problem; unfortunately that doesn't help us with qt, as it doesn't use > > libtool. :-( > > Do you have tried to use the -fdata-sections compiler switch, which places > all data (also const symbols) in real data sections ? I remember, that I > had fixed a similar problem building the last kde release. > I've found a workaround in using a specific linker script, which places all rdata symbols into the data section of the dll Copy the attached file into $QTDIR/mkspecs/cygwin-g++ and use the following link line (designed for qmake generated Makefiles) for compiling the qt and any other related dlls. make LINK="g++ -Wl,--script $QTDIR/mkspecs/cygwin-g++/i386pe.x-no-rdata" It would be glad if you can reports if this works for you. If it does I will add this script to the cygwin-g++ qt specs. BTW: Using the -fdata-sections options will be required too. Regards Ralf --Boundary-00=_BHOeBA2VG2pVTy8 Content-Type: text/x-csrc; charset="iso-8859-1"; name="i386pe.x-no-rdata" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="i386pe.x-no-rdata" /* specific linker script avoiding .rdata sections, for normal executables for a reference see http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html http://www.cygwin.com/ml/cygwin-apps/2004-09/msg00309.html */ OUTPUT_FORMAT(pei-i386) SEARCH_DIR("/usr/i686-pc-cygwin/lib"); SEARCH_DIR("/usr/lib"); SEARCH_DIR("/usr/lib/w32api"); ENTRY(_mainCRTStartup) SECTIONS { .text __image_base__ + __section_alignment__ : { *(.init) *(.text) *(SORT(.text$*)) *(.glue_7t) *(.glue_7) ___CTOR_LIST__ = .; __CTOR_LIST__ = . ; LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); *(.fini) /* ??? Why is .gcc_exc here? */ *(.gcc_exc) PROVIDE (etext = .); *(.gcc_except_table) } /* The Cygwin32 library uses a section to avoid copying certain data on fork. This used to be named ".data". The linker used to include this between __data_start__ and __data_end__, but that breaks building the cygwin32 dll. Instead, we name the section ".data_cygwin_nocopy" and explictly include it after __data_end__. */ .data BLOCK(__section_alignment__) : { __data_start__ = . ; *(.data) *(.data2) *(SORT(.data$*)) *(.rdata) *(SORT(.rdata$*)) *(.eh_frame) ___RUNTIME_PSEUDO_RELOC_LIST__ = .; __RUNTIME_PSEUDO_RELOC_LIST__ = .; *(.rdata_runtime_pseudo_reloc) ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; __data_end__ = . ; *(.data_cygwin_nocopy) } .rdata BLOCK(__section_alignment__) : { } .pdata BLOCK(__section_alignment__) : { *(.pdata) } .bss BLOCK(__section_alignment__) : { __bss_start__ = . ; *(.bss) *(COMMON) __bss_end__ = . ; } .edata BLOCK(__section_alignment__) : { *(.edata) } /DISCARD/ : { *(.debug$S) *(.debug$T) *(.debug$F) *(.drectve) } .idata BLOCK(__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) } .CRT BLOCK(__section_alignment__) : { ___crt_xc_start__ = . ; *(SORT(.CRT$XC*)) /* C initialization */ ___crt_xc_end__ = . ; ___crt_xi_start__ = . ; *(SORT(.CRT$XI*)) /* C++ initialization */ ___crt_xi_end__ = . ; ___crt_xl_start__ = . ; *(SORT(.CRT$XL*)) /* TLS callbacks */ /* ___crt_xl_end__ is defined in the TLS Directory support code */ ___crt_xp_start__ = . ; *(SORT(.CRT$XP*)) /* Pre-termination */ ___crt_xp_end__ = . ; ___crt_xt_start__ = . ; *(SORT(.CRT$XT*)) /* Termination */ ___crt_xt_end__ = . ; } .tls BLOCK(__section_alignment__) : { ___tls_start__ = . ; *(.tls) *(.tls$) *(SORT(.tls$*)) ___tls_end__ = . ; } .endjunk BLOCK(__section_alignment__) : { /* end is deprecated, don't use it */ PROVIDE (end = .); PROVIDE ( _end = .); __end__ = .; } .rsrc BLOCK(__section_alignment__) : { *(.rsrc) *(SORT(.rsrc$*)) } .reloc BLOCK(__section_alignment__) : { *(.reloc) } .stab BLOCK(__section_alignment__) (NOLOAD) : { *(.stab) } .stabstr BLOCK(__section_alignment__) (NOLOAD) : { *(.stabstr) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section. Unlike other targets that fake this by putting the section VMA at 0, the PE format will not allow it. */ /* DWARF 1.1 and DWARF 2. */ .debug_aranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_aranges) } .debug_pubnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_pubnames) } /* DWARF 2. */ .debug_info BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_info) *(.gnu.linkonce.wi.*) } .debug_abbrev BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_abbrev) } .debug_line BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_line) } .debug_frame BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_frame) } .debug_str BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_str) } .debug_loc BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_loc) } .debug_macinfo BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions. */ .debug_weaknames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_weaknames) } .debug_funcnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_funcnames) } .debug_typenames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_typenames) } .debug_varnames BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_varnames) } /* DWARF 3. */ .debug_ranges BLOCK(__section_alignment__) (NOLOAD) : { *(.debug_ranges) } } --Boundary-00=_BHOeBA2VG2pVTy8 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kde-cygwin mailing list kde-cygwin@kde.org https://mail.kde.org/mailman/listinfo/kde-cygwin --Boundary-00=_BHOeBA2VG2pVTy8--