Blob Blame History Raw
From ac4e9bd66d9c8461024dfd3698e120c678eb6cfc Mon Sep 17 00:00:00 2001
Message-ID: <ac4e9bd66d9c8461024dfd3698e120c678eb6cfc.1707519557.git.aclaudi@redhat.com>
From: Andrea Claudi <aclaudi@redhat.com>
Date: Fri, 9 Feb 2024 23:56:20 +0100
Subject: [PATCH] iproute2: fix build failure on ppc64le
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2261250
Upstream Status: posted upstream

commit d13ef7c00b60a50a5e8ddbb7ff138399689d3483
Author: Andrea Claudi <aclaudi@redhat.com>
Date:   Fri Feb 9 10:44:55 2024 +0100

    iproute2: fix build failure on ppc64le

    ppc64le build fails with error on ifstat.c when
    -Wincompatible-pointer-types is enabled:

    ifstat.c: In function ‘dump_raw_db’:
    ifstat.c:323:44: error: initialization of ‘long long unsigned int *’ from incompatible pointer type ‘__u64 *’ {aka ‘long unsigned int *’} [-Wincompatible-pointer-types]
      323 |                 unsigned long long *vals = n->val;

    Several other warnings are produced when -Wformat= is set, for example:

    ss.c:3244:34: warning: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 2 has type ‘__u64’ {aka ‘long unsigned int’} [-Wformat=]
     3244 |                 out(" rcv_nxt:%llu", s->mptcpi_rcv_nxt);
          |                               ~~~^   ~~~~~~~~~~~~~~~~~
          |                                  |    |
          |                                  |    __u64 {aka long unsigned int}
          |                                  long long unsigned int
          |                               %lu

    This happens because __u64 is defined as long unsigned on ppc64le.  As
    pointed out by Florian Weimar, we should use -D__SANE_USERSPACE_TYPES__
    if we really want to use long long unsigned in iproute2.

    This fix the build failure and all the warnings without any change on
    the code itself.

    Suggested-by: Florian Weimer <fweimer@redhat.com>
    Signed-off-by: Andrea Claudi <aclaudi@redhat.com>

Signed-off-by: Andrea Claudi <aclaudi@redhat.com>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 8024d45e..3b9daede 100644
--- a/Makefile
+++ b/Makefile
@@ -60,7 +60,7 @@ CC := gcc
 HOSTCC ?= $(CC)
 DEFINES += -D_GNU_SOURCE
 # Turn on transparent support for LFS
-DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__SANE_USERSPACE_TYPES__
 CCOPTS = -O2 -pipe
 WFLAGS := -Wall -Wstrict-prototypes  -Wmissing-prototypes
 WFLAGS += -Wmissing-declarations -Wold-style-definition -Wformat=2
-- 
2.43.0