Message ID | 20100527104414.GA7250@redhat.com |
---|---|
State | New |
Headers | show |
On Thu, May 27, 2010 at 12:55:49PM +0200, Jes Sorensen wrote: > On 05/27/10 12:44, Michael S. Tsirkin wrote: > > On Thu, May 27, 2010 at 12:22:29PM +0200, Jes.Sorensen@redhat.com wrote: > >> From: Jes Sorensen <Jes.Sorensen@redhat.com> > >> > >> Fix build failure introduced by 0bfcd599e3f5c5679cc7d0165a0a1822e2f60de2 > >> > >> The format statement expects unsigned long on x86_64, but receives > >> unsigned long long, so gcc exits with an error. > >> > >> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> > > > > I think this part of 0bfcd599e3f5c5679cc7d0165a0a1822e2f60de2 > > should just be reverted. We have unsigned long, it should be printed > > woith %ll. Casting to uint64_t just so we can print with PRIu64 seems silly. > > That is an option too. Problem is just that unsigned long is 32 bit on > 32 bit systems and Windows (even for 64 bit) so if we need more flags we > need to be careful with it. > > Cheers, > Jes I don't understand, sorry. This field is unsigned long long, not unsigned long. %ll will print unsigned long long for any standard printf, whatever its length.
On Thu, May 27, 2010 at 12:55:49PM +0200, Jes Sorensen wrote: > On 05/27/10 12:44, Michael S. Tsirkin wrote: > > On Thu, May 27, 2010 at 12:22:29PM +0200, Jes.Sorensen@redhat.com wrote: > >> From: Jes Sorensen <Jes.Sorensen@redhat.com> > >> > >> Fix build failure introduced by 0bfcd599e3f5c5679cc7d0165a0a1822e2f60de2 > >> > >> The format statement expects unsigned long on x86_64, but receives > >> unsigned long long, so gcc exits with an error. > >> > >> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> > > > > I think this part of 0bfcd599e3f5c5679cc7d0165a0a1822e2f60de2 > > should just be reverted. We have unsigned long, it should be printed > > woith %ll. Casting to uint64_t just so we can print with PRIu64 seems silly. > > That is an option too. More importantly does this fix the problem for you? > Problem is just that unsigned long is 32 bit on > 32 bit systems and Windows (even for 64 bit) so if we need more flags we > need to be careful with it. > > Cheers, > Jes
On 05/27/10 12:44, Michael S. Tsirkin wrote: > On Thu, May 27, 2010 at 12:22:29PM +0200, Jes.Sorensen@redhat.com wrote: >> From: Jes Sorensen <Jes.Sorensen@redhat.com> >> >> Fix build failure introduced by 0bfcd599e3f5c5679cc7d0165a0a1822e2f60de2 >> >> The format statement expects unsigned long on x86_64, but receives >> unsigned long long, so gcc exits with an error. >> >> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> > > I think this part of 0bfcd599e3f5c5679cc7d0165a0a1822e2f60de2 > should just be reverted. We have unsigned long, it should be printed > woith %ll. Casting to uint64_t just so we can print with PRIu64 seems silly. That is an option too. Problem is just that unsigned long is 32 bit on 32 bit systems and Windows (even for 64 bit) so if we need more flags we need to be careful with it. Cheers, Jes
On 05/27/10 12:53, Michael S. Tsirkin wrote: > On Thu, May 27, 2010 at 12:55:49PM +0200, Jes Sorensen wrote: >> On 05/27/10 12:44, Michael S. Tsirkin wrote: >>> I think this part of 0bfcd599e3f5c5679cc7d0165a0a1822e2f60de2 >>> should just be reverted. We have unsigned long, it should be printed >>> woith %ll. Casting to uint64_t just so we can print with PRIu64 seems silly. >> >> That is an option too. Problem is just that unsigned long is 32 bit on >> 32 bit systems and Windows (even for 64 bit) so if we need more flags we >> need to be careful with it. >> >> Cheers, >> Jes > > I don't understand, sorry. > This field is unsigned long long, not unsigned long. > %ll will print unsigned long long > for any standard printf, whatever its length. Ah ok, if the field is long long, then your patch should be just fine. I hadn't checked that was the case. Cheers, Jes
On 05/27/10 12:54, Michael S. Tsirkin wrote: > On Thu, May 27, 2010 at 12:55:49PM +0200, Jes Sorensen wrote: >> On 05/27/10 12:44, Michael S. Tsirkin wrote: >>> On Thu, May 27, 2010 at 12:22:29PM +0200, Jes.Sorensen@redhat.com wrote: >>>> From: Jes Sorensen <Jes.Sorensen@redhat.com> >>>> >>>> Fix build failure introduced by 0bfcd599e3f5c5679cc7d0165a0a1822e2f60de2 >>>> >>>> The format statement expects unsigned long on x86_64, but receives >>>> unsigned long long, so gcc exits with an error. >>>> >>>> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> >>> >>> I think this part of 0bfcd599e3f5c5679cc7d0165a0a1822e2f60de2 >>> should just be reverted. We have unsigned long, it should be printed >>> woith %ll. Casting to uint64_t just so we can print with PRIu64 seems silly. >> >> That is an option too. > > More importantly does this fix the problem for you? Yes it works fine. Acked-by: Jes Sorensen <Jes.Sorensen@redhat.com>
diff --git a/hw/vhost_net.c b/hw/vhost_net.c index 26dae79..2e292ee 100644 --- a/hw/vhost_net.c +++ b/hw/vhost_net.c @@ -99,7 +99,7 @@ struct vhost_net *vhost_net_init(VLANClientState *backend, int devfd) goto fail; } if (~net->dev.features & net->dev.backend_features) { - fprintf(stderr, "vhost lacks feature mask %" PRIu64 " for backend\n", + fprintf(stderr, "vhost lacks feature mask %llu for backend\n", ~net->dev.features & net->dev.backend_features); vhost_dev_cleanup(&net->dev); goto fail;