Lines Matching defs:Asm

141   AsmPrinter *Asm = DG.getAsmPrinter();
144 Asm->getObjFileLowering().getDwarfStrOffSection()->getBeginSymbol();
149 if (!Asm->MAI->doesDwarfUseRelocationsAcrossSections())
160 AsmPrinter *Asm = DG.getAsmPrinter();
163 Asm->getObjFileLowering().getDwarfAddrSection()->getBeginSymbol();
167 if (!Asm->MAI->doesDwarfUseRelocationsAcrossSections())
257 void dwarfgen::LineTable::generate(MCContext &MC, AsmPrinter &Asm) const {
262 writeData(CustomPrologue, Asm);
264 EndSymbol = writeDefaultPrologue(Asm);
266 writePrologue(Asm);
269 writeData(Contents, Asm);
271 Asm.OutStreamer->emitLabel(EndSymbol);
275 AsmPrinter &Asm) const {
282 Asm.OutStreamer->emitIntValue(Entry.Value, Entry.Length);
285 Asm.emitULEB128(Entry.Value);
288 Asm.emitSLEB128(Entry.Value);
313 MCSymbol *dwarfgen::LineTable::writeDefaultPrologue(AsmPrinter &Asm) const {
314 MCSymbol *UnitStart = Asm.createTempSymbol("line_unit_start");
315 MCSymbol *UnitEnd = Asm.createTempSymbol("line_unit_end");
317 Asm.emitInt32((int)dwarf::DW_LENGTH_DWARF64);
318 Asm.emitLabelDifference(UnitEnd, UnitStart, 8);
320 Asm.emitLabelDifference(UnitEnd, UnitStart, 4);
322 Asm.OutStreamer->emitLabel(UnitStart);
323 Asm.emitInt16(Version);
325 Asm.emitInt8(AddrSize);
326 Asm.emitInt8(SegSize);
329 MCSymbol *PrologueStart = Asm.createTempSymbol("line_prologue_start");
330 MCSymbol *PrologueEnd = Asm.createTempSymbol("line_prologue_end");
331 Asm.emitLabelDifference(PrologueEnd, PrologueStart,
333 Asm.OutStreamer->emitLabel(PrologueStart);
336 writeProloguePayload(DefaultPrologue, Asm);
337 Asm.OutStreamer->emitLabel(PrologueEnd);
341 void dwarfgen::LineTable::writePrologue(AsmPrinter &Asm) const {
343 Asm.emitInt32((int)dwarf::DW_LENGTH_DWARF64);
344 Asm.emitInt64(Prologue->TotalLength);
346 Asm.emitInt32(Prologue->TotalLength);
348 Asm.emitInt16(Prologue->getVersion());
350 Asm.emitInt8(Prologue->getAddressSize());
351 Asm.emitInt8(Prologue->SegSelectorSize);
354 Asm.emitInt64(Prologue->PrologueLength);
356 Asm.emitInt32(Prologue->PrologueLength);
358 writeProloguePayload(*Prologue, Asm);
361 static void writeCString(StringRef Str, AsmPrinter &Asm) {
362 Asm.OutStreamer->emitBytes(Str);
363 Asm.emitInt8(0);
367 AsmPrinter &Asm) {
369 writeCString(*toString(Include), Asm);
371 Asm.emitInt8(0);
374 writeCString(*toString(File.Name), Asm);
375 Asm.emitULEB128(File.DirIdx);
376 Asm.emitULEB128(File.ModTime);
377 Asm.emitULEB128(File.Length);
379 Asm.emitInt8(0);
383 AsmPrinter &Asm) {
384 Asm.emitInt8(1); // directory_entry_format_count.
387 Asm.emitULEB128(DW_LNCT_path);
388 Asm.emitULEB128(DW_FORM_string);
389 Asm.emitULEB128(Prologue.IncludeDirectories.size());
391 writeCString(*toString(Include), Asm);
393 Asm.emitInt8(2); // file_name_entry_format_count.
394 Asm.emitULEB128(DW_LNCT_path);
395 Asm.emitULEB128(DW_FORM_string);
396 Asm.emitULEB128(DW_LNCT_directory_index);
397 Asm.emitULEB128(DW_FORM_data1);
398 Asm.emitULEB128(Prologue.FileNames.size());
400 writeCString(*toString(File.Name), Asm);
401 Asm.emitInt8(File.DirIdx);
406 const DWARFDebugLine::Prologue &Prologue, AsmPrinter &Asm) const {
407 Asm.emitInt8(Prologue.MinInstLength);
409 Asm.emitInt8(Prologue.MaxOpsPerInst);
410 Asm.emitInt8(Prologue.DefaultIsStmt);
411 Asm.emitInt8(Prologue.LineBase);
412 Asm.emitInt8(Prologue.LineRange);
413 Asm.emitInt8(Prologue.OpcodeBase);
415 Asm.emitInt8(Length);
419 writeV2IncludeAndFileTable(Prologue, Asm);
421 writeV5IncludeAndFileTable(Prologue, Asm);
514 Asm.reset(TheTarget->createAsmPrinter(*TM, std::unique_ptr<MCStreamer>(MS)));
515 if (!Asm)
521 Asm->setDwarfVersion(Version);
523 StringPool = std::make_unique<DwarfStringPool>(Allocator, *Asm, StringRef());
524 StringOffsetsStartSym = Asm->createTempSymbol("str_offsets_base");
526 AddrTableStartSym = Asm->createTempSymbol("addr_table_base");
536 void dwarfgen::Generator::DummyAddressPool::emit(AsmPrinter &Asm,
539 const uint8_t AddrSize = Asm.getPointerSize();
542 Asm.OutStreamer->switchSection(AddrSection);
544 if (Asm.getDwarfVersion() >= 5) {
546 Asm.emitDwarfUnitLength(AddrSize * AddressValues.size() + 4,
548 Asm.emitInt16(Asm.getDwarfVersion());
549 Asm.emitInt8(AddrSize);
550 Asm.emitInt8(0);
554 Asm.OutStreamer->emitLabel(StartSym);
558 Asm.OutStreamer->emitIntValue(Addr, AddrSize);
576 if (Asm->getDwarfVersion() >= 5)
585 Abbreviations.Emit(Asm.get(), TLOF->getDwarfAbbrevSection());
587 StringPool->emitStringOffsetsTableHeader(*Asm, TLOF->getDwarfStrOffSection(),
589 StringPool->emit(*Asm, TLOF->getDwarfStrSection(),
592 if (Asm->getDwarfVersion() >= 5)
593 AddressPool.emit(*Asm, TLOF->getDwarfAddrSection(), AddrTableStartSym);
601 Asm->emitInt32(Length);
602 Asm->emitInt16(Version);
604 Asm->emitInt32(0);
605 Asm->emitInt8(CU->getAddressSize());
607 Asm->emitInt8(dwarf::DW_UT_compile);
608 Asm->emitInt8(CU->getAddressSize());
609 Asm->emitInt32(0);
611 Asm->emitDwarfDIE(*CU->getUnitDIE().Die);
616 LT->generate(*MC, *Asm);
638 std::make_unique<CompileUnit>(*this, Version, Asm->getPointerSize()));
644 std::make_unique<LineTable>(Version, Format, Asm->getPointerSize()));