Loading libunwindstack/DwarfOp.h +3 −3 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ enum DwarfVersion : uint8_t { class DwarfMemory; class Memory; template <typename AddressType> class RegsTmpl; class RegsImpl; template <typename AddressType> class DwarfOp { Loading Loading @@ -67,7 +67,7 @@ class DwarfOp { AddressType StackAt(size_t index) { return stack_[index]; } size_t StackSize() { return stack_.size(); } void set_regs(RegsTmpl<AddressType>* regs) { regs_ = regs; } void set_regs(RegsImpl<AddressType>* regs) { regs_ = regs; } DwarfError last_error() { return last_error_; } Loading @@ -91,7 +91,7 @@ class DwarfOp { DwarfMemory* memory_; Memory* regular_memory_; RegsTmpl<AddressType>* regs_; RegsImpl<AddressType>* regs_; bool is_register_ = false; DwarfError last_error_ = DWARF_ERROR_NONE; uint8_t cur_op_; Loading libunwindstack/DwarfSection.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ bool DwarfSectionImpl<AddressType>::EvalExpression(const DwarfLocation& loc, uin template <typename AddressType> bool DwarfSectionImpl<AddressType>::Eval(const DwarfCie* cie, Memory* regular_memory, const dwarf_loc_regs_t& loc_regs, Regs* regs) { RegsTmpl<AddressType>* cur_regs = reinterpret_cast<RegsTmpl<AddressType>*>(regs); RegsImpl<AddressType>* cur_regs = reinterpret_cast<RegsImpl<AddressType>*>(regs); if (cie->return_address_register >= cur_regs->total_regs()) { last_error_ = DWARF_ERROR_ILLEGAL_VALUE; return false; Loading libunwindstack/Regs.cpp +10 −14 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ #include "User.h" template <typename AddressType> uint64_t RegsTmpl<AddressType>::GetRelPc(Elf* elf, const MapInfo* map_info) { uint64_t RegsImpl<AddressType>::GetRelPc(Elf* elf, const MapInfo* map_info) { uint64_t load_bias = 0; if (elf->valid()) { load_bias = elf->interface()->load_bias(); Loading @@ -40,7 +40,7 @@ uint64_t RegsTmpl<AddressType>::GetRelPc(Elf* elf, const MapInfo* map_info) { } template <typename AddressType> bool RegsTmpl<AddressType>::GetReturnAddressFromDefault(Memory* memory, uint64_t* value) { bool RegsImpl<AddressType>::GetReturnAddressFromDefault(Memory* memory, uint64_t* value) { switch (return_loc_.type) { case LOCATION_REGISTER: assert(return_loc_.value < total_regs_); Loading @@ -59,9 +59,8 @@ bool RegsTmpl<AddressType>::GetReturnAddressFromDefault(Memory* memory, uint64_t } } RegsArm::RegsArm() : RegsTmpl<uint32_t>(ARM_REG_LAST, ARM_REG_SP, Location(LOCATION_REGISTER, ARM_REG_LR)) { } RegsArm::RegsArm() : RegsImpl<uint32_t>(ARM_REG_LAST, ARM_REG_SP, Location(LOCATION_REGISTER, ARM_REG_LR)) {} uint64_t RegsArm::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { if (!elf->valid()) { Loading Loading @@ -89,9 +88,8 @@ uint64_t RegsArm::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { return rel_pc - 4; } RegsArm64::RegsArm64() : RegsTmpl<uint64_t>(ARM64_REG_LAST, ARM64_REG_SP, Location(LOCATION_REGISTER, ARM64_REG_LR)) { } RegsArm64::RegsArm64() : RegsImpl<uint64_t>(ARM64_REG_LAST, ARM64_REG_SP, Location(LOCATION_REGISTER, ARM64_REG_LR)) {} uint64_t RegsArm64::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { if (!elf->valid()) { Loading @@ -104,9 +102,8 @@ uint64_t RegsArm64::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { return rel_pc - 4; } RegsX86::RegsX86() : RegsTmpl<uint32_t>(X86_REG_LAST, X86_REG_SP, Location(LOCATION_SP_OFFSET, -4)) { } RegsX86::RegsX86() : RegsImpl<uint32_t>(X86_REG_LAST, X86_REG_SP, Location(LOCATION_SP_OFFSET, -4)) {} uint64_t RegsX86::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { if (!elf->valid()) { Loading @@ -119,9 +116,8 @@ uint64_t RegsX86::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { return rel_pc - 1; } RegsX86_64::RegsX86_64() : RegsTmpl<uint64_t>(X86_64_REG_LAST, X86_64_REG_SP, Location(LOCATION_SP_OFFSET, -8)) { } RegsX86_64::RegsX86_64() : RegsImpl<uint64_t>(X86_64_REG_LAST, X86_64_REG_SP, Location(LOCATION_SP_OFFSET, -8)) {} uint64_t RegsX86_64::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { if (!elf->valid()) { Loading libunwindstack/Regs.h +7 −7 Original line number Diff line number Diff line Loading @@ -66,11 +66,11 @@ class Regs { }; template <typename AddressType> class RegsTmpl : public Regs { class RegsImpl : public Regs { public: RegsTmpl(uint16_t total_regs, uint16_t sp_reg, Location return_loc) RegsImpl(uint16_t total_regs, uint16_t sp_reg, Location return_loc) : Regs(total_regs, sp_reg, return_loc), regs_(total_regs) {} virtual ~RegsTmpl() = default; virtual ~RegsImpl() = default; uint64_t GetRelPc(Elf* elf, const MapInfo* map_info) override; Loading @@ -92,7 +92,7 @@ class RegsTmpl : public Regs { std::vector<AddressType> regs_; }; class RegsArm : public RegsTmpl<uint32_t> { class RegsArm : public RegsImpl<uint32_t> { public: RegsArm(); virtual ~RegsArm() = default; Loading @@ -100,7 +100,7 @@ class RegsArm : public RegsTmpl<uint32_t> { uint64_t GetAdjustedPc(uint64_t rel_pc, Elf* elf) override; }; class RegsArm64 : public RegsTmpl<uint64_t> { class RegsArm64 : public RegsImpl<uint64_t> { public: RegsArm64(); virtual ~RegsArm64() = default; Loading @@ -108,7 +108,7 @@ class RegsArm64 : public RegsTmpl<uint64_t> { uint64_t GetAdjustedPc(uint64_t rel_pc, Elf* elf) override; }; class RegsX86 : public RegsTmpl<uint32_t> { class RegsX86 : public RegsImpl<uint32_t> { public: RegsX86(); virtual ~RegsX86() = default; Loading @@ -116,7 +116,7 @@ class RegsX86 : public RegsTmpl<uint32_t> { uint64_t GetAdjustedPc(uint64_t rel_pc, Elf* elf) override; }; class RegsX86_64 : public RegsTmpl<uint64_t> { class RegsX86_64 : public RegsImpl<uint64_t> { public: RegsX86_64(); virtual ~RegsX86_64() = default; Loading libunwindstack/tests/RegsFake.h +2 −2 Original line number Diff line number Diff line Loading @@ -22,10 +22,10 @@ #include "Regs.h" template <typename TypeParam> class RegsFake : public RegsTmpl<TypeParam> { class RegsFake : public RegsImpl<TypeParam> { public: RegsFake(uint16_t total_regs, uint16_t sp_reg) : RegsTmpl<TypeParam>(total_regs, sp_reg, Regs::Location(Regs::LOCATION_UNKNOWN, 0)) {} : RegsImpl<TypeParam>(total_regs, sp_reg, Regs::Location(Regs::LOCATION_UNKNOWN, 0)) {} virtual ~RegsFake() = default; uint64_t GetRelPc(Elf*, const MapInfo*) override { return 0; } Loading Loading
libunwindstack/DwarfOp.h +3 −3 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ enum DwarfVersion : uint8_t { class DwarfMemory; class Memory; template <typename AddressType> class RegsTmpl; class RegsImpl; template <typename AddressType> class DwarfOp { Loading Loading @@ -67,7 +67,7 @@ class DwarfOp { AddressType StackAt(size_t index) { return stack_[index]; } size_t StackSize() { return stack_.size(); } void set_regs(RegsTmpl<AddressType>* regs) { regs_ = regs; } void set_regs(RegsImpl<AddressType>* regs) { regs_ = regs; } DwarfError last_error() { return last_error_; } Loading @@ -91,7 +91,7 @@ class DwarfOp { DwarfMemory* memory_; Memory* regular_memory_; RegsTmpl<AddressType>* regs_; RegsImpl<AddressType>* regs_; bool is_register_ = false; DwarfError last_error_ = DWARF_ERROR_NONE; uint8_t cur_op_; Loading
libunwindstack/DwarfSection.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ bool DwarfSectionImpl<AddressType>::EvalExpression(const DwarfLocation& loc, uin template <typename AddressType> bool DwarfSectionImpl<AddressType>::Eval(const DwarfCie* cie, Memory* regular_memory, const dwarf_loc_regs_t& loc_regs, Regs* regs) { RegsTmpl<AddressType>* cur_regs = reinterpret_cast<RegsTmpl<AddressType>*>(regs); RegsImpl<AddressType>* cur_regs = reinterpret_cast<RegsImpl<AddressType>*>(regs); if (cie->return_address_register >= cur_regs->total_regs()) { last_error_ = DWARF_ERROR_ILLEGAL_VALUE; return false; Loading
libunwindstack/Regs.cpp +10 −14 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ #include "User.h" template <typename AddressType> uint64_t RegsTmpl<AddressType>::GetRelPc(Elf* elf, const MapInfo* map_info) { uint64_t RegsImpl<AddressType>::GetRelPc(Elf* elf, const MapInfo* map_info) { uint64_t load_bias = 0; if (elf->valid()) { load_bias = elf->interface()->load_bias(); Loading @@ -40,7 +40,7 @@ uint64_t RegsTmpl<AddressType>::GetRelPc(Elf* elf, const MapInfo* map_info) { } template <typename AddressType> bool RegsTmpl<AddressType>::GetReturnAddressFromDefault(Memory* memory, uint64_t* value) { bool RegsImpl<AddressType>::GetReturnAddressFromDefault(Memory* memory, uint64_t* value) { switch (return_loc_.type) { case LOCATION_REGISTER: assert(return_loc_.value < total_regs_); Loading @@ -59,9 +59,8 @@ bool RegsTmpl<AddressType>::GetReturnAddressFromDefault(Memory* memory, uint64_t } } RegsArm::RegsArm() : RegsTmpl<uint32_t>(ARM_REG_LAST, ARM_REG_SP, Location(LOCATION_REGISTER, ARM_REG_LR)) { } RegsArm::RegsArm() : RegsImpl<uint32_t>(ARM_REG_LAST, ARM_REG_SP, Location(LOCATION_REGISTER, ARM_REG_LR)) {} uint64_t RegsArm::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { if (!elf->valid()) { Loading Loading @@ -89,9 +88,8 @@ uint64_t RegsArm::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { return rel_pc - 4; } RegsArm64::RegsArm64() : RegsTmpl<uint64_t>(ARM64_REG_LAST, ARM64_REG_SP, Location(LOCATION_REGISTER, ARM64_REG_LR)) { } RegsArm64::RegsArm64() : RegsImpl<uint64_t>(ARM64_REG_LAST, ARM64_REG_SP, Location(LOCATION_REGISTER, ARM64_REG_LR)) {} uint64_t RegsArm64::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { if (!elf->valid()) { Loading @@ -104,9 +102,8 @@ uint64_t RegsArm64::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { return rel_pc - 4; } RegsX86::RegsX86() : RegsTmpl<uint32_t>(X86_REG_LAST, X86_REG_SP, Location(LOCATION_SP_OFFSET, -4)) { } RegsX86::RegsX86() : RegsImpl<uint32_t>(X86_REG_LAST, X86_REG_SP, Location(LOCATION_SP_OFFSET, -4)) {} uint64_t RegsX86::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { if (!elf->valid()) { Loading @@ -119,9 +116,8 @@ uint64_t RegsX86::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { return rel_pc - 1; } RegsX86_64::RegsX86_64() : RegsTmpl<uint64_t>(X86_64_REG_LAST, X86_64_REG_SP, Location(LOCATION_SP_OFFSET, -8)) { } RegsX86_64::RegsX86_64() : RegsImpl<uint64_t>(X86_64_REG_LAST, X86_64_REG_SP, Location(LOCATION_SP_OFFSET, -8)) {} uint64_t RegsX86_64::GetAdjustedPc(uint64_t rel_pc, Elf* elf) { if (!elf->valid()) { Loading
libunwindstack/Regs.h +7 −7 Original line number Diff line number Diff line Loading @@ -66,11 +66,11 @@ class Regs { }; template <typename AddressType> class RegsTmpl : public Regs { class RegsImpl : public Regs { public: RegsTmpl(uint16_t total_regs, uint16_t sp_reg, Location return_loc) RegsImpl(uint16_t total_regs, uint16_t sp_reg, Location return_loc) : Regs(total_regs, sp_reg, return_loc), regs_(total_regs) {} virtual ~RegsTmpl() = default; virtual ~RegsImpl() = default; uint64_t GetRelPc(Elf* elf, const MapInfo* map_info) override; Loading @@ -92,7 +92,7 @@ class RegsTmpl : public Regs { std::vector<AddressType> regs_; }; class RegsArm : public RegsTmpl<uint32_t> { class RegsArm : public RegsImpl<uint32_t> { public: RegsArm(); virtual ~RegsArm() = default; Loading @@ -100,7 +100,7 @@ class RegsArm : public RegsTmpl<uint32_t> { uint64_t GetAdjustedPc(uint64_t rel_pc, Elf* elf) override; }; class RegsArm64 : public RegsTmpl<uint64_t> { class RegsArm64 : public RegsImpl<uint64_t> { public: RegsArm64(); virtual ~RegsArm64() = default; Loading @@ -108,7 +108,7 @@ class RegsArm64 : public RegsTmpl<uint64_t> { uint64_t GetAdjustedPc(uint64_t rel_pc, Elf* elf) override; }; class RegsX86 : public RegsTmpl<uint32_t> { class RegsX86 : public RegsImpl<uint32_t> { public: RegsX86(); virtual ~RegsX86() = default; Loading @@ -116,7 +116,7 @@ class RegsX86 : public RegsTmpl<uint32_t> { uint64_t GetAdjustedPc(uint64_t rel_pc, Elf* elf) override; }; class RegsX86_64 : public RegsTmpl<uint64_t> { class RegsX86_64 : public RegsImpl<uint64_t> { public: RegsX86_64(); virtual ~RegsX86_64() = default; Loading
libunwindstack/tests/RegsFake.h +2 −2 Original line number Diff line number Diff line Loading @@ -22,10 +22,10 @@ #include "Regs.h" template <typename TypeParam> class RegsFake : public RegsTmpl<TypeParam> { class RegsFake : public RegsImpl<TypeParam> { public: RegsFake(uint16_t total_regs, uint16_t sp_reg) : RegsTmpl<TypeParam>(total_regs, sp_reg, Regs::Location(Regs::LOCATION_UNKNOWN, 0)) {} : RegsImpl<TypeParam>(total_regs, sp_reg, Regs::Location(Regs::LOCATION_UNKNOWN, 0)) {} virtual ~RegsFake() = default; uint64_t GetRelPc(Elf*, const MapInfo*) override { return 0; } Loading