1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 13:17:44 +00:00

LibDebug: Propagate errors throughout DWARF parsing

Splitting this into a separate commit was an afterthought, so this does
not yet feature any fallible operations.
This commit is contained in:
Tim Schumacher 2023-01-22 00:32:08 +01:00 committed by Andreas Kling
parent e235c42e4d
commit e62269650a
17 changed files with 243 additions and 204 deletions

View file

@ -90,7 +90,7 @@ public:
Vector<Dwarf::DIE> dies_of_variables;
};
NonnullOwnPtrVector<VariableInfo> get_variables_in_current_scope(PtraceRegisters const&) const;
ErrorOr<NonnullOwnPtrVector<VariableInfo>> get_variables_in_current_scope(PtraceRegisters const&) const;
Optional<SourcePosition> get_source_position(FlatPtr address) const;
@ -98,7 +98,7 @@ public:
Optional<SourcePosition> source_position;
Vector<SourcePosition> inline_chain;
};
SourcePositionWithInlines get_source_position_with_inlines(FlatPtr address) const;
ErrorOr<SourcePositionWithInlines> get_source_position_with_inlines(FlatPtr address) const;
struct SourcePositionAndAddress {
DeprecatedString file;
@ -113,15 +113,15 @@ public:
Optional<VariablesScope> get_containing_function(FlatPtr address) const;
private:
void prepare_variable_scopes();
void prepare_lines();
void parse_scopes_impl(Dwarf::DIE const& die);
OwnPtr<VariableInfo> create_variable_info(Dwarf::DIE const& variable_die, PtraceRegisters const&, u32 address_offset = 0) const;
ErrorOr<void> prepare_variable_scopes();
ErrorOr<void> prepare_lines();
ErrorOr<void> parse_scopes_impl(Dwarf::DIE const& die);
ErrorOr<OwnPtr<VariableInfo>> create_variable_info(Dwarf::DIE const& variable_die, PtraceRegisters const&, u32 address_offset = 0) const;
static bool is_variable_tag_supported(Dwarf::EntryTag const& tag);
void add_type_info_to_variable(Dwarf::DIE const& type_die, PtraceRegisters const& regs, DebugInfo::VariableInfo* parent_variable) const;
ErrorOr<void> add_type_info_to_variable(Dwarf::DIE const& type_die, PtraceRegisters const& regs, DebugInfo::VariableInfo* parent_variable) const;
Optional<Dwarf::LineProgram::DirectoryAndFile> get_source_path_of_inline(Dwarf::DIE const&) const;
Optional<uint32_t> get_line_of_inline(Dwarf::DIE const&) const;
ErrorOr<Optional<Dwarf::LineProgram::DirectoryAndFile>> get_source_path_of_inline(Dwarf::DIE const&) const;
ErrorOr<Optional<uint32_t>> get_line_of_inline(Dwarf::DIE const&) const;
ELF::Image const& m_elf;
DeprecatedString m_source_root;