try other allocation for relocation overflow

This commit is contained in:
2025-12-08 09:56:00 +01:00
parent 1922669c53
commit 49ae70ec2c

View File

@@ -623,18 +623,21 @@ fn attemptNeighborEviction(
.old_addr = @intFromPtr(request.bytes.ptr), .old_addr = @intFromPtr(request.bytes.ptr),
}; };
} }
try commitTrampoline( commitTrampoline(
trampoline, trampoline,
patch_flicken.bytes, patch_flicken.bytes,
reloc_info, reloc_info,
@intFromPtr(request.bytes.ptr) + request.size, @intFromPtr(request.bytes.ptr) + request.size,
); ) catch |err| switch (err) {
error.RelocationOverflow => continue,
else => return err,
};
} }
// 2. Write Victim Trampoline (J_Victim target) // 2. Write Victim Trampoline (J_Victim target)
{ {
const trampoline: [*]u8 = @ptrFromInt(victim_range.getStart(u64)); const trampoline: [*]u8 = @ptrFromInt(victim_range.getStart(u64));
try commitTrampoline( commitTrampoline(
trampoline, trampoline,
victim_orig_bytes[0..victim_size], victim_orig_bytes[0..victim_size],
.{ .{
@@ -642,7 +645,10 @@ fn attemptNeighborEviction(
.old_addr = @intFromPtr(victim_bytes_all.ptr), .old_addr = @intFromPtr(victim_bytes_all.ptr),
}, },
@intFromPtr(victim_bytes_all.ptr) + victim_size, @intFromPtr(victim_bytes_all.ptr) + victim_size,
); ) catch |err| switch (err) {
error.RelocationOverflow => continue,
else => return err,
};
} }
// 3. Write J_Victim (overwrites head of J_Patch which is fine) // 3. Write J_Victim (overwrites head of J_Patch which is fine)