Home | History | Annotate | Download | only in MC

Lines Matching defs:Streamer

405 /// Utility function to emit the encoding to a streamer.
941 static int getDataAlignmentFactor(MCStreamer &streamer) {
942 MCContext &context = streamer.getContext();
951 static unsigned getSizeForEncoding(MCStreamer &streamer,
953 MCContext &context = streamer.getContext();
972 static void emitFDESymbol(MCObjectStreamer &streamer, const MCSymbol &symbol,
974 MCContext &context = streamer.getContext();
978 streamer);
979 unsigned size = getSizeForEncoding(streamer, symbolEncoding);
981 emitAbsValue(streamer, v, size);
983 streamer.EmitValue(v, size);
986 static void EmitPersonality(MCStreamer &streamer, const MCSymbol &symbol,
988 MCContext &context = streamer.getContext();
992 streamer);
993 unsigned size = getSizeForEncoding(streamer, symbolEncoding);
994 streamer.EmitValue(v, size);
1002 MCObjectStreamer &Streamer;
1005 FrameEmitterImpl(bool IsEH, MCObjectStreamer &Streamer)
1006 : IsEH(IsEH), Streamer(Streamer) {}
1024 static void emitEncodingByte(MCObjectStreamer &Streamer, unsigned Encoding) {
1025 Streamer.EmitIntValue(Encoding, 1);
1029 int dataAlignmentFactor = getDataAlignmentFactor(Streamer);
1030 auto *MRI = Streamer.getContext().getRegisterInfo();
1040 Streamer.EmitIntValue(dwarf::DW_CFA_register, 1);
1041 Streamer.EmitULEB128IntValue(Reg1);
1042 Streamer.EmitULEB128IntValue(Reg2);
1046 Streamer.EmitIntValue(dwarf::DW_CFA_GNU_window_save, 1);
1051 Streamer.EmitIntValue(dwarf::DW_CFA_undefined, 1);
1052 Streamer.EmitULEB128IntValue(Reg);
1060 Streamer.EmitIntValue(dwarf::DW_CFA_def_cfa_offset, 1);
1067 Streamer.EmitULEB128IntValue(CFAOffset);
1075 Streamer.EmitIntValue(dwarf::DW_CFA_def_cfa, 1);
1076 Streamer.EmitULEB128IntValue(Reg);
1078 Streamer.EmitULEB128IntValue(CFAOffset);
1087 Streamer.EmitIntValue(dwarf::DW_CFA_def_cfa_register, 1);
1088 Streamer.EmitULEB128IntValue(Reg);
1108 Streamer.EmitIntValue(dwarf::DW_CFA_offset_extended_sf, 1);
1109 Streamer.EmitULEB128IntValue(Reg);
1110 Streamer.EmitSLEB128IntValue(Offset);
1112 Streamer.EmitIntValue(dwarf::DW_CFA_offset + Reg, 1);
1113 Streamer.EmitULEB128IntValue(Offset);
1115 Streamer.EmitIntValue(dwarf::DW_CFA_offset_extended, 1);
1116 Streamer.EmitULEB128IntValue(Reg);
1117 Streamer.EmitULEB128IntValue(Offset);
1122 Streamer.EmitIntValue(dwarf::DW_CFA_remember_state, 1);
1125 Streamer.EmitIntValue(dwarf::DW_CFA_restore_state, 1);
1129 Streamer.EmitIntValue(dwarf::DW_CFA_same_value, 1);
1130 Streamer.EmitULEB128IntValue(Reg);
1137 Streamer.EmitIntValue(dwarf::DW_CFA_restore | Reg, 1);
1141 Streamer.EmitIntValue(dwarf::DW_CFA_GNU_args_size, 1);
1142 Streamer.EmitULEB128IntValue(Instr.getOffset());
1146 Streamer.EmitBytes(Instr.getValues());
1165 Streamer.EmitDwarfAdvanceFrameAddr(BaseLabel, ThisSym);
1176 MCContext &Context = Streamer.getContext();
1211 unsigned Size = getSizeForEncoding(Streamer, FDEEncoding);
1212 Streamer.EmitSymbolValue(Frame.Begin, Size);
1215 const MCExpr *Range = MakeStartMinusEndExpr(Streamer, *Frame.Begin,
1217 emitAbsValue(Streamer, Range, 4);
1220 Size = getSizeForEncoding(Streamer, dwarf::DW_EH_PE_udata4);
1221 Streamer.EmitIntValue(Encoding, Size);
1224 Size = getSizeForEncoding(Streamer, dwarf::DW_EH_PE_absptr);
1226 Streamer.EmitSymbolValue(Frame.Personality, Size);
1228 Streamer.EmitIntValue(0, Size); // No personality fn
1231 Size = getSizeForEncoding(Streamer, Frame.LsdaEncoding);
1233 Streamer.EmitSymbolValue(Frame.Lsda, Size);
1235 Streamer.EmitIntValue(0, Size); // No LSDA
1258 MCContext &context = Streamer.getContext();
1263 Streamer.EmitLabel(sectionStart);
1269 MakeStartMinusEndExpr(Streamer, *sectionStart, *sectionEnd, 4);
1270 emitAbsValue(Streamer, Length, 4);
1274 Streamer.EmitIntValue(CIE_ID, 4);
1278 Streamer.EmitIntValue(CIEVersion, 1);
1291 Streamer.EmitBytes(Augmentation);
1293 Streamer.EmitIntValue(0, 1);
1297 Streamer.EmitIntValue(context.getAsmInfo()->getPointerSize(), 1);
1300 Streamer.EmitIntValue(0, 1);
1304 Streamer.EmitULEB128IntValue(context.getAsmInfo()->getMinInstAlignment());
1307 Streamer.EmitSLEB128IntValue(getDataAlignmentFactor(Streamer));
1313 Streamer.EmitIntValue(MRI->getDwarfRegNum(MRI->getRARegister(), IsEH), 1);
1315 Streamer.EmitULEB128IntValue(
1327 augmentationLength += getSizeForEncoding(Streamer, personalityEncoding);
1334 Streamer.EmitULEB128IntValue(augmentationLength);
1339 emitEncodingByte(Streamer, personalityEncoding);
1341 EmitPersonality(Streamer, *personality, personalityEncoding);
1345 emitEncodingByte(Streamer, lsdaEncoding);
1348 emitEncodingByte(Streamer, MOFI->getFDEEncoding());
1363 Streamer.EmitValueToAlignment(IsEH ? 4 : MAI->getPointerSize());
1365 Streamer.EmitLabel(sectionEnd);
1373 MCContext &context = Streamer.getContext();
1381 const MCExpr *Length = MakeStartMinusEndExpr(Streamer, *fdeStart, *fdeEnd, 0);
1382 emitAbsValue(Streamer, Length, 4);
1384 Streamer.EmitLabel(fdeStart);
1390 MakeStartMinusEndExpr(Streamer, cieStart, *fdeStart, 0);
1391 emitAbsValue(Streamer, offset, 4);
1394 MakeStartMinusEndExpr(Streamer, SectionStart, cieStart, 0);
1395 emitAbsValue(Streamer, offset, 4);
1397 Streamer.EmitSymbolValue(&cieStart, 4);
1403 unsigned PCSize = getSizeForEncoding(Streamer, PCEncoding);
1404 emitFDESymbol(Streamer, *frame.Begin, PCEncoding, IsEH);
1408 MakeStartMinusEndExpr(Streamer, *frame.Begin, *frame.End, 0);
1409 emitAbsValue(Streamer, Range, PCSize);
1416 augmentationLength += getSizeForEncoding(Streamer, frame.LsdaEncoding);
1418 Streamer.EmitULEB128IntValue(augmentationLength);
1422 emitFDESymbol(Streamer, *frame.Lsda, frame.LsdaEncoding, true);
1433 Streamer.EmitValueToAlignment(Align);
1435 Streamer.EmitLabel(fdeEnd);
1479 void MCDwarfFrameEmitter::Emit(MCObjectStreamer &Streamer, MCAsmBackend *MAB,
1481 Streamer.generateCompactUnwindEncodings(MAB);
1483 MCContext &Context = Streamer.getContext();
1485 FrameEmitterImpl Emitter(IsEH, Streamer);
1486 ArrayRef<MCDwarfFrameInfo> FrameArray = Streamer.getDwarfFrameInfos();
1496 Streamer.SwitchSection(MOFI->getCompactUnwindSection());
1497 Streamer.EmitValueToAlignment(Context.getAsmInfo()->getPointerSize());
1513 Streamer.SwitchSection(&Section);
1515 Streamer.EmitLabel(SectionStart);
1542 void MCDwarfFrameEmitter::EmitAdvanceLoc(MCObjectStreamer &Streamer,
1544 MCContext &Context = Streamer.getContext();
1548 Streamer.EmitBytes(OS.str());