Subject: Re: dlopen'ing a plugin that calls functions in the parent...
To: Jasper Wallace <jasper@pointless.net>
From: Jason R Thorpe <thorpej@wasabisystems.com>
List: netbsd-users
Date: 09/05/2001 14:04:02
On Wed, Sep 05, 2001 at 09:55:06PM +0100, Jasper Wallace wrote:
> I'm trying to get the wirless plugin[1] for gkrellm[2] to work under
> NetBSD 1.5.2.
>
> After digging around with gdb the call to dlopen() on the plugin fails with
> (as reported dy dlerror()):
>
> Error: /usr/home/jasper/.gkrellm/plugins/wireless.so: Undefined PLT symbol
> "gkrellm_draw_decal_text" (reloc type = 7, symnum = 31)
>
> gkrellm_draw_decal_text is a function in gkrellm (and gkrellm is NOT
> striped).
gkrellm needs to be linked with the -E (--export-dyanmic) option. That
should fix your problem.
Any program which opens a shared object that needs to call back into
the parent needs this option. I guess maybe it's the default on Linux,
or something, because lots of programs fail to include it in their
Makefiles.
--
-- Jason R. Thorpe <thorpej@wasabisystems.com>