dblaikie added a comment.

In D122974#3536342 <https://reviews.llvm.org/D122974#3536342>, @llunak wrote:

> In D122974#3535669 <https://reviews.llvm.org/D122974#3535669>, @dblaikie 
> wrote:
>
>>> It doesn't make sense to require a stable hash algorithm for an internal 
>>> cache file.
>>
>> It's at least a stronger stability requirement than may be provided before - 
>> like: stable across process boundaries, at least, by the sounds of it? yeah?
>
> It's meant to be the same for the same library binary.
>
>> & then still raises the question for me what about minor version updates, is 
>> it expected to be stable across those?
>
> Is anything expected to be stable across those? If so, that doesn't seem to 
> be the reality of it (a random quick check finds two ABI changes just between 
> 14.0.4 and 14.0.5, e6de9ed37308e46560243229dd78e84542f37ead 
> <https://reviews.llvm.org/rGe6de9ed37308e46560243229dd78e84542f37ead> and 
> 53433dd0b5034681e1866e74651e8527a29e9364 
> <https://reviews.llvm.org/rG53433dd0b5034681e1866e74651e8527a29e9364>).

My udnerstanding is that generally ABI stability is intended to be guaranteed 
across minor releases (& those patches don't look like ABI breaks to me - the 
first one changes the mangling of intended-to-be-local symbols so they don't 
collide, so it should cause valid programs to link when they previously failed 
to link. The second seems to add a new target that wasn't present - so nothing 
to break against?) but that's probably orthogonal to the stability of the 
map/cache/expectations of folks releasing and using lldb.

>> It'd be a bit subtle to have to know when to go and update the lldb cache 
>> version number because this hash function has changed, for instance. It 
>> might be more suitable to have lldb explicitly request a known hash function 
>> rather than the generic one (even if they're identical at the moment) so 
>> updates to LLVM's core libraries don't subtly break the hashing/cache system 
>> here. (I would guess there's no cross-version hash testing? So it seems like 
>> such a change could produce fairly subtle breakage that would slip under the 
>> radar fairly easily?)
>
> D124704 <https://reviews.llvm.org/D124704> adds a unittest that compares 
> StringMap::hash() to a known hardcoded value, so whenever the hash 
> implementation changes, it won't be possible to unittest LLDB with that 
> change, and that will be the time to change the lldb cache version.

Ah, good stuff - doesn't guarantee that any hash change necessarily breaks the 
test, but certainly helps/seems like a good idea, thanks!

> If the theory is that this should keep working even with the library changing 
> without LLDB rebuild, then as I wrote above that theory needs double-checking 
> first. And additionally a good question to ask would be if it's really a good 
> idea to do incompatible implementation changes to a class that has half of 
> its functionality inline.

Sorry, I wasn't meaning to discuss dynamic library versioning 
issues/mismatches, just static/fully matched versions.

> Finally, there have been already attempts to change the hash function to use 
> the better non-zero seed (D97396 <https://reviews.llvm.org/D97396>), and they 
> were reverted because something depended on the hash function not changing, 
> so I don't see it that likely for the hash function to change just like that 
> in a minor update.

That something seems to have been another part of lldb - and that's the sort of 
change I'd like to enable/not make harder by avoiding more dependence on this 
ordering/hashing.

> But if after all this that's still the theory, I guess StringMap could get an 
> additional template parameter specifying the hash function, if it's actually 
> worth the effort.

Yeah, a little traits class or the like is roughly what I'd picture.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D122974/new/

https://reviews.llvm.org/D122974

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

Reply via email to