[ Clang's emission of pubnames/pubtypes is controlled by the "debugger
tuning" parameter. With -glldb they don't get emitted, with -ggdb,
they do. (-glldb is default on mac, -ggdb elsewhere). In dwarf5 these
sections have been dropped in favour of the new .debug_names section.
]

On 10 February 2018 at 02:25, Jim Ingham via lldb-dev
<lldb-dev@lists.llvm.org> wrote:
> A quick glance indicates that this is all dead code.  I can't see anything 
> that actually instantiates either of the pubnames classes.
>
> The DWARF pubnames tables were a previous attempt at producing DWARF indexes, 
> but they didn't contain enough information to actually forstall deep dives 
> into the DWARF, so they weren't actually useful.  clang doesn't emit them on 
> macOS for sure, does it emit them on linux?  They are superseded by the new 
> DWARF 5 accelerator tables, and I couldn't find any reference to pubnames in 
> the DWARF 5 draft standard.
>
> We should check with Greg about this, but I don't think we're ever likely to 
> get any use out of DWARF pubnames tables.  We should just delete this code.
>
> Jim
>
>
>> On Feb 9, 2018, at 4:35 PM, Adrian McCarthy via lldb-dev 
>> <lldb-dev@lists.llvm.org> wrote:
>>
>> DWARFDebugPubnamesSet.h has a type definition like this:
>>
>>   typedef std::unordered_multimap<const char *, uint32_t,
>>                                   std::hash<const char *>,
>>                                   CStringEqualBinaryPredicate>
>>       cstr_to_index_mmap;
>>
>> In particular, note that the hasher will hash the pointer rather than the 
>> string it points to.
>>
>> It looks like this mostly works because the map is built once from string 
>> pointers that don't appear to be changed during the lifetime of the 
>> multimap.  That's fragile, and I'm not sure it's really working in all 
>> cases.  For example, there could be two different pointers to identical 
>> strings--since this is a multimap rather than a map, I assume we'd want 
>> those values merged under the same key, but since the pointers are distinct, 
>> they won't be.
>>
>> I'd like to change the key to a std::string or a StringRef for correctness 
>> and robustness, but that'll likely be a tad slower because hashing 
>> variable-length strings is more work than hashing fixed-length pointers.  (I 
>> don't think it'll change comparisons much, since the comparator is checking 
>> the strings.)
>>
>> Objections or better suggestions?
>>
>> It's also hard for me to test, as most of the LLDB DWARF tests are still 
>> broken on Windows because the inferiors are generated with CodeView rather 
>> than DWARF.  I'm working on that, but it'll take changes to the lld-link 
>> driver.
>>
>> Adrian.
>> _______________________________________________
>> lldb-dev mailing list
>> lldb-dev@lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to