diff options
author | Michael J. Spencer <bigcheesegs@gmail.com> | 2010-07-26 02:17:32 +0000 |
---|---|---|
committer | Michael J. Spencer <bigcheesegs@gmail.com> | 2010-07-26 02:17:32 +0000 |
commit | 801a3591161789e9716b0ec519f0f950b2d0c2ac (patch) | |
tree | 975d771db170cde6b5ad77c097ba3e64971323c1 /include/llvm/Support/COFF.h | |
parent | 6f4e4df1005e67917ebfcf66c8ea5bad5f587155 (diff) | |
download | llvm-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.h | 54 |
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. |