clayborg added a comment.

Changing all $d symbols to always say they are eAddressClassDataIntermixedCode 
is wrong because the symbols in the .data section now would be marked as 
eAddressClassDataIntermixedCode.

To clarify a few things, lets say we have the following code:

0x1000: bx <addr> Non-tail call in a no return function
0x1004: [data-pool] Marked with $d mapping symbol

Should just claim that 0x1000 is eAddressClassCode and that 0x1004 is 
eAddressClassData. We don't need a new eAddressClassDataIntermixedCode for 
this, it should just say eAddressClassData for 0x1004.

For return addresses we that are on the stack on in the LR, we should actually 
be sanitizing them before we start doing lookups. So the return address would 
be 0x1005 in this case you are talking about right? Maybe we always get the 
address class of the return address and check if it is eAddressClassData. If it 
is, we know something is wrong since the return address can't go to data and we 
work around this by recognizing that fact.

I would rather not just say that all data is eAddressClassDataIntermixedCode 
for ARM and Thumb, that seems like the wrong fix.


http://reviews.llvm.org/D12556



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to