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
|
@ -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…
Reference in a new issue