Subject: bin/16348: minor make patch
To: None <gnats-bugs@gnats.netbsd.org>
From: None <dholland@eecs.harvard.edu>
List: netbsd-bugs
Date: 04/14/2002 02:04:33
>Number:         16348
>Category:       bin
>Synopsis:       minor warning fixes to -current make
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bin-bug-people
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Sat Apr 13 23:04:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     David A. Holland <dholland@eecs.harvard.edu>
>Release:        NetBSD-current of 20020413
>Organization:
		Harvard EECS
>Environment:
	
	
System: NetBSD flurgle 1.5Z NetBSD 1.5Z (FLURGLE) #3: Wed Dec 12 16:51:30 EST 2001 root@flurgle:/usr/src/sys/arch/i386/compile/FLURGLE i386
Architecture: i386
Machine: i386
>Description:

	I happened to be porting make to another platform today. The
	enclosed patch fixes a few gcc warnings I ran into, and
	doesn't seem to (and shouldn't) affect the mainstream build.

	Note that one change adds an XXX - this is because while the
	change that's in the patch suppresses the warning, it is not a
	proper fix. 

	The problem is that on a 32-bit platform, one of the type
	flag bits is the sign bit. The result is that the constant 
	OP_TRANSFORM becomes, pedantically, unsigned, and thus
	triggers a warning. Presumably later gccs don't do this 
	conversion in the same way, but AFAICR from the standard it is
	in fact correct, or at least legal, to convert to unsigned. :-/

	The proper fix is either to change the node type flags so that
	the sign bit isn't used, or to change the node type field and
	associated data to unsigned. I didn't want to do either of these
	blindly without further thought.

	If this is too pedantic to bother with, as I'm inclined to
	think after writing about it, take the approprate change out
	of the patch and throw it away, but please do look at the rest. :-)


>How-To-Repeat:

	Compile with gcc 2.95.2 for i386 using -Wall -W -Werror.

>Fix:

	Patch against today (20020413)'s -current usr.bin/make.

