]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: fix build error on non-Linux systems
authorLaine Stump <laine@laine.org>
Fri, 28 Jun 2013 08:00:54 +0000 (04:00 -0400)
committerLaine Stump <laine@laine.org>
Fri, 28 Jun 2013 08:09:42 +0000 (04:09 -0400)
Building on FreeBSD had this linker error:

/work/a/ports/devel/libvirt/work/libvirt-1.1.0/src/.libs/libvirt.so:
   undefined reference to `virPCIDeviceAddressParse'

This was caused by the new use of virPCIDeviceAddressParse in a
portion of virpci.c that wasn't linux-only (in commit 72c029d8). The
problem was that virPCIDeviceAddressParse had originally been defined
inside #ifdef _linux (because it was only used by another function
that was inside the same ifdef).

The solution is to move it out to the part of virpci.c that is
compiled on all platforms.

(Because the portion that was "moved" was 40-50 lines, but only moved
up by 15 lines, the diff for the patch is less than non-informative -
rather than showing that part that I moved, it shows the bit that was
previously before the moved part, and now sits *after* it.)

src/util/virpci.c

index 0ed29e7010b75339350110fc00c510748da5ced7..7d83bdb3c4c61aaa21af86c9a807c28c997d8a9a 100644 (file)
@@ -2261,21 +2261,6 @@ int virPCIDeviceIsAssignable(virPCIDevicePtr dev,
     return 1;
 }
 
-#ifdef __linux__
-
-/*
- * returns true if equal
- */
-static bool
-virPCIDeviceAddressIsEqual(virPCIDeviceAddressPtr bdf1,
-                           virPCIDeviceAddressPtr bdf2)
-{
-    return ((bdf1->domain == bdf2->domain) &&
-            (bdf1->bus == bdf2->bus) &&
-            (bdf1->slot == bdf2->slot) &&
-            (bdf1->function == bdf2->function));
-}
-
 static int
 logStrToLong_ui(char const *s,
                 char **end_ptr,
@@ -2327,6 +2312,21 @@ out:
     return ret;
 }
 
+#ifdef __linux__
+
+/*
+ * returns true if equal
+ */
+static bool
+virPCIDeviceAddressIsEqual(virPCIDeviceAddressPtr bdf1,
+                           virPCIDeviceAddressPtr bdf2)
+{
+    return ((bdf1->domain == bdf2->domain) &&
+            (bdf1->bus == bdf2->bus) &&
+            (bdf1->slot == bdf2->slot) &&
+            (bdf1->function == bdf2->function));
+}
+
 static int
 virPCIGetDeviceAddressFromSysfsLink(const char *device_link,
                                     virPCIDeviceAddressPtr *bdf)