I've gone ahead and skipped this test for the dsym variant until this is 
resolved. r327089.

vedant

> On Mar 8, 2018, at 10:49 AM, Davide Italiano via lldb-commits 
> <lldb-commits@lists.llvm.org> wrote:
> 
> On Thu, Mar 8, 2018 at 10:46 AM, Jim Ingham <jing...@apple.com> wrote:
>> 
>> 
>>> On Mar 8, 2018, at 2:49 AM, Pavel Labath <lab...@google.com> wrote:
>>> 
>>> 
>>> 
>>> 
>>> On Thu, 8 Mar 2018 at 02:46, Davide Italiano <dccitali...@gmail.com> wrote:
>>> On Wed, Mar 7, 2018 at 6:39 PM, Jim Ingham <jing...@apple.com> wrote:
>>>> The hashing algorithm gives different values - at least for foobár - 
>>>> between the two implementations.  So if you build with an older clang, and 
>>>> test with a new lldb, the type lookup fails.
>>>> 
>>> When I landed this patch, the two algorithms were identical, but this 
>>> wasn't always the case. The llvm's version of the algorithm used to be 
>>> nondeterministic (as in, it's result depended on the signedness of char on 
>>> your platform). This was recently fixed, and this patch was meant to make 
>>> sure they always stay in sync.
>>> 
>>> We considered a couple of options when we noticed this discrepancy, but 
>>> since this had never really worked (llvm and lldb had always disagreed on 
>>> the hash value of strings with high bit set) and nobody noticed, we decided 
>>> to just fix the llvm implementation. The other option was to create a 
>>> signedDJBHash function, and make lldb&llvm always use that for apple 
>>> accelerator tables. I guess it's still not too late to do that...
>> 
>> 
>> I have no idea how common the use of high bit characters in C identifiers 
>> is.  I can't remember ever seeing a usage in browsing through the Darwin 
>> sources.  We do have to support users who want to debug released products 
>> using older dSYM's, but if high bit identifiers are an uncommon practice, 
>> then just making sure lldb & clang & llvm-dsymutil stay in sync in the 
>> future is probably good enough.  IIRC the old dsymutil could run fixups on 
>> dsym's, and so if somebody ends up being really stuck because of this, we 
>> could teach llvm-dsymutil to regenerate the apple tables in the dSYM with 
>> the new hashes.  dsymutil doesn't use the apple tables from .o files, it 
>> rebuilds them, so doing this should be pretty straightforward.  The harder 
>> part is likely conveying to users when it is necessary to do so...
>> 
>>> 
>>> 
>>> This is not my case, I think? I'm building from the monorepo so clang
>>> and lldb are supposed to be in sync (in fact, the version of clang in
>>> my test is 7.0).
>>> 
>>> 
>>> My best (and only) guess would be that this is because of different 
>>> versions of dsymutil (we are using the system dsymutil to build the dsym 
>>> bundle), though I'm not sure then why the test doesn't fail for me as well, 
>>> as I have the stock dsymutil that ships which XCode, which presumably still 
>>> has the broken hash function.
>>> 
>>> Could you send me the main.o and a.out.dSYM files that are built by this 
>>> test (or at least the output of running llvm-dwarfdump -apple-types on 
>>> them), so I can compare them with mine? The interesting question is what 
>>> does "foobár" hash to (for me it's 0xba721fe1 in both files).
>>> 
>> 
>> IIRC Davide said only the dSYM variant of the test was failing for him.  If 
>> that's true then using the system dsymutil explains the difference.  But I 
>> don't know why the dSYM variant isn't failing for you.
>> 
>> Jim
>> 
> 
> Yes, that's the reason. The tests seem to pick the system `dsymutil`
> instead of the one that's built `in-tree`. I'll have a chat with Jonas
> about this.
> _______________________________________________
> lldb-commits mailing list
> lldb-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to