16#include "llvm/ADT/StringExtras.h"
17#include "llvm/Demangle/Demangle.h"
35 llvm::StringRef rest = name.drop_front(2);
36 return (!rest.empty() && llvm::isDigit(rest.front())) || name ==
"_Dmain";
59 return file_path.ends_with_insensitive(
".d") ||
60 file_path.ends_with_insensitive(
".di");
68 char *demangled_cstr = llvm::dlangDemangle(mangled_str);
71 if (demangled_cstr && demangled_cstr[0])
72 LLDB_LOG(log,
"demangled dlang: {0} -> \"{1}\"", mangled_str,
75 LLDB_LOG(log,
"demangled dlang: {0} -> error: failed to demangle",
81 demangled.
name = demangled_cstr;
82 std::free(demangled_cstr);
static bool IsDMangledName(llvm::StringRef name)
Returns true if name, which starts with "_D", is a D mangled name.
static Mangled::ManglingScheme g_d_scheme
The mangling scheme that this plugin registered.
#define LLDB_LOG(log,...)
The LLDB_LOG* macros defined below are the way to emit log messages.
#define LLDB_PLUGIN_DEFINE(PluginName)
A uniqued constant string class.
llvm::StringRef GetStringRef() const
Get the string value as a llvm::StringRef.
static Language * CreateInstance(lldb::LanguageType language)
bool IsSourceFile(llvm::StringRef file_path) const override
DemangledName DemangleSymbol(ConstString mangled, Mangled::ManglingScheme scheme, const DemangleOptions &options) const override
Demangle mangled, a name mangled with scheme, a scheme that this language registered with Mangled::Re...
static llvm::StringRef GetPluginNameStatic()
A class that handles mangled names.
static ManglingScheme RegisterManglingScheme(llvm::ArrayRef< llvm::StringRef > prefixes, lldb::LanguageType language, ManglingSchemeMatcher matches=nullptr)
Register a mangling scheme for language.
static void UnregisterManglingScheme(ManglingScheme scheme)
Stop recognizing the names of scheme, a scheme returned by RegisterManglingScheme().
static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description, ABICreateInstance create_callback)
static bool UnregisterPlugin(ABICreateInstance create_callback)
A class that represents a running process on the host machine.
Log * GetLog(Cat mask)
Retrieve the Log object for the channel associated with the given log enum.
LanguageType
Programming language type.
How to demangle a name in DemangleSymbol().
A demangled name and, if requested, where its parts begin and end.
std::string name
Empty if the name couldn't be demangled.