[Lldb-commits] [lldb] r174557 - Fixed a problem that would cause LLDB to crash
Sean Callanan
scallanan at apple.com
Wed Feb 6 15:21:59 PST 2013
Author: spyffe
Date: Wed Feb 6 17:21:59 2013
New Revision: 174557
URL: http://llvm.org/viewvc/llvm-project?rev=174557&view=rev
Log:
Fixed a problem that would cause LLDB to crash
if it encountered bad debug information. This
debug information had an Objective-C method whose
selector disagreed with the true number of arguments
to that method.
<rdar://problem/12992864>
Modified:
lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
lldb/trunk/source/Symbol/ClangASTContext.cpp
Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp?rev=174557&r1=174556&r2=174557&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp (original)
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Wed Feb 6 17:21:59 2013
@@ -6309,6 +6309,13 @@ SymbolFileDWARF::ParseType (const Symbol
LinkDeclContextToDIE(ClangASTContext::GetAsDeclContext(objc_method_decl), die);
GetClangASTContext().SetMetadataAsUserID ((uintptr_t)objc_method_decl, MakeUserID(die->GetOffset()));
}
+ else
+ {
+ GetObjectFile()->GetModule()->ReportError ("{0x%8.8x}: invaliad Objective-C method 0x%4.4x (%s), please file a bug and attach the file at the start of this error message",
+ die->GetOffset(),
+ tag,
+ DW_TAG_value_to_name(tag));
+ }
}
}
else if (is_cxx_method)
Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=174557&r1=174556&r2=174557&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/ClangASTContext.cpp (original)
+++ lldb/trunk/source/Symbol/ClangASTContext.cpp Wed Feb 6 17:21:59 2013
@@ -2722,6 +2722,9 @@ ClangASTContext::AddMethodToObjCObjectTy
ObjCMethodDecl::ImplementationControl imp_control = ObjCMethodDecl::None;
const unsigned num_args = method_function_prototype->getNumArgs();
+
+ if (num_args != num_selectors_with_args)
+ return NULL; // some debug information is corrupt. We are not going to deal with it.
ObjCMethodDecl *objc_method_decl = ObjCMethodDecl::Create (*ast,
SourceLocation(), // beginLoc,
More information about the lldb-commits
mailing list