public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber•org>
To: David Ahern <dsahern@gmail•com>
Cc: Andrea Claudi <aclaudi@redhat•com>,
	netdev@vger•kernel.org, sgallagh@redhat•com
Subject: Re: [PATCH] iproute2: fix build failure on ppc64le
Date: Wed, 14 Feb 2024 19:05:19 -0800	[thread overview]
Message-ID: <20240214190519.1233eef6@hermes.local> (raw)
In-Reply-To: <d2707550-36c2-45d3-ae76-f83b4c19f88c@gmail.com>

On Wed, 14 Feb 2024 08:49:02 -0700
David Ahern <dsahern@gmail•com> wrote:

> On 2/14/24 8:30 AM, Andrea Claudi wrote:
> > On Fri, Feb 09, 2024 at 04:45:42PM -0800, Stephen Hemminger wrote:  
> >> On Fri, 9 Feb 2024 15:14:28 -0700
> >> David Ahern <dsahern@gmail•com> wrote:
> >>  
> >>> On 2/9/24 9:35 AM, Stephen Hemminger wrote:  
> >>>> On Fri,  9 Feb 2024 11:24:47 +0100
> >>>> Andrea Claudi <aclaudi@redhat•com> wrote:
> >>>>     
> >>>>> 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.    
> >>>>
> >>>> Ok, this looks good.
> >>>> Another way to fix would be to use the macros defined in inttypes.h
> >>>>
> >>>> 		out(" rcv_nxt:"PRIu64, s->mptcpi_rcv_nxt);
> >>>>     
> >>>
> >>> since the uapi is __u64, I think this is the better approach.  
> >>
> >> NVM
> >> Tried it, but __u64 is not the same as uint64_t even on x86.
> >> __u64 is long long unsigned int
> >> uint64_t is long unsigned int
> >>  
> > 
> > Is there anything more I can do about this?
> >   
> 
> where does the uint64_t come in? include/uapi/linux/mptcp.h has
> mptcpi_rcv_nxt as __u64 and PRIu64 macros should be working without a
> problem - this is what perf tool uses consistently.

I just did this:

diff --git a/misc/ss.c b/misc/ss.c
index 5296cabe9982..679d50b8fef6 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -8,6 +8,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <inttypes.h>
 #include <fcntl.h>
 #include <sys/ioctl.h>
 #include <sys/socket.h>
@@ -3241,7 +3242,7 @@ static void mptcp_stats_print(struct mptcp_info *s)
        if (s->mptcpi_snd_una)
                out(" snd_una:%llu", s->mptcpi_snd_una);
        if (s->mptcpi_rcv_nxt)
-               out(" rcv_nxt:%llu", s->mptcpi_rcv_nxt);
+               out(" rcv_nxt:%" PRIu64, s->mptcpi_rcv_nxt);
        if (s->mptcpi_local_addr_used)
                out(" local_addr_used:%u", s->mptcpi_local_addr_used);
        if (s->mptcpi_local_addr_max)


And got this:
    CC       ss.o
ss.c: In function ‘mptcp_stats_print’:
ss.c:3245:21: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘__u64’ {aka ‘long long unsigned int’} [-Wformat=]
 3245 |                 out(" rcv_nxt:%" PRIu64, s->mptcpi_rcv_nxt);
      |                     ^~~~~~~~~~~~         ~~~~~~~~~~~~~~~~~
      |                                           |
      |                                           __u64 {aka long long unsigned int}
In file included from ss.c:11:
/usr/include/inttypes.h:105:41: note: format string is defined here
  105 | # define PRIu64         __PRI64_PREFIX "u"


  reply	other threads:[~2024-02-15  3:05 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-09 10:24 [PATCH] iproute2: fix build failure on ppc64le Andrea Claudi
2024-02-09 12:02 ` Andrea Claudi
2024-02-09 16:35 ` Stephen Hemminger
2024-02-09 22:14   ` David Ahern
2024-02-10  0:45     ` Stephen Hemminger
2024-02-14 15:30       ` Andrea Claudi
2024-02-14 15:49         ` David Ahern
2024-02-15  3:05           ` Stephen Hemminger [this message]
2024-02-15  3:10             ` David Ahern
2024-02-16  9:57               ` Andrea Claudi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240214190519.1233eef6@hermes.local \
    --to=stephen@networkplumber$(echo .)org \
    --cc=aclaudi@redhat$(echo .)com \
    --cc=dsahern@gmail$(echo .)com \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=sgallagh@redhat$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox