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,
651 bool ELFState<ELFT>::initImplicitHeader(ContiguousBlobAccumulator &CBA, in initImplicitHeader() argument
659 initStrtabSectionHeader(Header, SecName, DotStrtab, CBA, YAMLSec); in initImplicitHeader()
661 initStrtabSectionHeader(Header, SecName, DotDynstr, CBA, YAMLSec); in initImplicitHeader()
663 initStrtabSectionHeader(Header, SecName, *ShStrtabStrings, CBA, YAMLSec); in initImplicitHeader()
665 initSymtabSectionHeader(Header, SymtabType::Static, CBA, YAMLSec); in initImplicitHeader()
667 initSymtabSectionHeader(Header, SymtabType::Dynamic, CBA, YAMLSec); in initImplicitHeader()
673 initDWARFSectionHeader(Header, SecName, CBA, YAMLSec); in initImplicitHeader()
717 static uint64_t writeContent(ContiguousBlobAccumulator &CBA, in writeContent() argument
722 CBA.writeAsBinary(*Content); in writeContent()
729 CBA.writeZeros(*Size - ContentSize); in writeContent()
758 ContiguousBlobAccumulator &CBA) { in initSectionHeaders() argument
765 S->Offset = alignToOffset(CBA, /*Align=*/1, S->Offset); in initSectionHeaders()
766 writeFill(*S, CBA); in initSectionHeaders()
777 S->Offset = alignToOffset(CBA, sizeof(typename ELFT::uint), in initSectionHeaders()
780 S->Offset = alignToOffset(CBA, /*Align=*/1, S->Offset); in initSectionHeaders()
785 CBA.writeZeros(Size); in initSectionHeaders()
816 if (initImplicitHeader(CBA, SHeader, Sec->Name, in initSectionHeaders()
833 SHeader.sh_offset = alignToOffset(CBA, SHeader.sh_addralign, Sec->Offset); in initSectionHeaders()
852 SHeader.sh_size = writeContent(CBA, Sec->Content, Sec->Size); in initSectionHeaders()
855 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
857 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
859 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
861 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
863 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
865 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
867 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
869 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
871 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
873 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
875 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
877 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
879 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
881 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
883 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
885 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
887 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
889 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
891 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
893 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
895 writeSectionContent(SHeader, *S, CBA); in initSectionHeaders()
971 ContiguousBlobAccumulator &CBA, in initSymtabSectionHeader() argument
1019 alignToOffset(CBA, SHeader.sh_addralign, RawSec ? RawSec->Offset : None); in initSymtabSectionHeader()
1023 SHeader.sh_size = writeContent(CBA, RawSec->Content, RawSec->Size); in initSymtabSectionHeader()
1030 CBA.write((const char *)Syms.data(), SHeader.sh_size); in initSymtabSectionHeader()
1036 ContiguousBlobAccumulator &CBA, in initStrtabSectionHeader() argument
1045 SHeader.sh_offset = alignToOffset(CBA, SHeader.sh_addralign, in initStrtabSectionHeader()
1049 SHeader.sh_size = writeContent(CBA, RawSec->Content, RawSec->Size); in initStrtabSectionHeader()
1051 if (raw_ostream *OS = CBA.getRawOS(STB.getSize())) in initStrtabSectionHeader()
1075 ContiguousBlobAccumulator &CBA) { in emitDWARF() argument
1079 raw_ostream *OS = CBA.getRawOS(0); in emitDWARF()
1083 uint64_t BeginOffset = CBA.tell(); in emitDWARF()
1089 return CBA.tell() - BeginOffset; in emitDWARF()
1094 ContiguousBlobAccumulator &CBA, in initDWARFSectionHeader() argument
1099 SHeader.sh_offset = alignToOffset(CBA, SHeader.sh_addralign, in initDWARFSectionHeader()
1111 emitDWARF<ELFT>(SHeader, Name, *Doc.DWARF, CBA)) in initDWARFSectionHeader()
1117 SHeader.sh_size = writeContent(CBA, RawSec->Content, RawSec->Size); in initDWARFSectionHeader()
1238 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1248 CBA.writeZeros(*S.Size); in writeSectionContent()
1254 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1268 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1290 CBA.write((const char *)&REntry, sizeof(REntry)); in writeSectionContent()
1296 CBA.write((const char *)&REntry, sizeof(REntry)); in writeSectionContent()
1307 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1315 CBA.write<uintX_t>(E, ELFT::TargetEndianness); in writeSectionContent()
1324 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1326 SHeader.sh_size = writeContent(CBA, Shndx.Content, Shndx.Size); in writeSectionContent()
1334 CBA.write<uint32_t>(E, ELFT::TargetEndianness); in writeSectionContent()
1341 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1358 CBA.write<uint32_t>(SectionIndex, ELFT::TargetEndianness); in writeSectionContent()
1366 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1371 CBA.write<uint16_t>(Version, ELFT::TargetEndianness); in writeSectionContent()
1378 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1383 CBA.write<uintX_t>(E.Address, ELFT::TargetEndianness); in writeSectionContent()
1384 SHeader.sh_size += sizeof(uintX_t) + CBA.writeULEB128(E.Size); in writeSectionContent()
1391 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1402 CBA.write(E.Version); in writeSectionContent()
1403 CBA.write(E.Feature); in writeSectionContent()
1407 CBA.write<uintX_t>(E.Address, ELFT::TargetEndianness); in writeSectionContent()
1412 SHeader.sh_size += sizeof(uintX_t) + CBA.writeULEB128(NumBlocks); in writeSectionContent()
1417 SHeader.sh_size += CBA.writeULEB128(BBE.AddressOffset) + in writeSectionContent()
1418 CBA.writeULEB128(BBE.Size) + in writeSectionContent()
1419 CBA.writeULEB128(BBE.Metadata); in writeSectionContent()
1426 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1431 CBA.write(LO.Key.data(), LO.Key.size()); in writeSectionContent()
1432 CBA.write('\0'); in writeSectionContent()
1433 CBA.write(LO.Value.data(), LO.Value.size()); in writeSectionContent()
1434 CBA.write('\0'); in writeSectionContent()
1442 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1447 CBA.write(Lib.data(), Lib.size()); in writeSectionContent()
1448 CBA.write('\0'); in writeSectionContent()
1455 ELFState<ELFT>::alignToOffset(ContiguousBlobAccumulator &CBA, uint64_t Align, in alignToOffset() argument
1457 uint64_t CurrentOffset = CBA.getOffset(); in alignToOffset()
1473 CBA.writeZeros(AlignedOffset - CurrentOffset); in alignToOffset()
1480 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1485 CBA.write<uint64_t>(E.Weight, ELFT::TargetEndianness); in writeSectionContent()
1493 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1497 CBA.write<uint32_t>( in writeSectionContent()
1500 CBA.write<uint32_t>( in writeSectionContent()
1505 CBA.write<uint32_t>(Val, ELFT::TargetEndianness); in writeSectionContent()
1507 CBA.write<uint32_t>(Val, ELFT::TargetEndianness); in writeSectionContent()
1515 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1541 CBA.write((const char *)&VerDef, sizeof(Elf_Verdef)); in writeSectionContent()
1550 CBA.write((const char *)&VernAux, sizeof(Elf_Verdaux)); in writeSectionContent()
1561 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1584 CBA.write((const char *)&VerNeed, sizeof(Elf_Verneed)); in writeSectionContent()
1598 CBA.write((const char *)&VernAux, sizeof(Elf_Vernaux)); in writeSectionContent()
1609 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1614 CBA.write<uint32_t>(E.Offset, ELFT::TargetEndianness); in writeSectionContent()
1615 CBA.write<uint32_t>(E.Value, ELFT::TargetEndianness); in writeSectionContent()
1623 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1642 CBA.write((const char *)&Flags, sizeof(Flags)); in writeSectionContent()
1648 ContiguousBlobAccumulator &CBA) { in writeSectionContent() argument
1656 CBA.write<uintX_t>(DE.Tag, ELFT::TargetEndianness); in writeSectionContent()
1657 CBA.write<uintX_t>(DE.Val, ELFT::TargetEndianness); in writeSectionContent()
1665 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()