android_system_core/libunwindstack/tests
Christopher Ferris 0f40a05309 Properly handle empty map after read-only map.
Recently, the maps for an elf in memory might show up looking like:

  f0000-f1000 0 r-- /system/lib/libc.so
  f1000-f2000 0 ---
  f2000-f3000 1000 r-x /system/lib/libc.so
  f3000-f4000 2000 rw- /system/lib/libc.so

The problem is that there is logic in the code that assumed that the
map before the execute map must be the read-only map. In the case
above, this is not true. Add a new prev_real_map that will point
to the previous map that is not one of these empty maps.

This will fix the backtraces that look like this:

  #00  pc 0000000000050d58  /apex/com.android.runtime/lib64/bionic/libc.so!libc.so (offset 0x50000) (syscall+24) (BuildId: 5252408bf30e395d49ee270b54c77ca4)

To get rid of the !libc.so and the offset value, which is not correct.

Added new unit tests to verify this.
Added new offline test which an empty map between read-only and execute
map. Before this change, the backtraces had lines like
libc.so!libc.so (offset XXX) would be present.

Bug: 148075852

Test: Ran unit tests.
Change-Id: Ie04bfc96b8f91ed885cb1e655cf1e346efe48a45
2020-01-22 18:30:12 -08:00
..
files Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
ArmExidxDecodeTest.cpp Fix build with new googletest 2019-11-10 04:08:25 +00:00
ArmExidxExtractTest.cpp Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
DexFileData.h Load dex files from ART-specific data structure. 2018-02-02 15:03:00 -08:00
DexFilesTest.cpp Fix global finding logic. 2020-01-21 18:00:57 -08:00
DexFileTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
DwarfCfaLogTest.cpp Add a name for all test suites 2019-12-11 12:46:20 -08:00
DwarfCfaTest.cpp Add a name for all test suites 2019-12-11 12:46:20 -08:00
DwarfDebugFrameTest.cpp Add a name for all test suites 2019-12-11 12:46:20 -08:00
DwarfEhFrameTest.cpp Add a name for all test suites 2019-12-11 12:46:20 -08:00
DwarfEhFrameWithHdrTest.cpp Add a name for all test suites 2019-12-11 12:46:20 -08:00
DwarfMemoryTest.cpp Remove CHECK in AdjustEncodedValue. 2018-12-20 08:40:58 -08:00
DwarfOpLogTest.cpp Add a name for all test suites 2019-12-11 12:46:20 -08:00
DwarfOpTest.cpp Add a name for all test suites 2019-12-11 12:46:20 -08:00
DwarfSectionImplTest.cpp Add a name for all test suites 2019-12-11 12:46:20 -08:00
DwarfSectionTest.cpp Replace MOCK_METHODN with MOCK_METHOD macro. 2019-10-11 14:30:18 -07:00
ElfCacheTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
ElfFake.cpp Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
ElfFake.h Fix handling of possible bad gnu_debugdata_size. 2019-12-19 16:48:15 -08:00
ElfInterfaceArmTest.cpp Remove Memory::ReadField. 2018-07-12 12:45:31 -07:00
ElfInterfaceTest.cpp Fix handling of possible bad gnu_debugdata_size. 2019-12-19 16:48:15 -08:00
ElfTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
ElfTestUtils.cpp Fix incorrect usage of relative pcs. 2017-11-29 16:10:08 -08:00
ElfTestUtils.h Fix incorrect usage of relative pcs. 2017-11-29 16:10:08 -08:00
GenGnuDebugdata.cpp Add .gnu_debugdata support. 2017-06-28 15:23:10 -07:00
IsolatedSettings.cpp Move to isolated testing. 2019-07-17 18:08:32 -07:00
JitDebugTest.cpp Fix support finding global variables. 2019-12-03 17:35:00 -08:00
LocalUnwinderTest.cpp Add test mapping to run the libunwind tests. 2019-09-03 13:32:51 -07:00
LocalUpdatableMapsTest.cpp Fix LocalUpdatableMaps 2019-09-16 18:28:38 -07:00
LogFake.cpp Make the library usable as a library. 2017-07-14 12:20:23 -07:00
LogFake.h Make the library usable as a library. 2017-07-14 12:20:23 -07:00
MapInfoCreateMemoryTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
MapInfoGetBuildIDTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
MapInfoGetElfTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
MapInfoGetLoadBiasTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
MapInfoTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
MapsTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
MemoryBufferTest.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryCacheTest.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryFake.cpp Implement support for linker rosegment option. 2018-10-03 20:48:45 -07:00
MemoryFake.h Implement support for linker rosegment option. 2018-10-03 20:48:45 -07:00
MemoryFileTest.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryLocalTest.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryOfflineBufferTest.cpp Switch case to suite to follow new gtest naming. 2019-06-20 16:18:57 -07:00
MemoryOfflineTest.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryRangesTest.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryRangeTest.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryRemoteTest.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryTest.cpp Remove Memory::ReadField. 2018-07-12 12:45:31 -07:00
RegsFake.h Add BuildId to frame information. 2019-03-26 08:04:40 -07:00
RegsInfoTest.cpp Fix off by one error. 2018-10-23 18:10:41 +01:00
RegsIterateTest.cpp Merge "Include PSTATE in tombstones on arm64." 2019-11-19 14:07:37 +00:00
RegsStepIfSignalHandlerTest.cpp Always set the sp reg to the cfa for DWARF. 2018-03-16 23:38:07 -07:00
RegsTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
SymbolsTest.cpp Add a name for all test suites 2019-12-11 12:46:20 -08:00
TestLocal.cpp Add a specialized LocalUnwinder object. 2018-05-23 20:02:30 -07:00
TestUtils.cpp Add a few leak check tests. 2019-01-25 12:35:19 -08:00
TestUtils.h Add a few leak check tests. 2019-01-25 12:35:19 -08:00
UnwinderTest.cpp Switch case to suite to follow new gtest naming. 2019-06-20 16:18:57 -07:00
UnwindOfflineTest.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
UnwindTest.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
VerifyBionicTerminationTest.cpp Add test of undefined return address. 2019-08-30 23:29:34 -07:00