Cross-build: register REPL-TLS symbols, rebuild .a on foreign touch

ober

d4162b8d5f0b8d07c1d63d72c91c637d349ec914

diff --git a/build-jcode-cross.ss b/build-jcode-cross.ss
index 95ece00..ebb5b7e 100644
--- a/build-jcode-cross.ss
+++ b/build-jcode-cross.ss
@@ -187,6 +187,14 @@
   [(not (file-exists? native-features-sentinel))
    (printf "==> jerboa-native-rs sentinel missing — rebuilding (features=~a)~n" cargo-features)
    (rebuild-native-lib!)]
+  [(time>? (file-modification-time jerboa-native-a)
+           (file-modification-time native-features-sentinel))
+   ;; The .a is shared across sibling repos (jerboa-shell, etc.). A newer .a
+   ;; than our sentinel means someone rebuilt it — possibly with different
+   ;; features — so our tag can't be trusted. Rebuild to be sure (prevents
+   ;; the silent "undefined reference to jerboa_sqlite_*" cross-link break).
+   (printf "==> jerboa-native-rs .a newer than sentinel (foreign rebuild?) — rebuilding (features=~a)~n" cargo-features)
+   (rebuild-native-lib!)]
   [(rs-source-newer-than? jerboa-native-a)
    (printf "==> jerboa-native-rs .rs source newer than .a — rebuilding~n")
    (rebuild-native-lib!)]
@@ -300,13 +308,16 @@
 
 (define jerboa-native-symbols
   '(;; jerboa-native (TLS/rustls)
-    "jerboa_tls_server_new" "jerboa_tls_server_new_mtls"
+    "jerboa_tls_server_new" "jerboa_tls_server_new_pem"
+    "jerboa_tls_server_new_mtls"
     "jerboa_tls_server_free" "jerboa_tls_accept"
     "jerboa_tls_connect" "jerboa_tls_connect_pinned"
     "jerboa_tls_connect_mtls" "jerboa_tls_close"
     "jerboa_tls_read" "jerboa_tls_write" "jerboa_tls_flush"
     "jerboa_tls_get_fd" "jerboa_tls_set_nonblock"
     "jerboa_last_error"
+    ;; jerboa-native (x509) — self-signed cert for the debug-REPL TLS listener
+    "jerboa_x509_generate_self_signed_mem"
     ;; jerboa-native (crypto)
     "jerboa_sha1" "jerboa_sha256" "jerboa_sha384" "jerboa_sha512"
     "jerboa_random_bytes" "jerboa_timing_safe_equal"