From: DJ Delorie Date: Fri, 30 Jun 2000 21:54:03 +0000 (+0000) Subject: * peicode.h (coff_swap_filehdr_in): can't use e_magic because we X-Git-Tag: readline-pre-41-import~73 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c689311bd9b48f72c5a39d2d4c00af33bea2528e;p=external%2Fbinutils.git * 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 --- diff --git a/bfd/peicode.h b/bfd/peicode.h index 8f64453..9071c72 100644 --- a/bfd/peicode.h +++ b/bfd/peicode.h @@ -220,9 +220,14 @@ 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 a zero symptr. */ diff --git a/include/ChangeLog b/include/ChangeLog index 2440179..29c27d1 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 e65562e..9b7f1f2 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 */