diff options
author | Enrico Granata <egranata@apple.com> | 2015-06-25 19:17:04 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2015-06-25 19:17:04 +0000 |
commit | 2d061e20f6eb63c470fb0b5a1f1ae8f8fc6067a9 (patch) | |
tree | 1440d230452a129c75b003f15b0ef0954c6de2fd /lldb/source/Plugins/LanguageRuntime/ObjC | |
parent | 1f93e86768e827bbef5991178ced4bff5eff6214 (diff) | |
download | bcm5719-llvm-2d061e20f6eb63c470fb0b5a1f1ae8f8fc6067a9.tar.gz bcm5719-llvm-2d061e20f6eb63c470fb0b5a1f1ae8f8fc6067a9.zip |
Fix a bug where we were trying to reconstruct ivars of ObjC types from the runtime in "expression parser mode"
The expression parser mode allows UnknownAnyTy to make it all the way through, but that is bad for ivars because it means type layout fails horribly (as in, clang crashes)
This patch fixes the issue by using the "variables view mode", which masks UnknownAnyTy as empty-type, and pointer-to UnknownAnyTy as void*
This, in turn, allows LLDB to properly reconstruct ivars of IMP type in ObjC type - as per accompanying test case
Fixes rdar://21471326
llvm-svn: 240677
Diffstat (limited to 'lldb/source/Plugins/LanguageRuntime/ObjC')
-rw-r--r-- | lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp index 76ac690e717..2c4ecf4987c 100644 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp @@ -496,7 +496,7 @@ AppleObjCDeclVendor::FinishDecl(clang::ObjCInterfaceDecl *interface_decl) if (!name || !type) return false; - const bool for_expression = true; + const bool for_expression = false; if (log) log->Printf("[ AOTV::FD] Instance variable [%s] [%s], offset at %" PRIx64, name, type, offset_ptr); |