================ @@ -2393,10 +2393,29 @@ Function *DWARFASTParserClang::ParseFunctionFromDWARF( assert(func_type == nullptr || func_type != DIE_IS_BEING_PARSED); const user_id_t func_user_id = die.GetID(); + + // The base address of the scope for any of the debugging information + // entries listed above is given by either the DW_AT_low_pc attribute or the + // first address in the first range entry in the list of ranges given by the + // DW_AT_ranges attribute. + // -- DWARFv5, Section 2.17 Code Addresses, Ranges and Base Addresses + // + // If no DW_AT_entry_pc attribute is present, then the entry address is + // assumed to be the same as the base address of the containing scope. + // -- DWARFv5, Section 2.18 Entry Address + // + // We currently don't support Debug Info Entries with + // DW_AT_low_pc/DW_AT_entry_pc and DW_AT_ranges attributes (the latter + // attributes are ignored even though they should be used for the address of + // the function), but compilers also don't emit that kind of information. If + // this becomes a problem we need to plumb these attributes separately. + Address func_addr = func_ranges[0].GetBaseAddress(); + func_sp = std::make_shared<Function>( &comp_unit, func_user_id, // UserID is the DIE offset - func_user_id, func_name, func_type, std::move(func_ranges)); + func_user_id, func_name, func_type, std::move(func_addr), ---------------- labath wrote:
I've added by default -- as a signal that I am done with this object. It turns out that in this case, the move doesn't help, because the Address class does not have a move constructor (due to the -- unnecessary -- explicit definition of a copy constructor), but it doesn't hurt either. And if the object grows a move constructor (by removing the explicit copy definition), then this will automatically use it (which will then avoid a copy of the weak_ptr inside the address -- not particularly expensive but still requires atomic reference count updates). https://github.com/llvm/llvm-project/pull/122440 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits