Skip to content

Commit 4f0a034

Browse files
authored
Haiku: Apply .NET-specific llvm-libunwind patches (#126785)
.NET uses `setRegister` with 3 arguments, the last being a "location" for the register. For calls without a known location, `0` is passed. This updates the recent Haiku-specific call sites to `setRegister` to match what .NET uses. Part of #55803.
1 parent b4e3e05 commit 4f0a034

2 files changed

Lines changed: 18 additions & 17 deletions

File tree

src/native/external/llvm-libunwind-version.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ v22.1.1
22
https://github.com/llvm/llvm-project/releases/tag/llvmorg-22.1.1
33

44
Apply https://github.com/dotnet/runtime/commit/35b7d59fa1075ab0fefb921393409806a821d8ed
5+
Apply https://github.com/dotnet/runtime/commit/be5f98fb6702704afbaf705dce0b54d55479c6f1

src/native/external/llvm-libunwind/src/UnwindCursor.hpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3258,23 +3258,23 @@ int UnwindCursor<A, R>::stepThroughSigReturn() {
32583258
pint_t bp = this->getReg(UNW_X86_64_RBP);
32593259
vregs *regs = (vregs *)(bp + 0x70);
32603260

3261-
_registers.setRegister(UNW_REG_IP, regs->rip);
3262-
_registers.setRegister(UNW_REG_SP, regs->rsp);
3263-
_registers.setRegister(UNW_X86_64_RAX, regs->rax);
3264-
_registers.setRegister(UNW_X86_64_RDX, regs->rdx);
3265-
_registers.setRegister(UNW_X86_64_RCX, regs->rcx);
3266-
_registers.setRegister(UNW_X86_64_RBX, regs->rbx);
3267-
_registers.setRegister(UNW_X86_64_RSI, regs->rsi);
3268-
_registers.setRegister(UNW_X86_64_RDI, regs->rdi);
3269-
_registers.setRegister(UNW_X86_64_RBP, regs->rbp);
3270-
_registers.setRegister(UNW_X86_64_R8, regs->r8);
3271-
_registers.setRegister(UNW_X86_64_R9, regs->r9);
3272-
_registers.setRegister(UNW_X86_64_R10, regs->r10);
3273-
_registers.setRegister(UNW_X86_64_R11, regs->r11);
3274-
_registers.setRegister(UNW_X86_64_R12, regs->r12);
3275-
_registers.setRegister(UNW_X86_64_R13, regs->r13);
3276-
_registers.setRegister(UNW_X86_64_R14, regs->r14);
3277-
_registers.setRegister(UNW_X86_64_R15, regs->r15);
3261+
_registers.setRegister(UNW_REG_IP, regs->rip, 0);
3262+
_registers.setRegister(UNW_REG_SP, regs->rsp, 0);
3263+
_registers.setRegister(UNW_X86_64_RAX, regs->rax, 0);
3264+
_registers.setRegister(UNW_X86_64_RDX, regs->rdx, 0);
3265+
_registers.setRegister(UNW_X86_64_RCX, regs->rcx, 0);
3266+
_registers.setRegister(UNW_X86_64_RBX, regs->rbx, 0);
3267+
_registers.setRegister(UNW_X86_64_RSI, regs->rsi, 0);
3268+
_registers.setRegister(UNW_X86_64_RDI, regs->rdi, 0);
3269+
_registers.setRegister(UNW_X86_64_RBP, regs->rbp, 0);
3270+
_registers.setRegister(UNW_X86_64_R8, regs->r8, 0);
3271+
_registers.setRegister(UNW_X86_64_R9, regs->r9, 0);
3272+
_registers.setRegister(UNW_X86_64_R10, regs->r10, 0);
3273+
_registers.setRegister(UNW_X86_64_R11, regs->r11, 0);
3274+
_registers.setRegister(UNW_X86_64_R12, regs->r12, 0);
3275+
_registers.setRegister(UNW_X86_64_R13, regs->r13, 0);
3276+
_registers.setRegister(UNW_X86_64_R14, regs->r14, 0);
3277+
_registers.setRegister(UNW_X86_64_R15, regs->r15, 0);
32783278
// TODO: XMM
32793279
#endif // defined(_LIBUNWIND_TARGET_X86_64)
32803280

0 commit comments

Comments
 (0)