std/os: macOS dylib/libSystem fallbacks for native + libc loaders
ober
6c169af9d1befe58de085e4fe36764003091f9cb
--- a/lib/std/os/epoll-native.sls +++ b/lib/std/os/epoll-native.sls @@ -22,8 +22,11 @@ (if static? #t (or (guard (e [#t #f]) (load-shared-object "libjerboa_native.so") #t) + (guard (e [#t #f]) (load-shared-object "libjerboa_native.dylib") #t) (guard (e [#t #f]) (load-shared-object "lib/libjerboa_native.so") #t) + (guard (e [#t #f]) (load-shared-object "lib/libjerboa_native.dylib") #t) (guard (e [#t #f]) (load-shared-object "./lib/libjerboa_native.so") #t) + (guard (e [#t #f]) (load-shared-object "./lib/libjerboa_native.dylib") #t) (error 'std/os/epoll-native "libjerboa_native.so not found"))))) ;; Constants --- a/lib/std/os/posix.sls +++ b/lib/std/os/posix.sls @@ -88,9 +88,13 @@ ;; ========== libc loading ========== ;; In static builds (musl), symbols are already linked. ;; In dynamic builds, load libc. + ;; macOS: libc symbols live in libSystem; (load-shared-object "") is a no-op, + ;; so we must load libSystem explicitly or strerror et al never bind. (define _libc (or (guard (e [#t #f]) (load-shared-object "libc.so.7")) (guard (e [#t #f]) (load-shared-object "libc.so.6")) - (guard (e [#t #f]) (load-shared-object "libc.so")))) + (guard (e [#t #f]) (load-shared-object "libc.so")) + (guard (e [#t #f]) (load-shared-object "/usr/lib/libSystem.B.dylib")) + (guard (e [#t #f]) (load-shared-object "libSystem.dylib")))) (define _libc2 (guard (e [#t #f]) (load-shared-object ""))) ;; ========== Errno ==========