aboutsummaryrefslogtreecommitdiff
path: root/src/link/Elf/thunks.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/link/Elf/thunks.zig')
-rw-r--r--src/link/Elf/thunks.zig6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/link/Elf/thunks.zig b/src/link/Elf/thunks.zig
index 586cbed236..119529b512 100644
--- a/src/link/Elf/thunks.zig
+++ b/src/link/Elf/thunks.zig
@@ -1,6 +1,7 @@
pub fn createThunks(shndx: u32, elf_file: *Elf) !void {
const gpa = elf_file.base.comp.gpa;
const cpu_arch = elf_file.getTarget().cpu.arch;
+ const max_distance = maxAllowedDistance(cpu_arch);
const shdr = &elf_file.shdrs.items[shndx];
const atoms = elf_file.output_sections.get(shndx).?.items;
assert(atoms.len > 0);
@@ -17,12 +18,11 @@ pub fn createThunks(shndx: u32, elf_file: *Elf) !void {
start_atom.value = try advance(shdr, start_atom.size, start_atom.alignment);
i += 1;
- while (i < atoms.len and
- shdr.sh_size - start_atom.value < maxAllowedDistance(cpu_arch)) : (i += 1)
- {
+ while (i < atoms.len) : (i += 1) {
const atom_index = atoms[i];
const atom = elf_file.atom(atom_index).?;
assert(atom.flags.alive);
+ if (atom.alignment.forward(shdr.sh_size) - start_atom.value >= max_distance) break;
atom.value = try advance(shdr, atom.size, atom.alignment);
}