cle icon indicating copy to clipboard operation
cle copied to clipboard

Wrong lookups for DWARF v5 filename

Open c64cryptoboy opened this issue 11 months ago • 1 comments

Description

I think I've found a bug in (edit 1/20/25: ~~pyelftools/examples/dwarf_decode_address.py~~) https://github.com/angr/cle/blob/master/cle/backends/elf/elf.py that leads to wrong filenames retrievals from DWARF v5 data. I believe the "- 1" here:

line 668: file_entry = lineprog.header["file_entry"][line.state.file - 1]

should be a "- 0" when processing DWARF v5. (In the example I was looking at, the index became -1, which wrapped around to the last entry, giving a wrong filename.)

cle uses pyelftools. Here's an example directly from the pyelftools repo that gives me the answer I expect: https://github.com/eliben/pyelftools/blob/main/examples/dwarf_decode_address.py

From that example, here's the difference in logic from the cle implementation:

line 83:  delta = 1 if lineprog.header.version < 5 else 0
line 92:  filename = lineprog['file_entry'][prevstate.file - delta].name

Steps to reproduce the bug

No response

Environment

No response

Additional context

No response

c64cryptoboy avatar Jan 18 '25 01:01 c64cryptoboy

Sorry, I pasted in the wrong path in the opening sentence (now fixed). The bug is in cle, not pyelftools.

c64cryptoboy avatar Jan 20 '25 22:01 c64cryptoboy