X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Fdebug.c;h=528d5c10b77c0481dcf572cfc622249d82889aa8;hb=86d52903da8846456936ce528f72a0d738861a73;hp=6e5d626349440578a1eb0b7e5c32571cb0fb7621;hpb=d65c345daf2de0dccba23c45f3cf9b3f4f71cc36;p=libfirm diff --git a/ir/common/debug.c b/ir/common/debug.c index 6e5d62634..528d5c10b 100644 --- a/ir/common/debug.c +++ b/ir/common/debug.c @@ -1,12 +1,31 @@ -/** - * Debug facility. - * @author Michael Beck, Sebastian Hack - * @date 15.12.2004 +/* + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. */ -#ifdef HAVE_CONFIG_H +/** + * @file + * @brief Debug facility. + * @author Michael Beck, Sebastian Hack + * @date 15.12.2004 + */ #include "config.h" -#endif + +#ifdef DEBUG_libfirm #include #include @@ -18,47 +37,27 @@ #include "obst.h" #include "set.h" -#ifdef WITH_LIBCORE - -#include "irargs_t.h" - -static void firm_dbg_default_printer(struct obstack *obst, const char *fmt, va_list args) -{ - static lc_arg_env_t *env = NULL; - - if(!env) - env = firm_get_arg_env(); - - lc_evoprintf(env, obst, fmt, args); - -} - -firm_dbg_module_t *firm_dbg_register(const char *name) -{ - return lc_dbg_register_with_printer(name, firm_dbg_default_printer); -} - -#else - static struct obstack dbg_obst; static set *module_set; /** * A debug module. */ -struct _firm_dbg_module_t { +struct firm_dbg_module_t { unsigned mask; const char *name; FILE *file; }; /** - * Compares two modules by comparing it's names + * Compares two modules by comparing their names */ static int module_cmp(const void *p1, const void *p2, size_t size) { - const firm_dbg_module_t *m1 = p1; - const firm_dbg_module_t *m2 = p2; + const firm_dbg_module_t *m1 = (const firm_dbg_module_t*)p1; + const firm_dbg_module_t *m2 = (const firm_dbg_module_t*)p2; + (void) size; + return strcmp(m1->name, m2->name); } @@ -78,10 +77,10 @@ firm_dbg_module_t *firm_dbg_register(const char *name) mod.name = name; mod.file = stderr; - if(!module_set) + if (!module_set) firm_dbg_init(); - return set_insert(module_set, &mod, sizeof(mod), HASH_STR(name, strlen(name))); + return (firm_dbg_module_t*)set_insert(module_set, &mod, sizeof(mod), hash_str(name)); } void firm_dbg_set_mask(firm_dbg_module_t *module, unsigned mask) @@ -102,7 +101,7 @@ void firm_dbg_set_file(firm_dbg_module_t *module, FILE *file) /** * A message info: a pair of debug handle and message */ -typedef struct _msg_info_t { +typedef struct msg_info_t { const char *msg; const firm_dbg_module_t *mod; } msg_info_t; @@ -114,13 +113,13 @@ typedef struct _msg_info_t { static void *make_msg_info(const firm_dbg_module_t *mod, const char *fmt, va_list args) { static const char msg_header[] = "%s(%d) %s: "; - msg_info_t *res = obstack_alloc(&dbg_obst, sizeof(*res)); + msg_info_t *res = OALLOC(&dbg_obst, msg_info_t); obstack_grow(&dbg_obst, msg_header, sizeof(msg_header) - 1); ir_obst_vprintf(&dbg_obst, fmt, args); obstack_1grow(&dbg_obst, '\0'); - res->msg = obstack_finish(&dbg_obst); + res->msg = (const char*)obstack_finish(&dbg_obst); res->mod = mod; return res; } @@ -129,7 +128,7 @@ void *_firm_dbg_make_msg(const firm_dbg_module_t *mod, unsigned mask, const char { void *res = NULL; - if(mask == 0 || (mod->mask & mask)) { + if (mask == 0 || (mod->mask & mask)) { va_list args; va_start(args, fmt); res = make_msg_info(mod, fmt, args); @@ -141,8 +140,8 @@ void *_firm_dbg_make_msg(const firm_dbg_module_t *mod, unsigned mask, const char void _firm_dbg_print_msg(const char *filename, int line, const char *func, void *mi_ptr) { - msg_info_t *mi = mi_ptr; - if(mi) { + msg_info_t *mi = (msg_info_t*)mi_ptr; + if (mi) { fprintf(mi->mod->file, mi->msg, filename, line, func); obstack_free(&dbg_obst, mi); } @@ -150,17 +149,22 @@ void _firm_dbg_print_msg(const char *filename, int line, const char *func, void void _firm_dbg_print(const firm_dbg_module_t *mod, unsigned mask, const char *fmt, ...) { - if(mask == 0 || (mod->mask & mask)) { + if (mask == 0 || (mod->mask & mask)) { va_list args; char *res; va_start(args, fmt); ir_obst_vprintf(&dbg_obst, fmt, args); obstack_1grow(&dbg_obst, '\0'); - res = obstack_finish(&dbg_obst); - fprintf(mod->file, res); + res = (char*)obstack_finish(&dbg_obst); + fprintf(mod->file, "%s", res); obstack_free(&dbg_obst, res); va_end(args); } } -#endif /* WITH_LIBCORE */ +#else /* DEBUG_libfirm */ + +/* some picky compiler don't allow empty files */ +static int __attribute__((unused)) dummy; + +#endif /* DEBUG_libfirm */