From 3deb9ab30abcc418758b0365d2c0596a610555b4 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 21 Oct 2024 20:50:26 -0700 Subject: [PATCH] use unstable sort in relocatable writeSyntheticSections unstable sort is always better if you have no ties --- src/link/Elf/relocatable.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/link/Elf/relocatable.zig b/src/link/Elf/relocatable.zig index f9c02cb5d0..b494360446 100644 --- a/src/link/Elf/relocatable.zig +++ b/src/link/Elf/relocatable.zig @@ -382,11 +382,12 @@ fn writeSyntheticSections(elf_file: *Elf) !void { const SortRelocs = struct { pub fn lessThan(ctx: void, lhs: elf.Elf64_Rela, rhs: elf.Elf64_Rela) bool { _ = ctx; + assert(lhs.r_offset != rhs.r_offset); return lhs.r_offset < rhs.r_offset; } }; - mem.sort(elf.Elf64_Rela, relocs.items, {}, SortRelocs.lessThan); + mem.sortUnstable(elf.Elf64_Rela, relocs.items, {}, SortRelocs.lessThan); log.debug("writing {s} from 0x{x} to 0x{x}", .{ elf_file.getShString(shdr.sh_name),