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)
> Harbour@harbour-project.org
> http://lists.harbour-project.org/mailman/listinfo/harbour

_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to