This revision was automatically updated to reflect the committed changes.
Closed by commit rGebe71605fa89: [LLDB][MIPS] Move instruction emulation to
optional GetRegisterInfo (authored by DavidSpickett).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D134539/new/
https://reviews.llvm.org/D134539
Files:
lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp
Index: lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp
===================================================================
--- lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp
+++ lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp
@@ -1197,10 +1197,10 @@
/* Check if this is daddiu sp, sp, imm16 */
if (dst == dwarf_sp_mips) {
uint64_t result = src_opd_val + imm;
- RegisterInfo reg_info_sp;
-
- if (GetRegisterInfo(eRegisterKindDWARF, dwarf_sp_mips, reg_info_sp))
- context.SetRegisterPlusOffset(reg_info_sp, imm);
+ llvm::Optional<RegisterInfo> reg_info_sp =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_sp_mips);
+ if (reg_info_sp)
+ context.SetRegisterPlusOffset(*reg_info_sp, imm);
/* We are allocating bytes on stack */
context.type = eContextAdjustStackPointer;
@@ -1229,13 +1229,12 @@
int32_t address;
Context bad_vaddr_context;
- RegisterInfo reg_info_base;
-
src = m_reg_info->getEncodingValue(insn.getOperand(0).getReg());
base = m_reg_info->getEncodingValue(insn.getOperand(1).getReg());
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base,
- reg_info_base))
+ llvm::Optional<RegisterInfo> reg_info_base =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base);
+ if (!reg_info_base)
return false;
/* read base register */
@@ -1254,29 +1253,28 @@
/* We look for sp based non-volatile register stores */
if (nonvolatile_reg_p(src)) {
-
- RegisterInfo reg_info_src;
-
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + src,
- reg_info_src))
+ llvm::Optional<RegisterInfo> reg_info_src =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + src);
+ if (!reg_info_src)
return false;
Context context;
RegisterValue data_src;
context.type = eContextPushRegisterOnStack;
- context.SetRegisterToRegisterPlusOffset(reg_info_src, reg_info_base, 0);
+ context.SetRegisterToRegisterPlusOffset(*reg_info_src, *reg_info_base, 0);
uint8_t buffer[RegisterValue::kMaxRegisterByteSize];
Status error;
- if (!ReadRegister(®_info_base, data_src))
+ if (!ReadRegister(&(*reg_info_base), data_src))
return false;
- if (data_src.GetAsMemoryData(®_info_src, buffer, reg_info_src.byte_size,
- eByteOrderLittle, error) == 0)
+ if (data_src.GetAsMemoryData(&(*reg_info_src), buffer,
+ reg_info_src->byte_size, eByteOrderLittle,
+ error) == 0)
return false;
- if (!WriteMemory(context, address, buffer, reg_info_src.byte_size))
+ if (!WriteMemory(context, address, buffer, reg_info_src->byte_size))
return false;
return true;
@@ -1295,9 +1293,7 @@
base = m_reg_info->getEncodingValue(insn.getOperand(1).getReg());
imm = insn.getOperand(2).getImm();
- RegisterInfo reg_info_base;
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base,
- reg_info_base))
+ if (GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base))
return false;
/* read base register */
@@ -1316,17 +1312,16 @@
if (nonvolatile_reg_p(src)) {
RegisterValue data_src;
- RegisterInfo reg_info_src;
-
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + src,
- reg_info_src))
+ llvm::Optional<RegisterInfo> reg_info_src =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + src);
+ if (!reg_info_src)
return false;
Context context;
context.type = eContextPopRegisterOffStack;
context.SetAddress(address);
- return WriteRegister(context, ®_info_src, data_src);
+ return WriteRegister(context, &(*reg_info_src), data_src);
}
return false;
@@ -1367,9 +1362,10 @@
result = src_opd_val + rt_opd_val;
Context context;
- RegisterInfo reg_info_sp;
- if (GetRegisterInfo(eRegisterKindDWARF, dwarf_sp_mips, reg_info_sp))
- context.SetRegisterPlusOffset(reg_info_sp, rt_opd_val);
+ llvm::Optional<RegisterInfo> reg_info_sp =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_sp_mips);
+ if (reg_info_sp)
+ context.SetRegisterPlusOffset(*reg_info_sp, rt_opd_val);
/* We are allocating bytes on stack */
context.type = eContextAdjustStackPointer;
@@ -1442,9 +1438,10 @@
result = src_opd_val + imm9;
Context context;
- RegisterInfo reg_info_sp;
- if (GetRegisterInfo(eRegisterKindDWARF, dwarf_sp_mips, reg_info_sp))
- context.SetRegisterPlusOffset(reg_info_sp, imm9);
+ llvm::Optional<RegisterInfo> reg_info_sp =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_sp_mips);
+ if (reg_info_sp)
+ context.SetRegisterPlusOffset(*reg_info_sp, imm9);
// We are adjusting the stack.
context.type = eContextAdjustStackPointer;
@@ -1473,9 +1470,10 @@
result = src_opd_val + imm4;
Context context;
- RegisterInfo reg_info_sp;
- if (GetRegisterInfo(eRegisterKindDWARF, dwarf_sp_mips, reg_info_sp))
- context.SetRegisterPlusOffset(reg_info_sp, imm4);
+ llvm::Optional<RegisterInfo> reg_info_sp =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_sp_mips);
+ if (reg_info_sp)
+ context.SetRegisterPlusOffset(*reg_info_sp, imm4);
// We are adjusting the stack.
context.type = eContextAdjustStackPointer;
@@ -1496,10 +1494,9 @@
src = m_reg_info->getEncodingValue(insn.getOperand(0).getReg());
base = m_reg_info->getEncodingValue(insn.getOperand(1).getReg());
- RegisterInfo reg_info_base;
-
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base,
- reg_info_base))
+ llvm::Optional<RegisterInfo> reg_info_base =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base);
+ if (!reg_info_base)
return false;
// read base register
@@ -1524,12 +1521,12 @@
Context context;
RegisterValue data_src;
context.type = eContextPushRegisterOnStack;
- context.SetRegisterToRegisterPlusOffset(reg_info_src, reg_info_base, 0);
+ context.SetRegisterToRegisterPlusOffset(reg_info_src, *reg_info_base, 0);
uint8_t buffer[RegisterValue::kMaxRegisterByteSize];
Status error;
- if (!ReadRegister(®_info_base, data_src))
+ if (!ReadRegister(&(*reg_info_base), data_src))
return false;
if (data_src.GetAsMemoryData(®_info_src, buffer, reg_info_src.byte_size,
@@ -1569,11 +1566,9 @@
// offset is always the last operand.
uint32_t offset = insn.getOperand(num_operands - 1).getImm();
- RegisterInfo reg_info_base;
- RegisterInfo reg_info_src;
-
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base,
- reg_info_base))
+ llvm::Optional<RegisterInfo> reg_info_base =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base);
+ if (!reg_info_base)
return false;
// read SP
@@ -1600,30 +1595,32 @@
if (!nonvolatile_reg_p(src))
return false;
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + src,
- reg_info_src))
+ llvm::Optional<RegisterInfo> reg_info_src =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + src);
+ if (!reg_info_src)
return false;
Context context;
RegisterValue data_src;
context.type = eContextPushRegisterOnStack;
- context.SetRegisterToRegisterPlusOffset(reg_info_src, reg_info_base, 0);
+ context.SetRegisterToRegisterPlusOffset(*reg_info_src, *reg_info_base, 0);
uint8_t buffer[RegisterValue::kMaxRegisterByteSize];
Status error;
- if (!ReadRegister(®_info_base, data_src))
+ if (!ReadRegister(&(*reg_info_base), data_src))
return false;
- if (data_src.GetAsMemoryData(®_info_src, buffer, reg_info_src.byte_size,
- eByteOrderLittle, error) == 0)
+ if (data_src.GetAsMemoryData(&(*reg_info_src), buffer,
+ reg_info_src->byte_size, eByteOrderLittle,
+ error) == 0)
return false;
- if (!WriteMemory(context, base_address, buffer, reg_info_src.byte_size))
+ if (!WriteMemory(context, base_address, buffer, reg_info_src->byte_size))
return false;
// Stack address for next register
- base_address = base_address + reg_info_src.byte_size;
+ base_address = base_address + reg_info_src->byte_size;
}
return true;
}
@@ -1635,9 +1632,7 @@
uint32_t imm5 = insn.getOperand(2).getImm();
Context bad_vaddr_context;
- RegisterInfo reg_info_base;
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base,
- reg_info_base))
+ if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base))
return false;
// read base register
@@ -1657,17 +1652,16 @@
if (base == dwarf_sp_mips && nonvolatile_reg_p(src)) {
RegisterValue data_src;
- RegisterInfo reg_info_src;
-
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + src,
- reg_info_src))
+ llvm::Optional<RegisterInfo> reg_info_src =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + src);
+ if (!reg_info_src)
return false;
Context context;
context.type = eContextPopRegisterOffStack;
context.SetAddress(base_address);
- return WriteRegister(context, ®_info_src, data_src);
+ return WriteRegister(context, &(*reg_info_src), data_src);
}
return false;
@@ -1704,7 +1698,6 @@
base_address = base_address + imm;
RegisterValue data_dst;
- RegisterInfo reg_info_dst;
// Total no of registers to be re-stored are num_operands-2.
for (uint32_t i = 0; i < num_operands - 2; i++) {
@@ -1721,15 +1714,16 @@
if (!nonvolatile_reg_p(dst))
return false;
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + dst,
- reg_info_dst))
+ llvm::Optional<RegisterInfo> reg_info_dst =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + dst);
+ if (!reg_info_dst)
return false;
Context context;
context.type = eContextPopRegisterOffStack;
context.SetAddress(base_address + (i * 4));
- if (!WriteRegister(context, ®_info_dst, data_dst))
+ if (!WriteRegister(context, &(*reg_info_dst), data_dst))
return false;
}
@@ -1766,9 +1760,10 @@
ra_val))
return false;
- RegisterInfo reg_info_sp;
- if (GetRegisterInfo(eRegisterKindDWARF, dwarf_sp_mips, reg_info_sp))
- context.SetRegisterPlusOffset(reg_info_sp, imm5);
+ llvm::Optional<RegisterInfo> reg_info_sp =
+ GetRegisterInfo(eRegisterKindDWARF, dwarf_sp_mips);
+ if (reg_info_sp)
+ context.SetRegisterPlusOffset(*reg_info_sp, imm5);
// We are adjusting stack
context.type = eContextAdjustStackPointer;
@@ -2984,9 +2979,7 @@
m_reg_info->getEncodingValue(insn.getOperand(num_operands - 2).getReg());
imm = insn.getOperand(num_operands - 1).getImm();
- RegisterInfo reg_info_base;
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base,
- reg_info_base))
+ if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base))
return false;
/* read base register */
@@ -3018,13 +3011,10 @@
index =
m_reg_info->getEncodingValue(insn.getOperand(num_operands - 1).getReg());
- RegisterInfo reg_info_base, reg_info_index;
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base,
- reg_info_base))
+ if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + base))
return false;
- if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + index,
- reg_info_index))
+ if (!GetRegisterInfo(eRegisterKindDWARF, dwarf_zero_mips + index))
return false;
/* read base register */
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits