Building mesa master fails when --with--llvm-shared-libs is used like so: g++ -L/usr/lib/llvm-3.0/lib -lpthread -lffi -ldl -lm lp_test_round.o lp_test_main.o -o lp_test_round -Wl,--start-group -L../../auxiliary/ -lgallium libllvmpipe.a -lLLVM-3.0 -lXext -lXdamage -lXfixes -lX11-xcb -lX11 -lxcb-glx -lxcb -lXxf86vm -ldrm -lm -lpthread -ldl -Wl,--end-group /usr/bin/ld: ../../auxiliary//libgallium.a(u_dl.o): undefined reference to symbol 'dlopen@@GLIBC_2.1' /usr/bin/ld: note: 'dlopen@@GLIBC_2.1' is defined in DSO /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/libdl.so so try adding it to the linker command line /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/libdl.so: could not read symbols: Invalid operation collect2: ld returned 1 exit status make[4]: *** [lp_test_blend] Error 1 make[4]: *** Waiting for unfinished jobs.... make[4]: Leaving directory `/home/sarvatt/mesa/src/gallium/drivers/llvmpipe' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/home/sarvatt/mesa/src/gallium/drivers' make[2]: *** [default] Error 1 make[2]: Leaving directory `/home/sarvatt/mesa/src/gallium' make[1]: *** [subdirs] Error 1 make[1]: Leaving directory `/home/sarvatt/mesa/src' make: *** [default] Error 1 I bisected it down to this commit 0b0f4628d6fb8276a9f1c336a785a838b602bca8 is the first bad commit commit 0b0f4628d6fb8276a9f1c336a785a838b602bca8 Author: James Benton <jbenton@vmware.com> Date: Wed Apr 18 15:25:34 2012 +0100 llvmpipe: Added support for color masks in AoS blending. Signed-off-by: José Fonseca <jfonseca@vmware.com> :040000 040000 5521841f3b528eac2ae62ed61eb43c7ffed7f3c9 816e632242eccd9401f90212dfd2332c678999ce M src Full bisect log: git bisect start # good: [2d75a1e25e6ddcd65964d30fc3c782df2e880cc4] glsl: Initialize member variable in ir_copy_propagation_elements_visitor. git bisect good 2d75a1e25e6ddcd65964d30fc3c782df2e880cc4 # bad: [51691f0767f6a75a1f549cd979a878a0ad12a228] darwin: Use ASL for logging git bisect bad 51691f0767f6a75a1f549cd979a878a0ad12a228 # bad: [6cd76b800bed70435f499c6c498a487a5056a731] gallivm: Add a lp_build_const_func_pointer() helper. git bisect bad 6cd76b800bed70435f499c6c498a487a5056a731 # good: [6d5efe96ee710ca1dd5f745f74a5bbfa4fd42fd9] dri/nouveau: Add general support for compressed formats. git bisect good 6d5efe96ee710ca1dd5f745f74a5bbfa4fd42fd9 # bad: [9bc58d941ac32d10c6b4c601e0c4c6e00876d738] llvmpipe: Check when a shader does not satisfy 0 < imm < 1. git bisect bad 9bc58d941ac32d10c6b4c601e0c4c6e00876d738 # good: [85d09d1c61d3e5ab2c2ae6fc74a30ea6a572f25e] gallivm: added aligned pointer get/set git bisect good 85d09d1c61d3e5ab2c2ae6fc74a30ea6a572f25e # bad: [c426e63aa064debc23f9819c3862f357f1726bce] gallivm: fixed memory leak in lp_build_tgsi_aos git bisect bad c426e63aa064debc23f9819c3862f357f1726bce # bad: [0b0f4628d6fb8276a9f1c336a785a838b602bca8] llvmpipe: Added support for color masks in AoS blending. git bisect bad 0b0f4628d6fb8276a9f1c336a785a838b602bca8 Options used: ./autogen.sh --with-driver=dri --with-dri-drivers=" r200 radeon nouveau i915 i965" --with-dri-driverdir=/usr/lib/x86_64-linux-gnu/dri --enable-glx-tls --enable-shared-dricore --enable-shared-glapi --enable-texture-float --with-llvm-shared-libs --enable-xa --enable-driglx-direct --with-egl-platforms="x11 drm wayland" --enable-gallium-llvm --with-gallium-drivers=" nouveau r600 r300 svga swrast" --enable-gles1 --enable-gles2 --enable-openvg --enable-gallium-egl --disable-glu CFLAGS="-Wall -g -O2" CXXFLAGS="-Wall -g -O2" Dropping --with-llvm-shared-libs does work.
I have the same problem. The problem in llvmpipe driver. mklib: Making Linux static library: libllvmpipe.a ar: creating libllvmpipe.a g++ -L/usr/lib -lpthread -ldl -lm lp_test_format.o lp_test_main.o -o lp_test_format -Wl,--start-group -L../../auxiliary/ -lgallium libllvmpipe.a -lLLVM-3.2svn -lXext -lXdamage -lXfixes -lX11-xcb -lX11 -lxcb-glx -lxcb -lXxf86vm -ldrm -lm -lpthread -ldl -Wl,--end-group g++ -L/usr/lib -lpthread -ldl -lm lp_test_arit.o lp_test_main.o -o lp_test_arit -Wl,--start-group -L../../auxiliary/ -lgallium libllvmpipe.a -lLLVM-3.2svn -lXext -lXdamage -lXfixes -lX11-xcb -lX11 -lxcb-glx -lxcb -lXxf86vm -ldrm -lm -lpthread -ldl -Wl,--end-group g++ -L/usr/lib -lpthread -ldl -lm lp_test_blend.o lp_test_main.o -o lp_test_blend -Wl,--start-group -L../../auxiliary/ -lgallium libllvmpipe.a -lLLVM-3.2svn -lXext -lXdamage -lXfixes -lX11-xcb -lX11 -lxcb-glx -lxcb -lXxf86vm -ldrm -lm -lpthread -ldl -Wl,--end-group g++ -L/usr/lib -lpthread -ldl -lm lp_test_conv.o lp_test_main.o -o lp_test_conv -Wl,--start-group -L../../auxiliary/ -lgallium libllvmpipe.a -lLLVM-3.2svn -lXext -lXdamage -lXfixes -lX11-xcb -lX11 -lxcb-glx -lxcb -lXxf86vm -ldrm -lm -lpthread -ldl -Wl,--end-group /usr/lib/gcc/i586-suse-linux/4.7/../../../../i586-suse-linux/bin/ld: ../../auxiliary//libgallium.a(u_dl.o): undefined reference to symbol 'dlopen@@GLIBC_2.1' /usr/lib/gcc/i586-suse-linux/4.7/../../../../i586-suse-linux/bin/ld: note: 'dlopen@@GLIBC_2.1' is defined in DSO /usr/lib/libdl.so so try adding it to the linker command line /usr/lib/libdl.so: could not read symbols: Invalid operation collect2: error: ld returned 1 exit status gmake[4]: *** [lp_test_blend] Error 1 gmake[4]: *** Waiting for unfinished jobs.... gmake[4]: Leaving directory `/home/abuild/rpmbuild/BUILD/mesa/src/gallium/drivers/llvmpipe' gmake[3]: *** [all-recursive] Error 1 gmake[3]: Leaving directory `/home/abuild/rpmbuild/BUILD/mesa/src/gallium/drivers' gmake[2]: *** [default] Error 1 gmake[2]: Leaving directory `/home/abuild/rpmbuild/BUILD/mesa/src/gallium' make[1]: *** [subdirs] Error 1 make[1]: Leaving directory `/home/abuild/rpmbuild/BUILD/mesa/src' make: *** [default] Error 1 error: Bad exit status from /var/tmp/rpm-tmp.wiHQfL (%build)
I don't see how this commit changes anything. It seems this is a linking bug, that was always there, but latent. And this commit simply slightly changed the order that symbols are linked. -ldl is being passed to the linker, so I don't see why it dlopen symbol is not found. I read from another change that SUSE defauls to building LLVM with clang, may be that's related.
(In reply to comment #2) > I don't see how this commit changes anything. > > It seems this is a linking bug, that was always there, but latent. And this > commit simply slightly changed the order that symbols are linked. > > -ldl is being passed to the linker, so I don't see why it dlopen symbol is not > found. > > I read from another change that SUSE defauls to building LLVM with clang, may > be that's related. But with the same version of llvm mesa master before Wed Apr 18 build without problem, after Wed Apr 18 fails with --with--llvm-shared-libs. There must be a reason.
*** This bug has been marked as a duplicate of bug 52167 ***
Unduplicate: this is fixed, while #52167 still not.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.