labath marked an inline comment as done. labath added a comment. In D130985#3693453 <https://reviews.llvm.org/D130985#3693453>, @DavidSpickett wrote:
> Tell me if I understand the strategy. > > If you're on arm64 but the process is actually arm32 and you ask for the > general registers, you'll get back something with size < the size you expect > for the 64 bit register set. > If you're on arm32 then you always assume that the architecture is the host > architecture (since there's no backward compatibility mode to worry about). > (though see my comment about potential cross arch shenanigans) > > Ditto for x86_64 and i386. > > If the architecture doesn't have a 32/64 split then assume host architecture > (as you did for s390x). > > And ppc64 we don't support a ppc32 so again use the host (and maybe ppc64 > doesn't have a backward compatibility mode in linux anyway). > > And you're looking at the size of the register context, not the number of > registers or their names or whatever. So even for something like RISCV vs > RISCV64 where the number and names of registers is the same, the *size* > changes with the bitness (xlen I think they call it) so it would still work. That is correct. I couldn't have said it better myself. :) > If so, sounds good to me. ================ Comment at: lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp:792 RegisterValue &value) { // PTRACE_PEEKUSER don't work in the aarch64 linux kernel used on android // devices (always return "Bad address"). To avoid using PTRACE_PEEKUSER we ---------------- This one. ================ Comment at: lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp:844 return NativeRegisterContextLinux::ReadGPR(); #else // __aarch64__ struct iovec ioVec; ---------------- DavidSpickett wrote: > Is this a problem? First time I'm seeing such code I thought to debug arm32 > on arm64 you just had to use an arm32 lldb-server binary. > > Host architecture would be arm64 if `__aarch64__` was defined, right? Same > thing if I took an arm32 lldb-server binary and ran it on arm64, host is > arm64. > > Or is this not a problem. This architecture detection is a last resort so not > getting a corner case right might be fine. Well.. it's definitely not a problem here. I think this is related to the problem on described on line 792 (they were introduced in the same commit -- e85e6021f040e399203883a78c53b1617053e141), although it may not be relevant anymore. Generally speaking there can be some differences in the 32-bit codepaths when speaking to 32 or 64-bit kernels. For example, one can use PTRACE_SINGLESTEP for debugging arm(32) binaries on 64-bit kernels, even though that functionality would is not present on real 32-bit kernels. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D130985/new/ https://reviews.llvm.org/D130985 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits