From 0046d5e4a1e40e457fc74ddbc868befe5c2fb92a Mon Sep 17 00:00:00 2001 From: Evgeny Date: Wed, 13 Dec 2017 16:51:43 -0600 Subject: [PATCH] C++ kernel name demangling [ROCm/rocprofiler commit: 8f6ee97b131eb1bb0ba56d09700520683691f8f0] --- projects/rocprofiler/src/core/intercept_queue.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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_;