diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-07-26 19:03:47 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2023-07-26 19:04:23 +0000 |
| commit | 7fa27ce4a07f19b07799a767fc29416f3b625afb (patch) | |
| tree | 27825c83636c4de341eb09a74f49f5d38a15d165 /lldb/source/Symbol/ObjectFile.cpp | |
| parent | e3b557809604d036af6e00c60f012c2025b59a5e (diff) | |
Diffstat (limited to 'lldb/source/Symbol/ObjectFile.cpp')
| -rw-r--r-- | lldb/source/Symbol/ObjectFile.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lldb/source/Symbol/ObjectFile.cpp b/lldb/source/Symbol/ObjectFile.cpp index 6d4fb22631bc..bebc9589418c 100644 --- a/lldb/source/Symbol/ObjectFile.cpp +++ b/lldb/source/Symbol/ObjectFile.cpp @@ -356,6 +356,7 @@ AddressClass ObjectFile::GetAddressClass(addr_t file_addr) { case eSectionTypeDWARFAppleNamespaces: case eSectionTypeDWARFAppleObjC: case eSectionTypeDWARFGNUDebugAltLink: + case eSectionTypeCTF: return AddressClass::eDebug; case eSectionTypeEHFrame: case eSectionTypeARMexidx: @@ -761,3 +762,34 @@ uint32_t ObjectFile::GetCacheHash() { m_cache_hash = llvm::djbHash(strm.GetString()); return *m_cache_hash; } + +namespace llvm { +namespace json { + +bool fromJSON(const llvm::json::Value &value, + lldb_private::ObjectFile::Type &type, llvm::json::Path path) { + if (auto str = value.getAsString()) { + type = llvm::StringSwitch<ObjectFile::Type>(*str) + .Case("corefile", ObjectFile::eTypeCoreFile) + .Case("executable", ObjectFile::eTypeExecutable) + .Case("debuginfo", ObjectFile::eTypeDebugInfo) + .Case("dynamiclinker", ObjectFile::eTypeDynamicLinker) + .Case("objectfile", ObjectFile::eTypeObjectFile) + .Case("sharedlibrary", ObjectFile::eTypeSharedLibrary) + .Case("stublibrary", ObjectFile::eTypeStubLibrary) + .Case("jit", ObjectFile::eTypeJIT) + .Case("unknown", ObjectFile::eTypeUnknown) + .Default(ObjectFile::eTypeInvalid); + + if (type == ObjectFile::eTypeInvalid) { + path.report("invalid object type"); + return false; + } + + return true; + } + path.report("expected string"); + return false; +} +} // namespace json +} // namespace llvm |
