1,8 → 1,7 |
/* Internal format of COFF object file data structures, for GNU BFD. |
This file is part of BFD, the Binary File Descriptor library. |
|
Copyright 1999, 2000, 2001, 2002, 2003, 2004. 2005, 2006, 2007, 2009, |
2010 Free Software Foundation, Inc. |
Copyright (C) 1999-2015 Free Software Foundation, Inc. |
|
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
74,7 → 73,7 |
|
/* Standard coff internal info. */ |
unsigned short f_magic; /* magic number */ |
unsigned short f_nscns; /* number of sections */ |
unsigned int f_nscns; /* number of sections */ |
long f_timdat; /* time & date stamp */ |
bfd_vma f_symptr; /* file pointer to symtab */ |
long f_nsyms; /* number of symtab entries */ |
133,6 → 132,44 |
/* DataDirectory[15] is currently reserved, so no define. */ |
#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 |
|
/* Extra structure used in debug directory. */ |
struct internal_IMAGE_DEBUG_DIRECTORY |
{ |
unsigned long Characteristics; |
unsigned long TimeDateStamp; |
unsigned short MajorVersion; |
unsigned short MinorVersion; |
unsigned long Type; |
unsigned long SizeOfData; |
unsigned long AddressOfRawData; |
unsigned long PointerToRawData; |
}; |
|
#define PE_IMAGE_DEBUG_TYPE_UNKNOWN 0 |
#define PE_IMAGE_DEBUG_TYPE_COFF 1 |
#define PE_IMAGE_DEBUG_TYPE_CODEVIEW 2 |
#define PE_IMAGE_DEBUG_TYPE_FPO 3 |
#define PE_IMAGE_DEBUG_TYPE_MISC 4 |
#define PE_IMAGE_DEBUG_TYPE_EXCEPTION 5 |
#define PE_IMAGE_DEBUG_TYPE_FIXUP 6 |
#define PE_IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 |
#define PE_IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 |
#define PE_IMAGE_DEBUG_TYPE_BORLAND 9 |
#define PE_IMAGE_DEBUG_TYPE_RESERVED10 10 |
#define PE_IMAGE_DEBUG_TYPE_CLSID 11 |
|
/* Extra structure for a codeview debug record */ |
#define CV_INFO_SIGNATURE_LENGTH 16 |
|
typedef struct _CODEVIEW_INFO |
{ |
unsigned long CVSignature; |
char Signature[CV_INFO_SIGNATURE_LENGTH]; |
unsigned int SignatureLength; |
unsigned long Age; |
// char PdbFileName[]; |
} CODEVIEW_INFO; |
|
/* Default image base for NT. */ |
#define NT_EXE_IMAGE_BASE 0x400000 |
#define NT_DLL_IMAGE_BASE 0x10000000 |
153,17 → 190,17 |
/* FIXME: The following entries are in AOUTHDR. But they aren't |
available internally in bfd. We add them here so that objdump |
can dump them. */ |
/* The state of the image file */ |
/* The state of the image file. */ |
short Magic; |
/* Linker major version number */ |
/* Linker major version number. */ |
char MajorLinkerVersion; |
/* Linker minor version number */ |
/* Linker minor version number. */ |
char MinorLinkerVersion; |
/* Total size of all code sections */ |
/* Total size of all code sections. */ |
long SizeOfCode; |
/* Total size of all initialized data sections */ |
/* Total size of all initialized data sections. */ |
long SizeOfInitializedData; |
/* Total size of all uninitialized data sections */ |
/* Total size of all uninitialized data sections. */ |
long SizeOfUninitializedData; |
/* Address of entry point relative to image base. */ |
bfd_vma AddressOfEntryPoint; |
173,38 → 210,38 |
bfd_vma BaseOfData; |
|
/* PE stuff */ |
bfd_vma ImageBase; /* address of specific location in memory that |
file is located, NT default 0x10000 */ |
bfd_vma ImageBase; /* Address of specific location in memory that |
file is located, NT default 0x10000. */ |
|
bfd_vma SectionAlignment; /* section alignment default 0x1000 */ |
bfd_vma FileAlignment; /* file alignment default 0x200 */ |
short MajorOperatingSystemVersion; /* minimum version of the operating */ |
short MinorOperatingSystemVersion; /* system req'd for exe, default to 1*/ |
short MajorImageVersion; /* user defineable field to store version of */ |
short MinorImageVersion; /* exe or dll being created, default to 0 */ |
short MajorSubsystemVersion; /* minimum subsystem version required to */ |
short MinorSubsystemVersion; /* run exe; default to 3.1 */ |
long Reserved1; /* seems to be 0 */ |
long SizeOfImage; /* size of memory to allocate for prog */ |
long SizeOfHeaders; /* size of PE header and section table */ |
long CheckSum; /* set to 0 */ |
bfd_vma SectionAlignment; /* Section alignment default 0x1000. */ |
bfd_vma FileAlignment; /* File alignment default 0x200. */ |
short MajorOperatingSystemVersion; /* Minimum version of the operating. */ |
short MinorOperatingSystemVersion; /* System req'd for exe, default to 1. */ |
short MajorImageVersion; /* User defineable field to store version of */ |
short MinorImageVersion; /* exe or dll being created, default to 0. */ |
short MajorSubsystemVersion; /* Minimum subsystem version required to */ |
short MinorSubsystemVersion; /* run exe; default to 3.1. */ |
long Reserved1; /* Seems to be 0. */ |
long SizeOfImage; /* Size of memory to allocate for prog. */ |
long SizeOfHeaders; /* Size of PE header and section table. */ |
long CheckSum; /* Set to 0. */ |
short Subsystem; |
|
/* type of subsystem exe uses for user interface, |
/* Type of subsystem exe uses for user interface, |
possible values: |
1 - NATIVE Doesn't require a subsystem |
2 - WINDOWS_GUI runs in Windows GUI subsystem |
3 - WINDOWS_CUI runs in Windows char sub. (console app) |
5 - OS2_CUI runs in OS/2 character subsystem |
7 - POSIX_CUI runs in Posix character subsystem */ |
unsigned short DllCharacteristics; /* flags for DLL init */ |
bfd_vma SizeOfStackReserve; /* amount of memory to reserve */ |
bfd_vma SizeOfStackCommit; /* amount of memory initially committed for |
initial thread's stack, default is 0x1000 */ |
bfd_vma SizeOfHeapReserve; /* amount of virtual memory to reserve and */ |
bfd_vma SizeOfHeapCommit; /* commit, don't know what to defaut it to */ |
long LoaderFlags; /* can probably set to 0 */ |
long NumberOfRvaAndSizes; /* number of entries in next entry, 16 */ |
7 - POSIX_CUI runs in Posix character subsystem. */ |
unsigned short DllCharacteristics; /* flags for DLL init. */ |
bfd_vma SizeOfStackReserve; /* Amount of memory to reserve. */ |
bfd_vma SizeOfStackCommit; /* Amount of memory initially committed for |
initial thread's stack, default is 0x1000. */ |
bfd_vma SizeOfHeapReserve; /* Amount of virtual memory to reserve and */ |
bfd_vma SizeOfHeapCommit; /* commit, don't know what to defaut it to. */ |
long LoaderFlags; /* Can probably set to 0. */ |
long NumberOfRvaAndSizes; /* Number of entries in next entry, 16. */ |
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; |
}; |
|
551,7 → 588,11 |
|
union |
{ |
char x_fname[FILNMLEN]; |
/* PR 17754: We use to FILNMLEN for the size of the x_fname |
array, but that cause problems as PE targets use a larger |
value. We cannot use their definition of EFILNMLEN as this |
header can be used without including any PE headers. */ |
char x_fname[20]; |
struct |
{ |
long x_zeroes; |