[roll] Roll fuchsia [debugger] Look up addresses in DWO files.

Implement DwarfUnitImpl::FunctionDieOffsetForRelativeAddress for symbols
stored in .dwo files.

Previously this code used LLVM address -> DIE lookup
"getSubroutineForAddress" but this doesn't work for our Debug Fission
(.dwo file) implementation because the address generation requires
looking across DWARF binaries which LLVM doesn't know about.

This re-implementes FunctionDieOffsetForRelativeAddress using our own
code. It lazily constructs an address->DIE mapping for the unit the
first time this is needed. This new mapping is used for all lookups, not
just for DWO files.

Implements ModuleSymbolsImpl lookup in the correct unit for the address.

This implementation still does not provide correct symbols for DWO
files. The current issue is how FunctionDieOffsetForRelativeAddress is
used. Most uses end up constructing a symbol using the result of this
call using the main SymbolFactory, while to make this work properly, it
needs to use the DWO-specific symbol factory. The solution is to make
FunctionDieOffsetForRelativeAddress return a LazySymbol instead which is
unambiguous and cleaner from a caller perspective, which in turn
requires some nontrivial updates to the callers, especially line lookup.

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/965063
Original-Revision: f93377a4a065dbc596cfbfaef89a4db174c9bdce
GitOrigin-RevId: d3e913974b4dc57d33633d4661996b1012a587db
Change-Id: I44582fe5c187cebe7907f137e86df0f7a4ff070a
1 file changed
tree: 2d24950dcd9028bd2acb226e604cb60343877fa8
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
  14. toolchain
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 via the IRC channel #fuchsia on Freenode.

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.