You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
See the thread at http://lists.cs.uiuc.edu/pipermail/lldb-dev/2014-April/003800.html for background. Clang defaults to -fno-standalone-debug on Linux and FreeBSD. This causes debug info to contain forward declarations where possible, instead of definitions, and omits debug info for dynamic classes in modules other than where the vtable is found.
Ideally we would search the rest of the debug info for the required definition. In any case we should return an error to the user if the debug info is missing instead of tripping the assert.
Example assertion, from debugging Clang's CGDebugInfo:
thread #1: tid = 104525, 0x000000081191ff6e
libclangCodeGen.soclang::CodeGen::CGDebugInfo::CreateType(this=0x0000000815c0a000, BT=0x0000000815c3d400) + 30 at CGDebugInfo.cpp:391, stop reason = breakpoint 1.1 frame #​0: 0x000000081191ff6e libclangCodeGen.soclang::CodeGen::CGDebugInfo::CreateType(this=0x0000000815c0a000,
BT=0x0000000815c3d400) + 30 at CGDebugInfo.cpp:391
388 /// CreateType - Get the Basic type from the cache or create a new
389 /// one if necessary.
390 llvm::DIType CGDebugInfo::CreateType(const BuiltinType *BT) {
-> 391 unsigned Encoding = 0;
392 StringRef BTName;
393 switch (BT->getKind()) {
394 #define BUILTIN_TYPE(Id, SingletonId)
(lldb) p BT
Assertion failed: (D && "Cannot get layout of forward declarations!"),
function getASTRecordLayout, file
../tools/clang/lib/AST/RecordLayoutBuilder.cpp, line 2783.
The text was updated successfully, but these errors were encountered:
Extended Description
See the thread at http://lists.cs.uiuc.edu/pipermail/lldb-dev/2014-April/003800.html for background. Clang defaults to -fno-standalone-debug on Linux and FreeBSD. This causes debug info to contain forward declarations where possible, instead of definitions, and omits debug info for dynamic classes in modules other than where the vtable is found.
Ideally we would search the rest of the debug info for the required definition. In any case we should return an error to the user if the debug info is missing instead of tripping the assert.
Example assertion, from debugging Clang's CGDebugInfo:
libclangCodeGen.so
clang::CodeGen::CGDebugInfo::CreateType(this=0x0000000815c0a000, BT=0x0000000815c3d400) + 30 at CGDebugInfo.cpp:391, stop reason = breakpoint 1.1 frame #​0: 0x000000081191ff6e libclangCodeGen.so
clang::CodeGen::CGDebugInfo::CreateType(this=0x0000000815c0a000,BT=0x0000000815c3d400) + 30 at CGDebugInfo.cpp:391
388 /// CreateType - Get the Basic type from the cache or create a new
389 /// one if necessary.
390 llvm::DIType CGDebugInfo::CreateType(const BuiltinType *BT) {
-> 391 unsigned Encoding = 0;
392 StringRef BTName;
393 switch (BT->getKind()) {
394 #define BUILTIN_TYPE(Id, SingletonId)
(lldb) p BT
Assertion failed: (D && "Cannot get layout of forward declarations!"),
function getASTRecordLayout, file
../tools/clang/lib/AST/RecordLayoutBuilder.cpp, line 2783.
The text was updated successfully, but these errors were encountered: