Reduce warnings, adjust format strings in util/led
Calls like `debug("something\n", 0, 0, 0, 0)` cause clang warnings,
because debug() is a macro that passes its arguments to printf(), and
clang warns about extra 0s to printf().  Silence the warnings by
hiding the printf() in a new function do_debug().  The code still
passes extra 0s to printf(), but clang can't warn.
Macros debug() and verbose() should use C99 __VA_ARGS__, so they don't
require the extra 0s; but ACK doesn't use __VA_ARGS__ yet.
Adjust some format strings for debug() or fatal(), or cast their
arguments, to match their types.  I don't know whether uint32_t is
unsigned int or unsigned long, so I cast it to unsigned long, and
print it with "%lx".
In util/led/sym.c, #include "save.h" to declare savechar(), and use
parentheses to silence a clang warning in hash().
			
			
This commit is contained in:
		
							parent
							
								
									17bc9cdef7
								
							
						
					
					
						commit
						3f3bf1e164
					
				
					 6 changed files with 28 additions and 12 deletions
				
			
		|  | @ -7,6 +7,7 @@ | |||
| #ifndef __DEBUG_H_INCLUDED__ | ||||
| #define __DEBUG_H_INCLUDED__ | ||||
| 
 | ||||
| #include "error.h" | ||||
| 
 | ||||
| #ifdef NDEBUG | ||||
| 
 | ||||
|  | @ -15,13 +16,11 @@ | |||
| #else | ||||
| extern int DEB; | ||||
| 
 | ||||
| #define debug(s, a1, a2, a3, a4)	(DEB && printf(s, a1, a2, a3, a4)) | ||||
| #define debug(s, a1, a2, a3, a4)	(DEB && do_debug(s, a1, a2, a3, a4)) | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| extern int Verbose; | ||||
| #define verbose(s, a1, a2, a3, a4)	(Verbose && do_verbose(s, a1, a2, a3, a4)) | ||||
| 
 | ||||
| extern void fatal(char* format, ...); | ||||
| 
 | ||||
| #endif /* __DEBUG_H_INCLUDED__ */ | ||||
|  |  | |||
|  | @ -60,6 +60,17 @@ void error(char *format, ...) | |||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| /* VARARGS1 */ | ||||
| int do_debug(char *format, ...) | ||||
| { | ||||
| 	/* printf() and return 1 */ | ||||
| 	va_list ap; | ||||
| 	va_start(ap, format); | ||||
| 	vprintf(format, ap); | ||||
| 	va_end(ap); | ||||
| 	return 1; | ||||
| } | ||||
| 
 | ||||
| /* VARARGS1 */ | ||||
| int do_verbose(char *format, ...) | ||||
| { | ||||
|  |  | |||
|  | @ -13,6 +13,7 @@ void stop(void); | |||
| void fatal(char *format, ...); | ||||
| void warning(char *format, ...); | ||||
| void error(char *format, ...); | ||||
| int do_debug(char *format, ...); | ||||
| int do_verbose(char *format, ...); | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -580,7 +580,7 @@ void addbase(struct outname *name) | |||
| 		address((name->on_type & S_EXT) ? ALLOGCHR : ALLOLCHR, | ||||
| 			(ind_t)name->on_foff | ||||
| 		), | ||||
| 		name->on_type, name->on_valu, 0 | ||||
| 		name->on_type, (unsigned long)name->on_valu, 0 | ||||
| 	); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -416,7 +416,8 @@ static void put_mips_valu(char* addr, uint32_t value) | |||
| 
 | ||||
| 	/* The two bottom zero bits are implicit. */ | ||||
| 	if (value & 3) | ||||
| 		fatal("invalid MIPS relocation value 0x%x", value); | ||||
| 		fatal("invalid MIPS relocation value 0x%lx", | ||||
| 		      (unsigned long)value); | ||||
| 	value >>= 2; | ||||
| 
 | ||||
| 	switch (opcode >> 26) | ||||
|  | @ -560,7 +561,8 @@ void relocate(struct outhead *head, char* emit, struct outname names[], struct o | |||
| 	 * Pick up previous value at location to be relocated. | ||||
| 	 */ | ||||
| 	valu = getvalu(emit + (relo->or_addr - off), relo->or_type); | ||||
| 	debug("read relocation from 0x%08x type 0x%x value 0x%08x symbol %d\n", realaddress, relo->or_type, valu, relo->or_nami); | ||||
| 	debug("read relocation from 0x%08lx type 0x%x value 0x%08lx symbol %u\n", | ||||
| 	      (unsigned long)realaddress, relo->or_type, valu, relo->or_nami); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Or_nami is an index in the name table of the considered module. | ||||
|  | @ -595,7 +597,8 @@ void relocate(struct outhead *head, char* emit, struct outname names[], struct o | |||
| 	/*
 | ||||
| 	 * Now put the value back. | ||||
| 	 */ | ||||
| 	debug("written fixed up relocation to 0x%08x type 0x%x value 0x%08x\n", realaddress, relo->or_type, valu, 0); | ||||
| 	debug("written fixed up relocation to 0x%08lx type 0x%x value 0x%08lx\n", | ||||
| 	      (unsigned long)realaddress, relo->or_type, valu, 0); | ||||
| 	putvalu(valu, emit + (relo->or_addr - off), relo->or_type); | ||||
| 
 | ||||
| 	/*
 | ||||
|  |  | |||
|  | @ -19,6 +19,7 @@ static char rcsid[] = "$Id$"; | |||
| #include "error.h" | ||||
| #include "memory.h" | ||||
| #include "debug.h" | ||||
| #include "save.h" | ||||
| #include "sym.h" | ||||
| 
 | ||||
| /*
 | ||||
|  | @ -66,7 +67,8 @@ struct outname *searchname(char *string, int hashval) | |||
| 	register struct symbol	*sym; | ||||
| 
 | ||||
| 	symindex = hashtable[hashval]; | ||||
| 	debug("looking for %s %d %ld:", string, hashval, hashtable[hashval], 0); | ||||
| 	debug("looking for %s %d %z:", string, hashval, | ||||
| 	      (size_t)hashtable[hashval], 0); | ||||
| 	while (symindex != BADOFF) { | ||||
| 		sym = (struct symbol *)address(ALLOSYMB, symindex); | ||||
| 		name = (struct outname *)address(ALLOGLOB, sym->sy_name); | ||||
|  | @ -76,7 +78,8 @@ struct outname *searchname(char *string, int hashval) | |||
| 		while (*rcp == *namestring++) | ||||
| 			if (*rcp++ == '\0') { | ||||
| 				debug("found %x, %x, %lx\n", | ||||
| 					name->on_type, name->on_desc, name->on_valu, 0); | ||||
| 				      name->on_type, name->on_desc, | ||||
| 				      (unsigned long)name->on_valu, 0); | ||||
| 				return name; | ||||
| 			} | ||||
| 		symindex = sym->sy_next; | ||||
|  | @ -99,12 +102,11 @@ void entername(struct outname* name, int hashval) | |||
| 	ind_t		namindex; | ||||
| 	register struct symbol	*sym; | ||||
| 	struct outname	*newname; | ||||
| 	extern ind_t	savechar(); | ||||
| 
 | ||||
| 	debug("entername %s %d %x %x", modulptr((ind_t)name->on_foff), hashval, name->on_type, name->on_desc); | ||||
| 	savindex = savechar(ALLOGCHR, (ind_t)name->on_foff); | ||||
| 	symindex = hard_alloc(ALLOSYMB, (long)sizeof(struct symbol)); | ||||
| 	debug("; %ld\n", symindex, 0, 0, 0); | ||||
| 	debug("; %z\n", (size_t)symindex, 0, 0, 0); | ||||
| 	namindex = hard_alloc(ALLOGLOB, (long)sizeof(struct outname)); | ||||
| 	if (savindex == BADOFF || symindex == BADOFF || namindex == BADOFF) | ||||
| 		fatal("symbol table overflow"); | ||||
|  | @ -137,7 +139,7 @@ int hash(register char* p) | |||
| 	register unsigned short	h = 0; | ||||
| 	register int		c; | ||||
| 
 | ||||
| 	while (c = *p++) { | ||||
| 	while ((c = *p++) != '\0') { | ||||
| 		h <<= 2; | ||||
| 		h += c; | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue