Lines Matching refs:addressSpace
101 static bool findFDE(A &addressSpace, pint_t pc, pint_t ehSectionStart,
104 static const char *decodeFDE(A &addressSpace, pint_t fdeStart,
106 static bool parseFDEInstructions(A &addressSpace, const FDE_Info &fdeInfo,
110 static const char *parseCIE(A &addressSpace, pint_t cie, CIE_Info *cieInfo);
113 static bool parseInstructions(A &addressSpace, pint_t instructions,
122 const char *CFI_Parser<A>::decodeFDE(A &addressSpace, pint_t fdeStart, in decodeFDE() argument
125 pint_t cfiLength = (pint_t)addressSpace.get32(p); in decodeFDE()
129 cfiLength = (pint_t)addressSpace.get64(p); in decodeFDE()
134 uint32_t ciePointer = addressSpace.get32(p); in decodeFDE()
139 const char *err = parseCIE(addressSpace, cieStart, cieInfo); in decodeFDE()
145 addressSpace.getEncodedP(p, nextCFI, cieInfo->pointerEncoding); in decodeFDE()
147 addressSpace.getEncodedP(p, nextCFI, cieInfo->pointerEncoding & 0x0F); in decodeFDE()
152 pint_t augLen = (pint_t)addressSpace.getULEB128(p, nextCFI); in decodeFDE()
157 if (addressSpace.getEncodedP(p, nextCFI, cieInfo->lsdaEncoding & 0x0F) != in decodeFDE()
162 addressSpace.getEncodedP(p, nextCFI, cieInfo->lsdaEncoding); in decodeFDE()
177 bool CFI_Parser<A>::findFDE(A &addressSpace, pint_t pc, pint_t ehSectionStart, in findFDE() argument
186 pint_t cfiLength = addressSpace.get32(p); in findFDE()
190 cfiLength = (pint_t)addressSpace.get64(p); in findFDE()
195 uint32_t id = addressSpace.get32(p); in findFDE()
202 uint32_t ciePointer = addressSpace.get32(p); in findFDE()
206 if (parseCIE(addressSpace, cieStart, cieInfo) == NULL) { in findFDE()
210 addressSpace.getEncodedP(p, nextCFI, cieInfo->pointerEncoding); in findFDE()
211 pint_t pcRange = addressSpace.getEncodedP( in findFDE()
219 pint_t augLen = (pint_t)addressSpace.getULEB128(p, nextCFI); in findFDE()
224 if (addressSpace.getEncodedP( in findFDE()
228 fdeInfo->lsda = addressSpace in findFDE()
257 const char *CFI_Parser<A>::parseCIE(A &addressSpace, pint_t cie, in parseCIE() argument
270 pint_t cieLength = (pint_t)addressSpace.get32(p); in parseCIE()
275 cieLength = (pint_t)addressSpace.get64(p); in parseCIE()
282 if (addressSpace.get32(p) != 0) in parseCIE()
286 uint8_t version = addressSpace.get8(p); in parseCIE()
292 while (addressSpace.get8(p) != 0) in parseCIE()
296 cieInfo->codeAlignFactor = (uint32_t)addressSpace.getULEB128(p, cieContentEnd); in parseCIE()
298 cieInfo->dataAlignFactor = (int)addressSpace.getSLEB128(p, cieContentEnd); in parseCIE()
300 uint64_t raReg = addressSpace.getULEB128(p, cieContentEnd); in parseCIE()
305 if (addressSpace.get8(strStart) == 'z') { in parseCIE()
307 addressSpace.getULEB128(p, cieContentEnd); in parseCIE()
308 for (pint_t s = strStart; addressSpace.get8(s) != '\0'; ++s) { in parseCIE()
309 switch (addressSpace.get8(s)) { in parseCIE()
314 cieInfo->personalityEncoding = addressSpace.get8(p); in parseCIE()
317 cieInfo->personality = addressSpace in parseCIE()
321 cieInfo->lsdaEncoding = addressSpace.get8(p); in parseCIE()
325 cieInfo->pointerEncoding = addressSpace.get8(p); in parseCIE()
345 bool CFI_Parser<A>::parseFDEInstructions(A &addressSpace, in parseFDEInstructions() argument
354 return parseInstructions(addressSpace, cieInfo.cieInstructions, in parseFDEInstructions()
357 parseInstructions(addressSpace, fdeInfo.fdeInstructions, in parseFDEInstructions()
364 bool CFI_Parser<A>::parseInstructions(A &addressSpace, pint_t instructions, in parseInstructions() argument
383 uint8_t opcode = addressSpace.get8(p); in parseInstructions()
394 addressSpace.getEncodedP(p, instructionsEnd, cieInfo.pointerEncoding); in parseInstructions()
399 codeOffset += (addressSpace.get8(p) * cieInfo.codeAlignFactor); in parseInstructions()
406 codeOffset += (addressSpace.get16(p) * cieInfo.codeAlignFactor); in parseInstructions()
413 codeOffset += (addressSpace.get32(p) * cieInfo.codeAlignFactor); in parseInstructions()
420 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
421 offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd) in parseInstructions()
436 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
449 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
460 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
477 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
478 reg2 = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
523 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
524 offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
536 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
549 addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
558 length = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
566 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
574 length = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
582 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
590 addressSpace.getSLEB128(p, instructionsEnd) * cieInfo.dataAlignFactor; in parseInstructions()
599 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
601 addressSpace.getSLEB128(p, instructionsEnd) * cieInfo.dataAlignFactor; in parseInstructions()
616 (addressSpace.getSLEB128(p, instructionsEnd) * cieInfo.dataAlignFactor); in parseInstructions()
623 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
624 offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd) in parseInstructions()
634 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
641 addressSpace.getSLEB128(p, instructionsEnd) * cieInfo.dataAlignFactor; in parseInstructions()
650 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
658 length = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
666 length = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
672 reg = addressSpace.getULEB128(p, instructionsEnd); in parseInstructions()
678 offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd) in parseInstructions()
691 offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd) in parseInstructions()