From 0279dda939fb2bfd33f1c7324a585e3b2b5c30c2 Mon Sep 17 00:00:00 2001 From: Guilherme Janczak Date: Sat, 9 Dec 2023 12:59:53 +0000 Subject: [PATCH] OpenBSD: use ':' as LD_PRELOAD separator (#538) LD_PRELOAD documentation added in 1998 talks about colon as separator, and apparently space no longer works. --- src/main.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main.c b/src/main.c index af78ef2..381c71c 100644 --- a/src/main.c +++ b/src/main.c @@ -135,16 +135,20 @@ int main(int argc, char *argv[]) { if(!quiet) fprintf(stderr, LOG_PREFIX "preloading %s/%s\n", prefix, dll_name); +#if defined(IS_MAC) || defined(IS_OPENBSD) +#define LD_PRELOAD_SEP ":" +#else +/* Dynlinkers for Linux and most BSDs seem to support space + as LD_PRELOAD separator, with colon added only recently. + We use the old syntax for maximum compat */ +#define LD_PRELOAD_SEP " " +#endif + #ifdef IS_MAC putenv("DYLD_FORCE_FLAT_NAMESPACE=1"); #define LD_PRELOAD_ENV "DYLD_INSERT_LIBRARIES" -#define LD_PRELOAD_SEP ":" #else #define LD_PRELOAD_ENV "LD_PRELOAD" -/* all historic implementations of BSD and linux dynlinkers seem to support - space as LD_PRELOAD separator, with colon added only recently. - we use the old syntax for maximum compat */ -#define LD_PRELOAD_SEP " " #endif char *old_val = getenv(LD_PRELOAD_ENV); snprintf(buf, sizeof(buf), LD_PRELOAD_ENV "=%s/%s%s%s",