mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
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 <r.bolshakov@yadro.com>
This commit is contained in:
parent
dbb5e20ede
commit
351492e304
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user