Closed AetiasHax closed 1 month ago
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?
I'm gonna go ahead and merge this for a 2.0.0 alpha release.
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.