Skip to content

Commit 7490bc7

Browse files
committed
change to san_utils.cpp
1 parent 3c15029 commit 7490bc7

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

source/loader/layers/sanitizer/asan_interceptor.cpp

+1-7
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
#include "asan_interceptor.hpp"
1515
#include "ur_sanitizer_layer.hpp"
16-
#include <cxxabi.h>
1716

1817
namespace ur_sanitizer_layer {
1918

@@ -283,12 +282,7 @@ void SanitizerInterceptor::postLaunchKernel(ur_kernel_handle_t Kernel,
283282
auto KernelName = getKernelName(Kernel);
284283

285284
// Try to demangle the kernel name
286-
char *demangled_name =
287-
abi::__cxa_demangle(KernelName.c_str(), nullptr, nullptr, nullptr);
288-
if (demangled_name) {
289-
KernelName = demangled_name;
290-
free(demangled_name);
291-
}
285+
KernelName = DemangleName(KernelName);
292286

293287
context.logger.always("\n====ERROR: DeviceSanitizer: {} on {}",
294288
DeviceSanitizerFormat(AH->ErrorType),

source/loader/layers/sanitizer/common.hpp

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include <cassert>
1919
#include <cstdint>
20+
#include <string>
2021

2122
namespace ur_sanitizer_layer {
2223

@@ -107,4 +108,6 @@ bool DestroyShadowMem();
107108

108109
void *GetMemFunctionPointer(const char *);
109110

111+
std::string DemangleName(const std::string &name);
112+
110113
} // namespace ur_sanitizer_layer

source/loader/layers/sanitizer/linux/san_utils.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
#include "ur_sanitizer_layer.hpp"
1616

1717
#include <asm/param.h>
18+
#include <cxxabi.h>
1819
#include <dlfcn.h>
1920
#include <gnu/lib-names.h>
21+
#include <string>
2022
#include <sys/mman.h>
2123

2224
extern "C" __attribute__((weak)) void __asan_init(void);
@@ -84,4 +86,15 @@ void *GetMemFunctionPointer(const char *FuncName) {
8486
return ptr;
8587
}
8688

89+
std::string DemangleName(const std::string &name) {
90+
std::string result = name;
91+
char *demangled =
92+
abi::__cxa_demangle(name.c_str(), nullptr, nullptr, nullptr);
93+
if (demangled) {
94+
result = demangled;
95+
free(demangled);
96+
}
97+
return result;
98+
}
99+
87100
} // namespace ur_sanitizer_layer

0 commit comments

Comments
 (0)