projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
doxygen docu added
[libfirm]
/
ir
/
debug
/
debugger.c
diff --git
a/ir/debug/debugger.c
b/ir/debug/debugger.c
index
b54ed77
..
9d84c95
100644
(file)
--- a/
ir/debug/debugger.c
+++ b/
ir/debug/debugger.c
@@
-42,18
+42,18
@@
#include "debug.h"
#ifdef _WIN32
#include "debug.h"
#ifdef _WIN32
-/*
*
Break into the debugger. The Win32 way. */
-
static
void firm_debug_break(void) {
+/* Break into the debugger. The Win32 way. */
+void firm_debug_break(void) {
DebugBreak();
}
#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64))
DebugBreak();
}
#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64))
-/*
*
Break into the debugger. The ia32/x86_64 way under GCC. */
-
static
void firm_debug_break(void) {
+/* Break into the debugger. The ia32/x86_64 way under GCC. */
+void firm_debug_break(void) {
__asm__ __volatile__("int3");
}
#else
__asm__ __volatile__("int3");
}
#else
-/*
*
Break into the debugger. Poor Unix way. */
-
static
void firm_debug_break(void) {
+/* Break into the debugger. Poor Unix way. */
+void firm_debug_break(void) {
raise(SIGINT);
}
#endif /* _WIN32 */
raise(SIGINT);
}
#endif /* _WIN32 */
@@
-143,13
+143,20
@@
static int is_active = 0;
/** hook the hook h with function fkt. */
#define HOOK(h, fkt) \
/** hook the hook h with function fkt. */
#define HOOK(h, fkt) \
- debugger_hooks[h].hook._##h = fkt; register_hook(h, &debugger_hooks[h])
+do { \
+ debugger_hooks[h].hook._##h = fkt; \
+ register_hook(h, &debugger_hooks[h]); \
+} while(0)
/** unhook the hook h */
/** unhook the hook h */
-#define UNHOOK(h) unregister_hook(h, &debugger_hooks[h])
+#define UNHOOK(h) \
+do { \
+ unregister_hook(h, &debugger_hooks[h]); \
+ debugger_hooks[h].hook._##h = NULL; \
+} while(0)
/** returns non-zero if a entry hook h is used */
/** returns non-zero if a entry hook h is used */
-#define IS_HOOKED(h) (debugger_hooks[h].
next
!= NULL)
+#define IS_HOOKED(h) (debugger_hooks[h].
hook._##h
!= NULL)
/* some macros needed to create the info string */
#define _DBG_VERSION(major, minor) #major "." #minor
/* some macros needed to create the info string */
#define _DBG_VERSION(major, minor) #major "." #minor
@@
-558,7
+565,8
@@
static void show_commands(void) {
".bp show all breakpoints\n"
".enable nr enable breakpoint nr\n"
".disable nr disable breakpoint nr\n"
".bp show all breakpoints\n"
".enable nr enable breakpoint nr\n"
".disable nr disable breakpoint nr\n"
- ".setmask name lvl sets the debug module name to level lvl\n"
+ ".setmask name msk sets the debug module name to mask msk\n"
+ ".setlvl name lvl sets the debug module name to level lvl\n"
".setoutfile name file redirects debug output of module name to file\n"
".help list all commands\n"
);
".setoutfile name file redirects debug output of module name to file\n"
".help list all commands\n"
);
@@
-686,6
+694,8
@@
void firm_debug(const char *cmd) {
bp_activate(bp, 0);
else if (sscanf(cmd, ".setmask %s %u\n", name, &lvl) == 2)
set_dbg_level(name, lvl);
bp_activate(bp, 0);
else if (sscanf(cmd, ".setmask %s %u\n", name, &lvl) == 2)
set_dbg_level(name, lvl);
+ else if (sscanf(cmd, ".setlvl %s %u\n", name, &lvl) == 2)
+ set_dbg_level(name, (1 << lvl) - 1);
else if (sscanf(cmd, ".setoutfile %s %s\n", name, fname) == 2)
set_dbg_outfile(name, fname);
else {
else if (sscanf(cmd, ".setoutfile %s %s\n", name, fname) == 2)
set_dbg_outfile(name, fname);
else {
@@
-699,7
+709,7
@@
void firm_init_debugger(void)
char *env;
bp_numbers = new_set(cmp_nr_bp, 8);
char *env;
bp_numbers = new_set(cmp_nr_bp, 8);
- bp_idents
= new_set(cmp_ident_bp, 8);
+ bp_idents = new_set(cmp_ident_bp, 8);
env = getenv("FIRMDBG");
env = getenv("FIRMDBG");
@@
-787,7
+797,11
@@
static int _firm_only_that_you_can_compile_with_NDEBUG_defined;
*
* Disables breakpoint nr.
*
*
* Disables breakpoint nr.
*
- * @b .setmask name lvl
+ * @b .setmask name msk
+ *
+ * Sets the debug module name to mask msk.
+ *
+ * @b .setlvl name lvl
*
* Sets the debug module name to level lvl.
*
*
* Sets the debug module name to level lvl.
*