From dan@obluda.cz  Tue Sep  3 14:37:20 2002
Return-Path: <dan@obluda.cz>
Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 9030D37B400
	for <FreeBSD-gnats-submit@freebsd.org>; Tue,  3 Sep 2002 14:37:20 -0700 (PDT)
Received: from xkulesh.vol.cz (xkulesh.vol.cz [195.250.154.106])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 383CE43E81
	for <FreeBSD-gnats-submit@freebsd.org>; Tue,  3 Sep 2002 14:37:14 -0700 (PDT)
	(envelope-from dan@obluda.cz)
Received: from xkulesh.vol.cz (localhost [127.0.0.1])
	by xkulesh.vol.cz (8.12.5/8.12.5) with ESMTP id g83Lb8Jn000269;
	Tue, 3 Sep 2002 23:37:09 +0200 (CEST)
	(envelope-from dan@obluda.cz)
Received: (from dan@localhost)
	by xkulesh.vol.cz (8.12.6/8.12.6/Submit) id g83FhY3o002155;
	Tue, 3 Sep 2002 17:43:34 +0200 (CEST)
Message-Id: <200209031543.g83FhY3o002155@xkulesh.vol.cz>
Date: Tue, 3 Sep 2002 17:43:34 +0200 (CEST)
From: Dan Lukes <dan@obluda.cz>
Reply-To: Dan Lukes <dan@obluda.cz>
To: FreeBSD-gnats-submit@freebsd.org
Cc: dan@obluda.cz
Subject: cleaning code from warnings in libkvm
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         42386
>Category:       kern
>Synopsis:       [libkvm] [patch] cleaning code from warnings in libkvm
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    uqs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Sep 03 14:40:04 PDT 2002
>Closed-Date:    Mon Feb 21 20:35:18 UTC 2011
>Last-Modified:  Mon Feb 21 20:35:18 UTC 2011
>Originator:     Dan Lukes
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
Obludarium
>Environment:
src/lib/libkvm/kvm.h,v 1.14 2002/08/21 16:19:57
src/lib/libkvm/kvm.c,v 1.22 2002/05/28 17:01:04
src/lib/libkvm/kvm_i386.c,v 1.15 2001/10/10 17:48:43
src/lib/libkvm/kvm_getswapinfo.c,v 1.19 2001/10/10 17:48:43
src/lib/libkvm/kvm_proc.c,v 1.54 2002/08/30 02:18:38

>Description:
lib/libkvm/kvm.c:
  351: warning: unsigned int format, u_long arg (arg 4)
  413: warning: unsigned int format, u_long arg (arg 4)
    #>> see NOTE 1
