Subject: dlopening a c++ DSO with EH [was Re: Xerces-P link problems]
To: Emmanuel Dreyfus <p99dreyf@criens.u-psud.fr>
From: Nick Hudson <skrll@netbsd.org>
List: tech-pkg
Date: 04/03/2001 08:39:54
Emmanuel Dreyfus wrote:

[moved to tech-toolchain]

> 
> > Use -export-dynamic when linking the perl executable.
> 
> I can't get this to work:
> 
> gcc  -L/usr/pkg/lib -Wl,-export-dynamic -Wl,-E -Wl,-R/usr/pkg/lib -o
> perl perlmain.o lib/auto/DynaLoader/DynaLoader.a  libperl.a `cat
> ext.libs` -lm -lcrypt
> 
> perl still does not contain the __eh_alloc symbol. Any idea why?

This will be because perl is a c binary and __eh_alloc is for exception
handling in c++. Adding -fexceptions should help us on the way, but then
the linker won't add in the necessary stuff from -lgcc because its not
referenced.

One solution would be to use -Wl,-whole-archive for libgcc.a - maybe.

The real solution is still a mistery to me... gcc 3.0 apparently will
come with libgcc.so which should be linked into the DSO. This is still a
contentious point.

Maybe Todd, if he's not too busy, has other ideas for the up and coming
toolchain upgrade that he can share.

Nick
-- 
aka skrll@netbsd.org, skrll@excite.co.uk