From 613fd777a2dd7d6666f0e29dc6815f1d9f69293d Mon Sep 17 00:00:00 2001 From: Igor Kudrin Date: Fri, 14 Nov 2025 23:43:38 -0800 Subject: [PATCH 1/3] [lldb/aarch64] Add STR/LDR instructions for FP register to Emulator A function prologue can begin with a pre-index STR instruction for a floating-point register. To construct an unwind plan from assembly correctly, the instruction emulator must support such instructions. --- .../ARM64/EmulateInstructionARM64.cpp | 41 +++++-- .../ARM64/TestArm64InstEmulation.cpp | 106 ++++++++++++++++++ 2 files changed, 136 insertions(+), 11 deletions(-) diff --git a/lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp b/lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp index a8901beda3970..7d3e72ccdc7dc 100644 --- a/lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp +++ b/lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp @@ -346,6 +346,16 @@ EmulateInstructionARM64::GetOpcodeForInstruction(const uint32_t opcode) { &EmulateInstructionARM64::EmulateLDRSTRImm, "LDR , [{, #}]"}, + {0x3f200c00, 0x3c000400, No_VFP, + &EmulateInstructionARM64::EmulateLDRSTRImm, + "LDR|STR , [], #"}, + {0x3f200c00, 0x3c000c00, No_VFP, + &EmulateInstructionARM64::EmulateLDRSTRImm, + "LDR|STR , [, #]!"}, + {0x3f000000, 0x3d000000, No_VFP, + &EmulateInstructionARM64::EmulateLDRSTRImm, + "LDR|STR , [{, #}]"}, + {0xfc000000, 0x14000000, No_VFP, &EmulateInstructionARM64::EmulateB, "B