commit 762ad4c6f49dfa1b8893353fb099d4e93672733f (tree)
parent ef72b91ac2b96ba64a53b08a661e9ad83a828ee4
Author: Alex Rønne Petersen <alex@alexrp.com>
Date: Sun, 20 Oct 2024 08:52:32 +0200
link: Use defaultFunctionAlignment() when function alignment is unspecified.
max(user_align, minFunctionAlignment()) is only appropriate when the user has
actually given an explicit, non-zero alignment value.
Diffstat:
3 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/src/link/Coff.zig b/src/link/Coff.zig
@@ -1391,9 +1391,11 @@ fn updateNavCode(
log.debug("updateNavCode {} 0x{x}", .{ nav.fqn.fmt(ip), nav_index });
- const required_alignment = pt.navAlignment(nav_index).max(
- target_util.minFunctionAlignment(zcu.navFileScope(nav_index).mod.resolved_target.result),
- );
+ const target = zcu.navFileScope(nav_index).mod.resolved_target.result;
+ const required_alignment = switch (pt.navAlignment(nav_index)) {
+ .none => target_util.defaultFunctionAlignment(target),
+ else => |a| a.maxStrict(target_util.minFunctionAlignment(target)),
+ };
const nav_metadata = self.navs.get(nav_index).?;
const atom_index = nav_metadata.atom;
diff --git a/src/link/Elf/ZigObject.zig b/src/link/Elf/ZigObject.zig
@@ -1277,9 +1277,11 @@ fn updateNavCode(
log.debug("updateNavCode {}({d})", .{ nav.fqn.fmt(ip), nav_index });
- const required_alignment = pt.navAlignment(nav_index).max(
- target_util.minFunctionAlignment(zcu.navFileScope(nav_index).mod.resolved_target.result),
- );
+ const target = zcu.navFileScope(nav_index).mod.resolved_target.result;
+ const required_alignment = switch (pt.navAlignment(nav_index)) {
+ .none => target_util.defaultFunctionAlignment(target),
+ else => |a| a.maxStrict(target_util.minFunctionAlignment(target)),
+ };
const sym = self.symbol(sym_index);
const esym = &self.symtab.items(.elf_sym)[sym.esym_index];
diff --git a/src/link/MachO/ZigObject.zig b/src/link/MachO/ZigObject.zig
@@ -962,9 +962,11 @@ fn updateNavCode(
log.debug("updateNavCode {} 0x{x}", .{ nav.fqn.fmt(ip), nav_index });
- const required_alignment = pt.navAlignment(nav_index).max(
- target_util.minFunctionAlignment(zcu.navFileScope(nav_index).mod.resolved_target.result),
- );
+ const target = zcu.navFileScope(nav_index).mod.resolved_target.result;
+ const required_alignment = switch (pt.navAlignment(nav_index)) {
+ .none => target_util.defaultFunctionAlignment(target),
+ else => |a| a.maxStrict(target_util.minFunctionAlignment(target)),
+ };
const sect = &macho_file.sections.items(.header)[sect_index];
const sym = &self.symbols.items[sym_index];