123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef BASE_PROFILER_ARM_CFI_TABLE_H_
- #define BASE_PROFILER_ARM_CFI_TABLE_H_
- #include <memory>
- #include "base/containers/buffer_iterator.h"
- #include "base/containers/span.h"
- #include "base/macros.h"
- #include "base/optional.h"
- namespace base {
- class BASE_EXPORT ArmCFITable {
- public:
-
-
-
- struct FrameEntry {
-
-
-
- uint16_t cfa_offset = 0;
-
-
-
- uint16_t ra_offset = 0;
- };
-
-
- static std::unique_ptr<ArmCFITable> Parse(span<const uint8_t> cfi_data);
- ArmCFITable(span<const uint32_t> function_addresses,
- span<const uint16_t> entry_data_indices,
- span<const uint8_t> entry_data);
- ~ArmCFITable();
-
-
- Optional<FrameEntry> FindEntryForAddress(uintptr_t address) const;
- size_t GetTableSizeForTesting() const { return function_addresses_.size(); }
- private:
-
-
-
-
-
-
-
-
-
- const span<const uint32_t> function_addresses_;
- const span<const uint16_t> entry_data_indices_;
-
-
-
- const span<const uint8_t> entry_data_;
- DISALLOW_COPY_AND_ASSIGN(ArmCFITable);
- };
- }
- #endif
|