Home | History | Annotate | Download | only in MC

Lines Matching refs:COFF

10 // This file contains an implementation of a Win32 COFF object file writer.
31 #include "llvm/Support/COFF.h"
40 typedef SmallString<COFF::NameSize> name;
52 COFF::Auxiliary Aux;
60 COFF::symbol Data;
80 // This class contains staging data for a COFF relocation entry.
82 COFF::relocation Data;
86 static size_t size() { return COFF::RelocationSize; }
93 COFF::section Header;
105 // This class holds the COFF string table.
131 COFF::header Header;
164 void WriteFileHeader(const COFF::header &Header);
167 void WriteSectionHeader(const COFF::section &S);
168 void WriteRelocation(const COFF::relocation &R);
217 return COFF::SymbolSize + (Data.NumberOfAuxSymbols * COFF::SymbolSize);
267 return COFF::SectionSize;
363 /// and creates the associated COFF section staging object.
366 && "Got non COFF section in the COFF backend!");
376 coff_symbol->Data.StorageClass = COFF::IMAGE_SYM_CLASS_STATIC;
388 case 1: Characteristics |= COFF::IMAGE_SCN_ALIGN_1BYTES; break;
389 case 2: Characteristics |= COFF::IMAGE_SCN_ALIGN_2BYTES; break;
390 case 4: Characteristics |= COFF::IMAGE_SCN_ALIGN_4BYTES; break;
391 case 8: Characteristics |= COFF::IMAGE_SCN_ALIGN_8BYTES; break;
392 case 16: Characteristics |= COFF::IMAGE_SCN_ALIGN_16BYTES; break;
393 case 32: Characteristics |= COFF::IMAGE_SCN_ALIGN_32BYTES; break;
394 case 64: Characteristics |= COFF::IMAGE_SCN_ALIGN_64BYTES; break;
395 case 128: Characteristics |= COFF::IMAGE_SCN_ALIGN_128BYTES; break;
396 case 256: Characteristics |= COFF::IMAGE_SCN_ALIGN_256BYTES; break;
397 case 512: Characteristics |= COFF::IMAGE_SCN_ALIGN_512BYTES; break;
398 case 1024: Characteristics |= COFF::IMAGE_SCN_ALIGN_1024BYTES; break;
399 case 2048: Characteristics |= COFF::IMAGE_SCN_ALIGN_2048BYTES; break;
400 case 4096: Characteristics |= COFF::IMAGE_SCN_ALIGN_4096BYTES; break;
401 case 8192: Characteristics |= COFF::IMAGE_SCN_ALIGN_8192BYTES; break;
406 // Bind internal COFF section to MC section.
412 /// and creates the associated COFF symbol staging object.
419 if (SymbolData.getFlags() & COFF::SF_WeakExternal) {
420 coff_symbol->Data.StorageClass = COFF::IMAGE_SYM_CLASS_WEAK_EXTERNAL;
435 WeakDefault->Data.SectionNumber = COFF::IMAGE_SYM_ABSOLUTE;
436 WeakDefault->Data.StorageClass = COFF::IMAGE_SYM_CLASS_EXTERNAL;
448 COFF::IMAGE_WEAK_EXTERN_SEARCH_LIBRARY;
463 external ? COFF::IMAGE_SYM_CLASS_EXTERNAL : COFF::IMAGE_SYM_CLASS_STATIC;
477 if (S.Name.size() > COFF::NameSize) {
491 report_fatal_error("COFF string table is greater than 9,999,999 bytes.");
502 if (S.Name.size() > COFF::NameSize) {
529 & COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA) == 0;
535 void WinCOFFObjectWriter::WriteFileHeader(const COFF::header &Header) {
546 WriteBytes(StringRef(S->Data.Name, COFF::NameSize));
596 void WinCOFFObjectWriter::WriteSectionHeader(const COFF::section &S) {
597 WriteBytes(StringRef(S.Name, COFF::NameSize));
610 void WinCOFFObjectWriter::WriteRelocation(const COFF::relocation &R) {
703 if (Reloc.Data.Type == COFF::IMAGE_REL_AMD64_REL32 ||
704 Reloc.Data.Type == COFF::IMAGE_REL_I386_REL32)
769 COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE)
790 // Assign file offsets to COFF object file structures.
794 offset += COFF::HeaderSize;
795 offset += COFF::SectionSize * Header.NumberOfSections;
827 offset += COFF::RelocationSize;
830 offset += COFF::RelocationSize * Sec->Relocations.size();
866 (*i)->Header.Characteristics |= COFF::IMAGE_SCN_LNK_NRELOC_OVFL;
892 COFF::relocation r;