Subject: C++ Static Constructors and dlopen()'d Shared Libraries
To: None <firstname.lastname@example.org>
From: Jay Painter <email@example.com>
Date: 03/07/2000 14:49:16
I'm having problems getting static (global) constructors and destructors
to work when I dlopen() a C++ shared library on NetBSD 1.4.1 i386.
When I use the compiler which shipped with NetBSD 1.4.1
(egcs-1.1.1), static constructors work on dlopen(); however, the static
destructors do not get called on dlclose(). Unfortunately, I cannot use
the EGCS compiler, and need to use GCC 2.95.2. Compiling and linking the
same way, I cannot get the constructors to work at all with this compiler.
I've written a simple test program which shows this behavior. It can be
found at ftp://sculpin.com/jpaint/test-plugin.tar.gz.
Also, I can't get this to work at all on OpenBSD 2.6, if anybody happens
to work on both here...