From bc74177ca5679d034e0eccdbe10acc3ba855ba50 Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Fri, 30 Jun 2000 21:54:03 +0000 Subject: * peicode.h (coff_swap_filehdr_in): can't use e_magic because we can't assume the PE header is at 0x80. * coff/pe.h: clarify a comment --- bfd/peicode.h | 5 +++++ include/ChangeLog | 4 ++++ include/coff/pe.h | 8 ++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/bfd/peicode.h b/bfd/peicode.h index 8f64453a3f..9071c72b29 100644 --- a/bfd/peicode.h +++ b/bfd/peicode.h @@ -220,8 +220,13 @@ coff_swap_filehdr_in (abfd, src, dst) correctly for a PEI file, check the e_magic number here, and, if it doesn't match, clobber the f_magic number so that we don't get a false match. */ +#if 0 + /* We can't assume that the PE header is at offset 0x80. When it + isn't, the DOS header isn't read correctly, so we can't assume + e_magic is set even for valid PE files. */ if (bfd_h_get_16 (abfd, (bfd_byte *) filehdr_src->e_magic) != DOSMAGIC) filehdr_dst->f_magic = -1; +#endif #endif /* Other people's tools sometimes generate headers with an nsyms but diff --git a/include/ChangeLog b/include/ChangeLog index 2440179b23..29c27d1269 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2000-06-30 DJ Delorie + + * coff/pe.h: clarify a comment + 2000-06-18 Stephane Carrez * dis-asm.h (print_insn_m68hc12): Define. diff --git a/include/coff/pe.h b/include/coff/pe.h index e65562eee8..9b7f1f20cf 100644 --- a/include/coff/pe.h +++ b/include/coff/pe.h @@ -110,7 +110,7 @@ struct external_PEI_filehdr { - /* DOS header fields */ + /* DOS header fields - always at offset zero in the EXE file */ char e_magic[2]; /* Magic number, 0x5a4d */ char e_cblp[2]; /* Bytes on last page of file, 0x90 */ char e_cp[2]; /* Pages in file, 0x3 */ @@ -129,8 +129,12 @@ struct external_PEI_filehdr char e_oemid[2]; /* OEM identifier (for e_oeminfo), 0x0 */ char e_oeminfo[2]; /* OEM information; e_oemid specific, 0x0 */ char e_res2[10][2]; /* Reserved words, all 0x0 */ - char e_lfanew[4]; /* File address of new exe header, 0x80 */ + char e_lfanew[4]; /* File address of new exe header, usually 0x80 */ char dos_message[16][4]; /* other stuff, always follow DOS header */ + + /* Note: additional bytes may be inserted before the signature. Use + the e_lfanew field to find the actual location of the NT signature */ + char nt_signature[4]; /* required NT signature, 0x4550 */ /* From standard header */ -- cgit v1.2.1