From 5a578119ad0bcdcf5b8642d15ac55cef4d8c7bbb Mon Sep 17 00:00:00 2001 From: Alexander Potapenko Date: Mon, 12 Nov 2012 14:49:58 +0000 Subject: [PATCH] Don't use __cxa_demangle under MSVC (which doesn't have it) llvm-svn: 167730 --- llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp index 79bdced..f3e3659 100644 --- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp +++ b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp @@ -287,9 +287,11 @@ static ModuleInfo *getOrCreateModuleInfo(const std::string &ModuleName) { return Info; } -// Assume that __cxa_demangle is provided by libcxxabi. +#if !defined(_MSC_VER) +// Assume that __cxa_demangle is provided by libcxxabi (except for Windows). extern "C" char *__cxa_demangle(const char *mangled_name, char *output_buffer, size_t *length, int *status); +#endif static void printDILineInfo(DILineInfo LineInfo) { // By default, DILineInfo contains "" for function/filename it @@ -300,6 +302,7 @@ static void printDILineInfo(DILineInfo LineInfo) { std::string FunctionName = LineInfo.getFunctionName(); if (FunctionName == kDILineInfoBadString) FunctionName = kSymbolizerBadString; +#if !defined(_MSC_VER) if (Demangle) { int status = 0; char *DemangledName = __cxa_demangle( @@ -309,6 +312,7 @@ static void printDILineInfo(DILineInfo LineInfo) { free(DemangledName); } } +#endif outs() << FunctionName << "\n"; } std::string Filename = LineInfo.getFileName(); -- 2.7.4