aboutsummaryrefslogtreecommitdiff
path: root/include/coff
diff options
context:
space:
mode:
Diffstat (limited to 'include/coff')
-rw-r--r--include/coff/ChangeLog11
-rw-r--r--include/coff/internal.h2
-rw-r--r--include/coff/pe.h79
3 files changed, 91 insertions, 1 deletions
diff --git a/include/coff/ChangeLog b/include/coff/ChangeLog
index 0d90f5a..2ee6361 100644
--- a/include/coff/ChangeLog
+++ b/include/coff/ChangeLog
@@ -1,3 +1,14 @@
+2014-03-13 Tristan Gingold <gingold@adacore.com>
+
+ * pe.h (struct external_ANON_OBJECT_HEADER_BIGOBJ): Declare.
+ (FILHSZ_BIGOBJ): Define.
+ (struct external_SYMBOL_EX): Declare.
+ (SYMENT_BIGOBJ, SYMESZ_BIGOBJ): Define.
+ (union external_AUX_SYMBOL_EX): Declare.
+ (AUXENT_BIGOBJ, AUXESZ_BIGOBJ): Define.
+ * internal.h (struct internal_filehdr): Change type
+ of f_nscns.
+
2014-03-05 Alan Modra <amodra@gmail.com>
Update copyright years.
diff --git a/include/coff/internal.h b/include/coff/internal.h
index 4f99f2f..b34e5c6 100644
--- a/include/coff/internal.h
+++ b/include/coff/internal.h
@@ -73,7 +73,7 @@ struct internal_filehdr
/* 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 */
diff --git a/include/coff/pe.h b/include/coff/pe.h
index 0093398b..3166531 100644
--- a/include/coff/pe.h
+++ b/include/coff/pe.h
@@ -358,6 +358,85 @@ typedef struct
#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
+/* Bigobj header. */
+struct external_ANON_OBJECT_HEADER_BIGOBJ
+{
+ /* ANON_OBJECT_HEADER_V2 header. */
+ char Sig1[2];
+ char Sig2[2];
+ char Version[2];
+ char Machine[2];
+ char TimeDateStamp[4];
+ char ClassID[16];
+ char SizeOfData[4];
+ char Flags[4];
+ char MetaDataSize[4];
+ char MetaDataOffset[4];
+
+ /* BIGOBJ specific. */
+ char NumberOfSections[4];
+ char PointerToSymbolTable[4];
+ char NumberOfSymbols[4];
+};
+
+#define FILHSZ_BIGOBJ (14 * 4)
+
+struct external_SYMBOL_EX
+{
+ union
+ {
+ char e_name[E_SYMNMLEN];
+
+ struct
+ {
+ char e_zeroes[4];
+ char e_offset[4];
+ } e;
+ } e;
+
+ char e_value[4];
+ char e_scnum[4];
+ char e_type[2];
+ char e_sclass[1];
+ char e_numaux[1];
+} ATTRIBUTE_PACKED ;
+
+#define SYMENT_BIGOBJ struct external_SYMBOL_EX
+#define SYMESZ_BIGOBJ 20
+
+#define FILNMLEN_BIGOBJ 20
+
+union external_AUX_SYMBOL_EX
+{
+ struct
+ {
+ char WeakDefaultSymIndex[4];
+ char WeakSearchType[4];
+ char rgbReserved[12];
+ } Sym;
+
+ struct
+ {
+ char Name[FILNMLEN_BIGOBJ];
+ } File;
+
+ struct
+ {
+ char Length[4]; /* section length */
+ char NumberOfRelocations[2]; /* # relocation entries */
+ char NumberOfLinenumbers[2]; /* # line numbers */
+ char Checksum[4]; /* section COMDAT checksum */
+ char Number[2]; /* COMDAT associated section index */
+ char Selection[1]; /* COMDAT selection number */
+ char bReserved[1];
+ char HighNumber[2]; /* High bits of COMDAT associated sec. */
+ char rgbReserved[2];
+ } Section;
+} ATTRIBUTE_PACKED;
+
+#define AUXENT_BIGOBJ union external_AUX_SYMBOL_EX
+#define AUXESZ_BIGOBJ 20
+
/* .pdata/.xdata defines and structures for x64 PE+ for exception handling. */
/* .pdata in exception directory. */