From be5f98fb6702704afbaf705dce0b54d55479c6f1 Mon Sep 17 00:00:00 2001 From: Trung Nguyen <57174311+trungnt2910@users.noreply.github.com> Date: Thu, 20 Nov 2025 19:18:22 +1100 Subject: [PATCH 1/2] Haiku: Apply .NET-specific llvm-libunwind patches .NET uses `setRegister` with 3 arguments, the last being a "location" for the register. For calls without a known location, `0` is passed. --- .../llvm-libunwind/src/UnwindCursor.hpp | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/native/external/llvm-libunwind/src/UnwindCursor.hpp b/src/native/external/llvm-libunwind/src/UnwindCursor.hpp index 144833d9d647ce..7a23d2ff2a89c2 100644 --- a/src/native/external/llvm-libunwind/src/UnwindCursor.hpp +++ b/src/native/external/llvm-libunwind/src/UnwindCursor.hpp @@ -3258,23 +3258,23 @@ int UnwindCursor::stepThroughSigReturn() { pint_t bp = this->getReg(UNW_X86_64_RBP); vregs *regs = (vregs *)(bp + 0x70); - _registers.setRegister(UNW_REG_IP, regs->rip); - _registers.setRegister(UNW_REG_SP, regs->rsp); - _registers.setRegister(UNW_X86_64_RAX, regs->rax); - _registers.setRegister(UNW_X86_64_RDX, regs->rdx); - _registers.setRegister(UNW_X86_64_RCX, regs->rcx); - _registers.setRegister(UNW_X86_64_RBX, regs->rbx); - _registers.setRegister(UNW_X86_64_RSI, regs->rsi); - _registers.setRegister(UNW_X86_64_RDI, regs->rdi); - _registers.setRegister(UNW_X86_64_RBP, regs->rbp); - _registers.setRegister(UNW_X86_64_R8, regs->r8); - _registers.setRegister(UNW_X86_64_R9, regs->r9); - _registers.setRegister(UNW_X86_64_R10, regs->r10); - _registers.setRegister(UNW_X86_64_R11, regs->r11); - _registers.setRegister(UNW_X86_64_R12, regs->r12); - _registers.setRegister(UNW_X86_64_R13, regs->r13); - _registers.setRegister(UNW_X86_64_R14, regs->r14); - _registers.setRegister(UNW_X86_64_R15, regs->r15); + _registers.setRegister(UNW_REG_IP, regs->rip, 0); + _registers.setRegister(UNW_REG_SP, regs->rsp, 0); + _registers.setRegister(UNW_X86_64_RAX, regs->rax, 0); + _registers.setRegister(UNW_X86_64_RDX, regs->rdx, 0); + _registers.setRegister(UNW_X86_64_RCX, regs->rcx, 0); + _registers.setRegister(UNW_X86_64_RBX, regs->rbx, 0); + _registers.setRegister(UNW_X86_64_RSI, regs->rsi, 0); + _registers.setRegister(UNW_X86_64_RDI, regs->rdi, 0); + _registers.setRegister(UNW_X86_64_RBP, regs->rbp, 0); + _registers.setRegister(UNW_X86_64_R8, regs->r8, 0); + _registers.setRegister(UNW_X86_64_R9, regs->r9, 0); + _registers.setRegister(UNW_X86_64_R10, regs->r10, 0); + _registers.setRegister(UNW_X86_64_R11, regs->r11, 0); + _registers.setRegister(UNW_X86_64_R12, regs->r12, 0); + _registers.setRegister(UNW_X86_64_R13, regs->r13, 0); + _registers.setRegister(UNW_X86_64_R14, regs->r14, 0); + _registers.setRegister(UNW_X86_64_R15, regs->r15, 0); // TODO: XMM #endif // defined(_LIBUNWIND_TARGET_X86_64) From 717b25db48ea8893a7cddf8281c269ca0a06d2b8 Mon Sep 17 00:00:00 2001 From: Trung Nguyen <57174311+trungnt2910@users.noreply.github.com> Date: Sat, 11 Apr 2026 22:46:16 +1000 Subject: [PATCH 2/2] llvm-libunwind: Update version file Updated to include the patch at be5f98fb6702704afbaf705dce0b54d55479c6f1 for Haiku-specific `llvm-libunwind` code. --- src/native/external/llvm-libunwind-version.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/native/external/llvm-libunwind-version.txt b/src/native/external/llvm-libunwind-version.txt index fcbda3180e207a..8d9b9e900e6bcb 100644 --- a/src/native/external/llvm-libunwind-version.txt +++ b/src/native/external/llvm-libunwind-version.txt @@ -2,3 +2,4 @@ v22.1.1 https://github.com/llvm/llvm-project/releases/tag/llvmorg-22.1.1 Apply https://github.com/dotnet/runtime/commit/35b7d59fa1075ab0fefb921393409806a821d8ed +Apply https://github.com/dotnet/runtime/commit/be5f98fb6702704afbaf705dce0b54d55479c6f1