llvm-project/llvm/lib/DebugInfo/Symbolize
Noah Shutty babef908cc [llvm] [Debuginfod] DebuginfodCollection and DebuginfodServer for tracking local debuginfo.
This library implements the class `DebuginfodCollection`, which scans a set of directories for binaries, classifying them according to whether they contain debuginfo. This also provides the `DebuginfodServer`, an `HTTPServer` which serves debuginfod's `/debuginfo` and `/executable` endpoints. This is intended as the final new supporting library required for `llvm-debuginfod`.

As implemented here, `DebuginfodCollection` only finds ELF binaries and DWARF debuginfo. All other files are ignored. However, the class interface is format-agnostic. Generalizing to support other platforms will require refactoring of LLVM's object parsing libraries to eliminate use of `report_fatal_error` ([[ https://github.com/llvm/llvm-project/blob/main/llvm/lib/Object/WasmObjectFile.cpp#L74 | e.g. when reading WASM files ]]), so that the debuginfod daemon does not crash when it encounters a malformed file on the disk.

The `DebuginfodCollection` is tested by end-to-end tests of the debuginfod server (D114846).

Reviewed By: mysterymath

Differential Revision: https://reviews.llvm.org/D114845
2022-07-06 20:02:14 +00:00
..
CMakeLists.txt [Symbolize] Add log markup --filter to llvm-symbolizer. 2022-06-27 10:44:15 -07:00
DIFetcher.cpp [Debuginfod][Symbolizer] Cut dependency cycle after 4a6553f4c2 2022-02-08 21:53:30 +01:00
DIPrinter.cpp [symbolizer] Parse DW_TAG_variable DIs to show line info for globals 2022-05-23 13:30:22 -07:00
Markup.cpp [Symbolize] Parse multi-line markup elements. 2022-06-22 10:00:43 -07:00
MarkupFilter.cpp Use value_or instead of getValueOr. NFC 2022-06-29 21:55:02 -07:00
SymbolizableObjectFile.cpp [symbolizer] Parse DW_TAG_variable DIs to show line info for globals 2022-05-23 13:30:22 -07:00
Symbolize.cpp [llvm] [Debuginfod] DebuginfodCollection and DebuginfodServer for tracking local debuginfo. 2022-07-06 20:02:14 +00:00