Fix read error on objects with no .text section (#67)

* Fix read error on objects with no .text section

* Fix read error on DWARF 1.1 objects

* Revert DWARF 1 changes

---------

Co-authored-by: Luke Street <luke@street.dev>
This commit is contained in:
Aetias 2024-06-04 03:47:38 +02:00 committed by GitHub
parent fc54e93681
commit a5a6a3928e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 4 additions and 9 deletions

View File

@ -328,15 +328,10 @@ fn line_info(obj_file: &File<'_>, sections: &mut [ObjSection]) -> Result<()> {
if let Some(program) = unit.line_program.clone() { if let Some(program) = unit.line_program.clone() {
let mut text_sections = let mut text_sections =
obj_file.sections().filter(|s| s.kind() == SectionKind::Text); obj_file.sections().filter(|s| s.kind() == SectionKind::Text);
let section_index = text_sections let section_index = text_sections.next().map(|s| s.index().0);
.next() let mut lines = section_index.map(|index| {
.ok_or_else(|| anyhow!("Next text section not found for line info"))? &mut sections.iter_mut().find(|s| s.orig_index == index).unwrap().line_info
.index() });
.0;
let mut lines = sections
.iter_mut()
.find(|s| s.orig_index == section_index)
.map(|s| &mut s.line_info);
let mut rows = program.rows(); let mut rows = program.rows();
while let Some((_header, row)) = rows.next_row()? { while let Some((_header, row)) = rows.next_row()? {