llvm-readobj: Add support for dumping the DOS header in PE files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221333 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Majnemer
2014-11-05 06:24:35 +00:00
parent 07e1080b89
commit 4787059b2f
5 changed files with 67 additions and 17 deletions

View File

@ -1020,12 +1020,13 @@ file_magic identify_magic(StringRef Magic) {
return file_magic::coff_object;
break;
case 0x4d: // Possible MS-DOS stub on Windows PE file
if (Magic[1] == 0x5a) {
case 'M': // Possible MS-DOS stub on Windows PE file
if (Magic[1] == 'Z') {
uint32_t off =
*reinterpret_cast<const support::ulittle32_t*>(Magic.data() + 0x3c);
// PE/COFF file, either EXE or DLL.
if (off < Magic.size() && memcmp(Magic.data() + off, "PE\0\0",4) == 0)
if (off < Magic.size() &&
memcmp(Magic.data()+off, COFF::PEMagic, sizeof(COFF::PEMagic)) == 0)
return file_magic::pecoff_executable;
}
break;