[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 GitLab Migration User changed: What|Removed |Added Resolution|--- |MOVED Status|NEW |RESOLVED --- Comment #11 from GitLab Migration User --- -- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/1008. -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 --- Comment #10 from Emil Velikov--- Right, if we set CFLAGS/CC or friends at autogen.sh/configure stage interacts strange with the test in configure - now sure who's to "blame" there. On the other hand, overriding the CC/CXX at make times proves of little worth since, the compiler (seems deliberately) leaves out the -lasan link (be that static or shared). Overriding LDFLAGS="-Wl,-fsanitize=address" makes things even worse since a) the static objects (nouveau compiler, gen_matypes) error at link time, and as we side stepping this, a ton of nir related unresolved symbols even on targets which do not use NIR. Plus we still get the unresolved asan symbols. For example: $ ../autogen.sh --without-dri-drivers --without-vulkan-drivers --disable-egl --disable-gbm --disable-gles1 --disable-gles2 --with-gallium-drivers=nouveau,swrast --disable-vdpau --disable-xvmc --disable-va --enable-nine $ make V=1 CC="gcc -fsanitize=address" CXX="g++ -fsanitize=address" LDFLAGS="-Wl,-fsanitize=address" LIBS="-lasan" .../src/gallium/auxiliary/.libs/libgallium.a(tgsi_to_nir.o): In function `nir_build_imm': .../src/compiler/nir/nir_builder.h:196: undefined reference to `nir_load_const_instr_create' .../src/gallium/auxiliary/.libs/libgallium.a(tgsi_to_nir.o): In function `nir_builder_instr_insert': .../src/compiler/nir/nir_builder.h:65: undefined reference to `nir_instr_insert' .../src/gallium/auxiliary/.libs/libgallium.a(tgsi_to_nir.o): In function `nir_imov_alu': and so on. Hence I'm thinking about: - why/how we don't get the NIR related issues w/o the sanitizer ? Seems like gcc/clang is having some strange change of behaviour. - we might want to track and build the ttn (tgsi to nir) parts only as needed, but it will be very fragile - gcc/clang should really have a way to pull the asan symbols into the final object without the special LIBS="-lasan" -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 --- Comment #9 from Jeff Smith--- A few more things I found... Either with or without a fixed libtool, libdl detection is still affected when -fsanitize=address is set. A more precise way to handle this than adding -ldl to LIBS, is to set DLOPEN_LIBS="-ldl" Regarding the problems in d3dadapter9, it seems that there are other things going on: - Linking with "-Wl,--no-undefined" seems to interfere with "-fsanitize=address", making LIBS="-lasan" necessary in this case. - Building with "-fsanitize=address" seems to affect the building of libgallium.a such that when combined with using "-Wl,--no-undefined", "$(top_builddir)/src/compiler/nir/libnir.la" must be added to d3dadapter9_la_LIBADD in the d3dadapter9 Makefile. -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 --- Comment #8 from Vedran Miletić--- That is, the compile error result of these two configurations is equivalent: $ ./autogen.sh CFLAGS="-fsanitize=address" CXXFLAGS="-fsanitize=address" LIBS="-lasan" $ ./autogen.sh CC="gcc -fsanitize=address" CXX="g++ -fsanitize=address" -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 --- Comment #7 from Vedran Miletić--- (In reply to Vedran Miletić from comment #6) > (In reply to Emil Velikov from comment #4) > > Note: I'm wondering if the explicit -lasan isn't agcc/clang bug. Can we get > > a reference reading why we need it, considering the explicit -f toggle > > we pass to gcc/clang. > > It's not required, it's added automatically. I started with the wrong > assumption here. > Correction: it is not required when building something that is not Mesa (e.g. a simple one file C/C++ program). When building Mesa specifying -lasan is required. -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 --- Comment #6 from Vedran Miletić--- (In reply to Emil Velikov from comment #4) > Note: I'm wondering if the explicit -lasan isn't agcc/clang bug. Can we get > a reference reading why we need it, considering the explicit -f toggle > we pass to gcc/clang. It's not required, it's added automatically. I started with the wrong assumption here. > -dl is (module bugs of course) already passed then libGL/libGLX_mesa is > build. > > As pointed out we don't have a libtool which honours fsanitize, so I'd > suggest adding it to the CC/CXX variables like below. > > ./autogen.sh CC="gcc -fsanitize=address" CXX="g++ -fsanitize=address" > This fails the same way as the ./autogen.sh CFLAGS="-fsanitize=address" CXXFLAGS="-fsanitize=address" -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 --- Comment #5 from Jeff Smith--- (In reply to Emil Velikov from comment #4) > Note: I'm wondering if the explicit -lasan isn't agcc/clang bug. Can we get > a reference reading why we need it, considering the explicit -f toggle > we pass to gcc/clang. I don't have a reference, but from observation, -fsanitize=address does two things: - in the compile stage, it instruments the code, which adds references to symbols in libasan. - in the link stage, it adds libasan (and libdl and possibly others) to the set of libraries to link. Since libtool is not passing -fsanitize=address on to the compiler at link time, the -lasan use is just one work-around. Also, -fsanitize=address messes with configure's detection of libdl. Again, if -fsanitize=address was working properly at link-time, it probably would not matter. -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 --- Comment #4 from Emil Velikov--- -dl is (module bugs of course) already passed then libGL/libGLX_mesa is build. As pointed out we don't have a libtool which honours fsanitize, so I'd suggest adding it to the CC/CXX variables like below. ./autogen.sh CC="gcc -fsanitize=address" CXX="g++ -fsanitize=address" Note: I'm wondering if the explicit -lasan isn't agcc/clang bug. Can we get a reference reading why we need it, considering the explicit -f toggle we pass to gcc/clang. -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 --- Comment #3 from Vedran Miletić--- (In reply to Jeff Smith from comment #1) > While you shouldn't have needed LIBS="..." at all, there is a deficiency in > libtool that was fixed in 2015: > http://git.savannah.gnu.org/cgit/libtool.git/commit/ > ?id=a5c6466528c060cc4660ad0319c00740db0e42ba, but no release has been made > since. > > That said, with LIBS="-lasan -dl" it does build for me. Interesting. Shouldn't -ldl already be a part of the linker commandline? $ ldd /usr/local/lib64/libGL.so | grep dl libdl.so.2 => /lib64/libdl.so.2 (0x7f3a9fbc8000) -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 --- Comment #2 from Hi-Angel--- FWIW, build with CFLAGS="-fsanitize=address" CXXFLAGS="-fsanitize=address" LIBS="-ldl -lasan" ./autogen.sh CC="gcc -m32" CXX="g++ -m32" --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu --enable-nine --with-dri-drivers="" --disable-xvmc --disable-va --disable-vdpau --with-gallium-drivers="r600,swrast" --enable-dri3 --enable-profile --with-clang-libdir=/usr/lib32 ends up for me with a bunch of undefined references about nir_* object files for building d3dadapter9. -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 --- Comment #1 from Jeff Smith--- While you shouldn't have needed LIBS="..." at all, there is a deficiency in libtool that was fixed in 2015: http://git.savannah.gnu.org/cgit/libtool.git/commit/?id=a5c6466528c060cc4660ad0319c00740db0e42ba, but no release has been made since. That said, with LIBS="-lasan -dl" it does build for me. -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [Bug 100120] Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan)
https://bugs.freedesktop.org/show_bug.cgi?id=100120 Bug ID: 100120 Summary: Mesa fails to build with gcc address sanitizer (-fsanitize=address -lasan) Product: Mesa Version: git Hardware: All OS: All Status: NEW Severity: major Priority: medium Component: Mesa core Assignee: mesa-dev@lists.freedesktop.org Reporter: ved...@miletic.net QA Contact: mesa-dev@lists.freedesktop.org $ git clone ... $ ./autogen.sh CFLAGS="-fsanitize=address" CXXFLAGS="-fsanitize=address" LIBS="-lasan" $ make -j (...) make[4]: Entering directory '/home/vedranm/workspace/mesa/src/glx' CCLD libGL.la ./.libs/libglx.a(dri_common.o): In function `driOpenDriver': dri_common.c:(.text+0x528): undefined reference to `dlerror' ./.libs/libglx.a(dri_common.o): In function `driGetDriverExtensions': dri_common.c:(.text+0x6b8): undefined reference to `dlsym' dri_common.c:(.text+0x6dc): undefined reference to `dlerror' dri_common.c:(.text+0x71e): undefined reference to `dlsym' dri_common.c:(.text+0x72e): undefined reference to `dlerror' ./.libs/libglx.a(dri_glx.o): In function `glXGetDriverConfig': dri_glx.c:(.text+0x76f): undefined reference to `dlsym' ./.libs/libglx.a(dri_glx.o): In function `driCreateScreen': dri_glx.c:(.text+0x3977): undefined reference to `dlsym' dri_glx.c:(.text+0x398d): undefined reference to `dlerror' collect2: error: ld returned 1 exit status Makefile:808: recipe for target 'libGL.la' failed make[4]: *** [libGL.la] Error 1 make[4]: Leaving directory '/home/vedranm/workspace/mesa/src/glx' Makefile:902: recipe for target 'all-recursive' failed make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory '/home/vedranm/workspace/mesa/src/glx' Makefile:856: recipe for target 'all-recursive' failed make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory '/home/vedranm/workspace/mesa/src' Makefile:647: recipe for target 'all' failed make[1]: *** [all] Error 2 make[1]: Leaving directory '/home/vedranm/workspace/mesa/src' Makefile:644: recipe for target 'all-recursive' failed make: *** [all-recursive] Error 1 -- You are receiving this mail because: You are the assignee for the bug. You are the QA Contact for the bug.___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev