diff --git a/projects/rocprofiler/src/core/intercept_queue.h b/projects/rocprofiler/src/core/intercept_queue.h index 1f2ccacca3..f18d643194 100644 --- a/projects/rocprofiler/src/core/intercept_queue.h +++ b/projects/rocprofiler/src/core/intercept_queue.h @@ -2,6 +2,7 @@ #define _SRC_CORE_INTERCEPT_QUEUE_H #include +#include #include #include @@ -160,7 +161,17 @@ class InterceptQueue { amd_runtime_loader_debug_info_t* dbg_info = reinterpret_cast( kernel_code->runtime_loader_kernel_symbol); const char* kernel_name = (dbg_info != NULL) ? dbg_info->kernel_name : NULL; - return (kernel_name != NULL) ? strdup(kernel_name) : NULL; + + // Kernel name is mangled name + // apply __cxa_demangle() to demangle it + char* funcname = NULL; + if (kernel_name != NULL) { + size_t funcnamesize = 0; + int status; + char* ret = abi::__cxa_demangle(kernel_name, NULL, &funcnamesize, &status); + funcname = (ret != 0) ? ret : strdup(kernel_name); + } + return funcname; } static mutex_t mutex_;