Lines Matching defs:fdeInfo
43 FrameDescEntry fdeInfo;
46 if (GetCieOrFde(ptr, fdeInfo)) {
47 if (pc >= fdeInfo.pcStart && pc < fdeInfo.pcEnd) {
120 FrameDescEntry fdeInfo;
121 if (!ParseFde(fdeAddr, fdeAddr, fdeInfo)) {
127 if (pc < fdeInfo.pcStart || pc >= fdeInfo.pcEnd) {
129 (void*)pc, (void*)fdeInfo.pcStart, (void*)fdeInfo.pcEnd);
133 if (!dwarfInstructions.Parse(pc, fdeInfo, *(rs.get()))) {
141 bool DwarfSection::GetCieOrFde(uintptr_t &addr, FrameDescEntry &fdeInfo)
145 ParseCieOrFdeHeader(ptr, fdeInfo, isCieEntry);
148 if (!ParseCie(addr, ptr, fdeInfo.cie)) {
152 addr = fdeInfo.cie.instructionsEnd;
154 if (!ParseFde(addr, ptr, fdeInfo)) {
158 addr = fdeInfo.instructionsEnd;
163 void DwarfSection::ParseCieOrFdeHeader(uintptr_t& ptr, FrameDescEntry &fdeInfo, bool& isCieEntry)
178 fdeInfo.cie.instructionsEnd = instructionsEnd;
179 fdeInfo.cie.pointerEncoding = DW_EH_PE_sdata8;
181 fdeInfo.instructionsEnd = instructionsEnd;
182 fdeInfo.cieAddr = static_cast<uintptr_t>(ptr - ciePtr);
191 fdeInfo.cie.instructionsEnd = instructionsEnd;
192 fdeInfo.cie.pointerEncoding = DW_EH_PE_sdata4;
194 fdeInfo.instructionsEnd = instructionsEnd;
195 fdeInfo.cieAddr = static_cast<uintptr_t>(ptr - ciePtr);
201 bool DwarfSection::ParseFde(uintptr_t fdeAddr, uintptr_t fdePtr, FrameDescEntry &fdeInfo)
207 fdeInfo = iter->second;
214 ParseCieOrFdeHeader(fdePtr, fdeInfo, isCieEntry);
220 if (!FillInFde(fdePtr, fdeInfo)) {
225 fdeEntries_[fdeAddr] = fdeInfo;
229 bool DwarfSection::FillInFde(uintptr_t ptr, FrameDescEntry &fdeInfo)
231 if (!ParseCie(fdeInfo.cieAddr, fdeInfo.cieAddr, fdeInfo.cie)) {
236 if (fdeInfo.cie.segmentSize != 0) {
238 ptr += fdeInfo.cie.segmentSize;
241 DFXLOGU("pointerEncoding: %{public}02x", fdeInfo.cie.pointerEncoding);
242 uintptr_t pcStart = memory_->ReadEncodedValue(ptr, fdeInfo.cie.pointerEncoding);
243 uintptr_t pcRange = memory_->ReadEncodedValue(ptr, (fdeInfo.cie.pointerEncoding & 0x0F));
245 fdeInfo.lsda = 0;
247 if (fdeInfo.cie.hasAugmentationData) {
250 if (fdeInfo.cie.lsdaEncoding != DW_EH_PE_omit) {
252 if (memory_->ReadEncodedValue(ptr, (fdeInfo.cie.lsdaEncoding & 0x0F)) != 0) {
253 fdeInfo.lsda = memory_->ReadEncodedValue(lsdaPtr, fdeInfo.cie.lsdaEncoding);
259 fdeInfo.instructionsOff = ptr;
260 fdeInfo.pcStart = pcStart;
261 fdeInfo.pcEnd = pcStart + pcRange;
262 DFXLOGU("FDE pcStart: %{public}p, pcEnd: %{public}p", (void*)(fdeInfo.pcStart), (void*)(fdeInfo.pcEnd));
279 FrameDescEntry fdeInfo;
280 ParseCieOrFdeHeader(ciePtr, fdeInfo, isCieEntry);
285 cieInfo = fdeInfo.cie;