diff options
author | Yabin Cui <yabinc@google.com> | 2018-02-22 17:11:31 -0800 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2018-03-21 17:23:54 -0700 |
commit | 1d835ae7c6e4c0fe3e06d2a1b69dbc01bdd3d755 (patch) | |
tree | 871f8c3fab1bd0be55bdc9f91591e6df6947e3b3 /libunwindstack/include/unwindstack | |
parent | 6dd98054b4d64415e6d04dcbc287df474c25b717 (diff) | |
download | unwinding-1d835ae7c6e4c0fe3e06d2a1b69dbc01bdd3d755.tar.gz |
Support a map that represents gdb jit elf data.
Changes:
- Add a new flag to the libbacktrace and libunwindstack map data.
- Modify the unwinder to handle this map to use the raw pc when stepping.
- Add new unit tests for this case.
Bug: http://b/73127105
Test: Run simpleperf to unwind through jit symfiles.
Test: Run new unit tests.
Test: Run 137-cfi test on host.
Change-Id: I10bc0410680accc6d35fe51e9f1098911f667e01
Diffstat (limited to 'libunwindstack/include/unwindstack')
-rw-r--r-- | libunwindstack/include/unwindstack/Maps.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libunwindstack/include/unwindstack/Maps.h b/libunwindstack/include/unwindstack/Maps.h index 17a2d28..74e5c47 100644 --- a/libunwindstack/include/unwindstack/Maps.h +++ b/libunwindstack/include/unwindstack/Maps.h @@ -30,6 +30,10 @@ namespace unwindstack { // Special flag to indicate a map is in /dev/. However, a map in // /dev/ashmem/... does not set this flag. static constexpr int MAPS_FLAGS_DEVICE_MAP = 0x8000; +// Special flag to indicate that this map represents an elf file +// created by ART for use with the gdb jit debug interface. +// This should only ever appear in offline maps data. +static constexpr int MAPS_FLAGS_JIT_SYMFILE_MAP = 0x4000; class Maps { public: @@ -45,6 +49,8 @@ class Maps { void Add(uint64_t start, uint64_t end, uint64_t offset, uint64_t flags, const std::string& name, uint64_t load_bias); + void Sort(); + typedef std::vector<MapInfo*>::iterator iterator; iterator begin() { return maps_.begin(); } iterator end() { return maps_.end(); } |