Skip to content

Display correct line numbers for multiple .text sections#63

Merged
encounter merged 4 commits intoencounter:mainfrom
AetiasHax:line-info
May 21, 2024
Merged

Display correct line numbers for multiple .text sections#63
encounter merged 4 commits intoencounter:mainfrom
AetiasHax:line-info

Conversation

@AetiasHax
Copy link
Copy Markdown
Contributor

Object files with multiple .text sections currently display incorrect line numbers. This is because we are storing line info by mapping an address to a line number, not taking section index into consideration.

DWARF 2.0+ supports multiple .text sections by defining multiple "sequences", where each sequence starts from address 0 and correlates to one .text section. I've implemented support for this, by iterating to the next code section whenever a sequence ends. This means the line info is now mapping section index, to address, to line number.

From what I've read, DWARF does not define how it correlates a sequence to a section. I've made an assumption and believe that the first sequence should correlate to the first code section, and so on.

I haven't tested this on all the architectures that objdiff supports, but I'd be happy to do so if anyone can provide some object files.

AetiasHax and others added 3 commits May 20, 2024 20:50
# Conflicts:
#	objdiff-core/src/arch/x86.rs
- Properly handles multiple sections
  in DWARF 1
- line_info moved into ObjSection
- DWARF 2 parser no longer errors with
  no .text section
- Both parsers properly skip empty
  sections
@encounter
Copy link
Copy Markdown
Owner

Thanks for this! I committed a few changes that cleans things up and fixes the issue for DWARF 1 as well. This code is a little tricky when dealing with objects that are either 1. missing a .text section but still have a .line section or 2. have empty .text section(s). So my changes are aimed at making sure the logic is solid in those cases. Could you retest with your DWARF 2 objects?

@encounter
Copy link
Copy Markdown
Owner

I'm gonna go ahead and merge this for a 2.0.0 alpha release.

@encounter encounter merged commit f5b5a61 into encounter:main May 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants