jrtc27 added inline comments.
================ Comment at: lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp:118 + + // Previous frames pc is in ra + row->SetRegisterLocationToRegister(pc_reg_num, ra_reg_num, true); ---------------- ================ Comment at: lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp:141 + + // The previous frames pc is stored in ra. + row->SetRegisterLocationToRegister(pc_reg_num, ra_reg_num, true); ---------------- ================ Comment at: lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp:142 + // The previous frames pc is stored in ra. + row->SetRegisterLocationToRegister(pc_reg_num, ra_reg_num, true); + ---------------- And SP is just.. the same? Surely the default unwind plan is to load SP and RA via FP? You won't get very far with this. ================ Comment at: lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.cpp:167-168 + .Cases("x22", "x23", "x24", "x25", "x26", "x27", true) + .Cases("f8", "f9", "f18", "f19", "f20", "f21", IsHardFloatProcess()) + .Cases("f22", "f23", "f24", "f25", "f26", "f27", IsHardFloatProcess()) + .Default(false); ---------------- What about if I have the D extension but only use LP64F as the ABI? Does it matter that this says f9 is callee-saved but in reality only the low 32 bits are? ================ Comment at: lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.h:16 +class ABISysV_riscv : public lldb_private::MCBasedABI { + bool isRV64; + ---------------- IsRV64? ================ Comment at: lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.h:70-71 + // Ensure addresses are smaller than XLEN bits wide. Calls can use the least + // significant bit to store auxiliary information, so no strict check is + // done for alignment. + if (!isRV64) ---------------- 2 and 3 mod 4 are nevertheless invalid if you don't have the C extension and will take an alignment fault ================ Comment at: lldb/source/Plugins/ABI/RISCV/ABISysV_riscv.h:72-73 + // done for alignment. + if (!isRV64) + return (pc <= UINT32_MAX); + return (pc <= UINT64_MAX); ---------------- Are addresses reliably zero-extended or can you ever get cases where they're sign-extended from a valid 32-bit address to a 64-bit address? ================ Comment at: lldb/source/Plugins/Disassembler/LLVMC/DisassemblerLLVMC.cpp:1152 + triple.getArch() == llvm::Triple::riscv64) + features_str += "+a,+c,+d,+f,+m"; + ---------------- This will override whatever the ELF says in its attributes section. This might make sense as a default for if you don't have a binary and are just poking at memory, but it makes things worse when you do, the common case that need to work as best as we can manage. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D62732/new/ https://reviews.llvm.org/D62732 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits