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
+2000-06-30 DJ Delorie <dj@cygnus.com>
+
+ * coff/pe.h: clarify a comment
+
2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
* dis-asm.h (print_insn_m68hc12): Define.
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 */
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 */