Lines Matching defs:OS

42 static void writeInteger(T Integer, raw_ostream &OS, bool IsLittleEndian) {
45 OS.write(reinterpret_cast<char *>(&Integer), sizeof(T));
49 raw_ostream &OS, bool IsLittleEndian) {
51 writeInteger((uint64_t)Integer, OS, IsLittleEndian);
53 writeInteger((uint32_t)Integer, OS, IsLittleEndian);
55 writeInteger((uint16_t)Integer, OS, IsLittleEndian);
57 writeInteger((uint8_t)Integer, OS, IsLittleEndian);
65 static void ZeroFillBytes(raw_ostream &OS, size_t Size) {
67 OS.write(reinterpret_cast<char *>(FillData.data()), Size);
71 const uint64_t Length, raw_ostream &OS,
75 cantFail(writeVariableSizedInteger(dwarf::DW_LENGTH_DWARF64, 4, OS,
78 writeVariableSizedInteger(Length, IsDWARF64 ? 8 : 4, OS, IsLittleEndian));
82 raw_ostream &OS, bool IsLittleEndian) {
84 OS, IsLittleEndian));
87 Error DWARFYAML::emitDebugStr(raw_ostream &OS, const DWARFYAML::Data &DI) {
89 OS.write(Str.data(), Str.size());
90 OS.write('\0');
104 raw_string_ostream OS(AbbrevTableBuffer);
109 encodeULEB128(AbbrevCode, OS);
110 encodeULEB128(AbbrevDecl.Tag, OS);
111 OS.write(AbbrevDecl.Children);
113 encodeULEB128(Attr.Attribute, OS);
114 encodeULEB128(Attr.Form, OS);
116 encodeSLEB128(Attr.Value, OS);
118 encodeULEB128(0, OS);
119 encodeULEB128(0, OS);
124 OS.write_zeros(1);
131 Error DWARFYAML::emitDebugAbbrev(raw_ostream &OS, const DWARFYAML::Data &DI) {
134 OS.write(AbbrevTableContent.data(), AbbrevTableContent.size());
140 Error DWARFYAML::emitDebugAranges(raw_ostream &OS, const DWARFYAML::Data &DI) {
167 writeInitialLength(Range.Format, Length, OS, DI.IsLittleEndian);
168 writeInteger((uint16_t)Range.Version, OS, DI.IsLittleEndian);
169 writeDWARFOffset(Range.CuOffset, Range.Format, OS, DI.IsLittleEndian);
170 writeInteger((uint8_t)AddrSize, OS, DI.IsLittleEndian);
171 writeInteger((uint8_t)Range.SegSize, OS, DI.IsLittleEndian);
172 ZeroFillBytes(OS, PaddedHeaderLength - HeaderLength);
176 OS, DI.IsLittleEndian))
180 cantFail(writeVariableSizedInteger(Descriptor.Length, AddrSize, OS,
183 ZeroFillBytes(OS, AddrSize * 2);
189 Error DWARFYAML::emitDebugRanges(raw_ostream &OS, const DWARFYAML::Data &DI) {
190 const size_t RangesOffset = OS.tell();
193 const size_t CurrOffset = OS.tell() - RangesOffset;
202 ZeroFillBytes(OS, *DebugRanges.Offset - CurrOffset);
210 if (Error Err = writeVariableSizedInteger(Entry.LowOffset, AddrSize, OS,
216 cantFail(writeVariableSizedInteger(Entry.HighOffset, AddrSize, OS,
219 ZeroFillBytes(OS, AddrSize * 2);
226 static Error emitPubSection(raw_ostream &OS, const DWARFYAML::PubSection &Sect,
228 writeInitialLength(Sect.Format, Sect.Length, OS, IsLittleEndian);
229 writeInteger((uint16_t)Sect.Version, OS, IsLittleEndian);
230 writeInteger((uint32_t)Sect.UnitOffset, OS, IsLittleEndian);
231 writeInteger((uint32_t)Sect.UnitSize, OS, IsLittleEndian);
233 writeInteger((uint32_t)Entry.DieOffset, OS, IsLittleEndian);
235 writeInteger((uint8_t)Entry.Descriptor, OS, IsLittleEndian);
236 OS.write(Entry.Name.data(), Entry.Name.size());
237 OS.write('\0');
242 Error DWARFYAML::emitDebugPubnames(raw_ostream &OS, const Data &DI) {
244 return emitPubSection(OS, *DI.PubNames, DI.IsLittleEndian);
247 Error DWARFYAML::emitDebugPubtypes(raw_ostream &OS, const Data &DI) {
249 return emitPubSection(OS, *DI.PubTypes, DI.IsLittleEndian);
252 Error DWARFYAML::emitDebugGNUPubnames(raw_ostream &OS, const Data &DI) {
254 return emitPubSection(OS, *DI.GNUPubNames, DI.IsLittleEndian,
258 Error DWARFYAML::emitDebugGNUPubtypes(raw_ostream &OS, const Data &DI) {
260 return emitPubSection(OS, *DI.GNUPubTypes, DI.IsLittleEndian,
268 raw_ostream &OS, bool IsLittleEndian) {
269 uint64_t EntryBegin = OS.tell();
270 encodeULEB128(Entry.AbbrCode, OS);
273 return OS.tell() - EntryBegin;
304 FormVal->Value, Params.AddrSize, OS, IsLittleEndian))
311 OS, IsLittleEndian))
316 encodeULEB128(FormVal->BlockData.size(), OS);
317 OS.write((const char *)FormVal->BlockData.data(),
321 writeInteger((uint8_t)FormVal->BlockData.size(), OS, IsLittleEndian);
322 OS.write((const char *)FormVal->BlockData.data(),
327 writeInteger((uint16_t)FormVal->BlockData.size(), OS, IsLittleEndian);
328 OS.write((const char *)FormVal->BlockData.data(),
333 writeInteger((uint32_t)FormVal->BlockData.size(), OS, IsLittleEndian);
334 OS.write((const char *)FormVal->BlockData.data(),
346 encodeULEB128(FormVal->Value, OS);
353 writeInteger((uint8_t)FormVal->Value, OS, IsLittleEndian);
359 writeInteger((uint16_t)FormVal->Value, OS, IsLittleEndian);
366 writeInteger((uint32_t)FormVal->Value, OS, IsLittleEndian);
372 writeInteger((uint64_t)FormVal->Value, OS, IsLittleEndian);
375 encodeSLEB128(FormVal->Value, OS);
378 OS.write(FormVal->CStr.data(), FormVal->CStr.size());
379 OS.write('\0');
382 encodeULEB128(FormVal->Value, OS);
394 Params.getDwarfOffsetByteSize(), OS,
403 return OS.tell() - EntryBegin;
406 Error DWARFYAML::emitDebugInfo(raw_ostream &OS, const DWARFYAML::Data &DI) {
457 writeInitialLength(Unit.Format, Length, OS, DI.IsLittleEndian);
458 writeInteger((uint16_t)Unit.Version, OS, DI.IsLittleEndian);
476 writeInteger((uint8_t)Unit.Type, OS, DI.IsLittleEndian);
477 writeInteger((uint8_t)AddrSize, OS, DI.IsLittleEndian);
478 writeDWARFOffset(AbbrevTableOffset, Unit.Format, OS, DI.IsLittleEndian);
486 writeInteger(Unit.TypeSignatureOrDwoID, OS, DI.IsLittleEndian);
487 writeDWARFOffset(Unit.TypeOffset, Unit.Format, OS, DI.IsLittleEndian);
491 writeInteger(Unit.TypeSignatureOrDwoID, OS, DI.IsLittleEndian);
495 writeDWARFOffset(AbbrevTableOffset, Unit.Format, OS, DI.IsLittleEndian);
496 writeInteger((uint8_t)AddrSize, OS, DI.IsLittleEndian);
499 OS.write(EntryBuffer.data(), EntryBuffer.size());
505 static void emitFileEntry(raw_ostream &OS, const DWARFYAML::File &File) {
506 OS.write(File.Name.data(), File.Name.size());
507 OS.write('\0');
508 encodeULEB128(File.DirIdx, OS);
509 encodeULEB128(File.ModTime, OS);
510 encodeULEB128(File.Length, OS);
515 raw_ostream &OS) {
542 encodeULEB128(ExtLen, OS);
543 OS.write(OpBuffer.data(), OpBuffer.size());
548 raw_ostream &OS, bool IsLittleEndian) {
549 writeInteger((uint8_t)Op.Opcode, OS, IsLittleEndian);
551 writeExtendedOpcode(Op, AddrSize, IsLittleEndian, OS);
566 encodeULEB128(Op.Data, OS);
570 encodeSLEB128(Op.SData, OS);
574 writeInteger((uint16_t)Op.Data, OS, IsLittleEndian);
579 encodeULEB128(OpData, OS);
600 Error DWARFYAML::emitDebugLine(raw_ostream &OS, const DWARFYAML::Data &DI) {
652 writeInitialLength(LineTable.Format, Length, OS, DI.IsLittleEndian);
653 writeInteger(LineTable.Version, OS, DI.IsLittleEndian);
654 writeDWARFOffset(HeaderLength, LineTable.Format, OS, DI.IsLittleEndian);
655 OS.write(Buffer.data(), Buffer.size());
661 Error DWARFYAML::emitDebugAddr(raw_ostream &OS, const Data &DI) {
677 writeInitialLength(TableEntry.Format, Length, OS, DI.IsLittleEndian);
678 writeInteger((uint16_t)TableEntry.Version, OS, DI.IsLittleEndian);
679 writeInteger((uint8_t)AddrSize, OS, DI.IsLittleEndian);
680 writeInteger((uint8_t)TableEntry.SegSelectorSize, OS, DI.IsLittleEndian);
686 OS, DI.IsLittleEndian))
691 if (Error Err = writeVariableSizedInteger(Pair.Address, AddrSize, OS,
702 Error DWARFYAML::emitDebugStrOffsets(raw_ostream &OS, const Data &DI) {
713 writeInitialLength(Table.Format, Length, OS, DI.IsLittleEndian);
714 writeInteger((uint16_t)Table.Version, OS, DI.IsLittleEndian);
715 writeInteger((uint16_t)Table.Padding, OS, DI.IsLittleEndian);
718 writeDWARFOffset(Offset, Table.Format, OS, DI.IsLittleEndian);
726 void emitDebugNamesHeader(raw_ostream &OS, bool IsLittleEndian,
734 writeInteger(uint32_t(TotalSize), OS, IsLittleEndian); // Unit length
737 writeInteger(uint16_t(5), OS, IsLittleEndian); // Version
738 writeInteger(uint16_t(0), OS, IsLittleEndian); // Padding
739 writeInteger(uint32_t(1), OS, IsLittleEndian); // Compilation Unit count
740 writeInteger(uint32_t(0), OS, IsLittleEndian); // Local Type Unit count
741 writeInteger(uint32_t(0), OS, IsLittleEndian); // Foreign Type Unit count
742 writeInteger(uint32_t(0), OS, IsLittleEndian); // Bucket count
743 writeInteger(NameCount, OS, IsLittleEndian);
744 writeInteger(AbbrevSize, OS, IsLittleEndian);
745 writeInteger(uint32_t(AugmentationString.size()), OS, IsLittleEndian);
746 OS.write(AugmentationString.data(), AugmentationString.size());
753 raw_string_ostream OS(Data);
755 encodeULEB128(Abbrev.Code, OS);
756 encodeULEB128(Abbrev.Tag, OS);
758 encodeULEB128(Idx, OS);
759 encodeULEB128(Form, OS);
761 encodeULEB128(0, OS);
762 encodeULEB128(0, OS);
764 encodeULEB128(0, OS);
772 raw_string_ostream OS(Data);
773 writeInteger(uint32_t(0), OS, IsLittleEndian);
788 raw_string_ostream OS(Data);
791 writeInteger(Strp, OS, IsLittleEndian);
793 writeInteger(PoolOffset, OS, IsLittleEndian);
847 raw_string_ostream OS(Result.PoolData);
854 encodeULEB128(Entry.Code, OS);
867 writeVariableSizedInteger(Value, ValueSize, OS, IsLittleEndian))
870 encodeULEB128(0, OS);
877 Error DWARFYAML::emitDebugNames(raw_ostream &OS, const Data &DI) {
900 emitDebugNamesHeader(OS, DI.IsLittleEndian, StrpToEntries.size(),
902 OS.write(CUOffsetsData.data(), CUOffsetsData.size());
904 OS.write(NamesTableData.data(), NamesTableData.size());
905 OS.write(AbbrevData.data(), AbbrevData.size());
906 OS.write(PoolInfo->PoolData.data(), PoolInfo->PoolData.size());
924 static Error writeListEntryAddress(StringRef EncodingName, raw_ostream &OS,
927 if (Error Err = writeVariableSizedInteger(Addr, AddrSize, OS, IsLittleEndian))
937 writeDWARFExpression(raw_ostream &OS,
945 uint64_t ExpressionBegin = OS.tell();
946 writeInteger((uint8_t)Operation.Operator, OS, IsLittleEndian);
951 encodeSLEB128(Operation.Values[0], OS);
966 return OS.tell() - ExpressionBegin;
969 static Expected<uint64_t> writeListEntry(raw_ostream &OS,
973 uint64_t BeginOffset = OS.tell();
974 writeInteger((uint8_t)Entry.Operator, OS, IsLittleEndian);
983 return writeListEntryAddress(EncodingName, OS, Addr, AddrSize,
995 encodeULEB128(Entry.Values[0], OS);
1002 encodeULEB128(Entry.Values[0], OS);
1003 encodeULEB128(Entry.Values[1], OS);
1023 encodeULEB128(Entry.Values[1], OS);
1027 return OS.tell() - BeginOffset;
1030 static Expected<uint64_t> writeListEntry(raw_ostream &OS,
1034 uint64_t BeginOffset = OS.tell();
1035 writeInteger((uint8_t)Entry.Operator, OS, IsLittleEndian);
1044 return writeListEntryAddress(EncodingName, OS, Addr, AddrSize,
1066 encodeULEB128(DescriptionsLength, OS);
1067 OS.write(OpBuffer.data(), OpBuffer.size());
1080 encodeULEB128(Entry.Values[0], OS);
1087 encodeULEB128(Entry.Values[0], OS);
1088 encodeULEB128(Entry.Values[1], OS);
1118 encodeULEB128(Entry.Values[1], OS);
1124 return OS.tell() - BeginOffset;
1128 static Error writeDWARFLists(raw_ostream &OS,
1188 writeInitialLength(Table.Format, Length, OS, IsLittleEndian);
1189 writeInteger((uint16_t)Table.Version, OS, IsLittleEndian);
1190 writeInteger((uint8_t)AddrSize, OS, IsLittleEndian);
1191 writeInteger((uint8_t)Table.SegSelectorSize, OS, IsLittleEndian);
1192 writeInteger((uint32_t)OffsetEntryCount, OS, IsLittleEndian);
1196 writeDWARFOffset(OffsetsSize + Offset, Table.Format, OS,
1207 OS.write(ListBuffer.data(), ListBuffer.size());
1213 Error DWARFYAML::emitDebugRnglists(raw_ostream &OS, const Data &DI) {
1216 OS, *DI.DebugRnglists, DI.IsLittleEndian, DI.Is64BitAddrSize);
1219 Error DWARFYAML::emitDebugLoclists(raw_ostream &OS, const Data &DI) {
1222 OS, *DI.DebugLoclists, DI.IsLittleEndian, DI.Is64BitAddrSize);