mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
tests: Lookup extended stat/lstat in mocks
macOS syscall interface (/usr/lib/system/libsystem_kernel.dylib) has three kinds of stat but only one of them can be used to fill "struct stat": stat$INODE64. virmockstathelpers looks up regular stat instead of stat$INODE64. That causes a failure in qemufirmwaretest because "struct stat" is laid out differently from the values returned by stat. Introduce VIR_MOCK_REAL_INIT_ALIASED that can be used to lookup stat$INODE64 and lstat$INODE64 and use it to setup real functions on macOS. Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
This commit is contained in:
parent
740f181c47
commit
d6b17edd51
@ -288,3 +288,13 @@
|
||||
abort(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define VIR_MOCK_REAL_INIT_ALIASED(name, alias) \
|
||||
do { \
|
||||
if (real_##name == NULL && \
|
||||
!(real_##name = dlsym(RTLD_NEXT, \
|
||||
alias))) { \
|
||||
fprintf(stderr, "Missing symbol '" alias "'\n"); \
|
||||
abort(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
@ -138,7 +138,11 @@ static void virMockStatInit(void)
|
||||
debug = getenv("VIR_MOCK_STAT_DEBUG");
|
||||
|
||||
#ifdef MOCK_STAT
|
||||
# ifdef __APPLE__
|
||||
VIR_MOCK_REAL_INIT_ALIASED(stat, "stat$INODE64");
|
||||
# else
|
||||
VIR_MOCK_REAL_INIT(stat);
|
||||
# endif
|
||||
fdebug("real stat %p\n", real_stat);
|
||||
#endif
|
||||
#ifdef MOCK_STAT64
|
||||
@ -154,7 +158,11 @@ static void virMockStatInit(void)
|
||||
fdebug("real __xstat64 %p\n", real___xstat64);
|
||||
#endif
|
||||
#ifdef MOCK_LSTAT
|
||||
# ifdef __APPLE__
|
||||
VIR_MOCK_REAL_INIT_ALIASED(stat, "lstat$INODE64");
|
||||
# else
|
||||
VIR_MOCK_REAL_INIT(lstat);
|
||||
# endif
|
||||
fdebug("real lstat %p\n", real_lstat);
|
||||
#endif
|
||||
#ifdef MOCK_LSTAT64
|
||||
|
Loading…
Reference in New Issue
Block a user