From f3a503eca26e39e7a0870bf02c24b2879ae2cc18 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Thu, 23 May 2024 10:19:17 +0200 Subject: [PATCH] link/macho: ensure we set alignment of literals to max alignment --- src/link/MachO/InternalObject.zig | 3 +++ src/link/MachO/Object.zig | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/link/MachO/InternalObject.zig b/src/link/MachO/InternalObject.zig index cea32ca233ac03937c7601aff2bb9364d7774625..10f81355f0be6b66b0a39279c1faec41f1d060ba 100644 --- a/src/link/MachO/InternalObject.zig +++ b/src/link/MachO/InternalObject.zig @@ -165,6 +165,7 @@ pub fn dedupLiterals(self: InternalObject, lp: MachO.LiteralPool, macho_file: *M if (target.getLiteralPoolIndex(macho_file)) |lp_index| { const lp_atom = lp.getAtom(lp_index, macho_file); if (target.atom_index != lp_atom.atom_index) { + lp_atom.alignment = lp_atom.alignment.max(target.alignment); target.flags.alive = false; rel.target = lp_atom.atom_index; } @@ -176,6 +177,7 @@ pub fn dedupLiterals(self: InternalObject, lp: MachO.LiteralPool, macho_file: *M if (target_atom.getLiteralPoolIndex(macho_file)) |lp_index| { const lp_atom = lp.getAtom(lp_index, macho_file); if (target_atom.atom_index != lp_atom.atom_index) { + lp_atom.alignment = lp_atom.alignment.max(target_atom.alignment); target_atom.flags.alive = false; target_sym.atom = lp_atom.atom_index; } @@ -193,6 +195,7 @@ pub fn dedupLiterals(self: InternalObject, lp: MachO.LiteralPool, macho_file: *M if (atom.getLiteralPoolIndex(macho_file)) |lp_index| { const lp_atom = lp.getAtom(lp_index, macho_file); if (atom.atom_index != lp_atom.atom_index) { + lp_atom.alignment = lp_atom.alignment.max(atom.alignment); atom.flags.alive = false; extra.objc_selrefs = lp_atom.atom_index; sym.setExtra(extra, macho_file); diff --git a/src/link/MachO/Object.zig b/src/link/MachO/Object.zig index 42f5d8d021553fe5d0d4f104c125231c17578c76..b3e5d01c6c905480e484ccd6dc665913ef8d505d 100644 --- a/src/link/MachO/Object.zig +++ b/src/link/MachO/Object.zig @@ -593,6 +593,7 @@ pub fn dedupLiterals(self: Object, lp: MachO.LiteralPool, macho_file: *MachO) vo if (target.getLiteralPoolIndex(macho_file)) |lp_index| { const lp_atom = lp.getAtom(lp_index, macho_file); if (target.atom_index != lp_atom.atom_index) { + lp_atom.alignment = lp_atom.alignment.max(target.alignment); target.flags.alive = false; rel.target = lp_atom.atom_index; } @@ -604,6 +605,7 @@ pub fn dedupLiterals(self: Object, lp: MachO.LiteralPool, macho_file: *MachO) vo if (target_atom.getLiteralPoolIndex(macho_file)) |lp_index| { const lp_atom = lp.getAtom(lp_index, macho_file); if (target_atom.atom_index != lp_atom.atom_index) { + lp_atom.alignment = lp_atom.alignment.max(target_atom.alignment); target_atom.flags.alive = false; target_sym.atom = lp_atom.atom_index; } -- 2.54.0