[lldb-dev] [BUG?] Confusion between translation units?
Ramkumar Ramachandra via lldb-dev
lldb-dev at lists.llvm.org
Tue Nov 3 12:07:45 PST 2015
Greg Clayton wrote:
> Not really. If you can send me a concrete example of something that isn't working, it might help.
Reporting progress.
1. `im loo -t` only ever finds one "best match", and the plist seems
to have no effect on it.
2. The plist parsing code does get executed. I checked with the
debugger. I also checked symlink versus non-symlinked paths in the
plist, which I'd missed last time. dwarfdump does not seem to read it,
and `im loo` says nothing different, so I have no idea if anything
really got remapped.
3. I managed to catch this "unstable" case: you try something, it
prints a huge error, you try something else in a different frame with
the same type, it prints fine, you come back to the original thing and
there's a smaller error.
frame #0: 0x0000000101c3ce8c libmwcgir_vm_rt.dylib`(anonymous
namespace)::CgJITMemManager::endFunctionBody(this=0x000000010e8637b0,
F=0x000000010a62ccc0, FunctionStart="�?^\n\x01",
FunctionEnd="����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������...")
+ 28 at CgJITMemoryManager.cpp:437
434 (void)FunctionStart;
435 (void)FunctionEnd;
436
-> 437 assert(FunctionEnd > FunctionStart);
438 assert(FunctionStart == (uint8_T *)(CurBlock+1) &&
439 "Mismatched function start/end!");
440
(lldb) p F
error: field 'BasicBlocks' declared with incompatible types in
different translation units ('BasicBlockListType' (aka
'llvm::iplist<llvm::BasicBlock, llvm::ilist_traits<llvm::BasicBlock>
>') vs. 'BasicBlockListType' (aka 'llvm::iplist<llvm::BasicBlock,
llvm::ilist_traits<llvm::BasicBlock> >'))
error: field 'ArgumentList' declared with incompatible types in
different translation units ('ArgumentListType' (aka
'llvm::iplist<llvm::Argument, llvm::ilist_traits<llvm::Argument> >')
vs. 'ArgumentListType' (aka 'llvm::iplist<llvm::Argument,
llvm::ilist_traits<llvm::Argument> >'))
error: field 'BasicBlocks' declared with incompatible types in
different translation units ('BasicBlockListType' (aka
'llvm::iplist<llvm::BasicBlock, llvm::ilist_traits<llvm::BasicBlock>
>') vs. 'BasicBlockListType' (aka 'llvm::iplist<llvm::BasicBlock,
llvm::ilist_traits<llvm::BasicBlock> >'))
error: field 'Context' declared with incompatible types in different
translation units ('llvm::LLVMContext &' vs. 'llvm::LLVMContext &')
error: field 'GlobalList' declared with incompatible types in
different translation units ('GlobalListType' (aka
'llvm::iplist<llvm::GlobalVariable,
llvm::ilist_traits<llvm::GlobalVariable> >') vs. 'GlobalListType' (aka
'llvm::iplist<llvm::GlobalVariable,
llvm::ilist_traits<llvm::GlobalVariable> >'))
error: field 'FunctionList' declared with incompatible types in
different translation units ('FunctionListType' (aka
'llvm::iplist<llvm::Function, llvm::ilist_traits<llvm::Function> >')
vs. 'FunctionListType' (aka 'llvm::iplist<llvm::Function,
llvm::ilist_traits<llvm::Function> >'))
error: field 'AliasList' declared with incompatible types in different
translation units ('AliasListType' (aka
'llvm::iplist<llvm::GlobalAlias, llvm::ilist_traits<llvm::GlobalAlias>
>') vs. 'AliasListType' (aka 'llvm::iplist<llvm::GlobalAlias,
llvm::ilist_traits<llvm::GlobalAlias> >'))
error: field 'NamedMDList' declared with incompatible types in
different translation units ('NamedMDListType' (aka
'llvm::ilist<llvm::NamedMDNode>') vs. 'NamedMDListType' (aka
'llvm::ilist<llvm::NamedMDNode>'))
error: field 'GlobalScopeAsm' declared with incompatible types in
different translation units ('string' (aka
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >') vs. 'string' (aka
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >'))
error: field 'ComdatSymTab' declared with incompatible types in
different translation units ('ComdatSymTabType' (aka
'llvm::StringMap<llvm::Comdat, llvm::MallocAllocator>') vs.
'ComdatSymTabType' (aka 'llvm::StringMap<llvm::Comdat,
llvm::MallocAllocator>'))
error: field 'ModuleID' declared with incompatible types in different
translation units ('string' (aka 'std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >') vs.
'string' (aka 'std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >'))
error: field 'TargetTriple' declared with incompatible types in
different translation units ('string' (aka
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >') vs. 'string' (aka
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >'))
error: field 'DataLayoutStr' declared with incompatible types in
different translation units ('string' (aka
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >') vs. 'string' (aka
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >'))
error: field 'Parent' declared with incompatible types in different
translation units ('llvm::Module *' vs. 'llvm::Module *')
error: field 'Parent' declared with incompatible types in different
translation units ('llvm::Module *' vs. 'llvm::Module *')
error: field 'Context' declared with incompatible types in different
translation units ('llvm::LLVMContext &' vs. 'llvm::LLVMContext &')
note: declared here with type 'BasicBlockListType' (aka
'llvm::iplist<llvm::BasicBlock, llvm::ilist_traits<llvm::BasicBlock>
>')
note: declared here with type 'ArgumentListType' (aka
'llvm::iplist<llvm::Argument, llvm::ilist_traits<llvm::Argument> >')
note: declared here with type 'BasicBlockListType' (aka
'llvm::iplist<llvm::BasicBlock, llvm::ilist_traits<llvm::BasicBlock>
>')
note: declared here with type 'llvm::LLVMContext &'
note: declared here with type 'GlobalListType' (aka
'llvm::iplist<llvm::GlobalVariable,
llvm::ilist_traits<llvm::GlobalVariable> >')
note: declared here with type 'FunctionListType' (aka
'llvm::iplist<llvm::Function, llvm::ilist_traits<llvm::Function> >')
note: declared here with type 'AliasListType' (aka
'llvm::iplist<llvm::GlobalAlias, llvm::ilist_traits<llvm::GlobalAlias>
>')
note: declared here with type 'NamedMDListType' (aka
'llvm::ilist<llvm::NamedMDNode>')
note: declared here with type 'string' (aka
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >')
note: declared here with type 'ComdatSymTabType' (aka
'llvm::StringMap<llvm::Comdat, llvm::MallocAllocator>')
note: declared here with type 'string' (aka
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >')
note: declared here with type 'string' (aka
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >')
note: declared here with type 'string' (aka
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >')
note: declared here with type 'llvm::Module *'
note: declared here with type 'llvm::Module *'
note: declared here with type 'llvm::LLVMContext &'
error: 16 errors parsing expression
(lldb) f 4
frame #4: 0x0000000102ea820f
libmwcgir_vm_rt.dylib`llvm::FPPassManager::runOnFunction(this=0x000000010e864360,
F=0x000000010a62ccc0) + 431 at LegacyPassManager.cpp:1545
1542 PassManagerPrettyStackEntry X(FP, F);
1543 TimeRegion PassTimer(getPassTimer(FP));
1544
-> 1545 LocalChanged |= FP->runOnFunction(F);
1546 }
1547
1548 Changed |= LocalChanged;
(lldb) p F
(llvm::Function) $0 = {
llvm::GlobalObject = {
llvm::GlobalValue = {
llvm::Constant = {
llvm::User = {
llvm::Value = {
VTy = 0x000000010d8038e0
UseList = 0x000000010b805f50
Name = 0x000000010a62cd60
SubclassID = '\x02'
HasValueHandle = '\x01'
SubclassOptionalData = '\0'
SubclassData = 0
}
NumOperands = 0
OperandList = 0x0000000000000000
}
}
Linkage = ExternalLinkage
Visibility = 0
UnnamedAddr = 0
DllStorageClass = 0
ThreadLocal = 0
SubClassData = 0
Parent = 0x000000010b901250
}
Section = ""
ObjComdat = 0x0000000000000000
}
llvm::ilist_node<llvm::Function> = {
llvm::ilist_half_node<llvm::Function> = {
Prev = 0x000000010a62cb50
}
Next = 0x000000010a6375d0
}
BasicBlocks = {
llvm::ilist_traits<llvm::BasicBlock> = {
Sentinel = {
Prev = 0x000000010a634b70
}
}
Head = 0x000000010a62cfd0
}
ArgumentList = {
llvm::ilist_traits<llvm::Argument> = {
Sentinel = {
Prev = 0x000000010a62ce40
}
}
Head = 0x000000010a62ce00
}
SymTab = 0x000000010a62cd90
AttributeSets = {
pImpl = 0x0000000000000000
}
}
(lldb) f 0
frame #0: 0x0000000101c3ce8c libmwcgir_vm_rt.dylib`(anonymous
namespace)::CgJITMemManager::endFunctionBody(this=0x000000010e8637b0,
F=0x000000010a62ccc0, FunctionStart="�?^\n\x01",
FunctionEnd="����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������...")
+ 28 at CgJITMemoryManager.cpp:437
434 (void)FunctionStart;
435 (void)FunctionEnd;
436
-> 437 assert(FunctionEnd > FunctionStart);
438 assert(FunctionStart == (uint8_T *)(CurBlock+1) &&
439 "Mismatched function start/end!");
440
(lldb) p F
error: field '__r_' declared with incompatible types in different
translation units
('std::__1::__compressed_pair<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >::__rep,
std::__1::allocator<char> >' vs.
'std::__1::__compressed_pair<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >::__rep,
std::__1::allocator<char> >')
note: declared here with type
'std::__1::__compressed_pair<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >::__rep,
std::__1::allocator<char> >'
error: 1 errors parsing expression
(lldb) im loo -t
"std::__1::__compressed_pair<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >::__rep,
std::__1::allocator<char> >"
Best match found in
/mathworks/devel/sbs/34/rramacha.idivide-final-lap/matlab/bin/maci64/libmwcgir_vm_rt.dylib:
id = {0x000457b5}, name =
"__compressed_pair<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >::__rep,
std::__1::allocator<char> >", qualified =
"std::__1::__compressed_pair<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >::__rep,
std::__1::allocator<char> >", byte-size = 24, decl = memory:2297,
compiler_type = "class __compressed_pair : private
std::__1::__libcpp_compressed_pair_imp<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >::__rep,
std::__1::allocator<char>, 2> {
__compressed_pair();
explicit __compressed_pair(_T1_param);
explicit __compressed_pair(_T2_param);
__compressed_pair(_T1_param, _T2_param);
_T1_reference first();
_T1_const_reference first() const;
_T2_reference second();
_T2_const_reference second() const;
void swap(std::__1::__compressed_pair<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >::__rep,
std::__1::allocator<char> > &);
}"
Before the recent patch you developed, the variable on f 4 also failed to print.
More insights into what might be going on?
More information about the lldb-dev
mailing list