X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Fdebug.c;h=efbe37464d6f0150bfb436629a2fb95c3e3ff4b0;hb=0887d4a59b29ff9c398d2961dce95977fd7efe9c;hp=37f7432c917b1b0dd7d82f65923f6179f196c062;hpb=c7b5bcc8fc514065e1815df50dccd40591d2bc8e;p=libfirm diff --git a/ir/common/debug.c b/ir/common/debug.c index 37f7432c9..efbe37464 100644 --- a/ir/common/debug.c +++ b/ir/common/debug.c @@ -1,13 +1,37 @@ -/** - * 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. */ +/** + * @file + * @brief Debug facility. + * @author Michael Beck, Sebastian Hack + * @date 15.12.2004 + * @version $Id$ + */ #ifdef HAVE_CONFIG_H #include "config.h" #endif +#include "firm_config.h" + +#ifdef DEBUG_libfirm + #include #include @@ -18,44 +42,33 @@ #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 { unsigned mask; const char *name; FILE *file; }; +/** + * Compares two modules by comparing it's 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; + (void) size; + return strcmp(m1->name, m2->name); } +/** + * initialize the debug module + */ static void firm_dbg_init(void) { obstack_init(&dbg_obst); @@ -90,11 +103,18 @@ void firm_dbg_set_file(firm_dbg_module_t *module, FILE *file) module->file = file; } +/** + * A message info: a pair of debug handle and message + */ typedef struct _msg_info_t { const char *msg; const firm_dbg_module_t *mod; } msg_info_t; +/** + * Formats a message given by a printf-like format and a va_list argument, + * puts the test on an obstack and return a msg_info. + */ 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: "; @@ -147,4 +167,9 @@ void _firm_dbg_print(const firm_dbg_module_t *mod, unsigned mask, const char *fm } } -#endif /* WITH_LIBCORE */ +#else /* DEBUG_libfirm */ + +/* some picky compiler don't allow empty files */ +static int __attribute__((unused)) dummy; + +#endif /* DEBUG_libfirm */