summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2011-04-22 17:40:52 +0300
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2011-04-24 19:12:30 +0300
commit548a96fa716666d0bb6095f1f38aa167c47215cd (patch)
treea0c095d149b6b4e1aff1971b007b47de8a527c35 /tests
parenta07624b1a909999aa7b053749eb2ed3f1a4da718 (diff)
fs-tests: integck: add debug compilation target
I often need to use gdb to debug integck, or sometimes even attach already running integck. But when it is compiled with optimizations, it is nearly impossible to use gdb. Introduce 'debug' target to compile integck without optimizations. Additionally, to make the stack backtraces work, add a dirty hack to integck.c to remove all the static keywords - this turns static functions to non-static and makes them appear in stack backtraces. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/fs-tests/integrity/Makefile5
-rw-r--r--tests/fs-tests/integrity/integck.c10
2 files changed, 15 insertions, 0 deletions
diff --git a/tests/fs-tests/integrity/Makefile b/tests/fs-tests/integrity/Makefile
index 976c3ce..2cdd470 100644
--- a/tests/fs-tests/integrity/Makefile
+++ b/tests/fs-tests/integrity/Makefile
@@ -13,5 +13,10 @@ TARGETS = integck
all: $(TARGETS)
+# Disable optimizations to make it possible to use gdb comfortably
+# Use -rdynamic to have stack backtraces
+debug:
+ gcc $(CFLAGS) -O0 -D INTEGCK_DEBUG -rdynamic integck.c -o integck
+
clean:
rm -f *.o $(TARGETS)
diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c
index f09cfaf..fbd6cc5 100644
--- a/tests/fs-tests/integrity/integck.c
+++ b/tests/fs-tests/integrity/integck.c
@@ -41,6 +41,16 @@
#define PROGRAM_NAME "integck"
#include "common.h"
+/*
+ * WARNING! This is a dirty hack! The symbols for static functions are not
+ * printed in the stack backtrace. So we remove ths 'static' keyword using the
+ * pre-processor. This is really error-prone because this won't work if, e.g.,
+ * local static variables were used.
+ */
+#ifdef INTEGCK_DEBUG
+#define static
+#endif
+
#define MAX_RANDOM_SEED 10000000
/* The pattern for the top directory where we run the test */