[PATCH mtd-utils] integck: only use execinfo.h when INTEGCK_DEBUG is enabled

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Sat Jul 16 02:48:41 PDT 2016


Guard the usage of execinfo.h by INTEGCK_DEBUG so that by defaut,
integck builds properly on systems without <execinfo.h> (uClibc and
musl based systems). As stated in the code, the backtrace()
functionality of <execinfo.h> will anyway only work properly when
INTEGCK_DEBUG is defined (it makes all functions non-static, which is
needed for backtrace to provide some useful information).

Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
---
 tests/fs-tests/integrity/integck.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c
index 8badd1f..6ef817e 100644
--- a/tests/fs-tests/integrity/integck.c
+++ b/tests/fs-tests/integrity/integck.c
@@ -31,7 +31,9 @@
 #include <getopt.h>
 #include <assert.h>
 #include <mntent.h>
+#ifdef INTEGCK_DEBUG
 #include <execinfo.h>
+#endif
 #include <bits/stdio_lim.h>
 #include <sys/mman.h>
 #include <sys/vfs.h>
@@ -248,14 +250,18 @@ static char *random_name_buf;
 static void check_failed(const char *cond, const char *func, const char *file,
 			 int line)
 {
-	int error = errno, count;
+	int error = errno;
+#ifdef INTEGCK_DEBUG
+	int count;
 	void *addresses[128];
+#endif
 
 	fflush(stdout);
 	fflush(stderr);
 	errmsg("condition '%s' failed in %s() at %s:%d",
 	       cond, func, file, line);
 	normsg("error %d (%s)", error, strerror(error));
+#ifdef INTEGCK_DEBUG
 	/*
 	 * Note, to make this work well you need:
 	 * 1. Make all functions non-static - add "#define static'
@@ -264,6 +270,7 @@ static void check_failed(const char *cond, const char *func, const char *file,
 	 */
 	count = backtrace(addresses, 128);
 	backtrace_symbols_fd(addresses, count, fileno(stdout));
+#endif
 	exit(EXIT_FAILURE);
 }
 
-- 
2.7.4




More information about the linux-mtd mailing list