jankratochvil added a comment. In D58330#1400812 <https://reviews.llvm.org/D58330#1400812>, @labath wrote:
> It also appears that we will still end up mmapping the object file, and then > copying all of the debug info out of it into a heap buffer. In all usual cases at least on Linux LLDB should use just the mmap part, without any copying - see the block on line 691 of `SymbolFileDWARF::get_debug_info_data()`: https://reviews.llvm.org/D51578#C1361566NL682 The question is how hard to optimize the corner cases of `IsInMemory()`, `SHF_COMPRESSED` with `.debug_types` etc. Originally I did not optimize it but I think this is what @clayborg did not like: https://reviews.llvm.org/D51578#1383458 > What's the reason we're trying so hard to concatenate things? IIRC, it was > because it makes things appear DWARF5-like, but this is now creating a lot of > infrastructure that will be completely unused in the dwarf5 case, so I think > we're missing that goal. In part yes, I agree. I cannot much agree with the "//completely unused in the dwarf5 case//" as for DWZ I need the same so if we do not implement it for `.debug_types` I need to implement it for DWZ anyway. Which is why I also do that - to justify some way such refactorization for DWZ. Red Hat does not use `.debug_types` and DWARF-5 does not have this problem anyway as you say. Currently DWZ solves it on line 164 - DWZRedirect(): https://reviews.llvm.org/D40474#C1183882NL164 Although there the two sections to be merged (main `.debug_info` and `.debug_info` from DWZ common file - from `/usr/lib/debug/.dwz/` directory) come from two different files. I haven't coded that yet. Currently DWZ also needs D40473 <https://reviews.llvm.org/D40473> full of `GetMainDWARF()` vs. original `GetDWARF()` and I hope I could drop this by also merging `.debug_abbrev` (and maybe some others). But I haven't yet tried to rebase the DWZ patchset on top of this merging patchset if there isn't some catch. From the higher point of view: `.debug_types` is not needed thanks to DWARF-5 and Red Hat could replace DWZ with `-fdebug-types-section` or at least just not to use DWZ `-m|--multifile` option (the DWZ common files so we would stay at just one file). But then we live in a real world and people want to debug existing code built with `.debug_types` and RHELs deployed out there do use DWZ with `-m|--multifile`. And both do work in GDB now. > Can't we just admit that we are dealing with two sections here, and use one > bit from the user_id_t (or whereever it's needed) to tell which one are we > talking about? Been there, done that - with `offset_t` (although by offseting it and not by one bit but that is similar) - the `FORWARDER()` dispatching of `DWARFDataExtractor`: https://reviews.llvm.org/D51578?id=170342#C1214469NL1 The problem is that it has some percents of performance impact which @clayborg did not like. I think `user_id_t` is too high for this functionality as all the inter-DWARF references already use only `offset_t` inside the DWARF code. Repository: rLLDB LLDB CHANGES SINCE LAST ACTION https://reviews.llvm.org/D58330/new/ https://reviews.llvm.org/D58330 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits