|
LLDB mainline
|
#include "lldb/Core/Mangled.h"#include "lldb/Core/DataFileCache.h"#include "lldb/Core/DemangledNameInfo.h"#include "lldb/Core/RichManglingContext.h"#include "lldb/Target/Language.h"#include "lldb/Utility/ConstString.h"#include "lldb/Utility/DataEncoder.h"#include "lldb/Utility/LLDBLog.h"#include "lldb/Utility/Log.h"#include "lldb/Utility/RegularExpression.h"#include "lldb/Utility/Stream.h"#include "lldb/lldb-enumerations.h"#include "llvm/ADT/StringExtras.h"#include "llvm/ADT/StringRef.h"#include "llvm/Demangle/Demangle.h"#include "llvm/Support/Compiler.h"#include <mutex>#include <string>#include <string_view>#include <utility>#include <cstdlib>#include <cstring>Go to the source code of this file.
Enumerations | |
| enum | MangledEncoding { Empty = 0u , DemangledOnly = 1u , MangledOnly = 2u , MangledAndDemangled = 3u } |
Functions | |
| static char * | GetMSVCDemangledStr (llvm::StringRef M) |
| static std::pair< char *, DemangledNameInfo > | GetItaniumDemangledStr (const char *M) |
| static char * | GetRustV0DemangledStr (llvm::StringRef M) |
| static char * | GetDLangDemangledStr (llvm::StringRef M) |
| Stream & | operator<< (Stream &s, const Mangled &obj) |
| enum MangledEncoding |
| Enumerator | |
|---|---|
| Empty | If the Mangled object has neither a mangled name or demangled name we can encode the object with one zero byte using the Empty enumeration. |
| DemangledOnly | If the Mangled object has only a demangled name and no mangled named, we can encode only the demangled name. |
| MangledOnly | If the mangle name can calculate the demangled name (it is the mangled/demangled counterpart), then we only need to encode the mangled name as the demangled name can be recomputed. |
| MangledAndDemangled | If we have a Mangled object with two different names that are not related then we need to save both strings. This can happen if we have a name that isn't a true mangled name, but we want to be able to lookup a symbol by name and type in the symbol table. We do this for Objective C symbols like "OBJC_CLASS_$_NSValue" where the mangled named will be set to "OBJC_CLASS_$_NSValue" and the demangled name will be manually set to "NSValue". If we tried to demangled the name "OBJC_CLASS_$_NSValue" it would fail, but in these cases we want these unrelated names to be preserved. |
Definition at line 454 of file Mangled.cpp.
|
static |
Definition at line 212 of file Mangled.cpp.
References lldb_private::Demangle, lldb_private::GetLog(), and LLDB_LOG.
Referenced by lldb_private::Mangled::GetDemangledNameImpl().
|
static |
Definition at line 161 of file Mangled.cpp.
References lldb_private::Demangle, lldb_private::GetLog(), lldb_private::DemangledNameInfo::hasBasename(), LLDB_LOGF, and lldb_private::TrackingOutputBuffer::NameInfo.
Referenced by lldb_private::Mangled::GetDemangledNameImpl().
|
static |
Definition at line 143 of file Mangled.cpp.
References lldb_private::Demangle, lldb_private::GetLog(), and LLDB_LOGF.
Referenced by lldb_private::Mangled::GetDemangledNameImpl(), and lldb_private::Mangled::GetRichManglingInfo().
|
static |
Definition at line 198 of file Mangled.cpp.
References lldb_private::Demangle, lldb_private::GetLog(), and LLDB_LOG.
Referenced by lldb_private::Mangled::GetDemangledNameImpl().
Definition at line 439 of file Mangled.cpp.
References lldb_private::Mangled::GetDemangledName(), and lldb_private::Mangled::GetMangledName().