I'm using Linux From Scratch mostly-3.3 (I like 3.0's boots scripts better, and I compiled everything with gcc 3.2 with the new -march=athlon-xp switch, so that's why it isn't totally LFS 3.3). In past iterations of Linux and the nVidia card drivers (even in other LFS installations, but in Mandrake also), all I've had to do is install X, install the nVidia kernel and GLX, change X's config file to use the right driver, load glx and not load GLcore and dri, and start up X.
This time, unfortunately, while the above method does get X going, GLX won't load. glxinfo after X is running gives a bunch of "extension GLX missing on display :0.0" errors, and the relevant parts (why glx won't load) of the log file are reproduced here:
(II) Loading font Speedo
(II) LoadModule: "glx"
(II) Loading /usr/X11R6/lib/modules/extensions/libglx.so
dlopen: /usr/lib/libGLcore.so.1: undefined symbol: __divdi3
(EE) Failed to load /usr/X11R6/lib/modules/extensions/libglx.so
(II) UnloadModule: "glx"
(EE) Failed to load module "glx" (loader failed, 1)
And then, a little later, this:
(EE) NVIDIA(0): Failed to load glX
The problem is the first set of errors, where dlopen() is complaining that __divdi3 is undefined somewhere.
There are no conflicting Mesa libGL* files anywhere; libGLcore.so.1 is a symlink to libGLcore.so.1.0.2960. libGL.so is also symlinked to the correct nVidia libGL, and ldd
ing this libGL shows it dynamically loading libGLcore (the correct one, installed by the GLX tarball). ldd
ing libGLcore.so.1.0.2960 says it's statically linked.
The NVdriver module does load.
My question is, has anyone seen anything like this before, and what can I do about it? Does it sound like a binutils or glibc error (possible, if it's happening as part of the dlopen() process), or is it a problem inside libGLcore? Of course, we don't get the source for that one, so unfortunately, I can't just check that...
If no one has seen it before, I can always email nVidia's linux-bugs address, but I figured it might have happened to someone.
Again, everything compiled with gcc 3.2 for the Athlon XP, glibc 2.2.5 with the linuxthreads addon, binutils 2.13, kernel 2.4.19 (with the -preempt patch, but I don't think that would do this), X 4.2, driver version 1.0-2960.
Differences I can think of between this installation and previous ones:
New gcc/g++ (it used to be 2.95.3)
New glibc (used to be 2.2.4-linuxthreads)
Just about everything compiled with -O3 -march=athlon-xp -mmmx -msse -m3dnow -mfpmath=sse
Thanks in advance for any ideas.