Index: arch.c
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/make/arch.c,v
retrieving revision 1.34
diff -u -r1.34 arch.c
--- arch.c	2001/11/30 01:29:48	1.34
+++ arch.c	2002/04/14 05:42:16
@@ -524,7 +524,7 @@
 	} else {
 	    /* Try truncated name */
 	    char copy[AR_MAX_NAME_LEN+1];
-	    int len = strlen (member);
+	    size_t len = strlen (member);
 
 	    if (len > AR_MAX_NAME_LEN) {
 		len = AR_MAX_NAME_LEN;
@@ -819,7 +819,7 @@
     int		  size;       /* Size of archive member */
     char	  *cp;	      /* Useful character pointer */
     char	  magic[SARMAG];
-    int		  len, tlen;
+    size_t	  len, tlen;
 
     arch = fopen (archive, mode);
     if (arch == (FILE *) NULL) {
@@ -1009,6 +1009,9 @@
 	times.actime = times.modtime = now;
 	utime(gn->path, &times);
     }
+#else
+    /* unused */
+    (void) gn;
 #endif
 }
 
Index: dir.c
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/make/dir.c,v
retrieving revision 1.33
diff -u -r1.33 dir.c
--- dir.c	2002/02/03 20:08:30	1.33
+++ dir.c	2002/04/14 05:42:17
@@ -746,6 +746,10 @@
 {
     char *file;		/* the current filename to check */
 
+    /* not used */
+    (void) name;
+    (void) hasSlash;
+
     if (DEBUG(DIR)) {
 	printf("%s...", p->name);
     }
@@ -904,6 +908,9 @@
     char *name;
     char *cp;
 {
+
+	/* not used */
+	(void) hasSlash;
 
 	if (Hash_FindEntry (&dot->files, cp) != (Hash_Entry *)NULL) {
 	    if (DEBUG(DIR)) {
Index: job.c
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/make/job.c,v
retrieving revision 1.70
diff -u -r1.70 job.c
--- job.c	2002/03/18 13:32:36	1.70
+++ job.c	2002/04/14 05:42:19
@@ -425,6 +425,8 @@
 	 * Do nothing.  The mere fact that we've been called will cause
 	 * poll/select in Job_CatchOutput() to return early.
 	 */
+
+	(void) signo;
 }
 
 
@@ -446,6 +448,9 @@
 JobContinueSig(signo)
     int	    signo;	/* The signal number we've received */
 {
+    /* not used */
+    (void) signo;
+
     JobRestartJobs();
 }
 #endif
Index: main.c
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/make/main.c,v
retrieving revision 1.83
diff -u -r1.83 main.c
--- main.c	2002/03/14 16:08:39	1.83
+++ main.c	2002/04/14 05:42:20
@@ -972,6 +972,9 @@
 	char *name, *path = emalloc(len);
 	int setMAKEFILE;
 
+	/* Not used */
+	(void) q;
+
 	if (!strcmp(fname, "-")) {
 		Parse_File("(stdin)", stdin);
 		Var_Set("MAKEFILE", "", VAR_GLOBAL, 0);
@@ -1050,7 +1053,7 @@
     char *cp, **mp;
     int is_cmd, next_cmd;
     int i;
-    int n;
+    size_t n;
 
     if (Check_Cwd_Off)
 	return NULL;
Index: make.c
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/make/make.c,v
retrieving revision 1.49
diff -u -r1.49 make.c
--- make.c	2002/03/21 11:42:21	1.49
+++ make.c	2002/04/14 05:42:20
@@ -754,6 +754,9 @@
 {
     GNode	*cgn = (GNode *) cgnp;
 
+    /* not used */
+    (void) pgnp;
+
     cgn->type &= ~OP_MARK;
     return (0);
 }
Index: suff.c
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/make/suff.c,v
retrieving revision 1.38
diff -u -r1.38 suff.c
--- suff.c	2002/02/04 17:24:57	1.38
+++ suff.c	2002/04/14 05:42:21
@@ -862,7 +862,7 @@
 	return 1;
     }
 
-    if (target->type == OP_TRANSFORM)
+    if (target->type == (int) OP_TRANSFORM)	 /* XXX */
 	return 0;
 
     if ((ptr = strstr(target->name, gs->s->name)) == NULL ||
Index: targ.c
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/make/targ.c,v
retrieving revision 1.27
diff -u -r1.27 targ.c
--- targ.c	2002/03/20 18:10:31	1.27
+++ targ.c	2002/04/14 05:42:22
@@ -719,6 +719,10 @@
     ClientData   junk;
 {
     GNode	  *gn = (GNode *) gnp;
+
+    /* not used */
+    (void) junk;
+
     if (gn->type & OP_DOUBLEDEP)
 	Lst_ForEach (gn->cohorts, TargPropagateCohort, gnp);
     return (0);
Index: var.c
===================================================================
RCS file: /cvsroot/basesrc/usr.bin/make/var.c,v
retrieving revision 1.69
diff -u -r1.69 var.c
--- var.c	2002/03/21 01:24:44	1.69
+++ var.c	2002/04/14 05:42:23
@@ -642,6 +642,9 @@
 {
     register char *slash;
 
+    /* not used */
+    (void) ctx;
+
     slash = strrchr (word, '/');
     if (slash != (char *)NULL) {
 	if (addSpace) {
@@ -690,6 +693,9 @@
 {
     register char *slash;
 
+    /* not used */
+    (void) ctx;
+
     if (addSpace) {
 	Buf_AddByte (buf, (Byte)' ');
     }
@@ -730,6 +736,9 @@
 {
     register char *dot;
 
+    /* not used */
+    (void) ctx;
+
     dot = strrchr (word, '.');
     if (dot != (char *)NULL) {
 	if (addSpace) {
@@ -769,6 +778,9 @@
 {
     register char *dot;
 
+    /* not used */
+    (void) ctx;
+
     if (addSpace) {
 	Buf_AddByte (buf, (Byte)' ');
     }
@@ -809,6 +821,9 @@
     Buffer  	  buf;	    	/* Buffer in which to store it */
     ClientData    pattern; 	/* Pattern the word must match */
 {
+    /* not used */
+    (void) ctx;
+
     if (Str_Match(word, (char *) pattern)) {
 	if (addSpace) {
 	    Buf_AddByte(buf, (Byte)' ');
@@ -894,6 +909,9 @@
     Buffer  	  buf;	    	/* Buffer in which to store it */
     ClientData    pattern; 	/* Pattern the word must match */
 {
+    /* not used */
+    (void) ctx;
+
     if (!Str_Match(word, (char *) pattern)) {
 	if (addSpace) {
 	    Buf_AddByte(buf, (Byte)' ');
@@ -932,6 +950,9 @@
     register char 	*cp;	    /* General pointer */
     VarPattern	*pattern = (VarPattern *) patternp;
 
+    /* not used */
+    (void) ctx;
+
     wordLen = strlen(word);
     if ((pattern->flags & (VAR_SUB_ONE|VAR_SUB_MATCHED)) !=
 	(VAR_SUB_ONE|VAR_SUB_MATCHED)) {
@@ -1138,6 +1159,9 @@
     int added;
     int flags = 0;
 
+    /* not used */
+    (void) ctx;
+
 #define MAYBE_ADD_SPACE()		\
 	if (addSpace && !added)		\
 	    Buf_AddByte(buf, ' ');	\
@@ -1272,6 +1296,9 @@
     char *s;
     int slen;
 
+    /* not used */
+    (void) ctx;
+
     if (word && *word) {
         Var_Set(loop->tvar, word, loop->ctxt, VAR_NO_EXPORT);
         s = Var_Subst(NULL, loop->str, loop->ctxt, loop->err);
@@ -1999,8 +2026,8 @@
 	 */
 	*tstr++ = ':';
 	while (*tstr != endc) {
-	    char	*newStr;    /* New value to return */
-	    char	termc;	    /* Character which terminated scan */
+	    char	*newStr = NULL;   /* New value to return */
+	    char	termc = 0;	  /* Character which terminated scan */
 
 	    if (DEBUG(VAR)) {
 		printf("Applying :%c to \"%s\"\n", *tstr, str);
@@ -2011,7 +2038,7 @@
 		if (tstr[1] == '=' ||
 		    (tstr[2] == '=' &&
 		     (tstr[1] == '!' || tstr[1] == '+' || tstr[1] == '?'))) {
-		    GNode *v_ctxt;		/* context where v belongs */
+		    GNode *v_ctxt = NULL;	/* context where v belongs */
 		    char *emsg;
 		    VarPattern	pattern;
 		    int	how;

>Release-Note:
>Audit-Trail:
>Unformatted: