aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Symbol/ObjectFile.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2023-07-26 19:03:47 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-07-26 19:04:23 +0000
commit7fa27ce4a07f19b07799a767fc29416f3b625afb (patch)
tree27825c83636c4de341eb09a74f49f5d38a15d165 /lldb/source/Symbol/ObjectFile.cpp
parente3b557809604d036af6e00c60f012c2025b59a5e (diff)
Diffstat (limited to 'lldb/source/Symbol/ObjectFile.cpp')
-rw-r--r--lldb/source/Symbol/ObjectFile.cpp32
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