Lines Matching defs:OS

43 static void writeInteger(T Integer, raw_ostream &OS, bool IsLittleEndian) {
46 OS.write(reinterpret_cast<char *>(&Integer), sizeof(T));
50 raw_ostream &OS, bool IsLittleEndian) {
52 writeInteger((uint64_t)Integer, OS, IsLittleEndian);
54 writeInteger((uint32_t)Integer, OS, IsLittleEndian);
56 writeInteger((uint16_t)Integer, OS, IsLittleEndian);
58 writeInteger((uint8_t)Integer, OS, IsLittleEndian);
66 static void ZeroFillBytes(raw_ostream &OS, size_t Size) {
68 OS.write(reinterpret_cast<char *>(FillData.data()), Size);
72 const uint64_t Length, raw_ostream &OS,
76 cantFail(writeVariableSizedInteger(dwarf::DW_LENGTH_DWARF64, 4, OS,
79 writeVariableSizedInteger(Length, IsDWARF64 ? 8 : 4, OS, IsLittleEndian));
83 raw_ostream &OS, bool IsLittleEndian) {
85 OS, IsLittleEndian));
88 Error DWARFYAML::emitDebugStr(raw_ostream &OS, const DWARFYAML::Data &DI) {
90 OS.write(Str.data(), Str.size());
91 OS.write('\0');
105 raw_string_ostream OS(AbbrevTableBuffer);
110 encodeULEB128(AbbrevCode, OS);
111 encodeULEB128(AbbrevDecl.Tag, OS);
112 OS.write(AbbrevDecl.Children);
114 encodeULEB128(Attr.Attribute, OS);
115 encodeULEB128(Attr.Form, OS);
117 encodeSLEB128(Attr.Value, OS);
119 encodeULEB128(0, OS);
120 encodeULEB128(0, OS);
125 OS.write_zeros(1);
132 Error DWARFYAML::emitDebugAbbrev(raw_ostream &OS, const DWARFYAML::Data &DI) {
135 OS.write(AbbrevTableContent.data(), AbbrevTableContent.size());
141 Error DWARFYAML::emitDebugAranges(raw_ostream &OS, const DWARFYAML::Data &DI) {
168 writeInitialLength(Range.Format, Length, OS, DI.IsLittleEndian);
169 writeInteger((uint16_t)Range.Version, OS, DI.IsLittleEndian);
170 writeDWARFOffset(Range.CuOffset, Range.Format, OS, DI.IsLittleEndian);
171 writeInteger((uint8_t)AddrSize, OS, DI.IsLittleEndian);
172 writeInteger((uint8_t)Range.SegSize, OS, DI.IsLittleEndian);
173 ZeroFillBytes(OS, PaddedHeaderLength - HeaderLength);
177 OS, DI.IsLittleEndian))
181 cantFail(writeVariableSizedInteger(Descriptor.Length, AddrSize, OS,
184 ZeroFillBytes(OS, AddrSize * 2);
190 Error DWARFYAML::emitDebugRanges(raw_ostream &OS, const DWARFYAML::Data &DI) {
191 const size_t RangesOffset = OS.tell();
194 const size_t CurrOffset = OS.tell() - RangesOffset;
203 ZeroFillBytes(OS, *DebugRanges.Offset - CurrOffset);
211 if (Error Err = writeVariableSizedInteger(Entry.LowOffset, AddrSize, OS,
217 cantFail(writeVariableSizedInteger(Entry.HighOffset, AddrSize, OS,
220 ZeroFillBytes(OS, AddrSize * 2);
227 static Error emitPubSection(raw_ostream &OS, const DWARFYAML::PubSection &Sect,
229 writeInitialLength(Sect.Format, Sect.Length, OS, IsLittleEndian);
230 writeInteger((uint16_t)Sect.Version, OS, IsLittleEndian);
231 writeInteger((uint32_t)Sect.UnitOffset, OS, IsLittleEndian);
232 writeInteger((uint32_t)Sect.UnitSize, OS, IsLittleEndian);
234 writeInteger((uint32_t)Entry.DieOffset, OS, IsLittleEndian);
236 writeInteger((uint8_t)Entry.Descriptor, OS, IsLittleEndian);
237 OS.write(Entry.Name.data(), Entry.Name.size());
238 OS.write('\0');
243 Error DWARFYAML::emitDebugPubnames(raw_ostream &OS, const Data &DI) {
245 return emitPubSection(OS, *DI.PubNames, DI.IsLittleEndian);
248 Error DWARFYAML::emitDebugPubtypes(raw_ostream &OS, const Data &DI) {
250 return emitPubSection(OS, *DI.PubTypes, DI.IsLittleEndian);
253 Error DWARFYAML::emitDebugGNUPubnames(raw_ostream &OS, const Data &DI) {
255 return emitPubSection(OS, *DI.GNUPubNames, DI.IsLittleEndian,
259 Error DWARFYAML::emitDebugGNUPubtypes(raw_ostream &OS, const Data &DI) {
261 return emitPubSection(OS, *DI.GNUPubTypes, DI.IsLittleEndian,
269 raw_ostream &OS, bool IsLittleEndian) {
270 uint64_t EntryBegin = OS.tell();
271 encodeULEB128(Entry.AbbrCode, OS);
274 return OS.tell() - EntryBegin;
305 FormVal->Value, Params.AddrSize, OS, IsLittleEndian))
312 OS, IsLittleEndian))
317 encodeULEB128(FormVal->BlockData.size(), OS);
318 OS.write((const char *)FormVal->BlockData.data(),
322 writeInteger((uint8_t)FormVal->BlockData.size(), OS, IsLittleEndian);
323 OS.write((const char *)FormVal->BlockData.data(),
328 writeInteger((uint16_t)FormVal->BlockData.size(), OS, IsLittleEndian);
329 OS.write((const char *)FormVal->BlockData.data(),
334 writeInteger((uint32_t)FormVal->BlockData.size(), OS, IsLittleEndian);
335 OS.write((const char *)FormVal->BlockData.data(),
347 encodeULEB128(FormVal->Value, OS);
354 writeInteger((uint8_t)FormVal->Value, OS, IsLittleEndian);
360 writeInteger((uint16_t)FormVal->Value, OS, IsLittleEndian);
367 writeInteger((uint32_t)FormVal->Value, OS, IsLittleEndian);
373 writeInteger((uint64_t)FormVal->Value, OS, IsLittleEndian);
376 encodeSLEB128(FormVal->Value, OS);
379 OS.write(FormVal->CStr.data(), FormVal->CStr.size());
380 OS.write('\0');
383 encodeULEB128(FormVal->Value, OS);
395 Params.getDwarfOffsetByteSize(), OS,
404 return OS.tell() - EntryBegin;
407 Error DWARFYAML::emitDebugInfo(raw_ostream &OS, const DWARFYAML::Data &DI) {
442 writeInitialLength(Unit.Format, Length, OS, DI.IsLittleEndian);
443 writeInteger((uint16_t)Unit.Version, OS, DI.IsLittleEndian);
461 writeInteger((uint8_t)Unit.Type, OS, DI.IsLittleEndian);
462 writeInteger((uint8_t)AddrSize, OS, DI.IsLittleEndian);
463 writeDWARFOffset(AbbrevTableOffset, Unit.Format, OS, DI.IsLittleEndian);
465 writeDWARFOffset(AbbrevTableOffset, Unit.Format, OS, DI.IsLittleEndian);
466 writeInteger((uint8_t)AddrSize, OS, DI.IsLittleEndian);
469 OS.write(EntryBuffer.data(), EntryBuffer.size());
475 static void emitFileEntry(raw_ostream &OS, const DWARFYAML::File &File) {
476 OS.write(File.Name.data(), File.Name.size());
477 OS.write('\0');
478 encodeULEB128(File.DirIdx, OS);
479 encodeULEB128(File.ModTime, OS);
480 encodeULEB128(File.Length, OS);
485 raw_ostream &OS) {
512 encodeULEB128(ExtLen, OS);
513 OS.write(OpBuffer.data(), OpBuffer.size());
518 raw_ostream &OS, bool IsLittleEndian) {
519 writeInteger((uint8_t)Op.Opcode, OS, IsLittleEndian);
521 writeExtendedOpcode(Op, AddrSize, IsLittleEndian, OS);
536 encodeULEB128(Op.Data, OS);
540 encodeSLEB128(Op.SData, OS);
544 writeInteger((uint16_t)Op.Data, OS, IsLittleEndian);
549 encodeULEB128(OpData, OS);
570 Error DWARFYAML::emitDebugLine(raw_ostream &OS, const DWARFYAML::Data &DI) {
622 writeInitialLength(LineTable.Format, Length, OS, DI.IsLittleEndian);
623 writeInteger(LineTable.Version, OS, DI.IsLittleEndian);
624 writeDWARFOffset(HeaderLength, LineTable.Format, OS, DI.IsLittleEndian);
625 OS.write(Buffer.data(), Buffer.size());
631 Error DWARFYAML::emitDebugAddr(raw_ostream &OS, const Data &DI) {
647 writeInitialLength(TableEntry.Format, Length, OS, DI.IsLittleEndian);
648 writeInteger((uint16_t)TableEntry.Version, OS, DI.IsLittleEndian);
649 writeInteger((uint8_t)AddrSize, OS, DI.IsLittleEndian);
650 writeInteger((uint8_t)TableEntry.SegSelectorSize, OS, DI.IsLittleEndian);
656 OS, DI.IsLittleEndian))
661 if (Error Err = writeVariableSizedInteger(Pair.Address, AddrSize, OS,
672 Error DWARFYAML::emitDebugStrOffsets(raw_ostream &OS, const Data &DI) {
683 writeInitialLength(Table.Format, Length, OS, DI.IsLittleEndian);
684 writeInteger((uint16_t)Table.Version, OS, DI.IsLittleEndian);
685 writeInteger((uint16_t)Table.Padding, OS, DI.IsLittleEndian);
688 writeDWARFOffset(Offset, Table.Format, OS, DI.IsLittleEndian);
696 void emitDebugNamesHeader(raw_ostream &OS, bool IsLittleEndian,
704 writeInteger(uint32_t(TotalSize), OS, IsLittleEndian); // Unit length
707 writeInteger(uint16_t(5), OS, IsLittleEndian); // Version
708 writeInteger(uint16_t(0), OS, IsLittleEndian); // Padding
709 writeInteger(uint32_t(1), OS, IsLittleEndian); // Compilation Unit count
710 writeInteger(uint32_t(0), OS, IsLittleEndian); // Local Type Unit count
711 writeInteger(uint32_t(0), OS, IsLittleEndian); // Foreign Type Unit count
712 writeInteger(uint32_t(0), OS, IsLittleEndian); // Bucket count
713 writeInteger(NameCount, OS, IsLittleEndian);
714 writeInteger(AbbrevSize, OS, IsLittleEndian);
715 writeInteger(uint32_t(AugmentationString.size()), OS, IsLittleEndian);
716 OS.write(AugmentationString.data(), AugmentationString.size());
724 raw_string_ostream OS(Data);
726 encodeULEB128(Abbrev.Code, OS);
727 encodeULEB128(Abbrev.Tag, OS);
729 encodeULEB128(Idx, OS);
730 encodeULEB128(Form, OS);
732 encodeULEB128(0, OS);
733 encodeULEB128(0, OS);
735 encodeULEB128(0, OS);
743 raw_string_ostream OS(Data);
744 writeInteger(uint32_t(0), OS, IsLittleEndian);
759 raw_string_ostream OS(Data);
762 writeInteger(Strp, OS, IsLittleEndian);
764 writeInteger(PoolOffset, OS, IsLittleEndian);
818 raw_string_ostream OS(Result.PoolData);
825 encodeULEB128(Entry.Code, OS);
838 writeVariableSizedInteger(Value, ValueSize, OS, IsLittleEndian))
841 encodeULEB128(0, OS);
848 Error DWARFYAML::emitDebugNames(raw_ostream &OS, const Data &DI) {
871 emitDebugNamesHeader(OS, DI.IsLittleEndian, StrpToEntries.size(),
873 OS.write(CUOffsetsData.data(), CUOffsetsData.size());
875 OS.write(NamesTableData.data(), NamesTableData.size());
876 OS.write(AbbrevData.data(), AbbrevData.size());
877 OS.write(PoolInfo->PoolData.data(), PoolInfo->PoolData.size());
895 static Error writeListEntryAddress(StringRef EncodingName, raw_ostream &OS,
898 if (Error Err = writeVariableSizedInteger(Addr, AddrSize, OS, IsLittleEndian))
908 writeDWARFExpression(raw_ostream &OS,
916 uint64_t ExpressionBegin = OS.tell();
917 writeInteger((uint8_t)Operation.Operator, OS, IsLittleEndian);
922 encodeSLEB128(Operation.Values[0], OS);
937 return OS.tell() - ExpressionBegin;
940 static Expected<uint64_t> writeListEntry(raw_ostream &OS,
944 uint64_t BeginOffset = OS.tell();
945 writeInteger((uint8_t)Entry.Operator, OS, IsLittleEndian);
954 return writeListEntryAddress(EncodingName, OS, Addr, AddrSize,
966 encodeULEB128(Entry.Values[0], OS);
973 encodeULEB128(Entry.Values[0], OS);
974 encodeULEB128(Entry.Values[1], OS);
994 encodeULEB128(Entry.Values[1], OS);
998 return OS.tell() - BeginOffset;
1001 static Expected<uint64_t> writeListEntry(raw_ostream &OS,
1005 uint64_t BeginOffset = OS.tell();
1006 writeInteger((uint8_t)Entry.Operator, OS, IsLittleEndian);
1015 return writeListEntryAddress(EncodingName, OS, Addr, AddrSize,
1037 encodeULEB128(DescriptionsLength, OS);
1038 OS.write(OpBuffer.data(), OpBuffer.size());
1051 encodeULEB128(Entry.Values[0], OS);
1058 encodeULEB128(Entry.Values[0], OS);
1059 encodeULEB128(Entry.Values[1], OS);
1089 encodeULEB128(Entry.Values[1], OS);
1095 return OS.tell() - BeginOffset;
1099 static Error writeDWARFLists(raw_ostream &OS,
1159 writeInitialLength(Table.Format, Length, OS, IsLittleEndian);
1160 writeInteger((uint16_t)Table.Version, OS, IsLittleEndian);
1161 writeInteger((uint8_t)AddrSize, OS, IsLittleEndian);
1162 writeInteger((uint8_t)Table.SegSelectorSize, OS, IsLittleEndian);
1163 writeInteger((uint32_t)OffsetEntryCount, OS, IsLittleEndian);
1167 writeDWARFOffset(OffsetsSize + Offset, Table.Format, OS,
1178 OS.write(ListBuffer.data(), ListBuffer.size());
1184 Error DWARFYAML::emitDebugRnglists(raw_ostream &OS, const Data &DI) {
1187 OS, *DI.DebugRnglists, DI.IsLittleEndian, DI.Is64BitAddrSize);
1190 Error DWARFYAML::emitDebugLoclists(raw_ostream &OS, const Data &DI) {
1193 OS, *DI.DebugLoclists, DI.IsLittleEndian, DI.Is64BitAddrSize);