How can I know what type of debug info is in an ELF object file?

16,786

Solution 1

You should probably use the nm

The nm utility shall display symbolic information appearing in the object file, executable file, or object-file library named by file. If no symbolic information is available for a valid input file, the nm utility shall report that fact, but not consider it an error condition.

Alternatively you can use tools like ldd to see what libraries are required by a binary.

Solution 2

In GNU/Linux:

$ readelf --debug-dump=info /absolute/path/to/file | grep "Version" | uniq

Returns the DWARF symbols version used in the binary.

Solution 3

It doesn't seem like anyone ever answered your actual question, which is: how to programmatically determine the flavor of debug symbols present in a given ELF binary. As best as I can tell, this isn't given explicitly within ELF; however, it can be inferred by the presence of specific section names within the ELF file. For example: a section named ".debug_info" implies DWARF2 or better, whereas ".stab" implies stabs. A quick googling of your ".debug_sfnames" suggests DWARF1. (I don't know why your 'dwarfdump' didn't identify that... perhaps your dwarfdump is for newer DWARFs, and dumped backwards compatibility?)

Share:
16,786
johnj33
Author by

johnj33

Updated on June 18, 2022

Comments

  • johnj33
    johnj33 about 2 years

    I have an ELF object file. I want to know which type of debugging info it contains. It was compiled with the Diab compiler (C source) for the PPC architecture. I'm pretty sure it was built with debugging symbols.

    I have tried extracting the debugging info with dwarfdump but I doesn't work so I guess the debugging information is not of type DWARF.

    $ dwarfdump file.elf
    No DWARF information present in file.elf
    

    Using objdump to show debugging information comes up empty.

    $ objdump -g file.elf 
    file.elf:     file format elf32-powerpc
    

    Can it be that this ELF file does not contain debugging info even though the ELF file has sections called .debug_sfnames, .debug_srcinfo and .debug.srcinfo? Or is the debugging info stored in a format that objdump can't handle?