Lines Matching refs:Data
44 /// \brief Parse and store a sequence of CFI instructions from Data,
48 virtual void parseInstructions(DataExtractor Data, uint32_t *Offset,
103 void FrameEntry::parseInstructions(DataExtractor Data, uint32_t *Offset,
106 uint8_t Opcode = Data.getU8(Offset);
121 addInstruction(Primary, Op1, Data.getULEB128(Offset));
137 addInstruction(Opcode, Data.getAddress(Offset));
141 addInstruction(Opcode, Data.getU8(Offset));
145 addInstruction(Opcode, Data.getU16(Offset));
149 addInstruction(Opcode, Data.getU32(Offset));
157 addInstruction(Opcode, Data.getULEB128(Offset));
161 addInstruction(Opcode, Data.getSLEB128(Offset));
171 auto op1 = Data.getULEB128(Offset);
172 auto op2 = Data.getULEB128(Offset);
181 auto op1 = Data.getULEB128(Offset);
182 auto op2 = (uint64_t)Data.getSLEB128(Offset);
244 OS << format(" Data alignment factor: %d\n",
249 OS << " Augmentation data: ";
465 static void LLVM_ATTRIBUTE_UNUSED dumpDataAux(DataExtractor Data,
469 uint8_t c = Data.getU8(&Offset);
475 static unsigned getSizeForEncoding(const DataExtractor &Data,
482 return Data.getAddressSize();
495 static uint64_t readPointer(const DataExtractor &Data, uint32_t &Offset,
497 switch (getSizeForEncoding(Data, Encoding)) {
499 return Data.getU16(&Offset);
501 return Data.getU32(&Offset);
503 return Data.getU64(&Offset);
505 llvm_unreachable("Illegal data size");
509 void DWARFDebugFrame::parse(DataExtractor Data) {
513 while (Data.isValidOffset(Offset)) {
525 uint64_t Length = Data.getU32(&Offset);
533 Length = Data.getU64(&Offset);
546 Id = Data.getUnsigned(&Offset, (IsDWARF64 && !IsEH) ? 8 : 4);
552 uint8_t Version = Data.getU8(&Offset);
553 const char *Augmentation = Data.getCStr(&Offset);
555 uint8_t AddressSize = Version < 4 ? Data.getAddressSize() :
556 Data.getU8(&Offset);
557 Data.setAddressSize(AddressSize);
558 uint8_t SegmentDescriptorSize = Version < 4 ? 0 : Data.getU8(&Offset);
559 uint64_t CodeAlignmentFactor = Data.getULEB128(&Offset);
560 int64_t DataAlignmentFactor = Data.getSLEB128(&Offset);
561 uint64_t ReturnAddressRegister = Data.getULEB128(&Offset);
563 // Parse the augmentation data for EH CIEs
575 // Walk the augmentation string to get all the augmentation data.
581 LSDAPointerEncoding = Data.getU8(&Offset);
586 PersonalityEncoding = Data.getU8(&Offset);
587 Personality = readPointer(Data, Offset, *PersonalityEncoding);
591 FDEPointerEncoding = Data.getU8(&Offset);
598 AugmentationLength = Data.getULEB128(&Offset);
607 ReportError("Parsing augmentation data at %lx failed");
609 AugmentationData = Data.getData().slice(StartAugmentationOffset,
632 ReportError("Parsing FDE data at %lx failed due to missing CIE");
634 InitialLocation = readPointer(Data, Offset,
636 AddressRange = readPointer(Data, Offset,
641 // Parse the augmentation length and data for this FDE.
642 uint64_t AugmentationLength = Data.getULEB128(&Offset);
649 readPointer(Data, Offset, Cie->getLSDAPointerEncoding());
652 ReportError("Parsing augmentation data at %lx failed");
655 InitialLocation = Data.getAddress(&Offset);
656 AddressRange = Data.getAddress(&Offset);
664 Entries.back()->parseInstructions(Data, &Offset, EndStructureOffset);