@@ -2569,7 +2569,7 @@ static llvm::Expected<uint32_t> GetFpRegisterNumber(UnwindPlan &unwind_plan,
2569
2569
}
2570
2570
2571
2571
struct FrameSetupInfo {
2572
- addr_t frame_setup_func_offset;
2572
+ int64_t frame_setup_func_offset;
2573
2573
int fp_cfa_offset;
2574
2574
};
2575
2575
@@ -2610,7 +2610,7 @@ GetFrameSetupInfo(UnwindPlan &unwind_plan, RegisterContext ®ctx) {
2610
2610
// This is a frameless function, use large positive offset so that a PC can
2611
2611
// still be compared against it.
2612
2612
if (it == fp_locs.end ())
2613
- return FrameSetupInfo{std::numeric_limits<addr_t >::max (), 0 };
2613
+ return FrameSetupInfo{std::numeric_limits<int64_t >::max (), 0 };
2614
2614
2615
2615
// This is an async function with a frame. The prologue roughly follows this
2616
2616
// sequence of instructions:
@@ -2657,7 +2657,7 @@ static llvm::Expected<addr_t> ReadAsyncContextRegisterFromUnwind(
2657
2657
// Is PC before the frame formation? If so, use async register directly.
2658
2658
// This handles frameless functions, as frame_setup_func_offset is INT_MAX.
2659
2659
addr_t pc_offset = pc.GetFileAddress () - func_start_addr.GetFileAddress ();
2660
- if (pc_offset < frame_setup->frame_setup_func_offset )
2660
+ if (( int64_t ) pc_offset < frame_setup->frame_setup_func_offset )
2661
2661
return ReadRegisterAsAddress (regctx, regnums.GetRegisterKind (),
2662
2662
regnums.async_ctx_regnum );
2663
2663
0 commit comments