From f4e5b297083924aaffcffac77ecbef87857f4bb2 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Mon, 28 Aug 2023 02:08:34 +0200 Subject: [PATCH] src: make sort order deterministic --- src/p_mach.cpp | 2 +- src/p_vmlinx.cpp | 3 ++- src/pefile.cpp | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/p_mach.cpp b/src/p_mach.cpp index 76f3947f..b0118401 100644 --- a/src/p_mach.cpp +++ b/src/p_mach.cpp @@ -575,7 +575,7 @@ PackMachBase::compare_segment_command(void const *const aa, void const *const if (a->vmsize) return -1; // 'a' is first if (b->vmsize) return 1; // 'a' is last // What could remain? - return 0; + return aa < bb ? -1 : 1; // make sort order deterministic/stable } // At 2013-02-03 part of the source for codesign was diff --git a/src/p_vmlinx.cpp b/src/p_vmlinx.cpp index 106c82dc..fab8def2 100644 --- a/src/p_vmlinx.cpp +++ b/src/p_vmlinx.cpp @@ -98,7 +98,8 @@ PackVmlinuxBase::compare_Phdr(void const *aa, void const *bb) if (xa > xb) return 1; if (a->p_paddr < b->p_paddr) return -1; // ascending by .p_paddr if (a->p_paddr > b->p_paddr) return 1; - return 0; + // What could remain? + return aa < bb ? -1 : 1; // make sort order deterministic/stable } template diff --git a/src/pefile.cpp b/src/pefile.cpp index e2ace5f1..20650891 100644 --- a/src/pefile.cpp +++ b/src/pefile.cpp @@ -703,6 +703,7 @@ class PeFile::ImportLinker final : public ElfLinkerAMD64 { int rc = strcmp(s1->name, s2->name); if (rc != 0) return rc; + // What could remain? return p1 < p2 ? -1 : 1; // make sort order deterministic/stable } @@ -893,6 +894,7 @@ unsigned PeFile::processImports0(ord_mask_t ord_mask) // pass 1 return rc; } else if ((u1->shname != nullptr) != (u2->shname != nullptr)) return (u1->shname != nullptr) ? -1 : 1; + // What could remain? return p1 < p2 ? -1 : 1; // make sort order deterministic/stable } };