[libvirt PATCH 2/2] tests: Improve macOS stat() mocking logic

Andrea Bolognani abologna at redhat.com
Thu Feb 4 09:53:56 UTC 2021


We should not mock stat64() when building on Apple Silicon,
because the declaration is not present in the header file.
Detect this situation and handle it gracefully.

https://gitlab.com/libvirt/libvirt/-/issues/121
Signed-off-by: Andrea Bolognani <abologna at redhat.com>
---
 tests/virmockstathelpers.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/tests/virmockstathelpers.c b/tests/virmockstathelpers.c
index 97f628368d..830dfe1085 100644
--- a/tests/virmockstathelpers.c
+++ b/tests/virmockstathelpers.c
@@ -57,7 +57,9 @@
  *
  * On macOS stat() and lstat() are resolved to _stat$INODE64 and
  * _lstat$INODE64, respectively. stat(2) man page also declares that
- * stat64(), lstat64() and fstat64() are deprecated.
+ * stat64(), lstat64() and fstat64() are deprecated, and when
+ * building on Apple Silicon (aarch64) those functions are missing
+ * from the header altogether and should not be mocked.
  *
  * With all this in mind the list of functions we have to mock will depend
  * on several factors
@@ -111,9 +113,13 @@
 # endif /* WITH___LXSTAT_DECL */
 #else /* __APPLE__ */
 # define MOCK_STAT
-# define MOCK_STAT64
+# if defined(WITH_STAT64_DECL)
+#  define MOCK_STAT64
+# endif
 # define MOCK_LSTAT
-# define MOCK_LSTAT64
+# if defined(WITH_LSTAT64_DECL)
+#  define MOCK_LSTAT64
+# endif
 #endif
 
 #ifdef MOCK_STAT
-- 
2.26.2




More information about the libvir-list mailing list