63 lines
2.0 KiB
Diff
63 lines
2.0 KiB
Diff
|
From 30f0cd91b21dbc5d593d61ae44875ad0cb53cb4d Mon Sep 17 00:00:00 2001
|
||
|
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||
|
Date: Sat, 16 Jul 2016 11:27:06 +0200
|
||
|
Subject: [PATCH] integck: only use execinfo.h when INTEGCK_DEBUG is enabled
|
||
|
|
||
|
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@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
|
||
|
|