[Lldb-commits] [lldb] 11e1d46 - [lldb] Fix UBSan complaints for #151460
Igor Kudrin via lldb-commits
lldb-commits at lists.llvm.org
Thu Aug 7 13:02:42 PDT 2025
Author: Igor Kudrin
Date: 2025-08-07T13:01:52-07:00
New Revision: 11e1d465860903fd9ead27c0c1e60de4439011db
URL: https://github.com/llvm/llvm-project/commit/11e1d465860903fd9ead27c0c1e60de4439011db
DIFF: https://github.com/llvm/llvm-project/commit/11e1d465860903fd9ead27c0c1e60de4439011db.diff
LOG: [lldb] Fix UBSan complaints for #151460
Added:
Modified:
lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
lldb/unittests/Instruction/ARM64/TestAArch64Emulator.cpp
Removed:
################################################################################
diff --git a/lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h b/lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
index 021ec49b3d2be..bca5bff24bff0 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
@@ -46,9 +46,9 @@ class RegisterInfoPOSIX_arm64
// based on RegisterContextDarwin_arm64.h
// Pack this so there are no extra bytes, but align its start address to at
- // least 4 bytes to prevent alignment errors on Arm 32-bit.
+ // least 8 bytes to prevent alignment errors.
LLVM_PACKED_START
- struct alignas(4) GPR {
+ struct alignas(8) GPR {
uint64_t x[29]; // x0-x28
uint64_t fp; // x29
uint64_t lr; // x30
diff --git a/lldb/unittests/Instruction/ARM64/TestAArch64Emulator.cpp b/lldb/unittests/Instruction/ARM64/TestAArch64Emulator.cpp
index 08296da564976..c6bfe0fa68759 100644
--- a/lldb/unittests/Instruction/ARM64/TestAArch64Emulator.cpp
+++ b/lldb/unittests/Instruction/ARM64/TestAArch64Emulator.cpp
@@ -62,7 +62,7 @@ struct Arch64EmulatorTester : public EmulateInstructionARM64 {
reg_value.SetUInt64(tester->gpr.pc);
return true;
case gpr_cpsr_arm64:
- reg_value.SetUInt64(tester->gpr.cpsr);
+ reg_value.SetUInt32(tester->gpr.cpsr);
return true;
default:
return false;
@@ -97,7 +97,7 @@ struct Arch64EmulatorTester : public EmulateInstructionARM64 {
tester->gpr.pc = reg_value.GetAsUInt64();
return true;
case gpr_cpsr_arm64:
- tester->gpr.cpsr = reg_value.GetAsUInt64();
+ tester->gpr.cpsr = reg_value.GetAsUInt32();
return true;
default:
return false;
@@ -112,7 +112,7 @@ struct Arch64EmulatorTester : public EmulateInstructionARM64 {
assert(addr - tester->memory_offset + length <= sizeof(tester->memory));
if (addr >= tester->memory_offset &&
addr - tester->memory_offset + length <= sizeof(tester->memory)) {
- memcpy(dst, tester->memory + addr - tester->memory_offset, length);
+ memcpy(dst, tester->memory + (addr - tester->memory_offset), length);
return length;
}
return 0;
More information about the lldb-commits
mailing list