summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Potapenko <glider@google.com>2012-11-12 14:49:58 +0000
committerAlexander Potapenko <glider@google.com>2012-11-12 14:49:58 +0000
commit5a578119ad0bcdcf5b8642d15ac55cef4d8c7bbb (patch)
tree07171f3bb24e5a458c138a920b77117d6040ba46
parentafc550d9484b2d29fdbeb2baf1a9792c8e77708c (diff)
downloadbcm5719-llvm-5a578119ad0bcdcf5b8642d15ac55cef4d8c7bbb.tar.gz
bcm5719-llvm-5a578119ad0bcdcf5b8642d15ac55cef4d8c7bbb.zip
Don't use __cxa_demangle under MSVC (which doesn't have it)
llvm-svn: 167730
-rw-r--r--llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
index 79bdcedd3b6..f3e365981e4 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 "<invalid>" 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();
OpenPOWER on IntegriCloud