Lines Matching refs:CBA

220   bool initImplicitHeader(ContiguousBlobAccumulator &CBA, Elf_Shdr &Header,
223 ContiguousBlobAccumulator &CBA);
225 ContiguousBlobAccumulator &CBA,
229 ContiguousBlobAccumulator &CBA,
232 ContiguousBlobAccumulator &CBA,
245 ContiguousBlobAccumulator &CBA);
248 ContiguousBlobAccumulator &CBA);
251 ContiguousBlobAccumulator &CBA);
254 ContiguousBlobAccumulator &CBA);
257 ContiguousBlobAccumulator &CBA);
260 ContiguousBlobAccumulator &CBA);
263 ContiguousBlobAccumulator &CBA);
266 ContiguousBlobAccumulator &CBA);
269 ContiguousBlobAccumulator &CBA);
272 ContiguousBlobAccumulator &CBA);
275 ContiguousBlobAccumulator &CBA);
278 ContiguousBlobAccumulator &CBA);
281 ContiguousBlobAccumulator &CBA);
284 ContiguousBlobAccumulator &CBA);
287 ContiguousBlobAccumulator &CBA);
290 ContiguousBlobAccumulator &CBA);
293 ContiguousBlobAccumulator &CBA);
296 ContiguousBlobAccumulator &CBA);
299 ContiguousBlobAccumulator &CBA);
302 ContiguousBlobAccumulator &CBA);
305 ContiguousBlobAccumulator &CBA);
307 void writeFill(ELFYAML::Fill &Fill, ContiguousBlobAccumulator &CBA);
316 uint64_t alignToOffset(ContiguousBlobAccumulator &CBA, uint64_t Align,
652 bool ELFState<ELFT>::initImplicitHeader(ContiguousBlobAccumulator &CBA, in initImplicitHeader() argument
660 initStrtabSectionHeader(Header, SecName, DotStrtab, CBA, YAMLSec); in initImplicitHeader()
662 initStrtabSectionHeader(Header, SecName, DotDynstr, CBA, YAMLSec); in initImplicitHeader()
664 initStrtabSectionHeader(Header, SecName, *ShStrtabStrings, CBA, YAMLSec); in initImplicitHeader()
666 initSymtabSectionHeader(Header, SymtabType::Static, CBA, YAMLSec); in initImplicitHeader()
668 initSymtabSectionHeader(Header, SymtabType::Dynamic, CBA, YAMLSec); in initImplicitHeader()
674 initDWARFSectionHeader(Header, SecName, CBA, YAMLSec); in initImplicitHeader()
718 static uint64_t writeContent(ContiguousBlobAccumulator &CBA, in writeContent() argument
723 CBA.writeAsBinary(*Content); in writeContent()
730 CBA.writeZeros(*Size - ContentSize); in writeContent()
759 ContiguousBlobAccumulator &CBA) { in initSectionHeaders() argument
766 S->Offset = alignToOffset(CBA, /*Align=*/1, S->Offset); in initSectionHeaders()
767 writeFill(*S, CBA); in initSectionHeaders()
778 S->Offset = alignToOffset(CBA, sizeof(typename ELFT::uint), in initSectionHeaders()
781 S->Offset = alignToOffset(CBA, /*Align=*/1, S->Offset); in initSectionHeaders()
786 CBA.writeZeros(Size); in initSectionHeaders()
817 if (initImplicitHeader(CBA, SHeader, Sec->Name, in initSectionHeaders()
834 SHeader.sh_offset = alignToOffset(CBA, SHeader.sh_addralign, Sec->Offset); in initSectionHeaders()
853 SHeader.sh_size = writeContent(CBA, Sec->Content, Sec->Size); in initSectionHeaders()
856 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
858 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
860 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
862 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
864 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
866 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
868 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
870 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
872 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
874 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
876 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
878 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
880 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
882 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
884 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
886 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
888 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
890 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
892 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
894 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
896 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
972 ContiguousBlobAccumulator &CBA, in initSymtabSectionHeader() argument
1020 alignToOffset(CBA, SHeader.sh_addralign, RawSec ? RawSec->Offset : None); in initSymtabSectionHeader()
1024 SHeader.sh_size = writeContent(CBA, RawSec->Content, RawSec->Size); in initSymtabSectionHeader()
1031 CBA.write((const char *)Syms.data(), SHeader.sh_size); in initSymtabSectionHeader()
1037 ContiguousBlobAccumulator &CBA, in initStrtabSectionHeader() argument
1046 SHeader.sh_offset = alignToOffset(CBA, SHeader.sh_addralign, in initStrtabSectionHeader()
1050 SHeader.sh_size = writeContent(CBA, RawSec->Content, RawSec->Size); in initStrtabSectionHeader()
1052 if (raw_ostream *OS = CBA.getRawOS(STB.getSize())) in initStrtabSectionHeader()
1076 ContiguousBlobAccumulator &CBA) { in emitDWARF() argument
1080 raw_ostream *OS = CBA.getRawOS(0); in emitDWARF()
1084 uint64_t BeginOffset = CBA.tell(); in emitDWARF()
1090 return CBA.tell() - BeginOffset; in emitDWARF()
1095 ContiguousBlobAccumulator &CBA, in initDWARFSectionHeader() argument
1100 SHeader.sh_offset = alignToOffset(CBA, SHeader.sh_addralign, in initDWARFSectionHeader()
1112 emitDWARF<ELFT>(SHeader, Name, *Doc.DWARF, CBA)) in initDWARFSectionHeader()
1118 SHeader.sh_size = writeContent(CBA, RawSec->Content, RawSec->Size); in initDWARFSectionHeader()
1239 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1249 CBA.writeZeros(*S.Size); in writeSectionContent()
1255 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1269 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1291 CBA.write((const char *)&REntry, sizeof(REntry)); in writeSectionContent()
1297 CBA.write((const char *)&REntry, sizeof(REntry)); in writeSectionContent()
1308 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1316 CBA.write<uintX_t>(E, ELFT::TargetEndianness); in writeSectionContent()
1325 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1327 SHeader.sh_size = writeContent(CBA, Shndx.Content, Shndx.Size); in writeSectionContent()
1335 CBA.write<uint32_t>(E, ELFT::TargetEndianness); in writeSectionContent()
1342 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1359 CBA.write<uint32_t>(SectionIndex, ELFT::TargetEndianness); in writeSectionContent()
1367 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1372 CBA.write<uint16_t>(Version, ELFT::TargetEndianness); in writeSectionContent()
1379 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1387 CBA.write<uintX_t>(E.Address, ELFT::TargetEndianness); in writeSectionContent()
1388 SHeader.sh_size += sizeof(uintX_t) + CBA.writeULEB128(E.Size); in writeSectionContent()
1395 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1401 CBA.write<uintX_t>(E.Address, ELFT::TargetEndianness); in writeSectionContent()
1406 SHeader.sh_size += sizeof(uintX_t) + CBA.writeULEB128(NumBlocks); in writeSectionContent()
1411 SHeader.sh_size += CBA.writeULEB128(BBE.AddressOffset) + in writeSectionContent()
1412 CBA.writeULEB128(BBE.Size) + in writeSectionContent()
1413 CBA.writeULEB128(BBE.Metadata); in writeSectionContent()
1420 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1425 CBA.write(LO.Key.data(), LO.Key.size()); in writeSectionContent()
1426 CBA.write('\0'); in writeSectionContent()
1427 CBA.write(LO.Value.data(), LO.Value.size()); in writeSectionContent()
1428 CBA.write('\0'); in writeSectionContent()
1436 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1441 CBA.write(Lib.data(), Lib.size()); in writeSectionContent()
1442 CBA.write('\0'); in writeSectionContent()
1449 ELFState<ELFT>::alignToOffset(ContiguousBlobAccumulator &CBA, uint64_t Align, in alignToOffset() argument
1451 uint64_t CurrentOffset = CBA.getOffset(); in alignToOffset()
1467 CBA.writeZeros(AlignedOffset - CurrentOffset); in alignToOffset()
1474 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1479 CBA.write<uint64_t>(E.Weight, ELFT::TargetEndianness); in writeSectionContent()
1487 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1494 CBA.write<uint32_t>( in writeSectionContent()
1497 CBA.write<uint32_t>( in writeSectionContent()
1502 CBA.write<uint32_t>(Val, ELFT::TargetEndianness); in writeSectionContent()
1504 CBA.write<uint32_t>(Val, ELFT::TargetEndianness); in writeSectionContent()
1512 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1538 CBA.write((const char *)&VerDef, sizeof(Elf_Verdef)); in writeSectionContent()
1547 CBA.write((const char *)&VernAux, sizeof(Elf_Verdaux)); in writeSectionContent()
1558 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1581 CBA.write((const char *)&VerNeed, sizeof(Elf_Verneed)); in writeSectionContent()
1595 CBA.write((const char *)&VernAux, sizeof(Elf_Vernaux)); in writeSectionContent()
1606 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1611 CBA.write<uint32_t>(E.Offset, ELFT::TargetEndianness); in writeSectionContent()
1612 CBA.write<uint32_t>(E.Value, ELFT::TargetEndianness); in writeSectionContent()
1620 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1639 CBA.write((const char *)&Flags, sizeof(Flags)); in writeSectionContent()
1645 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1653 CBA.write<uintX_t>(DE.Tag, ELFT::TargetEndianness); in writeSectionContent()
1654 CBA.write<uintX_t>(DE.Val, ELFT::TargetEndianness); in writeSectionContent()
1662 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1671 CBA.writeULEB128(toSymbolIndex(Sym, Section.Name, /*IsDynamic=*/false)); in writeSectionContent()
1677 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1681 uint64_t Offset = CBA.tell(); in writeSectionContent()
1685 CBA.write<uint32_t>(0, ELFT::TargetEndianness); in writeSectionContent()
1687 CBA.write<uint32_t>(NE.Name.size() + 1, ELFT::TargetEndianness); in writeSectionContent()
1691 CBA.write<uint32_t>(0, ELFT::TargetEndianness); in writeSectionContent()
1693 CBA.write<uint32_t>(NE.Desc.binary_size(), ELFT::TargetEndianness); in writeSectionContent()
1696 CBA.write<uint32_t>(NE.Type, ELFT::TargetEndianness); in writeSectionContent()
1700 CBA.write(NE.Name.data(), NE.Name.size()); in writeSectionContent()
1701 CBA.write('\0'); in writeSectionContent()
1702 CBA.padToAlignment(4); in writeSectionContent()
1707 CBA.writeAsBinary(NE.Desc); in writeSectionContent()
1708 CBA.padToAlignment(4); in writeSectionContent()
1712 SHeader.sh_size = CBA.tell() - Offset; in writeSectionContent()
1718 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1730 CBA.write<uint32_t>(*Section.Header->NBuckets, ELFT::TargetEndianness); in writeSectionContent()
1732 CBA.write<uint32_t>(Section.HashBuckets->size(), ELFT::TargetEndianness); in writeSectionContent()
1736 CBA.write<uint32_t>(Section.Header->SymNdx, ELFT::TargetEndianness); in writeSectionContent()
1741 CBA.write<uint32_t>(*Section.Header->MaskWords, ELFT::TargetEndianness); in writeSectionContent()
1743 CBA.write<uint32_t>(Section.BloomFilter->size(), ELFT::TargetEndianness); in writeSectionContent()
1746 CBA.write<uint32_t>(Section.Header->Shift2, ELFT::TargetEndianness); in writeSectionContent()
1750 CBA.write<uintX_t>(Val, ELFT::TargetEndianness); in writeSectionContent()
1754 CBA.write<uint32_t>(Val, ELFT::TargetEndianness); in writeSectionContent()
1758 CBA.write<uint32_t>(Val, ELFT::TargetEndianness); in writeSectionContent()
1768 ContiguousBlobAccumulator &CBA) { in writeFill() argument
1771 CBA.writeZeros(Fill.Size); in writeFill()
1778 CBA.writeAsBinary(*Fill.Pattern); in writeFill()
1779 CBA.writeAsBinary(*Fill.Pattern, Fill.Size - Written); in writeFill()
1945 ContiguousBlobAccumulator CBA(SectionContentBeginOffset, MaxSize); in writeELF() local
1948 State.initSectionHeaders(SHeaders, CBA); in writeELF()
1953 bool ReachedLimit = CBA.getOffset() > MaxSize; in writeELF()
1954 if (Error E = CBA.takeLimitError()) { in writeELF()
1973 CBA.updateDataAt(*SHT.Offset, SHeaders.data(), in writeELF()
1976 CBA.writeBlobToStream(OS); in writeELF()