From 802fb29b077d304e3941e91b8c29f5916ec2fa4a Mon Sep 17 00:00:00 2001 From: Yogthos Date: Wed, 1 Jul 2026 17:31:18 -0400 Subject: [PATCH] Link joltc with -rdynamic so build can spill its boots on Linux The self-contained build reads the bundled Chez petite/scheme boots from the joltc binary via foreign-entry on the embedded jolt_* symbols. On Linux dlsym can't see an executable's symbols unless they're in the dynamic symbol table, so 'build' died with 'foreign-entry: no entry for jolt_petite_boot_len'. -rdynamic exports them (macOS already resolves them). The new release self-contained-build smoke caught this on the Linux runner. --- host/chez/build-joltc.ss | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/host/chez/build-joltc.ss b/host/chez/build-joltc.ss index b1f3a8b..b2ab8bb 100644 --- a/host/chez/build-joltc.ss +++ b/host/chez/build-joltc.ss @@ -241,7 +241,10 @@ " Sscheme_deinit();\n return status;\n}\n")) (close-port mc)) +;; -rdynamic puts the embedded jolt_* boot/stub symbols in the dynamic symbol +;; table so `build` can foreign-entry them to spill the bundled Chez boots. On +;; Linux dlsym can't see executable symbols otherwise (macOS exports them anyway). (bld-system (string-append - "cc -O2 -I'" bld-csv-dir "' -I'" jb-build "' '" jb-main-c "' '" + "cc -O2 -rdynamic -I'" bld-csv-dir "' -I'" jb-build "' '" jb-main-c "' '" bld-csv-dir "/libkernel.a' -o '" jb-out "' " (bld-link-libs))) (display (string-append "build-joltc: wrote " jb-out "\n"))