How do I check if an object file is in COFF or ELF format from within C? How do I check if an object file is in COFF or ELF format from within C? linux linux

How do I check if an object file is in COFF or ELF format from within C?


Read the first four bytes. If they are equal to \x7fELF, it's an ELF file. Otherwise, you should parse it as COFF and see if it makes sense. (Note that COFF magic is a lot more complicated; I get no less than 42 magic entries in /usr/share/file/magic for it).


Check the magic number. The ELF magic number is 0x7f454C46 (0x7f + "ELF") and COFF's is 0x14c. Take care about this anyway because there are different magic numbers for COFF.

Watch out about endianness when reading these values.


Try the command file. It tells you the type of a file.