From 351492e304c5806dd67aaa3368cd03389f221481 Mon Sep 17 00:00:00 2001 From: Roman Bolshakov Date: Wed, 21 Aug 2019 19:13:15 +0300 Subject: [PATCH] tests: Preload mocks with DYLD_INSERT_LIBRARIES on macOS LD_PRELOAD has no effect on macOS. Instead, dyld(1) provides a way for symbol hooking via DYLD_INSERT_LIBRARIES. The variable should contain colon-separated paths to the dylibs to be inserted. Signed-off-by: Roman Bolshakov --- tests/testutils.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/testutils.h b/tests/testutils.h index 8c12fd7c12..07dda6e355 100644 --- a/tests/testutils.h +++ b/tests/testutils.h @@ -117,9 +117,15 @@ int virTestMain(int argc, return virTestMain(argc, argv, func, NULL); \ } +#ifdef __APPLE__ +# define PRELOAD_VAR "DYLD_INSERT_LIBRARIES" +#else +# define PRELOAD_VAR "LD_PRELOAD" +#endif + #define VIR_TEST_PRELOAD(lib) \ do { \ - const char *preload = getenv("LD_PRELOAD"); \ + const char *preload = getenv(PRELOAD_VAR); \ if (preload == NULL || strstr(preload, lib) == NULL) { \ char *newenv; \ if (!virFileIsExecutable(lib)) { \ @@ -132,7 +138,7 @@ int virTestMain(int argc, perror("virAsprintf"); \ return EXIT_FAILURE; \ } \ - setenv("LD_PRELOAD", newenv, 1); \ + setenv(PRELOAD_VAR, newenv, 1); \ execv(argv[0], argv); \ } \ } while (0) -- GitLab