lib/libkvm/kvm_i386.c:
  200: warning: unsigned int format, u_long arg (arg 4)
    #>> see NOTE 1
  144: warning: unused variable `i'
    #>> variable i is really unused
lib/libkvm/kvm_getswapinfo.c:
  267: warning: unsigned int format, different type arg (arg 5)
                int format, different type arg (arg 6)
    #>> blk & radix are daddr_t = int64_t = __int64_t = long long
  287: warning: unsigned int format, different type arg (arg 5)
                int format, different type arg (arg 6)
                int format, different type arg (arg 8)
    #>> blk & radix are daddr_t = int64_t = __int64_t = long long
    #>> meta.bm_bighint is daddr_t = int64_t = __int64_t = long long
  321: warning: unsigned int format, different type arg (arg 5)
                int format, different type arg (arg 6)
    #>> blk & radix are daddr_t = int64_t = __int64_t = long long
  355: warning: unsigned int format, different type arg (arg 5)
                int format, different type arg (arg 6)
    #>> blk & radix are daddr_t = int64_t = __int64_t = long long
  371: warning: unsigned int format, different type arg (arg 5)
                int format, different type arg (arg 6)
                int format, different type arg (arg 8)
    #>> blk & radix are daddr_t = int64_t = __int64_t = long long
    #>> meta.bm_bighint is daddr_t = int64_t = __int64_t = long long
  434: warning: int format, different type arg (arg 2)
                int format, different type arg (arg 3)
                int format, different type arg (arg 4)
    #>> bl_free,bl_blocks,bl_radix are daddr_t = int64_t = __int64_t = long long
lib/libkvm/kvm_proc.c:
  132: warning: unsigned int format, pointer arg (arg 4)
  140: warning: unsigned int format, pointer arg (arg 4)
  195: warning: unsigned int format, pointer arg (arg 4)
  204: warning: unsigned int format, pointer arg (arg 4)
  220: warning: unsigned int format, pointer arg (arg 4)
  230: warning: unsigned int format, pointer arg (arg 4)
  237: warning: unsigned int format, pointer arg (arg 4)
  249: warning: unsigned int format, pointer arg (arg 4)
  257: warning: unsigned int format, pointer arg (arg 4)
  267: warning: unsigned int format, pointer arg (arg 4)
    #>> common for 10 above warnings - 
    #>>    pointer should be printf'ed by 'p' not 'x' conversion character
  782: warning: passing arg 0 of 'kvm_doargv' discards qualifiers from pointer target type
    #>> there are several mismatches of const and non-const declarations of
    #>> struct kinfo_proc *kp parameter in varions functions
  926: warning: unsigned int format, u_long arg (arg 4)
    #>> uva is u_long = unsigned long
   44: warning: 'sccsid' defined but not used
    #>> all other sources has sccsid definition skipped by #if 0

=======
NOTE 1
As long as sizeof(int)==sizeof(long) there are no real impact of
inconsistency between (long) int format and int arg (or vice versa), 
but it is better to have clean code ... 
=======

The warnings in kvm_getswapinfo.c points to real error, because 
longlongs really cannot be succesfully printed as ints (but it shouldn't 
abend as of sizeof(int)<sizeof(long long)). It's the reason
I assign medium priority to this PR

>How-To-Repeat:
	N/A
>Fix:

--- lib/libkvm/kvm.c.ORIG	Tue May 28 19:01:04 2002
+++ lib/libkvm/kvm.c	Tue Sep  3 15:47:05 2002
@@ -348,7 +348,7 @@
 		 */
 		errno = 0;
 		if (lseek(kd->vmfd, (off_t)kva, 0) == -1 && errno != 0) {
-			_kvm_err(kd, 0, "invalid address (%x)", kva);
+			_kvm_err(kd, 0, "invalid address (%lx)", kva);
 			return (-1);
 		}
 		cc = read(kd->vmfd, buf, len);
@@ -410,7 +410,7 @@
 		 */
 		errno = 0;
 		if (lseek(kd->vmfd, (off_t)kva, 0) == -1 && errno != 0) {
-			_kvm_err(kd, 0, "invalid address (%x)", kva);
+			_kvm_err(kd, 0, "invalid address (%lx)", kva);
 			return (-1);
 		}
 		cc = write(kd->vmfd, buf, len);
--- lib/libkvm/kvm.h.ORIG	Wed Aug 21 19:28:52 2002
+++ lib/libkvm/kvm.h	Tue Sep  3 17:18:52 2002
@@ -89,7 +89,7 @@
 (const char *, const char *, const char *, int, char *);
 ssize_t	  kvm_read(kvm_t *, unsigned long, void *, size_t);
 ssize_t	  kvm_uread
-(kvm_t *, struct kinfo_proc *, unsigned long, char *, size_t);
+(kvm_t *, const struct kinfo_proc *, unsigned long, char *, size_t);
 ssize_t	  kvm_write(kvm_t *, unsigned long, const void *, size_t);
 __END_DECLS
 
--- lib/libkvm/kvm_getswapinfo.c.ORIG	Wed Oct 10 19:48:43 2001
+++ lib/libkvm/kvm_getswapinfo.c	Tue Sep  3 16:41:22 2002
@@ -260,7 +260,7 @@
 	 */
 	if (meta.bm_bighint == (daddr_t)-1) {
 		if (flags & SWIF_DUMP_TREE) {
-			printf("%*.*s(0x%06x,%d) Terminator\n", 
+			printf("%*.*s(0x%06llx,%lld) Terminator\n", 
 			    TABME,
 			    blk, 
 			    radix
@@ -278,7 +278,7 @@
 #endif
 
 		if (flags & SWIF_DUMP_TREE) {
-			printf("%*.*s(0x%06x,%d) Bitmap %08x big=%d\n", 
+			printf("%*.*s(0x%06llx,%lld) Bitmap %08x big=%lld\n", 
 			    TABME,
 			    blk, 
 			    radix,
@@ -314,7 +314,7 @@
 		 * Meta node if all free
 		 */
 		if (flags & SWIF_DUMP_TREE) {
-			printf("%*.*s(0x%06x,%d) Submap ALL-FREE {\n", 
+			printf("%*.*s(0x%06llx,%lld) Submap ALL-FREE {\n", 
 			    TABME,
 			    blk, 
 			    radix
@@ -348,7 +348,7 @@
 		 * Meta node if all used
 		 */
 		if (flags & SWIF_DUMP_TREE) {
-			printf("%*.*s(0x%06x,%d) Submap ALL-ALLOCATED\n", 
+			printf("%*.*s(0x%06llx,%lld) Submap ALL-ALLOCATED\n", 
 			    TABME,
 			    blk, 
 			    radix
@@ -362,7 +362,7 @@
 		int next_skip;
 
 		if (flags & SWIF_DUMP_TREE) {
-			printf("%*.*s(0x%06x,%d) Submap avail=%d big=%d {\n", 
+			printf("%*.*s(0x%06llx,%lld) Submap avail=%d big=%lld {\n", 
 			    TABME,
 			    blk, 
 			    radix,
@@ -425,7 +425,7 @@
 	KGET2(swapblist, &blcopy, sizeof(blcopy), "*swapblist");
 
 	if (flags & SWIF_DUMP_TREE) {
-		printf("radix tree: %d/%d/%d blocks, %dK wired\n",
+		printf("radix tree: %lld/%lld/%lld blocks, %dK wired\n",
 			blcopy.bl_free,
 			blcopy.bl_blocks,
 			blcopy.bl_radix,
--- lib/libkvm/kvm_i386.c.ORIG	Tue Sep  3 15:47:44 2002
+++ lib/libkvm/kvm_i386.c	Tue Sep  3 16:01:24 2002
@@ -141,7 +141,6 @@
 	pt_entry_t pte;
 	u_long pdeindex;
 	u_long pteindex;
-	int i;
 
 	if (ISALIVE(kd)) {
 		_kvm_err(kd, 0, "vatop called in live kernel!");
@@ -197,7 +196,7 @@
 	return (PAGE_SIZE - offset);
 
 invalid:
-	_kvm_err(kd, 0, "invalid address (%x)", va);
+	_kvm_err(kd, 0, "invalid address (%lx)", va);
 	return (0);
 }
 
--- lib/libkvm/kvm_proc.c.ORIG	Sun Sep  1 08:04:56 2002
+++ lib/libkvm/kvm_proc.c	Tue Sep  3 17:27:08 2002
@@ -41,7 +41,9 @@
 __FBSDID("$FreeBSD: src/lib/libkvm/kvm_proc.c,v 1.54 2002/08/30 02:18:38 peter Exp $");
 
 #if defined(LIBC_SCCS) && !defined(lint)
+#if 0
 static char sccsid[] = "@(#)kvm_proc.c	8.3 (Berkeley) 9/23/93";
+#endif
 #endif /* LIBC_SCCS and not lint */
 
 /*
@@ -129,14 +131,14 @@
 	for (; cnt < maxcnt && p != NULL; p = LIST_NEXT(&proc, p_list)) {
 		memset(kp, 0, sizeof *kp);
 		if (KREAD(kd, (u_long)p, &proc)) {
-			_kvm_err(kd, kd->program, "can't read proc at %x", p);
+			_kvm_err(kd, kd->program, "can't read proc at %p", p);
 			return (-1);
 		}
 		if (proc.p_state != PRS_ZOMBIE) {
 			if (KREAD(kd, (u_long)TAILQ_FIRST(&proc.p_threads),
 			    &mainthread)) {
 				_kvm_err(kd, kd->program,
-				    "can't read thread at %x",
+				    "can't read thread at %p",
 				    TAILQ_FIRST(&proc.p_threads));
 				return (-1);
 			}
@@ -192,7 +194,7 @@
 		if (proc.p_procsig != NULL) {
 			if (KREAD(kd, (u_long)proc.p_procsig, &procsig)) {
 				_kvm_err(kd, kd->program,
-				    "can't read procsig at %x", proc.p_procsig);
+				    "can't read procsig at %p", proc.p_procsig);
 				return (-1);
 			}
 			kp->ki_sigignore = procsig.ps_sigignore;
@@ -201,7 +203,7 @@
 		if ((proc.p_sflag & PS_INMEM) && proc.p_stats != NULL) {
 			if (KREAD(kd, (u_long)proc.p_stats, &pstats)) {
 				_kvm_err(kd, kd->program,
-				    "can't read stats at %x", proc.p_stats);
+				    "can't read stats at %p", proc.p_stats);
 				return (-1);
 			}
 			kp->ki_start = pstats.p_start;
@@ -217,7 +219,7 @@
 		else if (proc.p_pptr) {
 			if (KREAD(kd, (u_long)proc.p_pptr, &pproc)) {
 				_kvm_err(kd, kd->program,
-				    "can't read pproc at %x", proc.p_pptr);
+				    "can't read pproc at %p", proc.p_pptr);
 				return (-1);
 			}
 			kp->ki_ppid = pproc.p_pid;
@@ -226,14 +228,14 @@
 		if (proc.p_pgrp == NULL)
 			goto nopgrp;
 		if (KREAD(kd, (u_long)proc.p_pgrp, &pgrp)) {
-			_kvm_err(kd, kd->program, "can't read pgrp at %x",
+			_kvm_err(kd, kd->program, "can't read pgrp at %p",
 				 proc.p_pgrp);
 			return (-1);
 		}
 		kp->ki_pgid = pgrp.pg_id;
 		kp->ki_jobc = pgrp.pg_jobc;
 		if (KREAD(kd, (u_long)pgrp.pg_session, &sess)) {
-			_kvm_err(kd, kd->program, "can't read session at %x",
+			_kvm_err(kd, kd->program, "can't read session at %p",
 				pgrp.pg_session);
 			return (-1);
 		}
@@ -246,14 +248,14 @@
 		if ((proc.p_flag & P_CONTROLT) && sess.s_ttyp != NULL) {
 			if (KREAD(kd, (u_long)sess.s_ttyp, &tty)) {
 				_kvm_err(kd, kd->program,
-					 "can't read tty at %x", sess.s_ttyp);
+					 "can't read tty at %p", sess.s_ttyp);
 				return (-1);
 			}
 			kp->ki_tdev = tty.t_dev;
 			if (tty.t_pgrp != NULL) {
 				if (KREAD(kd, (u_long)tty.t_pgrp, &pgrp)) {
 					_kvm_err(kd, kd->program,
-						 "can't read tpgrp at %x",
+						 "can't read tpgrp at %p",
 						tty.t_pgrp);
 					return (-1);
 				}
@@ -263,7 +265,7 @@
 			if (tty.t_session != NULL) {
 				if (KREAD(kd, (u_long)tty.t_session, &sess)) {
 					_kvm_err(kd, kd->program,
-					    "can't read session at %x",
+					    "can't read session at %p",
 					    tty.t_session);
 					return (-1);
 				}
@@ -556,7 +558,7 @@
 static char **
 kvm_argv(kd, kp, addr, narg, maxcnt)
 	kvm_t *kd;
-	struct kinfo_proc *kp;
+	const struct kinfo_proc *kp;
 	u_long addr;
 	int narg;
 	int maxcnt;
@@ -756,7 +758,7 @@
  */
 static int
 proc_verify(curkp)
-	struct kinfo_proc *curkp;
+	const struct kinfo_proc *curkp;
 {
 	struct kinfo_proc newkp;
 	int mib[4];
@@ -776,7 +778,7 @@
 static char **
 kvm_doargv(kd, kp, nchr, info)
 	kvm_t *kd;
-	struct kinfo_proc *kp;
+	const struct kinfo_proc *kp;
 	int nchr;
 	void (*info)(struct ps_strings *, u_long *, int *);
 {
@@ -894,7 +896,7 @@
 ssize_t
 kvm_uread(kd, kp, uva, buf, len)
 	kvm_t *kd;
-	struct kinfo_proc *kp;
+	const struct kinfo_proc *kp;
 	u_long uva;
 	char *buf;
 	size_t len;
@@ -922,7 +924,7 @@
 	while (len > 0) {
 		errno = 0;
 		if (lseek(fd, (off_t)uva, 0) == -1 && errno != 0) {
-			_kvm_err(kd, kd->program, "invalid address (%x) in %s",
+			_kvm_err(kd, kd->program, "invalid address (%lx) in %s",
 			    uva, procfile);
 			break;
 		}
>Release-Note:
>Audit-Trail:

From: Bruce Evans <bde@zeta.org.au>
To: Dan Lukes <dan@obluda.cz>
Cc: FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: bin/42386: cleaning code from warnings in libkvm
Date: Wed, 4 Sep 2002 15:18:26 +1000 (EST)

 On Tue, 3 Sep 2002, Dan Lukes wrote:
 
 > >Description:
 > ...
 > lib/libkvm/kvm_getswapinfo.c:
 >   267: warning: unsigned int format, different type arg (arg 5)
 >                 int format, different type arg (arg 6)
 >     #>> blk & radix are daddr_t = int64_t = __int64_t = long long
 
 'long long' should never be used.  intmax_t should normally be used
 instead.  daddr_t is plain long on alphas, so printing it using %lld
 format fixes the bug but not the warning.
 
 Similar problems for printing virtual addresses are avoided by using
 a basic type (usually u_long) instead of the correct typedefed type
 (vm_offset_t).
 
 Bruce
 
State-Changed-From-To: open->patched 
State-Changed-By: uqs 
State-Changed-When: Sun Jan 23 11:09:29 UTC 2011 
State-Changed-Why:  
Patched in head, as of r217744. 


Responsible-Changed-From-To: freebsd-bugs->uqs 
Responsible-Changed-By: uqs 
Responsible-Changed-When: Sun Jan 23 11:09:29 UTC 2011 
Responsible-Changed-Why:  
Patched in head, as of r217744. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=42386 
State-Changed-From-To: patched->closed 
State-Changed-By: uqs 
State-Changed-When: Mon Feb 21 20:34:42 UTC 2011 
State-Changed-Why:  
This won't be merged to -STABLE, close PR. 

Thanks for the submission! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=42386 
>Unformatted:
