xiaobai created this revision. xiaobai added reviewers: compnerd, labath, JDevlieghere, davide.
LookupRuntimeSymbol seems like a general LanguageRuntime method. Although no other language runtime currently implements this, there's no reason another language runtime couldn't use this. Additionally, this breaks IRExecutionUnit's dependency on ObjCLanguageRuntime. https://reviews.llvm.org/D62795 Files: include/lldb/Target/LanguageRuntime.h include/lldb/Target/ObjCLanguageRuntime.h source/Expression/IRExecutionUnit.cpp Index: source/Expression/IRExecutionUnit.cpp =================================================================== --- source/Expression/IRExecutionUnit.cpp +++ source/Expression/IRExecutionUnit.cpp @@ -24,7 +24,7 @@ #include "lldb/Symbol/SymbolFile.h" #include "lldb/Symbol/SymbolVendor.h" #include "lldb/Target/ExecutionContext.h" -#include "lldb/Target/ObjCLanguageRuntime.h" +#include "lldb/Target/LanguageRuntime.h" #include "lldb/Target/Target.h" #include "lldb/Utility/DataBufferHeap.h" #include "lldb/Utility/DataExtractor.h" @@ -902,9 +902,8 @@ return LLDB_INVALID_ADDRESS; } - ObjCLanguageRuntime *runtime = process_sp->GetObjCLanguageRuntime(); - - if (runtime) { + if (LanguageRuntime *runtime = + process_sp->GetLanguageRuntime(lldb::eLanguageTypeObjC)) { for (const SearchSpec &spec : specs) { lldb::addr_t symbol_load_addr = runtime->LookupRuntimeSymbol(spec.name); Index: include/lldb/Target/ObjCLanguageRuntime.h =================================================================== --- include/lldb/Target/ObjCLanguageRuntime.h +++ include/lldb/Target/ObjCLanguageRuntime.h @@ -264,13 +264,6 @@ virtual size_t GetByteOffsetForIvar(CompilerType &parent_qual_type, const char *ivar_name); - // Given the name of an Objective-C runtime symbol (e.g., ivar offset - // symbol), try to determine from the runtime what the value of that symbol - // would be. Useful when the underlying binary is stripped. - virtual lldb::addr_t LookupRuntimeSymbol(ConstString name) { - return LLDB_INVALID_ADDRESS; - } - bool HasNewLiteralsAndIndexing() { if (m_has_new_literals_and_indexing == eLazyBoolCalculate) { if (CalculateHasNewLiteralsAndIndexing()) Index: include/lldb/Target/LanguageRuntime.h =================================================================== --- include/lldb/Target/LanguageRuntime.h +++ include/lldb/Target/LanguageRuntime.h @@ -166,6 +166,13 @@ return false; } + // Given the name of a runtime symbol (e.g. in Objective-C, an ivar offset + // symbol), try to determine from the runtime what the value of that symbol + // would be. Useful when the underlying binary is stripped. + virtual lldb::addr_t LookupRuntimeSymbol(ConstString name) { + return LLDB_INVALID_ADDRESS; + } + protected: // Classes that inherit from LanguageRuntime can see and modify these
Index: source/Expression/IRExecutionUnit.cpp =================================================================== --- source/Expression/IRExecutionUnit.cpp +++ source/Expression/IRExecutionUnit.cpp @@ -24,7 +24,7 @@ #include "lldb/Symbol/SymbolFile.h" #include "lldb/Symbol/SymbolVendor.h" #include "lldb/Target/ExecutionContext.h" -#include "lldb/Target/ObjCLanguageRuntime.h" +#include "lldb/Target/LanguageRuntime.h" #include "lldb/Target/Target.h" #include "lldb/Utility/DataBufferHeap.h" #include "lldb/Utility/DataExtractor.h" @@ -902,9 +902,8 @@ return LLDB_INVALID_ADDRESS; } - ObjCLanguageRuntime *runtime = process_sp->GetObjCLanguageRuntime(); - - if (runtime) { + if (LanguageRuntime *runtime = + process_sp->GetLanguageRuntime(lldb::eLanguageTypeObjC)) { for (const SearchSpec &spec : specs) { lldb::addr_t symbol_load_addr = runtime->LookupRuntimeSymbol(spec.name); Index: include/lldb/Target/ObjCLanguageRuntime.h =================================================================== --- include/lldb/Target/ObjCLanguageRuntime.h +++ include/lldb/Target/ObjCLanguageRuntime.h @@ -264,13 +264,6 @@ virtual size_t GetByteOffsetForIvar(CompilerType &parent_qual_type, const char *ivar_name); - // Given the name of an Objective-C runtime symbol (e.g., ivar offset - // symbol), try to determine from the runtime what the value of that symbol - // would be. Useful when the underlying binary is stripped. - virtual lldb::addr_t LookupRuntimeSymbol(ConstString name) { - return LLDB_INVALID_ADDRESS; - } - bool HasNewLiteralsAndIndexing() { if (m_has_new_literals_and_indexing == eLazyBoolCalculate) { if (CalculateHasNewLiteralsAndIndexing()) Index: include/lldb/Target/LanguageRuntime.h =================================================================== --- include/lldb/Target/LanguageRuntime.h +++ include/lldb/Target/LanguageRuntime.h @@ -166,6 +166,13 @@ return false; } + // Given the name of a runtime symbol (e.g. in Objective-C, an ivar offset + // symbol), try to determine from the runtime what the value of that symbol + // would be. Useful when the underlying binary is stripped. + virtual lldb::addr_t LookupRuntimeSymbol(ConstString name) { + return LLDB_INVALID_ADDRESS; + } + protected: // Classes that inherit from LanguageRuntime can see and modify these
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits