[roll] Roll fuchsia [elfldltl] Revamp SymbolInfo hash table support classes

This modernizes the CompatHash and GnuHash helper classes for
SymbolInfo with C++20 concepts and ranges.

Each hash table helper object now has a Bucket(hash) method
returning a range of symbol table indices that fill the bucket;
and an AllBuckets() method returning a range of such ranges.

The helper classes weren't really usable with any non-local
AbiTraits.  So they no longer use AbiSpan et al, but just more
straightforwardly work only via plain local pointers.  The
methods in SymbolInfo that use these classes are constrained via
`requires` clauses so they're just not available at all in other
instantiations.

SymbolInfo now has HashedSymbols and OnSymbols methods to
simplify enumerating all the (hashed) symbols.  The former is
really just a subroutine of the latter, but is also used directly
by the fuzzer test.

The existing SymbolInfo tests are also updated to use gmock
matchers instead of hand-rolled container comparisons.

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1462748
Original-Revision: cd5caef2cf044e757ecdf0b6f959c6574f17740b
GitOrigin-RevId: d3bc0d63ff0b3a5c7863e92372486dfd082f7636
Change-Id: I699e0e2e4aebf7cb200995c22e4fd61807447d0c
1 file changed
tree: 06ff4e6015a55dbaf36e50009009cc7bbf77eb06
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. flower
  6. jiri.lock
  7. MILESTONE
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.