summaryrefslogtreecommitdiff
path: root/include/llvm/Support/COFF.h
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2010-07-26 02:17:32 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2010-07-26 02:17:32 +0000
commit801a3591161789e9716b0ec519f0f950b2d0c2ac (patch)
tree975d771db170cde6b5ad77c097ba3e64971323c1 /include/llvm/Support/COFF.h
parent6f4e4df1005e67917ebfcf66c8ea5bad5f587155 (diff)
downloadllvm-801a3591161789e9716b0ec519f0f950b2d0c2ac.tar.gz
llvm-801a3591161789e9716b0ec519f0f950b2d0c2ac.tar.bz2
llvm-801a3591161789e9716b0ec519f0f950b2d0c2ac.tar.xz
MC: Add WinCOFFObjectWriter implementation.
Origonal Windows COFF implementation by Nathan Jedffords. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109389 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/COFF.h')
-rw-r--r--include/llvm/Support/COFF.h54
1 files changed, 53 insertions, 1 deletions
diff --git a/include/llvm/Support/COFF.h b/include/llvm/Support/COFF.h
index 69137bff71..5af4b29bca 100644
--- a/include/llvm/Support/COFF.h
+++ b/include/llvm/Support/COFF.h
@@ -202,7 +202,7 @@ namespace COFF {
IMAGE_REL_I386_REL32 = 0x0014
};
- enum {
+ enum COMDATType {
IMAGE_COMDAT_SELECT_NODUPLICATES = 1,
IMAGE_COMDAT_SELECT_ANY,
IMAGE_COMDAT_SELECT_SAME_SIZE,
@@ -211,6 +211,58 @@ namespace COFF {
IMAGE_COMDAT_SELECT_LARGEST
};
+ // Auxiliary Symbol Formats
+ struct AuxiliaryFunctionDefinition {
+ uint32_t TagIndex;
+ uint32_t TotalSize;
+ uint32_t PointerToLinenumber;
+ uint32_t PointerToNextFunction;
+ uint8_t unused[2];
+ };
+
+ struct AuxiliarybfAndefSymbol {
+ uint8_t unused1[4];
+ uint16_t Linenumber;
+ uint8_t unused2[6];
+ uint32_t PointerToNextFunction;
+ uint8_t unused3[2];
+ };
+
+ struct AuxiliaryWeakExternal {
+ uint32_t TagIndex;
+ uint32_t Characteristics;
+ uint8_t unused[10];
+ };
+
+ /// These are not documented in the spec, but are located in WinNT.h.
+ enum WeakExternalCharacteristics {
+ IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1,
+ IMAGE_WEAK_EXTERN_SEARCH_LIBRARY = 2,
+ IMAGE_WEAK_EXTERN_SEARCH_ALIAS = 3
+ };
+
+ struct AuxiliaryFile {
+ uint8_t FileName[18];
+ };
+
+ struct AuxiliarySectionDefinition {
+ uint32_t Length;
+ uint16_t NumberOfRelocations;
+ uint16_t NumberOfLinenumbers;
+ uint32_t CheckSum;
+ uint16_t Number;
+ uint8_t Selection;
+ uint8_t unused[3];
+ };
+
+ union Auxiliary {
+ AuxiliaryFunctionDefinition FunctionDefinition;
+ AuxiliarybfAndefSymbol bfAndefSymbol;
+ AuxiliaryWeakExternal WeakExternal;
+ AuxiliaryFile File;
+ AuxiliarySectionDefinition SectionDefinition;
+ };
+
} // End namespace llvm.
} // End namespace COFF.