Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef587c9c authored by Christopher Ferris's avatar Christopher Ferris Committed by android-build-merger
Browse files

Merge "Change RegsTmpl to RegsImpl." am: 2065a741 am: d34b599e am: a32945f7

am: d1019c33

Change-Id: Ia5aa23b0da093032ddff0b182b60b32706ad76c4
parents 9e13521e d1019c33
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ enum DwarfVersion : uint8_t {
class DwarfMemory;
class Memory;
template <typename AddressType>
class RegsTmpl;
class RegsImpl;

template <typename AddressType>
class DwarfOp {
@@ -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_; }

@@ -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_;
+1 −1
Original line number Diff line number Diff line
@@ -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;
+10 −14
Original line number Diff line number Diff line
@@ -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();
@@ -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_);
@@ -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()) {
@@ -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()) {
@@ -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()) {
@@ -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()) {
+7 −7
Original line number Diff line number Diff line
@@ -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;

@@ -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;
@@ -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;
@@ -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;
@@ -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;
+2 −2
Original line number Diff line number Diff line
@@ -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