[libvirt] [PATCH] Do not inline virNumaNodeIsAvailable

Ján Tomko jtomko at redhat.com
Thu Mar 5 11:05:52 UTC 2015


Explicitly request that virNumaNodeIsAvailable not be inlined.
This fixes the test suite when building with clang (3.5.1).
---
This only leaves the mysterious check-protocol failure.
And too large stack frame size when building the tests with -O0.

 src/internal.h     | 10 ++++++++++
 src/util/virnuma.h |  3 ++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/internal.h b/src/internal.h
index 4d473af..84aa330 100644
--- a/src/internal.h
+++ b/src/internal.h
@@ -139,6 +139,16 @@
 #  endif
 
 /**
+ * ATTRIBUTE_NOINLINE:
+ *
+ * Macro to indicate a function that cannot be inlined
+ * (e.g. a function that is mocked in the test suite)
+ */
+#  ifndef ATTRIBUTE_NOINLINE
+#   define ATTRIBUTE_NOINLINE __attribute__((__noinline__))
+#  endif
+
+/**
  * ATTRIBUTE_SENTINEL:
  *
  * Macro to check for NULL-terminated varargs lists
diff --git a/src/util/virnuma.h b/src/util/virnuma.h
index 1f3c0ad..4ddcc5a 100644
--- a/src/util/virnuma.h
+++ b/src/util/virnuma.h
@@ -37,7 +37,8 @@ virBitmapPtr virNumaGetHostNodeset(void);
 bool virNumaNodesetIsAvailable(virBitmapPtr nodeset);
 bool virNumaIsAvailable(void);
 int virNumaGetMaxNode(void);
-bool virNumaNodeIsAvailable(int node);
+bool virNumaNodeIsAvailable(int node)
+    ATTRIBUTE_NOINLINE;
 int virNumaGetDistances(int node,
                         int **distances,
                         int *ndistances);
-- 
2.0.5




More information about the libvir-list mailing list