clayborg requested changes to this revision. clayborg added a comment. This revision now requires changes to proceed.
great fix. Just resolve the file address using the module function and this is good to go. ================ Comment at: source/Core/Value.cpp:683-685 + ObjectFile *objfile = sc.module_sp->GetObjectFile(); + if (!objfile) + return; ---------------- labath wrote: > This is not what the original code was doing, but what do you think about > getting the section list directly from the `Module`? The two lists aren't > exactly the same, but this distinction should not matter here. > Besides being shorter, this would also make this code work slightly better > with object-file-less Modules that Leonard is trying to introduce (D46292 et > al.). Remove these 3 lines ================ Comment at: source/Core/Value.cpp:687 + + Address so_addr(file_addr, objfile->GetSectionList()); + lldb::addr_t load_addr = so_addr.GetLoadAddress(target); ---------------- Let the module resolve the file address for you: ``` Address so_addr; if (!sc.module_sp->ResolveFileAddress(file_addr, so_addr)) return; ``` ================ Comment at: source/Expression/DWARFExpression.cpp:1385-1387 + stack.back().ConvertToLoadAddress( + frame->GetSymbolContext(eSymbolContextFunction), + frame->CalculateTarget().get()); ---------------- Be sure there is a test that tests expressions on global variables before we run and before we have a section load list. The result of an expression for a global variable can end up using the file address and currently can read from the object file's data section. Just make sure this still works. Seems like it will. https://reviews.llvm.org/D46362 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits