diff --git a/tests/virmock.h b/tests/virmock.h index dea5feb80f..5250e733a1 100644 --- a/tests/virmock.h +++ b/tests/virmock.h @@ -284,9 +284,21 @@ static void (*real_##name)(void); \ void wrap_##name(void) +#if defined(VIR_MOCK_LOOKUP_MAIN) && defined(__APPLE__) +# define VIR_MOCK_REAL_INIT_MAIN(name, alias) \ + do { \ + if (real_##name == NULL) { \ + real_##name = dlsym(RTLD_MAIN_ONLY, alias); \ + } \ + } while (0) +#else +# define VIR_MOCK_REAL_INIT_MAIN(name, alias) \ + do {} while (0) +#endif #define VIR_MOCK_REAL_INIT(name) \ do { \ + VIR_MOCK_REAL_INIT_MAIN(name, #name); \ if (real_##name == NULL && \ !(real_##name = dlsym(RTLD_NEXT, \ #name))) { \ @@ -297,6 +309,7 @@ #define VIR_MOCK_REAL_INIT_ALIASED(name, alias) \ do { \ + VIR_MOCK_REAL_INIT_MAIN(name, alias); \ if (real_##name == NULL && \ !(real_##name = dlsym(RTLD_NEXT, \ alias))) { \ diff --git a/tests/virpcimock.c b/tests/virpcimock.c index 686f894e99..4aa96cae08 100644 --- a/tests/virpcimock.c +++ b/tests/virpcimock.c @@ -19,6 +19,7 @@ #include #if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) +# define VIR_MOCK_LOOKUP_MAIN # include "virmock.h" # include # include