Date: Wed, 24 Jan 2001 20:17:49 -0800 (PST) From: John Polstra <jdp@polstra.com> To: ports@freebsd.org Cc: sobomax@freebsd.org Subject: Re: Strange problems with dynamic linking of libGL.so.1 from XFree86-4.0.2_5 Message-ID: <200101250417.f0P4HnT29626@vashon.polstra.com> In-Reply-To: <3A6C3D19.E1F56291@FreeBSD.org>
index | next in thread | previous in thread | raw e-mail
In article <3A6C3D19.E1F56291@FreeBSD.org>,
Maxim Sobolev <sobomax@FreeBSD.ORG> wrote:
> Hi,
>
> I have a strange problems with building py-opengl package on fairly recent
> -current system (gcc 2.95.3). This package builds a shared module, links it
> with various stuff including libGL.so.1 from the XFree86-4.0.2_5 port and then
> tries to register this module with tcl interpreter. Previously this worked like
> a charm, but now I see the following error message probably indicating that tcl
> can't dlopen() this module:
> [...]
> ===> Generating temporary packing list
> /usr/local/bin/tclsh8.3 /mnt/py-opengl/work/PyOpenGL-1.5.6/register.tcl
> warning: error while loading Togl.so: couldn't load file "./Togl.so":
> /usr/X11R6/lib/libGL.so.1: Undefined symbol "pthread_getspecific"
> ===> Registering installation for py-opengl-1.5.6
> [...]
>
> I tried all possible means - linked Togl.so module with -pthread, -Wl,-E and
> -lgcc; recompiled/reinstalled python/tcl/tk etc., but it did not help. If
> someone does have any fresh ideas about what could be wrong please let me know.
>
> -Maxim
> P.S. I suspected that libGL.so.1 is being linked without -pthread somehow, but
> according to bento's logs it is not true:
> [from XFree86-4.0.2_5.log buildlog on -current]
> + LD_LIBRARY_PATH=../../exports/lib cc -o ./libGL.so.1.2~ -shared -rpath
> /usr/X11R6/lib -Wl,-soname,libGL.so.1 glx/clientattrib.o glx/compsize.o
> glx/dispatch.o glx/eval.o glx/g_render.o glx/g_single.o glx/g_vendpriv.o
> glx/glapi.o glx/glapi_x86.o glx/glapinoop.o glx/glthread.o glx/glxcmds.o
> glx/glxext.o glx/indirect_init.o glx/pixel.o glx/pixelstore.o glx/render2.o
> glx/renderpix.o glx/single2.o glx/singlepix.o glx/vertarr.o glx/xfont.o
> dri/XF86dri.o dri/dri_glx.o -pthread
Thanks for sending me the debugging output from the dynamic linker.
Even though bento's logs show the "-pthread" option, libGL is in
fact _not_ being linked with the threads library. That's because
"-pthread" has (almost) no effect when building shared libraries.
I think the actual problem may be in the "/usr/lib/libgcc.a" which
was used to build libGL.so. Try this on the machine where libGL was
built:
wall$ objdump --syms /usr/lib/libgcc.a | grep pthread
00000000 w *UND* 00000000 pthread_create
00000000 w *UND* 00000000 pthread_getspecific
00000000 w *UND* 00000000 pthread_key_delete
00000000 w *UND* 00000000 pthread_once
00000000 w *UND* 00000000 pthread_key_create
00000000 w *UND* 00000000 pthread_mutex_unlock
00000000 w *UND* 00000000 pthread_mutex_lock
00000000 w *UND* 00000000 pthread_mutex_trylock
00000000 w *UND* 00000000 pthread_setspecific
00000000 w *UND* 00000000 pthread_create
00000000 w *UND* 00000000 pthread_getspecific
00000000 w *UND* 00000000 pthread_key_delete
00000000 w *UND* 00000000 pthread_once
00000000 w *UND* 00000000 pthread_key_create
00000000 w *UND* 00000000 pthread_mutex_unlock
00000000 w *UND* 00000000 pthread_mutex_lock
00000000 w *UND* 00000000 pthread_mutex_trylock
00000000 w *UND* 00000000 pthread_setspecific
If you don't get the output above (including the "w" characters)
then libgcc is out of date. I think if you update the system to the
latest and then rebuild libGL it ought to work.
John
--
John Polstra jdp@polstra.com
John D. Polstra & Co., Inc. Seattle, Washington USA
"Disappointment is a good sign of basic intelligence." -- Chögyam Trungpa
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200101250417.f0P4HnT29626>
