From a71dfdd88c840fde87a13c66ef5992699d25a3d2 Mon Sep 17 00:00:00 2001 From: Philippe Houdoin Date: Fri, 26 Jun 2009 23:23:02 +0000 Subject: [PATCH] Rollback to use demangle_name_gcc3() for gcc3+ to get qualified method demangling. + Cleanup coding style violations. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31263 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/debugger/demangle/demangle.h | 8 +++----- src/apps/debugger/demangler/Demangler.cpp | 18 ++++++++++++------ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/add-ons/kernel/debugger/demangle/demangle.h b/src/add-ons/kernel/debugger/demangle/demangle.h index 5eb41103f6..5a435f42a4 100644 --- a/src/add-ons/kernel/debugger/demangle/demangle.h +++ b/src/add-ons/kernel/debugger/demangle/demangle.h @@ -7,15 +7,13 @@ #include -const char* -demangle_symbol(const char* mangledName, char* buffer, size_t bufferSize, + +const char* demangle_symbol(const char* mangledName, char* buffer, size_t bufferSize, bool* _isObjectMethod); -status_t -get_next_argument(uint32* _cookie, const char* mangledName, char* name, +status_t get_next_argument(uint32* _cookie, const char* mangledName, char* name, size_t nameSize, int32* _type, size_t* _argumentLength); - // gcc 2 const char* demangle_symbol_gcc2(const char* name, char* buffer, size_t bufferSize, bool* _isObjectMethod); diff --git a/src/apps/debugger/demangler/Demangler.cpp b/src/apps/debugger/demangler/Demangler.cpp index 6ddf7af08e..02e684294a 100644 --- a/src/apps/debugger/demangler/Demangler.cpp +++ b/src/apps/debugger/demangler/Demangler.cpp @@ -3,10 +3,10 @@ * Distributed under the terms of the MIT License. */ -#include - #include "Demangler.h" +#include + #include "demangle.h" @@ -17,11 +17,17 @@ Demangler::Demangle(const BString& mangledName) char buffer[1024]; const char* demangled; - demangled = demangle_symbol(mangledName.String(), buffer, + if (mangledName.Compare("_Z", 2) == 0) + demangled = demangle_name_gcc3(mangledName.String(), buffer, + sizeof(buffer)); + else + demangled = demangle_symbol_gcc2(mangledName.String(), buffer, sizeof(buffer), NULL); + if (demangled == NULL) - return mangledName; - + // name not mangled + return mangledName; + demangledName << demangled << "("; size_t length; @@ -29,7 +35,7 @@ Demangler::Demangle(const BString& mangledName) uint32 cookie = 0; while (get_next_argument(&cookie, mangledName.String(), buffer, sizeof(buffer), &type, &length) == B_OK) { - + if (i++ > 0) demangledName << ", ";