summaryrefslogtreecommitdiffstats
path: root/libunwindstack/tests/DwarfSectionImplTest.cpp
diff options
context:
space:
mode:
authorDavid Srbecky <dsrbecky@google.com>2018-03-14 21:30:25 +0000
committerChristopher Ferris <cferris@google.com>2018-03-29 14:47:13 +0000
commit3386ebade2d28fd3ef68c576bb0375bd226a1320 (patch)
tree53f2e511a1e7b507239ab5c89cce0c50df474636 /libunwindstack/tests/DwarfSectionImplTest.cpp
parent324e27d284ef5061746a79ae22ed608460c985e9 (diff)
downloadsystem_core-3386ebade2d28fd3ef68c576bb0375bd226a1320.tar.gz
system_core-3386ebade2d28fd3ef68c576bb0375bd226a1320.tar.bz2
system_core-3386ebade2d28fd3ef68c576bb0375bd226a1320.zip
Cache DWARF location rules for a given pc.
Decoding the DWARF opcodes is expensive so make sure we cache it. This speeds unwinding in simpleperf by over a factor of 3x. Add unit tests for this new behavior. Bug: 77258731 Test: libbacktrace/libunwindstack unit tests on host and target. Test: Ran debuggerd -b on various processes on target. Change-Id: Ia516c0fa5d3e5f76746190bb4b6fdf49fd1c9388
Diffstat (limited to 'libunwindstack/tests/DwarfSectionImplTest.cpp')
-rw-r--r--libunwindstack/tests/DwarfSectionImplTest.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/libunwindstack/tests/DwarfSectionImplTest.cpp b/libunwindstack/tests/DwarfSectionImplTest.cpp
index c85764c78..c34029130 100644
--- a/libunwindstack/tests/DwarfSectionImplTest.cpp
+++ b/libunwindstack/tests/DwarfSectionImplTest.cpp
@@ -853,7 +853,8 @@ TYPED_TEST_P(DwarfSectionImplTest, GetCfaLocationInfo_cie_cached) {
fde.cfa_instructions_offset = 0x6000;
fde.cfa_instructions_end = 0x6002;
- dwarf_loc_regs_t cie_loc_regs{{6, {DWARF_LOCATION_REGISTER, {4, 0}}}};
+ dwarf_loc_regs_t cie_loc_regs;
+ cie_loc_regs[6] = DwarfLocation{DWARF_LOCATION_REGISTER, {4, 0}};
this->section_->TestSetCachedCieLocRegs(0x8000, cie_loc_regs);
this->memory_.SetMemory(0x6000, std::vector<uint8_t>{0x09, 0x04, 0x03});