FreeBSD uses libcxxrt (not GCC) for __cxa_demangle which doesn't modify status variable on success thus makes Beignet rely on unitialized value. Instead, assume it'd return NULL on failure.
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213732 --- backend/src/llvm/llvm_gen_backend.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/llvm/llvm_gen_backend.hpp b/backend/src/llvm/llvm_gen_backend.hpp index 1ab77c9d..fde5e705 100644 --- a/backend/src/llvm/llvm_gen_backend.hpp +++ b/backend/src/llvm/llvm_gen_backend.hpp @@ -84,7 +84,7 @@ namespace gbe if (it == map.end()) { int status; char *realName = abi::__cxa_demangle(symbol.c_str(), NULL, NULL, &status); - if (status == 0) { + if (realName) { std::string realFnName(realName), stripName; stripName = realFnName.substr(0, realFnName.find("(")); it = map.find(stripName); _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/beignet