dfranx / sdbg

CLI shader debugger / testbed for SPIRV-VM
MIT License
14 stars 1 forks source link

Unresolved symbols glm::fma #1

Closed mgerhardy closed 4 years ago

mgerhardy commented 4 years ago

Getting unresolved symbols in ShaderDebugger. The output is:

Scanning dependencies of target ShaderDebugger
[  1%] Building CXX object libs/ShaderDebugger/CMakeFiles/ShaderDebugger.dir/src/CommonLibrary.cpp.o
[  3%] Linking CXX static library libShaderDebugger.a
[ 96%] Built target ShaderDebugger
[ 98%] Linking CXX executable bin/sdbg
/usr/bin/ld: libs/ShaderDebugger/libShaderDebugger.a(CommonLibrary.cpp.o): in function `sd::Common::lib_common_fma(bv_program_s*, unsigned char, bv_variable_s*)':
CommonLibrary.cpp:(.text+0x665a): undefined reference to `glm::vec<4, float, (glm::qualifier)0> glm::fma<glm::vec<4, float, (glm::qualifier)0> >(glm::vec<4, float, (glm::qualifier)0> const&, glm::vec<4, float, (glm::qualifier)0> const&, glm::vec<4, float, (glm::qualifier)0> const&)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/sdbg.dir/build.make:85: bin/sdbg] Fehler 1
make[1]: *** [CMakeFiles/Makefile2:96: CMakeFiles/sdbg.dir/all] Fehler 2
make: *** [Makefile:130: all] Fehler 2

My installed glm version is 0.9.9.7

dpkg -l | grep glm                                                                                                                            ✔  11:43:25
ii  libglm-dev                            0.9.9.7+ds-1                         all          C++ library for OpenGL GLSL type-based mathematics

This fixed the issue.

@@ -1442,7 +1444,7 @@ namespace sd
                                        glm::vec4 b = sd::AsVector<4, float>(args[1]);
                                        glm::vec4 c = sd::AsVector<4, float>(args[2]);

-                                       glm::vec4 vecData = glm::fma(a, b, c);
+                                       glm::vec4 vecData = a * b + c;

                                        bv_variable ret = Common::create_vec(prog, bv_type_float, vec->type->props.name_count);
                                        bv_object* retObj = bv_variable_get_object(ret);
dfranx commented 4 years ago

Thank you for reporting! I've updated the ShaderDebugger library.