Lines Matching full:header
47 bool is64Bit() const { return COFF::is64Bit(Obj.Header.Machine); }
50 return Obj.OptionalHeader->Header.FileAlignment;
68 std::copy(Name.begin(), Name.end(), Sec.Header.Name);
77 Sec.Header.Name[0] = '/';
78 std::copy(str.begin(), str.end(), Sec.Header.Name + 1);
90 Sec.Header.Characteristics |= (Log2_32(Sec.Alignment) + 1) << 20;
102 std::copy(Name.begin(), Name.end(), Sym.Header.Name);
106 *reinterpret_cast<support::aligned_ulittle32_t *>(Sym.Header.Name + 4) =
110 Sym.Header.Type = Sym.SimpleType;
111 Sym.Header.Type |= Sym.ComplexType << COFF::SCT_COMPLEX_TYPE_SHIFT;
156 CP.Obj.Header.SizeOfOptionalHeader =
158 CP.Obj.OptionalHeader->Header.NumberOfRvaAndSize;
191 // The section table starts immediately after the header, including the
192 // optional header.
194 CP.getHeaderSize() + CP.Obj.Header.SizeOfOptionalHeader;
241 S.Header.SizeOfRawData = DataSize;
243 S.Header.SizeOfRawData =
244 alignTo(S.Header.SizeOfRawData, CP.getFileAlignment());
245 S.Header.PointerToRawData = CurrentSectionDataOffset;
246 CurrentSectionDataOffset += S.Header.SizeOfRawData;
248 S.Header.PointerToRelocations = CurrentSectionDataOffset;
249 if (S.Header.Characteristics & COFF::IMAGE_SCN_LNK_NRELOC_OVFL) {
250 S.Header.NumberOfRelocations = 0xffff;
253 S.Header.NumberOfRelocations = S.Relocations.size();
259 S.Header.PointerToRawData = 0;
284 i->Header.NumberOfAuxSymbols = NumberOfAuxSymbols;
288 // Store all the allocated start addresses in the header.
289 CP.Obj.Header.NumberOfSections = CP.Obj.Sections.size();
290 CP.Obj.Header.NumberOfSymbols = NumberOfSymbols;
292 CP.Obj.Header.PointerToSymbolTable = SymbolTableStart;
294 CP.Obj.Header.PointerToSymbolTable = 0;
338 T Header) {
339 memset(Header, 0, sizeof(*Header));
340 Header->Magic = Magic;
341 Header->SectionAlignment = CP.Obj.OptionalHeader->Header.SectionAlignment;
342 Header->FileAlignment = CP.Obj.OptionalHeader->Header.FileAlignment;
346 Header->FileAlignment);
347 uint32_t SizeOfImage = alignTo(SizeOfHeaders, Header->SectionAlignment);
350 if (S.Header.Characteristics & COFF::IMAGE_SCN_CNT_CODE)
351 SizeOfCode += S.Header.SizeOfRawData;
352 if (S.Header.Characteristics & COFF::IMAGE_SCN_CNT_INITIALIZED_DATA)
353 SizeOfInitializedData += S.Header.SizeOfRawData;
354 if (S.Header.Characteristics & COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA)
355 SizeOfUninitializedData += S.Header.SizeOfRawData;
357 Header->BaseOfCode = S.Header.VirtualAddress; // RVA
359 BaseOfData = S.Header.VirtualAddress; // RVA
360 if (S.Header.VirtualAddress)
361 SizeOfImage += alignTo(S.Header.VirtualSize, Header->SectionAlignment);
363 Header->SizeOfCode = SizeOfCode;
364 Header->SizeOfInitializedData = SizeOfInitializedData;
365 Header->SizeOfUninitializedData = SizeOfUninitializedData;
366 Header->AddressOfEntryPoint =
367 CP.Obj.OptionalHeader->Header.AddressOfEntryPoint; // RVA
368 Header->ImageBase = CP.Obj.OptionalHeader->Header.ImageBase;
369 Header->MajorOperatingSystemVersion =
370 CP.Obj.OptionalHeader->Header.MajorOperatingSystemVersion;
371 Header->MinorOperatingSystemVersion =
372 CP.Obj.OptionalHeader->Header.MinorOperatingSystemVersion;
373 Header->MajorImageVersion = CP.Obj.OptionalHeader->Header.MajorImageVersion;
374 Header->MinorImageVersion = CP.Obj.OptionalHeader->Header.MinorImageVersion;
375 Header->MajorSubsystemVersion =
376 CP.Obj.OptionalHeader->Header.MajorSubsystemVersion;
377 Header->MinorSubsystemVersion =
378 CP.Obj.OptionalHeader->Header.MinorSubsystemVersion;
379 Header->SizeOfImage = SizeOfImage;
380 Header->SizeOfHeaders = SizeOfHeaders;
381 Header->Subsystem = CP.Obj.OptionalHeader->Header.Subsystem;
382 Header->DLLCharacteristics = CP.Obj.OptionalHeader->Header.DLLCharacteristics;
383 Header->SizeOfStackReserve = CP.Obj.OptionalHeader->Header.SizeOfStackReserve;
384 Header->SizeOfStackCommit = CP.Obj.OptionalHeader->Header.SizeOfStackCommit;
385 Header->SizeOfHeapReserve = CP.Obj.OptionalHeader->Header.SizeOfHeapReserve;
386 Header->SizeOfHeapCommit = CP.Obj.OptionalHeader->Header.SizeOfHeapCommit;
387 Header->NumberOfRvaAndSize = CP.Obj.OptionalHeader->Header.NumberOfRvaAndSize;
420 << binary_le(CP.Obj.Header.Machine)
421 << binary_le(CP.Obj.Header.TimeDateStamp);
424 << zeros(uint32_t(0)) << binary_le(CP.Obj.Header.NumberOfSections)
425 << binary_le(CP.Obj.Header.PointerToSymbolTable)
426 << binary_le(CP.Obj.Header.NumberOfSymbols);
428 OS << binary_le(CP.Obj.Header.Machine)
429 << binary_le(static_cast<int16_t>(CP.Obj.Header.NumberOfSections))
430 << binary_le(CP.Obj.Header.TimeDateStamp)
431 << binary_le(CP.Obj.Header.PointerToSymbolTable)
432 << binary_le(CP.Obj.Header.NumberOfSymbols)
433 << binary_le(CP.Obj.Header.SizeOfOptionalHeader)
434 << binary_le(CP.Obj.Header.Characteristics);
448 for (uint32_t I = 0; I < CP.Obj.OptionalHeader->Header.NumberOfRvaAndSize;
466 OS.write(S.Header.Name, COFF::NameSize);
467 OS << binary_le(S.Header.VirtualSize)
468 << binary_le(S.Header.VirtualAddress)
469 << binary_le(S.Header.SizeOfRawData)
470 << binary_le(S.Header.PointerToRawData)
471 << binary_le(S.Header.PointerToRelocations)
472 << binary_le(S.Header.PointerToLineNumbers)
473 << binary_le(S.Header.NumberOfRelocations)
474 << binary_le(S.Header.NumberOfLineNumbers)
475 << binary_le(S.Header.Characteristics);
483 CurSymbol += 1 + Sym.Header.NumberOfAuxSymbols;
488 if (S.Header.SizeOfRawData == 0 || S.Header.PointerToRawData == 0)
490 assert(S.Header.PointerToRawData >= OS.tell());
491 OS.write_zeros(S.Header.PointerToRawData - OS.tell());
495 assert(S.Header.SizeOfRawData >= S.SectionData.binary_size());
496 OS.write_zeros(S.Header.PointerToRawData + S.Header.SizeOfRawData -
498 if (S.Header.Characteristics & COFF::IMAGE_SCN_LNK_NRELOC_OVFL)
522 OS.write(i->Header.Name, COFF::NameSize);
523 OS << binary_le(i->Header.Value);
525 OS << binary_le(i->Header.SectionNumber);
527 OS << binary_le(static_cast<int16_t>(i->Header.SectionNumber));
528 OS << binary_le(i->Header.Type) << binary_le(i->Header.StorageClass)
529 << binary_le(i->Header.NumberOfAuxSymbols);
582 if (CP.Obj.Header.PointerToSymbolTable)
627 ErrHandler("failed to layout optional header for COFF file");