* [gentoo-dev] libGLcore error
@ 2002-06-03 19:03 Prashanth Aditya Susarla
2002-06-04 20:15 ` Brandon Low
2002-06-04 22:14 ` Lars Pechan
0 siblings, 2 replies; 13+ messages in thread
From: Prashanth Aditya Susarla @ 2002-06-03 19:03 UTC (permalink / raw
To: gentoo-dev
I emerged nvidia-kernel and nvidia-glx and configured everything to work
properly (in the sense that I am working with X/KDE without any hassle as
far as regular operation is concerned). However there's the following
error in the XFree86 log file:-
dlopen: /usr/lib/libGLcore.so.1: undefined symbol: __divdi3
due to which mplayer etc. won't run. I even have a feeling I won't be able
to quake now :-(. I see no reason why this should break. Does it have
something to do with the compiler/optimization flags again? (gcc-3.1-r5,
-march=athlon-tbird -mmmx -m3dnow -O3 -pipe -fomit-frame-pointer)
Regards,
Prashanth Aditya Susarla
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-04 22:14 ` Lars Pechan
@ 2002-06-04 3:47 ` Prashanth Aditya Susarla
2002-06-05 4:26 ` Lars Pechan
2002-06-05 1:40 ` Adam Torgerson
1 sibling, 1 reply; 13+ messages in thread
From: Prashanth Aditya Susarla @ 2002-06-04 3:47 UTC (permalink / raw
To: gentoo-dev
> Two phased workaround:
>
> At linktime, i.e when building/doing emerges:
> Make sure xfree's opengl implementation is active, i.e. that the libGL.so
> symlink points to xfree's libGL.so, not nvidia's.
>
> opengl-update xfree
> emerge pkg
> opengl-update nvidia
>
> (using LDFLAGS=-lgcc_s emerge pkg should also work).
If you look at the nvidia-glx package, it contains precompiled libraries
which you just install to their respective locations. So this part doesn't
make any difference.
> At runtime:
> Either add /lib/libgcc_s.so.1 to /etc/ld.so.preload or use LD_PRELOAD on
> libgcc_s. If you go for the ld.so.preload option you need to make sure you
> re-enter the line of text after doing an rsync as rsync overwrites it
I did this using /etc/ld.so.preload and ran glxgears after switching to
the nvidia interface. glxgears segfaulted. It was runnng fine otherwise.
mplayer *seems* to be working fine. (I don't have a video file immediately
at hand). I also use another library which I load with LD_PRELOAD. I hope
that the two don't *clash* or something. Is it possible to preload multiple
libraries? And if so, how.
Regards,
Prashanth Aditya Susarla
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-05 4:26 ` Lars Pechan
@ 2002-06-04 4:56 ` Prashanth Aditya Susarla
2002-06-05 5:28 ` Lars Pechan
2002-06-05 20:10 ` Martin Schlemmer
1 sibling, 1 reply; 13+ messages in thread
From: Prashanth Aditya Susarla @ 2002-06-04 4:56 UTC (permalink / raw
To: gentoo-dev
> It is precisely because it is a precompiled library that it does make a
> difference. To point out what perhaps is obvious: had it been source we'd
> never had the problem in the first place.
Ok, thanks for clearing that up. I was under the impression that one has
to use -lgcc_s while compiling sources so that libgcc_s.so is linked
dynamically at runtime. Obviously, if we had the sources...
> You need to restart X after making the change to ld.so.preload. After having
> restarted verify that either glxgears or the nvidia lib lists libgc_s when
> ldd'ed. That is, you should see something like this:
Thanks a lot again. Restarting X worked and I'm happy to see glxgears
working again. Now all I have to do is quake :-).
> I'm not overly familiar with mplayer but is it possible that opengl is only
> used for certain media types and that you'll get away without it most of the
> time?
If you look at
$ mplayer -vo help
you'll see certain video output drivers (basically whatever you've allowed
during "configure" is enabled) which include the gl and gl2 video drivers
too. These use libGL.so, and further, mplayer probes all of them at
startup I think, which is why I got the __divid3 error on running mplayer
before employing this fix.
> LD_PRELOADing should be fine as long as you're not preloading libraries
> containing the same symbols, I think. LD_PRELOAD="-lgcc_s -lpthread" should
> do it.
Yeah multiple LD_PRELOAD seems to be working for me. The other one which I
use is a function interposer for connect() so it has nothing to do with
libgcc_s.so I guess. Anyway, thanks a lot once again for the information.
Regards,
Prashanth Aditya Susarla
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-03 19:03 [gentoo-dev] libGLcore error Prashanth Aditya Susarla
@ 2002-06-04 20:15 ` Brandon Low
2002-06-04 22:14 ` Lars Pechan
1 sibling, 0 replies; 13+ messages in thread
From: Brandon Low @ 2002-06-04 20:15 UTC (permalink / raw
To: gentoo-dev
Check out bug 3150 we've been fighting with this one for a while... there
are also some forum threads about it wherein someone found a patch for
glibc that supposedly fixes it, unfortunately I haven't been able to get
that patch to compile for me.
--Brandon
-=-=-=-=-=-=-=-Previous Message(s)-=-=-=-=-=-=-=-
> I emerged nvidia-kernel and nvidia-glx and configured everything to work
> properly (in the sense that I am working with X/KDE without any hassle as
> far as regular operation is concerned). However there's the following
> error in the XFree86 log file:-
>
> dlopen: /usr/lib/libGLcore.so.1: undefined symbol: __divdi3
>
> due to which mplayer etc. won't run. I even have a feeling I won't be able
> to quake now :-(. I see no reason why this should break. Does it have
> something to do with the compiler/optimization flags again? (gcc-3.1-r5,
> -march=athlon-tbird -mmmx -m3dnow -O3 -pipe -fomit-frame-pointer)
>
> Regards,
> Prashanth Aditya Susarla
>
> _______________________________________________
> gentoo-dev mailing list
> gentoo-dev@gentoo.org
> http://lists.gentoo.org/mailman/listinfo/gentoo-dev
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-03 19:03 [gentoo-dev] libGLcore error Prashanth Aditya Susarla
2002-06-04 20:15 ` Brandon Low
@ 2002-06-04 22:14 ` Lars Pechan
2002-06-04 3:47 ` Prashanth Aditya Susarla
2002-06-05 1:40 ` Adam Torgerson
1 sibling, 2 replies; 13+ messages in thread
From: Lars Pechan @ 2002-06-04 22:14 UTC (permalink / raw
To: gentoo-dev
Very short summary:
There is a problem with nvidia opengl acceleration. AFAIK it only happens when
using the latest binutils (2.12.x). I believe it's caused by nvidia's
libGL.so not having been built with -lgcc_s as a linker directive. Previous
versions of binutils would have made up for that by re-exporting the
necessary symbols from libgcc_s but when using the latest version that no
longer happens.
Two phased workaround:
At linktime, i.e when building/doing emerges:
Make sure xfree's opengl implementation is active, i.e. that the libGL.so
symlink points to xfree's libGL.so, not nvidia's.
opengl-update xfree
emerge pkg
opengl-update nvidia
(using LDFLAGS=-lgcc_s emerge pkg should also work).
At runtime:
Either add /lib/libgcc_s.so.1 to /etc/ld.so.preload or use LD_PRELOAD on
libgcc_s. If you go for the ld.so.preload option you need to make sure you
re-enter the line of text after doing an rsync as rsync overwrites it
Not perfect by any means but gets the job done and is really quite painless.
For more in-depth info, check out the gcc3 forum.
/Lasse
On Tue, 04 Jun 2002 07:03, Prashanth Aditya Susarla wrote:
> I emerged nvidia-kernel and nvidia-glx and configured everything to work
> properly (in the sense that I am working with X/KDE without any hassle as
> far as regular operation is concerned). However there's the following
> error in the XFree86 log file:-
>
> dlopen: /usr/lib/libGLcore.so.1: undefined symbol: __divdi3
>
> due to which mplayer etc. won't run. I even have a feeling I won't be able
> to quake now :-(. I see no reason why this should break. Does it have
> something to do with the compiler/optimization flags again? (gcc-3.1-r5,
> -march=athlon-tbird -mmmx -m3dnow -O3 -pipe -fomit-frame-pointer)
>
> Regards,
> Prashanth Aditya Susarla
>
> _______________________________________________
> gentoo-dev mailing list
> gentoo-dev@gentoo.org
> http://lists.gentoo.org/mailman/listinfo/gentoo-dev
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-04 22:14 ` Lars Pechan
2002-06-04 3:47 ` Prashanth Aditya Susarla
@ 2002-06-05 1:40 ` Adam Torgerson
2002-06-05 1:58 ` Lars Pechan
1 sibling, 1 reply; 13+ messages in thread
From: Adam Torgerson @ 2002-06-05 1:40 UTC (permalink / raw
To: gentoo-dev
> Two phased workaround:
A better way to get around this is to patch glibc as discussed here:
http://forums.gentoo.org/viewtopic.php?t=3963
adam
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-05 1:40 ` Adam Torgerson
@ 2002-06-05 1:58 ` Lars Pechan
0 siblings, 0 replies; 13+ messages in thread
From: Lars Pechan @ 2002-06-05 1:58 UTC (permalink / raw
To: gentoo-dev
Only problem is that people are having problems applying that patch. See
Brandon's message in this very thread.
Besides, I personally think patching glibc is quite a major affair and would
rather wait for patch to appear in a generic, tested, properly released glibc
but that's my personal preference and may not apply to eveyone.
On Wed, 05 Jun 2002 13:40, Adam Torgerson wrote:
> > Two phased workaround:
>
> A better way to get around this is to patch glibc as discussed here:
>
> http://forums.gentoo.org/viewtopic.php?t=3963
>
> adam
>
> _______________________________________________
> gentoo-dev mailing list
> gentoo-dev@gentoo.org
> http://lists.gentoo.org/mailman/listinfo/gentoo-dev
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-04 3:47 ` Prashanth Aditya Susarla
@ 2002-06-05 4:26 ` Lars Pechan
2002-06-04 4:56 ` Prashanth Aditya Susarla
2002-06-05 20:10 ` Martin Schlemmer
0 siblings, 2 replies; 13+ messages in thread
From: Lars Pechan @ 2002-06-05 4:26 UTC (permalink / raw
To: gentoo-dev
Please see comments below...
On Tue, 04 Jun 2002 15:47, Prashanth Aditya Susarla wrote:
> > Two phased workaround:
> >
> > At linktime, i.e when building/doing emerges:
> > Make sure xfree's opengl implementation is active, i.e. that the libGL.so
> > symlink points to xfree's libGL.so, not nvidia's.
> >
> > opengl-update xfree
> > emerge pkg
> > opengl-update nvidia
> >
> > (using LDFLAGS=-lgcc_s emerge pkg should also work).
>
> If you look at the nvidia-glx package, it contains precompiled libraries
> which you just install to their respective locations. So this part doesn't
> make any difference.
It is precisely because it is a precompiled library that it does make a
difference. To point out what perhaps is obvious: had it been source we'd
never had the problem in the first place.
Nvidia's libGL.so.1 implicitly references a symbol in another library without
explicitly stating that as a dependency (ldd libGL.so should list libgcc_s
but doesn't). When compiling apps linked against nvidia's libGL this causes a
link failure. (To complicate things further it _may be_ that only certain
types of libGL operations cause the problem to emerge, I'm not sure)
/usr/lib/libGL.so is a link that points to either the nvidia or the xfree
implementation. By making sure that libGL from xfree is current and thus used
during the link phase the link error won't happen and whatever you're
building will build. The xfree version has been built from source on your
very machine and doesn't have this problem so that sorts build-time but not
runtime. Hence, you also need the runtime "fix".
> > At runtime:
> > Either add /lib/libgcc_s.so.1 to /etc/ld.so.preload or use LD_PRELOAD on
> > libgcc_s. If you go for the ld.so.preload option you need to make sure
> > you re-enter the line of text after doing an rsync as rsync overwrites it
>
> I did this using /etc/ld.so.preload and ran glxgears after switching to
> the nvidia interface. glxgears segfaulted. It was runnng fine otherwise.
> mplayer *seems* to be working fine. (I don't have a video file immediately
> at hand). I also use another library which I load with LD_PRELOAD. I hope
> that the two don't *clash* or something. Is it possible to preload multiple
> libraries? And if so, how.
>
You need to restart X after making the change to ld.so.preload. After having
restarted verify that either glxgears or the nvidia lib lists libgc_s when
ldd'ed. That is, you should see something like this:
basil smpeg-xmms-0.3.4 # ldd /usr/lib/libGL.so.1
/lib/libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40049000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x4005e000)
libm.so.6 => /lib/libm.so.6 (0x403ec000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x4040f000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4041f000)
libdl.so.2 => /lib/libdl.so.2 (0x404ea000)
libc.so.6 => /lib/libc.so.6 (0x404ed000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
I'm not overly familiar with mplayer but is it possible that opengl is only
used for certain media types and that you'll get away without it most of the
time?
LD_PRELOADing should be fine as long as you're not preloading libraries
containing the same symbols, I think. LD_PRELOAD="-lgcc_s -lpthread" should
do it.
I hope this does help, as I've been using this setup for a (little) while now
without any dramas at all. Please let me know if you can't get it working and
I'll see if I can help.
Regards,
/Lasse
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-04 4:56 ` Prashanth Aditya Susarla
@ 2002-06-05 5:28 ` Lars Pechan
0 siblings, 0 replies; 13+ messages in thread
From: Lars Pechan @ 2002-06-05 5:28 UTC (permalink / raw
To: gentoo-dev
On Tue, 04 Jun 2002 16:56, Prashanth Aditya Susarla wrote:
> > It is precisely because it is a precompiled library that it does make a
> > difference. To point out what perhaps is obvious: had it been source we'd
> > never had the problem in the first place.
>
> Ok, thanks for clearing that up. I was under the impression that one has
> to use -lgcc_s while compiling sources so that libgcc_s.so is linked
> dynamically at runtime. Obviously, if we had the sources...
>
That is absolutely correct in the normal case -- unless you state the library
on the link line you'll get a linker error. The tricky thing in this case is
that it's the compiler itself that's generating the calls to functions in
libgcc_s and not the user code directly. libgcc_s contains various
housekeeping functions the compiler may call depending on the end-user code
(some refer to it as a junk drawer that contains stuff that doesn't fit
anywhere else). So as a developer you may not even know you are referencing
stuff in that lib.
The older binutils made up for that by re-exporting the symbols that were
referenced in libgcc_s so you'd end up with a reference to libgcc_s
implicitly. That does not happen anymore. I believe that if nvidia were to
take the build environment they used to produce what we have and tries to do
a build under the new binutils the library won't even build.
Any linker gurus out there that could let me know if I'm talking shite?
/Lasse
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-05 4:26 ` Lars Pechan
2002-06-04 4:56 ` Prashanth Aditya Susarla
@ 2002-06-05 20:10 ` Martin Schlemmer
2002-06-05 21:00 ` Lars Pechan
1 sibling, 1 reply; 13+ messages in thread
From: Martin Schlemmer @ 2002-06-05 20:10 UTC (permalink / raw
To: Gentoo-Dev
On Wed, 2002-06-05 at 06:26, Lars Pechan wrote:
> Please see comments below...
> On Tue, 04 Jun 2002 15:47, Prashanth Aditya Susarla wrote:
> > > Two phased workaround:
> > >
> > > At linktime, i.e when building/doing emerges:
> > > Make sure xfree's opengl implementation is active, i.e. that the libGL.so
> > > symlink points to xfree's libGL.so, not nvidia's.
> > >
> > > opengl-update xfree
> > > emerge pkg
> > > opengl-update nvidia
> > >
> > > (using LDFLAGS=-lgcc_s emerge pkg should also work).
> >
> > If you look at the nvidia-glx package, it contains precompiled libraries
> > which you just install to their respective locations. So this part doesn't
> > make any difference.
>
> It is precisely because it is a precompiled library that it does make a
> difference. To point out what perhaps is obvious: had it been source we'd
> never had the problem in the first place.
>
> Nvidia's libGL.so.1 implicitly references a symbol in another library without
> explicitly stating that as a dependency (ldd libGL.so should list libgcc_s
> but doesn't). When compiling apps linked against nvidia's libGL this causes a
> link failure. (To complicate things further it _may be_ that only certain
> types of libGL operations cause the problem to emerge, I'm not sure)
>
> /usr/lib/libGL.so is a link that points to either the nvidia or the xfree
> implementation. By making sure that libGL from xfree is current and thus used
> during the link phase the link error won't happen and whatever you're
> building will build. The xfree version has been built from source on your
> very machine and doesn't have this problem so that sorts build-time but not
> runtime. Hence, you also need the runtime "fix".
>
I think you guys should do a bit more research before
making conclusions. There is nothing wrong with nvidia's
libraries, except that the gcc team changed things (like
usual) without letting people know, or putting a fix out
there.
>From the mail of the guy who patched it:
-----------------------snip--------------------------------
gcc 3.1 libgcc.a has all its routines .hidden, so they cannot
be re-exported from glibc that way. The following patch adds
the code to glibc (btw: it is smaller than what libgcc.a has,
since I replaced __negdi2 with normal negation, so there is
no need to run the values through memory too many times, plus
there is just one __udivmoddi4 while libgcc2.c sucks it in 4
times).
-----------------------snip--------------------------------
Meaning it is only a gcc-3.1 problem. Another reason
why I think the gcc team went mad after 2.95.* :/
> > > At runtime:
> > > Either add /lib/libgcc_s.so.1 to /etc/ld.so.preload or use LD_PRELOAD on
> > > libgcc_s. If you go for the ld.so.preload option you need to make sure
> > > you re-enter the line of text after doing an rsync as rsync overwrites it
> >
> > I did this using /etc/ld.so.preload and ran glxgears after switching to
> > the nvidia interface. glxgears segfaulted. It was runnng fine otherwise.
> > mplayer *seems* to be working fine. (I don't have a video file immediately
> > at hand). I also use another library which I load with LD_PRELOAD. I hope
> > that the two don't *clash* or something. Is it possible to preload multiple
> > libraries? And if so, how.
> >
> You need to restart X after making the change to ld.so.preload. After having
> restarted verify that either glxgears or the nvidia lib lists libgc_s when
> ldd'ed. That is, you should see something like this:
>
> basil smpeg-xmms-0.3.4 # ldd /usr/lib/libGL.so.1
> /lib/libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40049000)
> libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x4005e000)
> libm.so.6 => /lib/libm.so.6 (0x403ec000)
> libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x4040f000)
> libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4041f000)
> libdl.so.2 => /lib/libdl.so.2 (0x404ea000)
> libc.so.6 => /lib/libc.so.6 (0x404ed000)
> /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
>
>
> I'm not overly familiar with mplayer but is it possible that opengl is only
> used for certain media types and that you'll get away without it most of the
> time?
>
> LD_PRELOADing should be fine as long as you're not preloading libraries
> containing the same symbols, I think. LD_PRELOAD="-lgcc_s -lpthread" should
> do it.
>
> I hope this does help, as I've been using this setup for a (little) while now
> without any dramas at all. Please let me know if you can't get it working and
> I'll see if I can help.
>
> Regards,
>
> /Lasse
> _______________________________________________
> gentoo-dev mailing list
> gentoo-dev@gentoo.org
> http://lists.gentoo.org/mailman/listinfo/gentoo-dev
--
Martin Schlemmer
Gentoo Linux Developer, Desktop Team Developer
Cape Town, South Africa
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-05 20:10 ` Martin Schlemmer
@ 2002-06-05 21:00 ` Lars Pechan
2002-06-05 21:23 ` Martin Schlemmer
0 siblings, 1 reply; 13+ messages in thread
From: Lars Pechan @ 2002-06-05 21:00 UTC (permalink / raw
To: gentoo-dev
Thanks a lot but I would like to think that I have put quite a big effort into
finding out a) why nvidia's opengl driver doesn't work and b) how to get it
working. So have others too. I also think I have a reasonable understading of
what is going on.
For more info on the subject see these threads in the forums:
http://forums.gentoo.org/viewtopic.php?t=3701
http://forums.gentoo.org/viewtopic.php?t=3963
Also the following url helps in mapping out what the issues are
http://sources.redhat.com/ml/libc-alpha/2002-04/msg00025.html.
Also, the link you are referring to is mentioned in the forum postings.
In short, yes the problem stems from the gcc-team having changed the layout of
a library by hiding certain symbols. However, it's not clear whether this
happened for 3.1 or in fact earlier. It did work earlier because the
linker/binutils didn't care about the .hidden attribute anyway and in fact
still works under 3.1 depending on what version of binutils is used.
To see this happening try building one system with binutils 2.12 and one with
2.11 _both_ using gcc-3.1. The nvidia opengl driver will work on one but not
the other despite both having been compiled with the same compiler. That
doesn't make it binutils' "fault" but it is clear that what version of
binutils you use produce different end results.
My concern hasn't been to find someone to put the blame on but to understand
what is happening and how to fix it. I personally think one has to be very
careful playing the blame game in an open source environment.
I'm not suggesting it's nvidias "fault", if anything I'm grateful for them
providing good drivers even if they are binaries. However, I am suggesting
that nvidia have been caught unawares by the change and also that their
library wouldn't build on my (or any other gcc-3.1 + latest binutils) system.
I'm also suggesting a couple of workarounds for those who can't get opengl
going on their new shiny 3.1-built systems. Some have (I believe) been
successful in applying the patch to glibc but others haven't and for them
these workarounds will do the trick.
/Lasse
On Thu, 06 Jun 2002 08:10, Martin Schlemmer wrote:
> On Wed, 2002-06-05 at 06:26, Lars Pechan wrote:
> > Please see comments below...
> >
> > On Tue, 04 Jun 2002 15:47, Prashanth Aditya Susarla wrote:
> > > > Two phased workaround:
> > > >
> > > > At linktime, i.e when building/doing emerges:
> > > > Make sure xfree's opengl implementation is active, i.e. that the
> > > > libGL.so symlink points to xfree's libGL.so, not nvidia's.
> > > >
> > > > opengl-update xfree
> > > > emerge pkg
> > > > opengl-update nvidia
> > > >
> > > > (using LDFLAGS=-lgcc_s emerge pkg should also work).
> > >
> > > If you look at the nvidia-glx package, it contains precompiled
> > > libraries which you just install to their respective locations. So this
> > > part doesn't make any difference.
> >
> > It is precisely because it is a precompiled library that it does make a
> > difference. To point out what perhaps is obvious: had it been source we'd
> > never had the problem in the first place.
> >
> > Nvidia's libGL.so.1 implicitly references a symbol in another library
> > without explicitly stating that as a dependency (ldd libGL.so should list
> > libgcc_s but doesn't). When compiling apps linked against nvidia's libGL
> > this causes a link failure. (To complicate things further it _may be_
> > that only certain types of libGL operations cause the problem to emerge,
> > I'm not sure)
> >
> > /usr/lib/libGL.so is a link that points to either the nvidia or the xfree
> > implementation. By making sure that libGL from xfree is current and thus
> > used during the link phase the link error won't happen and whatever
> > you're building will build. The xfree version has been built from source
> > on your very machine and doesn't have this problem so that sorts
> > build-time but not runtime. Hence, you also need the runtime "fix".
>
> I think you guys should do a bit more research before
> making conclusions. There is nothing wrong with nvidia's
> libraries, except that the gcc team changed things (like
> usual) without letting people know, or putting a fix out
> there.
>
> From the mail of the guy who patched it:
>
> -----------------------snip--------------------------------
> gcc 3.1 libgcc.a has all its routines .hidden, so they cannot
> be re-exported from glibc that way. The following patch adds
> the code to glibc (btw: it is smaller than what libgcc.a has,
> since I replaced __negdi2 with normal negation, so there is
> no need to run the values through memory too many times, plus
> there is just one __udivmoddi4 while libgcc2.c sucks it in 4
> times).
> -----------------------snip--------------------------------
>
> Meaning it is only a gcc-3.1 problem. Another reason
> why I think the gcc team went mad after 2.95.* :/
>
> > > > At runtime:
> > > > Either add /lib/libgcc_s.so.1 to /etc/ld.so.preload or use LD_PRELOAD
> > > > on libgcc_s. If you go for the ld.so.preload option you need to make
> > > > sure you re-enter the line of text after doing an rsync as rsync
> > > > overwrites it
> > >
> > > I did this using /etc/ld.so.preload and ran glxgears after switching to
> > > the nvidia interface. glxgears segfaulted. It was runnng fine
> > > otherwise. mplayer *seems* to be working fine. (I don't have a video
> > > file immediately at hand). I also use another library which I load with
> > > LD_PRELOAD. I hope that the two don't *clash* or something. Is it
> > > possible to preload multiple libraries? And if so, how.
> >
> > You need to restart X after making the change to ld.so.preload. After
> > having restarted verify that either glxgears or the nvidia lib lists
> > libgc_s when ldd'ed. That is, you should see something like this:
> >
> > basil smpeg-xmms-0.3.4 # ldd /usr/lib/libGL.so.1
> > /lib/libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40049000)
> > libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x4005e000)
> > libm.so.6 => /lib/libm.so.6 (0x403ec000)
> > libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x4040f000)
> > libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4041f000)
> > libdl.so.2 => /lib/libdl.so.2 (0x404ea000)
> > libc.so.6 => /lib/libc.so.6 (0x404ed000)
> > /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
> >
> >
> > I'm not overly familiar with mplayer but is it possible that opengl is
> > only used for certain media types and that you'll get away without it
> > most of the time?
> >
> > LD_PRELOADing should be fine as long as you're not preloading libraries
> > containing the same symbols, I think. LD_PRELOAD="-lgcc_s -lpthread"
> > should do it.
> >
> > I hope this does help, as I've been using this setup for a (little) while
> > now without any dramas at all. Please let me know if you can't get it
> > working and I'll see if I can help.
> >
> > Regards,
> >
> > /Lasse
> > _______________________________________________
> > gentoo-dev mailing list
> > gentoo-dev@gentoo.org
> > http://lists.gentoo.org/mailman/listinfo/gentoo-dev
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-05 21:00 ` Lars Pechan
@ 2002-06-05 21:23 ` Martin Schlemmer
2002-06-05 21:46 ` Bart Verwilst
0 siblings, 1 reply; 13+ messages in thread
From: Martin Schlemmer @ 2002-06-05 21:23 UTC (permalink / raw
To: Gentoo-Dev
On Wed, 2002-06-05 at 23:00, Lars Pechan wrote:
> Thanks a lot but I would like to think that I have put quite a big effort into
> finding out a) why nvidia's opengl driver doesn't work and b) how to get it
> working. So have others too. I also think I have a reasonable understading of
> what is going on.
>
> For more info on the subject see these threads in the forums:
>
> http://forums.gentoo.org/viewtopic.php?t=3701
> http://forums.gentoo.org/viewtopic.php?t=3963
>
> Also the following url helps in mapping out what the issues are
> http://sources.redhat.com/ml/libc-alpha/2002-04/msg00025.html.
>
> Also, the link you are referring to is mentioned in the forum postings.
>
> In short, yes the problem stems from the gcc-team having changed the layout of
> a library by hiding certain symbols. However, it's not clear whether this
> happened for 3.1 or in fact earlier. It did work earlier because the
> linker/binutils didn't care about the .hidden attribute anyway and in fact
> still works under 3.1 depending on what version of binutils is used.
>
> To see this happening try building one system with binutils 2.12 and one with
> 2.11 _both_ using gcc-3.1. The nvidia opengl driver will work on one but not
> the other despite both having been compiled with the same compiler. That
> doesn't make it binutils' "fault" but it is clear that what version of
> binutils you use produce different end results.
>
> My concern hasn't been to find someone to put the blame on but to understand
> what is happening and how to fix it. I personally think one has to be very
> careful playing the blame game in an open source environment.
>
> I'm not suggesting it's nvidias "fault", if anything I'm grateful for them
> providing good drivers even if they are binaries. However, I am suggesting
> that nvidia have been caught unawares by the change and also that their
> library wouldn't build on my (or any other gcc-3.1 + latest binutils) system.
>
> I'm also suggesting a couple of workarounds for those who can't get opengl
> going on their new shiny 3.1-built systems. Some have (I believe) been
> successful in applying the patch to glibc but others haven't and for them
> these workarounds will do the trick.
>
Bad form on my side. Sorry, to quick a reply after just
comming home with a long day at work behind me. No excuse
I know.
Btw, I am almost positive it worked fine for gcc-3.0 and
binutils-2.12.
--
Martin Schlemmer
Gentoo Linux Developer, Desktop Team Developer
Cape Town, South Africa
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [gentoo-dev] libGLcore error
2002-06-05 21:23 ` Martin Schlemmer
@ 2002-06-05 21:46 ` Bart Verwilst
0 siblings, 0 replies; 13+ messages in thread
From: Bart Verwilst @ 2002-06-05 21:46 UTC (permalink / raw
To: gentoo-dev
I've added glibc-2.2.5-r4 to portage, which fixes the nvidia-glx bug and a few
others..
See ya
On Wednesday 05 June 2002 23:23, Martin Schlemmer wrote:
|| On Wed, 2002-06-05 at 23:00, Lars Pechan wrote:
|| > Thanks a lot but I would like to think that I have put quite a big
|| > effort into finding out a) why nvidia's opengl driver doesn't work and
|| > b) how to get it working. So have others too. I also think I have a
|| > reasonable understading of what is going on.
|| >
|| > For more info on the subject see these threads in the forums:
|| >
|| > http://forums.gentoo.org/viewtopic.php?t=3701
|| > http://forums.gentoo.org/viewtopic.php?t=3963
|| >
|| > Also the following url helps in mapping out what the issues are
|| > http://sources.redhat.com/ml/libc-alpha/2002-04/msg00025.html.
|| >
|| > Also, the link you are referring to is mentioned in the forum postings.
|| >
|| > In short, yes the problem stems from the gcc-team having changed the
|| > layout of a library by hiding certain symbols. However, it's not clear
|| > whether this happened for 3.1 or in fact earlier. It did work earlier
|| > because the linker/binutils didn't care about the .hidden attribute
|| > anyway and in fact still works under 3.1 depending on what version of
|| > binutils is used.
|| >
|| > To see this happening try building one system with binutils 2.12 and one
|| > with 2.11 _both_ using gcc-3.1. The nvidia opengl driver will work on
|| > one but not the other despite both having been compiled with the same
|| > compiler. That doesn't make it binutils' "fault" but it is clear that
|| > what version of binutils you use produce different end results.
|| >
|| > My concern hasn't been to find someone to put the blame on but to
|| > understand what is happening and how to fix it. I personally think one
|| > has to be very careful playing the blame game in an open source
|| > environment.
|| >
|| > I'm not suggesting it's nvidias "fault", if anything I'm grateful for
|| > them providing good drivers even if they are binaries. However, I am
|| > suggesting that nvidia have been caught unawares by the change and also
|| > that their library wouldn't build on my (or any other gcc-3.1 + latest
|| > binutils) system.
|| >
|| > I'm also suggesting a couple of workarounds for those who can't get
|| > opengl going on their new shiny 3.1-built systems. Some have (I believe)
|| > been successful in applying the patch to glibc but others haven't and
|| > for them these workarounds will do the trick.
||
|| Bad form on my side. Sorry, to quick a reply after just
|| comming home with a long day at work behind me. No excuse
|| I know.
||
|| Btw, I am almost positive it worked fine for gcc-3.0 and
|| binutils-2.12.
--
Bart Verwilst
Gentoo Linux Developer, Desktop Team
Gent, Belgium
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2002-06-05 21:51 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-06-03 19:03 [gentoo-dev] libGLcore error Prashanth Aditya Susarla
2002-06-04 20:15 ` Brandon Low
2002-06-04 22:14 ` Lars Pechan
2002-06-04 3:47 ` Prashanth Aditya Susarla
2002-06-05 4:26 ` Lars Pechan
2002-06-04 4:56 ` Prashanth Aditya Susarla
2002-06-05 5:28 ` Lars Pechan
2002-06-05 20:10 ` Martin Schlemmer
2002-06-05 21:00 ` Lars Pechan
2002-06-05 21:23 ` Martin Schlemmer
2002-06-05 21:46 ` Bart Verwilst
2002-06-05 1:40 ` Adam Torgerson
2002-06-05 1:58 ` Lars Pechan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox