mtd: add option to install mtd integrity test

The mtd tests have proven very useful in testing both flash stability
and JFFS2 changes. Adding an option to install the integrity test.

Signed-off-by: Yugendra Sai Babu Nadupuru <yugendra.sai.babu.nadupuru@rockwellcollins.com>
Signed-off-by: Matt Weber <matthew.weber@rockwellcollins.com>
[Thomas: rename Config.in option, misc improvements in .mk file, add
patch to fix build with uClibc/musl.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Yugendra Sai Babu Nadupuru 2016-07-14 16:03:47 -05:00 committed by Thomas Petazzoni
parent 57b504f7f2
commit 77f23c4d66
3 changed files with 79 additions and 0 deletions

View File

@ -0,0 +1,62 @@
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

View File

@ -159,4 +159,9 @@ config BR2_PACKAGE_MTD_UBIBLOCK
bool "ubiblock"
default y
config BR2_PACKAGE_MTD_INTEGCK
bool "integck"
help
Install the integck test program.
endif

View File

@ -97,11 +97,22 @@ MTD_TARGETS_UBI_$(BR2_PACKAGE_MTD_UBIBLOCK) += ubiblock
MTD_TARGETS_y += $(addprefix ubi-utils/,$(MTD_TARGETS_UBI_y))
MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSUBIFS) += mkfs.ubifs/mkfs.ubifs
ifeq ($(BR2_PACKAGE_MTD_INTEGCK),y)
define MTD_BUILD_INTEGCK
$(TARGET_CONFIGURE_OPTS) $(MAKE1) CROSS=$(TARGET_CROSS) \
BUILDDIR=$(@D) $(MTD_MAKE_OPTS) -C $(@D)/tests/fs-tests all
endef
define MTD_INSTALL_INTEGCK
$(INSTALL) -D -m 755 $(@D)/tests/fs-tests/integrity/integck $(TARGET_DIR)/usr/sbin/integck
endef
endif
define MTD_BUILD_CMDS
$(TARGET_CONFIGURE_OPTS) $(MAKE1) CROSS=$(TARGET_CROSS) \
BUILDDIR=$(@D) $(MTD_MAKE_OPTS) -C $(@D) \
$(addprefix $(@D)/,$(MTD_TARGETS_y)) \
$(addprefix $(@D)/,$(MTD_STAGING_y))
$(MTD_BUILD_INTEGCK)
endef
define MTD_INSTALL_STAGING_CMDS
@ -116,6 +127,7 @@ define MTD_INSTALL_TARGET_CMDS
for f in $(MTD_TARGETS_y) ; do \
$(INSTALL) -D -m 0755 $(@D)/$$f $(TARGET_DIR)/usr/sbin/$${f##*/} ; \
done
$(MTD_INSTALL_INTEGCK)
endef
$(eval $(generic-package))