Thanks for this information. Brgds, Viktor
On 2009 Dec 3, at 13:53, Bisz István wrote: > Hi, > > The main problem with the MinGW Qt 4.6 is that the GCC 4.4.0 has a new > exception model Dwarf, as it is described below (from release note): > > - Zero cost exceptions: New exception model Dwarf only has performance > penalty when being thrown. The old model, SJLJ, is no longer > available. > > The recommended tdm-mingw-1.908.0-4.4.1-2.exe supports, by default, just the > SJLJ unwinding, unfortunately. > We should switch to Dwarf-2 Unwinding, to have the possibility to build a > correct 'hbide' with the new Qt 4.6 MinGW variant. > > See below the README of the TDM - GCC 4.4.1 DWARF-2 components: > > ---------------------------------------------------------------------------- > > *** Dwarf-2 vs. SJLJ unwinding *** > > GCC supports two methods of stack frame unwinding: Dwarf-2 (DW2) or SJLJ > (setjmp/longjmp). Until recently, only SJLJ has been available for the > Windows > platform. This affects you, the end user, primarily in programs that throw > and > catch exceptions. Programs which utilize the DW2 unwind method handle > exceptions > much more quickly than programs which utilize the SJLJ method. However, the > DW2 > method increases code size by a noticeable amount, and additionally cannot > yet > unwind (pass exceptions) through "foreign" stack frames: stack frames > compiled > by another non-DW2-enabled compiler, such as OS DLLs in a Windows callback. > > This means that you should in general choose the SJLJ version of the TDM-GCC > builds unless you know you need faster exception handling and can be certain > you > will never throw an exception through a foreign stack area. > > As distributed, the SJLJ and DW2 packages of TDM-GCC can coexist peacefully > extracted to the same directory (e.g. any files in common are for all > intents > and purposes identical), because the driver executables (the ones in the > "bin" > directory) are suffixed with "-dw2" for the DW2 build, and the libraries and > other executables hide in another "-dw2" directory in > "lib(exec)/gcc/mingw32". > This allows you to use the same single addition to your PATH, and use DW2 > exceptions only when you need them by calling "gcc-dw2", etc. If you truly > want > DW2 exceptions as the default when calling "gcc" (from Makefiles or > configury > systems, for example), you can rename or copy the suffixed executables to > their > original names. > ---------------------------------------------------------------------------- > - > > After copying the -dw2 executables to their original names, I was able to > build a running hbide with qt 4.6 and MinGW GCC 4.4.1-DWARF-2. > > Unfortunately the harbour build has some problems in his postinst: > > ./bin/win/mingw/hbrun.exe --hb:gtcgi ./bin/postinst.prg > ! Making c:\harbour\mingw\bin\hbmk.cfg... > .\bin\postinst.bat > ! Making shared version of Harbour binaries... > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbcmplib.o):hbcmplib.c:(.eh_frame > +0x11): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbmain.o):hbmain.c:(.eh_frame+0x1 > 1): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbgenerr.o):hbgenerr.c:(.eh_frame > +0x11): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbopt.o):hbopt.c:(.eh_frame+0x11) > : undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbdead.o):hbdead.c:(.eh_frame+0x1 > 1): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbstripl.o):hbstripl.c:(.eh_frame > +0x11): more undefined references to `__gxx_personality_v0' follow > collect2: ld returned 1 exit status > hbmk2: Error: Running linker. 1 > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbcmplib.o):hbcmplib.c:(.eh_frame > +0x11): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbmain.o):hbmain.c:(.eh_frame+0x1 > 1): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbgenerr.o):hbgenerr.c:(.eh_frame > +0x11): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbopt.o):hbopt.c:(.eh_frame+0x11) > : undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbdead.o):hbdead.c:(.eh_frame+0x1 > 1): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbstripl.o):hbstripl.c:(.eh_frame > +0x11): more undefined references to `__gxx_personality_v0' follow > collect2: ld returned 1 exit status > hbmk2: Error: Running linker. 1 > c:/harbour/mingw/lib/win/mingw/libhbmainstd.a(mainstd.o):mainstd.c:(.eh_fram > e+0x11): undefined reference to `__gxx_personality_v0' > collect2: ld returned 1 exit status > hbmk2: Error: Running linker. 1 > c:/harbour/mingw/lib/win/mingw/libhbmainstd.a(mainstd.o):mainstd.c:(.eh_fram > e+0x11): undefined reference to `__gxx_personality_v0' > collect2: ld returned 1 exit status > hbmk2: Error: Running linker. 1 > c:/harbour/mingw/lib/win/mingw/libhbmainstd.a(mainstd.o):mainstd.c:(.eh_fram > e+0x11): undefined reference to `__gxx_personality_v0' > collect2: ld returned 1 exit status > hbmk2: Error: Running linker. 1 > ! Making hbrun with application icon... > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbcmplib.o):hbcmplib.c:(.eh_frame > +0x11): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbmain.o):hbmain.c:(.eh_frame+0x1 > 1): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbgenerr.o):hbgenerr.c:(.eh_frame > +0x11): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbopt.o):hbopt.c:(.eh_frame+0x11) > : undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbdead.o):hbdead.c:(.eh_frame+0x1 > 1): undefined reference to `__gxx_personality_v0' > c:/harbour/mingw/lib/win/mingw/libhbcplr.a(hbstripl.o):hbstripl.c:(.eh_frame > +0x11): more undefined references to `__gxx_personality_v0' follow > collect2: ld returned 1 exit status > hbmk2: Error: Running linker. 1 > > Maybe this experience clarifies a little bit the Qt 4.6, harbour and MinGW > 4.4.x relation. > > Best regards, > István > > > _______________________________________________ > Harbour mailing list (attachment size limit: 40KB) > [email protected] > http://lists.harbour-project.org/mailman/listinfo/harbour _______________________________________________ Harbour mailing list (attachment size limit: 40KB) [email protected] http://lists.harbour-project.org/mailman/listinfo/harbour
