dblaikie added a comment. In D154907#4487335 <https://reviews.llvm.org/D154907#4487335>, @jasonmolenda wrote:
> This looks good to me, thanks for digging in Caroline! Is there a naughty > compiler emitting this, or are we mis-parsing somehow? In D154907#4487523 <https://reviews.llvm.org/D154907#4487523>, @cmtice wrote: > Thanks Jason. I think the compiler is generating some bad DWARF. David > Blaikie was investigating that on our end, but he's on vacation this week. Yep - something in libc++ built with clang: DW_AT_name ("third_party/llvm/llvm-project/libcxx/src/ios.instantiations.cpp") [0x000000002b32cf96, 0x000000002b32d0e9): DW_OP_breg6 RBP-52, DW_OP_deref_size 0x10, DW_OP_stack_value) [0x000000002b32d116, 0x000000002b32d265): DW_OP_breg6 RBP-56, DW_OP_deref_size 0x10, DW_OP_stack_value) DW_AT_location (DW_OP_fbreg -56, DW_OP_deref_size 0x10, DW_OP_stack_value) [0x000000002b331396, 0x000000002b3314e6): DW_OP_breg6 RBP-52, DW_OP_deref_size 0x10, DW_OP_stack_value) [0x000000002b331516, 0x000000002b331662): DW_OP_breg6 RBP-56, DW_OP_deref_size 0x10, DW_OP_stack_value) DW_AT_location (DW_OP_fbreg -56, DW_OP_deref_size 0x10, DW_OP_stack_value) -- DW_AT_name ("third_party/llvm/llvm-project/libcxx/src/locale.cpp") [0x000000002b34146b, 0x000000002b341623): DW_OP_breg6 RBP-48, DW_OP_deref_size 0x10, DW_OP_stack_value [0x000000002b3416d7, 0x000000002b3417e7): DW_OP_breg6 RBP-48, DW_OP_deref_size 0x10, DW_OP_stack_value [0x000000002b342b2b, 0x000000002b342cdd): DW_OP_breg6 RBP-48, DW_OP_deref_size 0x10, DW_OP_stack_value [0x000000002b342d96, 0x000000002b342ea6): DW_OP_breg6 RBP-48, DW_OP_deref_size 0x10, DW_OP_stack_value I haven't isolated this - got to extract/figure out how our libc++ is built, etc. ================ Comment at: lldb/source/Expression/DWARFExpression.cpp:1082-1089 void *src = (void *)stack.back().GetScalar().ULongLong(); intptr_t ptr; ::memcpy(&ptr, src, sizeof(void *)); // I can't decide whether the size operand should apply to the bytes in // their // lldb-host endianness or the target endianness.. I doubt this'll ever // come up but I'll opt for assuming big endian regardless. ---------------- Just as an aside - isn't this code doing an illegal load widening? If the pointer pointed to the end of a page or something, and asked for only one byte - reading extra bytes would be bad (similarly would cause a segfault/UB/etc), right? (& I'm not sure I understand the comment about endianness - the operation reads that many bytes from the given address) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D154907/new/ https://reviews.llvm.org/D154907 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits