Home | History | Annotate | Download | only in Unwind

Lines Matching refs:addressSpace

25 #include "AddressSpace.hpp"
100 static bool findFDE(A &addressSpace, pint_t pc, pint_t ehSectionStart,
103 static const char *decodeFDE(A &addressSpace, pint_t fdeStart,
105 static bool parseFDEInstructions(A &addressSpace, const FDE_Info &fdeInfo,
109 static const char *parseCIE(A &addressSpace, pint_t cie, CIE_Info *cieInfo);
112 static bool parseInstructions(A &addressSpace, pint_t instructions,
121 const char *CFI_Parser<A>::decodeFDE(A &addressSpace, pint_t fdeStart,
124 pint_t cfiLength = (pint_t)addressSpace.get32(p);
128 cfiLength = (pint_t)addressSpace.get64(p);
133 uint32_t ciePointer = addressSpace.get32(p);
138 const char *err = parseCIE(addressSpace, cieStart, cieInfo);
144 addressSpace.getEncodedP(p, nextCFI, cieInfo->pointerEncoding);
146 addressSpace.getEncodedP(p, nextCFI, cieInfo->pointerEncoding & 0x0F);
151 pint_t augLen = (pint_t)addressSpace.getULEB128(p, nextCFI);
156 if (addressSpace.getEncodedP(p, nextCFI, cieInfo->lsdaEncoding & 0x0F) !=
161 addressSpace.getEncodedP(p, nextCFI, cieInfo->lsdaEncoding);
176 bool CFI_Parser<A>::findFDE(A &addressSpace, pint_t pc, pint_t ehSectionStart,
185 pint_t cfiLength = addressSpace.get32(p);
189 cfiLength = (pint_t)addressSpace.get64(p);
194 uint32_t id = addressSpace.get32(p);
201 uint32_t ciePointer = addressSpace.get32(p);
205 if (parseCIE(addressSpace, cieStart, cieInfo) == NULL) {
209 addressSpace.getEncodedP(p, nextCFI, cieInfo->pointerEncoding);
210 pint_t pcRange = addressSpace.getEncodedP(
218 pint_t augLen = (pint_t)addressSpace.getULEB128(p, nextCFI);
223 if (addressSpace.getEncodedP(
227 fdeInfo->lsda = addressSpace
256 const char *CFI_Parser<A>::parseCIE(A &addressSpace, pint_t cie,
269 pint_t cieLength = (pint_t)addressSpace.get32(p);
274 cieLength = (pint_t)addressSpace.get64(p);
281 if (addressSpace.get32(p) != 0)
285 uint8_t version = addressSpace.get8(p);
291 while (addressSpace.get8(p) != 0)
295 cieInfo->codeAlignFactor = (uint32_t)addressSpace.getULEB128(p, cieContentEnd);
297 cieInfo->dataAlignFactor = (int)addressSpace.getSLEB128(p, cieContentEnd);
299 uint64_t raReg = addressSpace.getULEB128(p, cieContentEnd);
304 if (addressSpace.get8(strStart) == 'z') {
306 addressSpace.getULEB128(p, cieContentEnd);
307 for (pint_t s = strStart; addressSpace.get8(s) != '\0'; ++s) {
308 switch (addressSpace.get8(s)) {
313 cieInfo->personalityEncoding = addressSpace.get8(p);
316 cieInfo->personality = addressSpace
320 cieInfo->lsdaEncoding = addressSpace.get8(p);
324 cieInfo->pointerEncoding = addressSpace.get8(p);
344 bool CFI_Parser<A>::parseFDEInstructions(A &addressSpace,
353 return parseInstructions(addressSpace, cieInfo.cieInstructions,
356 parseInstructions(addressSpace, fdeInfo.fdeInstructions,
363 bool CFI_Parser<A>::parseInstructions(A &addressSpace, pint_t instructions,
382 uint8_t opcode = addressSpace.get8(p);
393 addressSpace.getEncodedP(p, instructionsEnd, cieInfo.pointerEncoding);
398 codeOffset += (addressSpace.get8(p) * cieInfo.codeAlignFactor);
405 codeOffset += (addressSpace.get16(p) * cieInfo.codeAlignFactor);
412 codeOffset += (addressSpace.get32(p) * cieInfo.codeAlignFactor);
419 reg = addressSpace.getULEB128(p, instructionsEnd);
420 offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd)
434 reg = addressSpace.getULEB128(p, instructionsEnd);
447 reg = addressSpace.getULEB128(p, instructionsEnd);
458 reg = addressSpace.getULEB128(p, instructionsEnd);
475 reg = addressSpace.getULEB128(p, instructionsEnd);
476 reg2 = addressSpace.getULEB128(p, instructionsEnd);
520 reg = addressSpace.getULEB128(p, instructionsEnd);
521 offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd);
532 reg = addressSpace.getULEB128(p, instructionsEnd);
545 addressSpace.getULEB128(p, instructionsEnd);
554 length = addressSpace.getULEB128(p, instructionsEnd);
562 reg = addressSpace.getULEB128(p, instructionsEnd);
570 length = addressSpace.getULEB128(p, instructionsEnd);
578 reg = addressSpace.getULEB128(p, instructionsEnd);
586 addressSpace.getSLEB128(p, instructionsEnd) * cieInfo.dataAlignFactor;
594 reg = addressSpace.getULEB128(p, instructionsEnd);
596 addressSpace.getSLEB128(p, instructionsEnd) * cieInfo.dataAlignFactor;
610 (addressSpace.getSLEB128(p, instructionsEnd) * cieInfo.dataAlignFactor);
617 reg = addressSpace.getULEB128(p, instructionsEnd);
618 offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd)
627 reg = addressSpace.getULEB128(p, instructionsEnd);
634 addressSpace.getSLEB128(p, instructionsEnd) * cieInfo.dataAlignFactor;
642 reg = addressSpace.getULEB128(p, instructionsEnd);
650 length = addressSpace.getULEB128(p, instructionsEnd);
659 length = addressSpace.getULEB128(p, instructionsEnd);
665 reg = addressSpace.getULEB128(p, instructionsEnd);
671 offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd)
683 offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd)