Re: Cannot catch exceptions thrown in a shared library under MS windows

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Rüdiger Ranft wrote:

> The compilers I tried were g++-4.1.2 and g++-4.2.2, running unter cygwin
> with mingw32 target. The compilers where generated from vanilla sources,
> configure paramters are "../gcc-4.2.2/configure --host=i686-pc-cygwin
> --build=i686-pc-cygwin --target=i586-pc-mingw32
> --enable-languages=c,c++" and "../gcc-4.1.2/configure
> --build=i686-pc-cygwin --host=i686-pc-cygwin --target=i586-pc-mingw32
> --enable-languages=c,c++" respectively.

You can't throw/catch across DLLs with static libgcc.  Stock FS gcc
cannot build shared libgcc on Cygwin or MinGW.  So this is pretty much
broken by design, unless you patch gcc to build libgcc shared, as in the
case of the 4.2 that is available on the MinGW site.

The 3.4 versions that Cygwin and MinGW ship have local patches to allow
exceptions across DLLs with static libgcc.  This patch is very ugly and
doesn't forward port to 4.x.

[ When people keep wondering why Cygwin doesn't ship gcc 4.x, this is
one of the reasons why. ]

> In the wiki I found that this problem is a result of different
> visibility models in gcc3 vs. gcc4, so I tried different compiler
> switches (-fvisibility=default), but did not get any running configuration.

That may also apply but it's not the reason why this does not work. 
Static libgcc is the reason.

Brian


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux