/base/hiviewdfx/faultloggerd/interfaces/innerkits/unwinder/ |
H A D | dfx_elf.cpp | 660 bool DfxElf::FillUnwindTableByExidx(ShdrInfo shdr, uintptr_t loadBase, struct UnwindTableInfo* uti)
in FillUnwindTableByExidx() argument 662 if (uti == nullptr) {
in FillUnwindTableByExidx() 665 uti->gp = 0;
in FillUnwindTableByExidx() 666 uti->tableData = loadBase + shdr.addr;
in FillUnwindTableByExidx() 667 uti->tableLen = shdr.size;
in FillUnwindTableByExidx() 669 uti->format = UNW_INFO_FORMAT_ARM_EXIDX;
in FillUnwindTableByExidx() 671 (uint64_t)uti->tableData, (int)uti->tableLen);
in FillUnwindTableByExidx() 676 bool DfxElf::FillUnwindTableByEhhdrLocal(struct DwarfEhFrameHdr* hdr, struct UnwindTableInfo* uti)
in FillUnwindTableByEhhdrLocal() argument 693 (uint64_t)uti in FillUnwindTableByEhhdrLocal() 725 FillUnwindTableByEhhdr(struct DwarfEhFrameHdr* hdr, uintptr_t shdrBase, struct UnwindTableInfo* uti) FillUnwindTableByEhhdr() argument 774 FindUnwindTableInfo(uintptr_t pc, std::shared_ptr<DfxMap> map, struct UnwindTableInfo& uti) FindUnwindTableInfo() argument 829 FindUnwindTableLocal(uintptr_t pc, struct UnwindTableInfo& uti) FindUnwindTableLocal() argument 874 UnwindTableInfo* uti = &cbData->uti; DlPhdrCb() local [all...] |
H A D | dfx_accessors.cpp | 131 int DfxAccessorsLocal::FindUnwindTable(uintptr_t pc, UnwindTableInfo& uti, void *arg) in FindUnwindTable() argument 145 ret = elf->FindUnwindTableInfo(pc, ctx->map, uti); in FindUnwindTable() 147 ret = DfxElf::FindUnwindTableLocal(pc, uti); in FindUnwindTable() 150 ctx->di = uti; in FindUnwindTable() 228 int DfxAccessorsRemote::FindUnwindTable(uintptr_t pc, UnwindTableInfo& uti, void *arg) in FindUnwindTable() argument 237 uti = ctx->di; in FindUnwindTable() 246 int ret = elf->FindUnwindTableInfo(pc, ctx->map, uti); in FindUnwindTable() 248 ctx->di = uti; in FindUnwindTable() 277 int DfxAccessorsCustomize::FindUnwindTable(uintptr_t pc, UnwindTableInfo& uti, void *arg) in FindUnwindTable() argument 282 return accessors_->FindUnwindTable(pc, uti, ar in FindUnwindTable() [all...] |
H A D | dwarf_section.cpp | 36 bool DwarfSection::LinearSearchEntry(uintptr_t pc, struct UnwindTableInfo uti, struct UnwindEntryInfo& uei)
in LinearSearchEntry() argument 39 uintptr_t fdeCount = uti.tableLen;
in LinearSearchEntry() 40 uintptr_t tableData = uti.tableData;
in LinearSearchEntry() 44 while (i++ < fdeCount && ptr < uti.endPc) {
in LinearSearchEntry() 60 bool DwarfSection::SearchEntry(uintptr_t pc, struct UnwindTableInfo uti, struct UnwindEntryInfo& uei)
in SearchEntry() argument 63 MAYBE_UNUSED auto segbase = uti.segbase;
in SearchEntry() 64 uintptr_t fdeCount = uti.tableLen;
in SearchEntry() 65 uintptr_t tableData = uti.tableData;
in SearchEntry()
|
H A D | arm_exidx.cpp | 142 bool ArmExidx::SearchEntry(uintptr_t pc, struct UnwindTableInfo uti, struct UnwindEntryInfo& uei) in SearchEntry() argument 144 uintptr_t tableLen = uti.tableLen / ARM_EXIDX_TABLE_SIZE; in SearchEntry() 145 uintptr_t tableData = uti.tableData; in SearchEntry()
|
H A D | unwinder.cpp | 973 UnwindTableInfo uti; in StepInner() local 974 MAYBE_UNUSED int utiRet = acc_->FindUnwindTable(frame.pc, uti, ctx); in StepInner() 985 if (!ret && uti.format == UNW_INFO_FORMAT_ARM_EXIDX) { in StepInner() 986 if (!armExidx_->SearchEntry(frame.pc, uti, uei)) { in StepInner() 999 if (!ret && uti.format == UNW_INFO_FORMAT_REMOTE_TABLE) { in StepInner() 1000 if ((uti.isLinear == false && !dwarfSection_->SearchEntry(frame.pc, uti, uei)) || in StepInner() 1001 (uti.isLinear == true && !dwarfSection_->LinearSearchEntry(frame.pc, uti, uei))) { in StepInner() 1006 memory_->SetDataOffset(uti in StepInner() [all...] |
/base/hiviewdfx/faultloggerd/interfaces/innerkits/unwinder/include/ |
H A D | dfx_elf.h | 28 UnwindTableInfo uti;
member 75 int FindUnwindTableInfo(uintptr_t pc, std::shared_ptr<DfxMap> map, struct UnwindTableInfo& uti);
76 static int FindUnwindTableLocal(uintptr_t pc, struct UnwindTableInfo& uti);
90 static bool FillUnwindTableByEhhdrLocal(struct DwarfEhFrameHdr* hdr, struct UnwindTableInfo* uti);
92 bool FillUnwindTableByEhhdr(struct DwarfEhFrameHdr* hdr, uintptr_t shdrBase, struct UnwindTableInfo* uti);
93 static bool FillUnwindTableByExidx(ShdrInfo shdr, uintptr_t loadBase, struct UnwindTableInfo* uti);
|
H A D | dfx_accessors.h | 45 virtual int FindUnwindTable(uintptr_t pc, UnwindTableInfo& uti, void *arg) = 0; 59 int FindUnwindTable(uintptr_t pc, UnwindTableInfo& uti, void *arg) override; 78 int FindUnwindTable(uintptr_t pc, UnwindTableInfo& uti, void *arg) override; 89 int FindUnwindTable(uintptr_t pc, UnwindTableInfo& uti, void *arg) override;
|
H A D | dwarf_section.h | 34 bool LinearSearchEntry(uintptr_t pc, struct UnwindTableInfo uti, struct UnwindEntryInfo& uei);
35 bool SearchEntry(uintptr_t pc, struct UnwindTableInfo uti, struct UnwindEntryInfo& uei);
|
H A D | arm_exidx.h | 46 bool SearchEntry(uintptr_t pc, struct UnwindTableInfo uti, struct UnwindEntryInfo& uei);
|
/base/hiviewdfx/faultloggerd/test/unittest/unwind/ |
H A D | dwarf_test.cpp | 527 struct UnwindTableInfo uti; in HWTEST_F() local 528 ASSERT_EQ(DfxElf::FindUnwindTableLocal(pc, uti), 0); in HWTEST_F() 534 ASSERT_EQ(true, dwarfSection.SearchEntry(pc, uti, pi)); in HWTEST_F()
|