After I have emerged the new nvidia driver. It doesn't work for my card. the log told me I should downgrade the driver version. I did that, and it still doesn't work.
finally, I found that solution at http://gentoo-wiki.com/HOWTO_nVidia_Drivers
Error: libnvidia-tls.so.1: cannot handle TLS data
After re-emerging several times the nvidia drivers, it may happen that the glx module fails to load without any apparent reason, with the error "libnvidia-tls.so.1: cannot handle TLS data". This issue is caused by two files being inverted, /usr/lib/opengl/nvidia/tls/libnvidia-tls.so.1.0.8762 and /usr/lib/opengl/nvidia/no-tls/libnvidia-tls.so.1.0.8762. The fix is quite simple: swap the two files. Before trying this, check to see if the libnvidia-tls.so.1.0.8762 file in the no-tls folder is smaller than the one in the tls folder. If it is the case, then the files are already in the correct folder, so do not swap them. If it is not the case, then you can swap them with this command:
Code: Command to swap inverted files |
mv /usr/lib/opengl/nvidia/tls/libnvidia-tls.so.1.0.8762 /usr/lib/opengl/nvidia/tls/libnvidia-tls.so.1.0.8762.bak && mv /usr/lib/opengl/nvidia/no-tls/libnvidia-tls.so.1.0.8762 /usr/lib/opengl/nvidia/tls/libnvidia-tls.so.1.0.8762 && mv /usr/lib/opengl/nvidia/tls/libnvidia-tls.so.1.0.8762.bak /usr/lib/opengl/nvidia/no-tls/libnvidia-tls.so.1.0.8762 |
Restart X and the glx module should load fine, this time. If not, update your glibc!
Hopes this post could help you as you encounter the same problem.