Patchwork iproute2: fix build failure on sparc due to -Wformat and tv_usec

login
register
mail settings
Submitter Andreas Henriksson
Date May 18, 2013, 4:18 p.m.
Message ID <20130518161850.GA16019@amd64.fatal.se>
Download mbox | patch
Permalink /patch/244775/
State Accepted
Delegated to: stephen hemminger
Headers show

Comments

Andreas Henriksson - May 18, 2013, 4:18 p.m.
tv_usec is "suseconds_t" which is apparently usually
a signed long, but sometimes not....
Change the printf modifier to use signed and
cast the tv_usec to long in case it's not already long.

gcc -Wall -Wstrict-prototypes -Werror -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE -fPIC   -c -o utils.o utils.c
utils.c: In function 'print_timestamp':
utils.c:802:2: error: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type '__suseconds_t' [-Werror=format]
cc1: all warnings being treated as errors

Signed-off-by: Andreas Henriksson <andreas@fatal.se>

---
 lib/utils.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
stephen hemminger - June 4, 2013, 2:58 a.m.
On Sat, 18 May 2013 18:18:51 +0200
Andreas Henriksson <andreas@fatal.se> wrote:

> tv_usec is "suseconds_t" which is apparently usually
> a signed long, but sometimes not....
> Change the printf modifier to use signed and
> cast the tv_usec to long in case it's not already long.
> 
> gcc -Wall -Wstrict-prototypes -Werror -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE -fPIC   -c -o utils.o utils.c
> utils.c: In function 'print_timestamp':
> utils.c:802:2: error: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type '__suseconds_t' [-Werror=format]
> cc1: all warnings being treated as errors
> 
> Signed-off-by: Andreas Henriksson <andreas@fatal.se>
> 

Applied, seems like a wierd Sparc/Solaris legacy issue.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
stephen hemminger - June 25, 2013, 8:37 p.m.
On Sat, 18 May 2013 18:18:51 +0200
Andreas Henriksson <andreas@fatal.se> wrote:

> tv_usec is "suseconds_t" which is apparently usually
> a signed long, but sometimes not....
> Change the printf modifier to use signed and
> cast the tv_usec to long in case it's not already long.
> 
> gcc -Wall -Wstrict-prototypes -Werror -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE -fPIC   -c -o utils.o utils.c
> utils.c: In function 'print_timestamp':
> utils.c:802:2: error: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type '__suseconds_t' [-Werror=format]
> cc1: all warnings being treated as errors
> 
> Signed-off-by: Andreas Henriksson <andreas@fatal.se>

Sure applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/lib/utils.c b/lib/utils.c
index bcd6002..dae1b51 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -799,7 +799,7 @@  int print_timestamp(FILE *fp)
 
 	tstr = asctime(localtime(&tv.tv_sec));
 	tstr[strlen(tstr)-1] = 0;
-	fprintf(fp, "Timestamp: %s %lu usec\n", tstr, tv.tv_usec);
+	fprintf(fp, "Timestamp: %s %ld usec\n", tstr, (long)tv.tv_usec);
 	return 0;
 }