kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

commit 3499424fbf006dd515ad568fbe3e6f5907119437
parent 6a97a84ce5ab1c6b9b2c19618cb7f535fe25a725
Author: Ryan Sepassi <rsepassi@gmail.com>
Date:   Tue, 19 May 2026 16:02:19 -0700

Fix Mach-O section name pointers during sort

Diffstat:
Msrc/link/link_macho.c | 8++++++++
1 file changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/link/link_macho.c b/src/link/link_macho.c @@ -219,6 +219,11 @@ typedef struct MSec { u8 pad[6]; } MSec; +static void msec_repair_name_ptrs(MSec* m) { + if (m->segname_buf[0]) m->segname = m->segname_buf; + if (m->sectname_buf[0]) m->sectname = m->sectname_buf; +} + typedef struct MSeg { const char* name; u32 maxprot; @@ -846,6 +851,7 @@ static void plan_layout(MCtx* x) { u32 n = sg->nsects; for (u32 a = 1; a < n; ++a) { MSec key = x->secs[base + a]; + msec_repair_name_ptrs(&key); u32 j = a; while (j > 0) { MSec* prev = &x->secs[base + j - 1]; @@ -853,9 +859,11 @@ static void plan_layout(MCtx* x) { if (cmp == 0) cmp = strcmp(prev->sectname, key.sectname); if (cmp <= 0) break; x->secs[base + j] = x->secs[base + j - 1]; + msec_repair_name_ptrs(&x->secs[base + j]); --j; } x->secs[base + j] = key; + msec_repair_name_ptrs(&x->secs[base + j]); } }