mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-01-01 13:58:06 +00:00
ubi-utils-klibc: update from v. 1.5.2 to 2.0.2
Update to new version and drop accepted patches. Use autotools and packageconfig (for xattrs). Signed-off-by: Andrea Adami <andrea.adami@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
parent
ef537dcfef
commit
9f38fa5ae1
|
|
@ -1,87 +0,0 @@
|
|||
From 1c989e4c36d0bf76ab444f984bc73b98eeacd03f Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Sun, 29 Jun 2014 00:32:29 +0200
|
||||
Subject: [PATCH 1/9] Makefile: build ubi-utils only
|
||||
|
||||
We build all the static ubi-utils but actually only ubiattach is needed in
|
||||
a minimalistic initramfs for the mount of ubi volumes.
|
||||
|
||||
More fixes are needed in order to build the full mtd-utils.
|
||||
The first issue is:
|
||||
|
||||
| mkfs.jffs2.c:64:20: fatal error: libgen.h: No such file or directory
|
||||
| #include <libgen.h>
|
||||
|
||||
Removing the include then the second error is:
|
||||
|
||||
| mkfs.jffs2.c:1570:22: error: '_SC_PAGESIZE' undeclared
|
||||
| (first use in this function)
|
||||
| page_size = sysconf(_SC_PAGESIZE);
|
||||
|
||||
Upstream-Status: Inappropriate [embedded specific]
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
Makefile | 26 ++------------------------
|
||||
1 file changed, 2 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 3ce8587..8b79f71 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -16,28 +16,11 @@ endif
|
||||
|
||||
TESTS = tests
|
||||
|
||||
-MTD_BINS = \
|
||||
- ftl_format flash_erase nanddump doc_loadbios \
|
||||
- ftl_check mkfs.jffs2 flash_lock flash_unlock \
|
||||
- flash_otp_info flash_otp_dump flash_otp_lock flash_otp_write \
|
||||
- mtd_debug flashcp nandwrite nandtest mtdpart \
|
||||
- jffs2dump \
|
||||
- nftldump nftl_format docfdisk \
|
||||
- rfddump rfdformat \
|
||||
- serve_image recv_image \
|
||||
- sumtool jffs2reader
|
||||
UBI_BINS = \
|
||||
ubiupdatevol ubimkvol ubirmvol ubicrc32 ubinfo ubiattach \
|
||||
ubidetach ubinize ubiformat ubirename mtdinfo ubirsvol ubiblock
|
||||
|
||||
-BINS = $(MTD_BINS)
|
||||
-BINS += mkfs.ubifs/mkfs.ubifs
|
||||
-BINS += $(addprefix ubi-utils/,$(UBI_BINS))
|
||||
-SCRIPTS = flash_eraseall
|
||||
-
|
||||
-TARGETS = $(BINS)
|
||||
-TARGETS += lib/libmtd.a
|
||||
-TARGETS += ubi-utils/libubi.a
|
||||
+BINS = $(addprefix ubi-utils/,$(UBI_BINS))
|
||||
|
||||
OBJDEPS = $(BUILDDIR)/include/version.h
|
||||
|
||||
@@ -61,12 +44,9 @@ endif
|
||||
rm -f $(BUILDDIR)/include/version.h
|
||||
$(MAKE) -C $(TESTS) clean
|
||||
|
||||
-install:: $(addprefix $(BUILDDIR)/,${BINS}) ${SCRIPTS}
|
||||
+install:: $(addprefix $(BUILDDIR)/,${BINS})
|
||||
mkdir -p ${DESTDIR}/${SBINDIR}
|
||||
install -m 0755 $^ ${DESTDIR}/${SBINDIR}/
|
||||
- mkdir -p ${DESTDIR}/${MANDIR}/man1
|
||||
- install -m 0644 mkfs.jffs2.1 ${DESTDIR}/${MANDIR}/man1/
|
||||
- -gzip -9f ${DESTDIR}/${MANDIR}/man1/*.1
|
||||
|
||||
tests::
|
||||
$(MAKE) -C $(TESTS)
|
||||
@@ -91,8 +71,6 @@ LDLIBS_mkfs.jffs2 = -lz $(LZOLDLIBS)
|
||||
LDFLAGS_jffs2reader = $(ZLIBLDFLAGS) $(LZOLDFLAGS)
|
||||
LDLIBS_jffs2reader = -lz $(LZOLDLIBS)
|
||||
|
||||
-$(foreach v,$(MTD_BINS),$(eval $(call mkdep,,$(v))))
|
||||
-
|
||||
#
|
||||
# Common libmtd
|
||||
#
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
From 89c76bbe82a2029a25b0654eb0a1d0b22d6e6877 Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Sun, 29 Jun 2014 00:37:28 +0200
|
||||
Subject: [PATCH 2/9] common.mk: for klibc $(CC) is klcc
|
||||
|
||||
Do not hardcode: assign the value to the variable if it is not already defined.
|
||||
|
||||
Upstream-Status: Submitted
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
common.mk | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/common.mk b/common.mk
|
||||
index ba87377..126d11a 100644
|
||||
--- a/common.mk
|
||||
+++ b/common.mk
|
||||
@@ -1,4 +1,4 @@
|
||||
-CC := $(CROSS)gcc
|
||||
+CC ?= $(CROSS)gcc
|
||||
AR := $(CROSS)ar
|
||||
RANLIB := $(CROSS)ranlib
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
From fecbb7056d621a30f7106e67f5fe209763571b70 Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Sun, 29 Jun 2014 00:40:15 +0200
|
||||
Subject: [PATCH 3/9] libubi.c: add klibc specific fixes for ioctl
|
||||
|
||||
First issue is that ioctl() in klibc doesn't expect a constant as arg3.
|
||||
Second issue is that arg3 in klibc ioctl() implementation is not optional.
|
||||
|
||||
Fixes:
|
||||
|
||||
| ubi-utils/libubi.c: In function 'do_attach':
|
||||
| ubi-utils/libubi.c:698:8: warning: passing argument 3 of 'ioctl' discards
|
||||
| 'const' qualifier from pointer target type
|
||||
| ret = ioctl(fd, UBI_IOCATT, r);
|
||||
| ^
|
||||
| In file included from ubi-utils/libubi.c:32:0:
|
||||
| .../lib/klibc/include/sys/ioctl.h:15:14: note: expected 'void *' but argument
|
||||
| is of type 'const struct ubi_attach_req *'
|
||||
| __extern int ioctl(int, int, void *);
|
||||
| ^
|
||||
|
||||
| ubi-utils/libubi.c: In function 'ubi_vol_block_create':
|
||||
| ubi-utils/libubi.c:1118:9: error: too few arguments to function 'ioctl'
|
||||
| return ioctl(fd, UBI_IOCVOLCRBLK);
|
||||
| ^
|
||||
| In file included from ubi-utils/libubi.c:32:0:
|
||||
| .../lib/klibc/include/sys/ioctl.h:15:14: note: declared here
|
||||
| __extern int ioctl(int, int, void *);
|
||||
| ^
|
||||
| ubi-utils/libubi.c: In function 'ubi_vol_block_remove':
|
||||
| ubi-utils/libubi.c:1123:9: error: too few arguments to function 'ioctl'
|
||||
| return ioctl(fd, UBI_IOCVOLRMBLK);
|
||||
| ^
|
||||
| In file included from ubi-utils/libubi.c:32:0:
|
||||
| .../usr/lib/klibc/include/sys/ioctl.h:15:14: note: declared here
|
||||
| __extern int ioctl(int, int, void *);
|
||||
| ^
|
||||
|
||||
Upstream-Status: Accepted
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
ubi-utils/libubi.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/ubi-utils/libubi.c b/ubi-utils/libubi.c
|
||||
index 97c0434..2b49833 100644
|
||||
--- a/ubi-utils/libubi.c
|
||||
+++ b/ubi-utils/libubi.c
|
||||
@@ -687,7 +687,7 @@ void libubi_close(libubi_t desc)
|
||||
* success and %-1 in case of failure. @r->ubi_num contains newly created UBI
|
||||
* device number.
|
||||
*/
|
||||
-static int do_attach(const char *node, const struct ubi_attach_req *r)
|
||||
+static int do_attach(const char *node, struct ubi_attach_req *r)
|
||||
{
|
||||
int fd, ret;
|
||||
|
||||
@@ -1115,12 +1115,12 @@ int ubi_rsvol(libubi_t desc, const char *node, int vol_id, long long bytes)
|
||||
|
||||
int ubi_vol_block_create(int fd)
|
||||
{
|
||||
- return ioctl(fd, UBI_IOCVOLCRBLK);
|
||||
+ return ioctl(fd, UBI_IOCVOLCRBLK, NULL);
|
||||
}
|
||||
|
||||
int ubi_vol_block_remove(int fd)
|
||||
{
|
||||
- return ioctl(fd, UBI_IOCVOLRMBLK);
|
||||
+ return ioctl(fd, UBI_IOCVOLRMBLK, NULL);
|
||||
}
|
||||
|
||||
int ubi_update_start(libubi_t desc, int fd, long long bytes)
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
From b668cb75cb7e72ff92055209130d4cd4b3cacbdb Mon Sep 17 00:00:00 2001
|
||||
From: Thorsten Glaser <tg@mirbsd.org>
|
||||
Date: Fri, 20 Jun 2014 10:56:27 +0000
|
||||
Subject: [PATCH 4/9] Restore compatibility to dietlibc, klibc, musl libc after
|
||||
commit 4f1b108
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Each C library has their own way to define off_t, and the <features.h>
|
||||
header is nonstandard and specific to the GNU libc and those that clone
|
||||
it (uClibc). Fefe’s dietlibc uses different flags, and klibc always uses
|
||||
a 64-bit off_t (like the BSDs); musl libc cannot be recognised using cpp
|
||||
instructions, so we assume 64 bit there (and on unknown C libraries) and
|
||||
leave it to the user to submit a follow-up fix if we guess wrong. I also
|
||||
added a static assertion to verify the 64 bit guess is correct.
|
||||
|
||||
It would be really better using a configure script for this instead.
|
||||
|
||||
Fixes:
|
||||
| CC lib/libmtd.o
|
||||
| In file included from ubi-utils/ubiutils-common.c:35:0:
|
||||
| ./include/common.h:29:22: fatal error: features.h: No such file or directory
|
||||
| #include <features.h>
|
||||
| ^
|
||||
| compilation terminated.
|
||||
|
||||
Upstream-Status: Submitted
|
||||
|
||||
Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
include/common.h | 24 ++++++++++++++++++++++++
|
||||
1 file changed, 24 insertions(+)
|
||||
|
||||
diff --git a/include/common.h b/include/common.h
|
||||
index fb0ca83..5a20964 100644
|
||||
--- a/include/common.h
|
||||
+++ b/include/common.h
|
||||
@@ -26,7 +26,9 @@
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
+#if defined(__GLIBC__) || defined(__UCLIBC__)
|
||||
#include <features.h>
|
||||
+#endif
|
||||
#include <inttypes.h>
|
||||
#include "version.h"
|
||||
|
||||
@@ -67,6 +69,21 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* define a print format specifier for off_t */
|
||||
+#if defined(__KLIBC__)
|
||||
+/* always 64 bit on klibc */
|
||||
+#define PRIxoff_t PRIx64
|
||||
+#define PRIdoff_t PRId64
|
||||
+#elif defined(__dietlibc__)
|
||||
+/* depends on compiler flags on dietlibc */
|
||||
+#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
|
||||
+#define PRIxoff_t PRIx64
|
||||
+#define PRIdoff_t PRId64
|
||||
+#else
|
||||
+#define PRIxoff_t "l"PRIx32
|
||||
+#define PRIdoff_t "l"PRId32
|
||||
+#endif
|
||||
+#elif defined(__GLIBC__) || defined(__UCLIBC__)
|
||||
+/* depends on compiler flags on glibc and uClibc */
|
||||
#ifdef __USE_FILE_OFFSET64
|
||||
#define PRIxoff_t PRIx64
|
||||
#define PRIdoff_t PRId64
|
||||
@@ -74,6 +91,13 @@ extern "C" {
|
||||
#define PRIxoff_t "l"PRIx32
|
||||
#define PRIdoff_t "l"PRId32
|
||||
#endif
|
||||
+#else
|
||||
+/* unknown libc or musl */
|
||||
+#define PRIxoff_t PRIx64
|
||||
+#define PRIdoff_t PRId64
|
||||
+/* verify our guess of 64 bit is correct */
|
||||
+static char __PRIxoff_t_static_assert[sizeof(off_t) == 8 ? 1 : -1];
|
||||
+#endif
|
||||
|
||||
/* Verbose messages */
|
||||
#define bareverbose(verbose, fmt, ...) do { \
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
From 5d4a66b502003ef385dab31a17012246407e7364 Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Sun, 29 Jun 2014 00:44:03 +0200
|
||||
Subject: [PATCH 5/9] common.h: more workarounds for klibc compatibility
|
||||
|
||||
Patch is addressing two issues:
|
||||
* First, Klibc doesn't have rpmatch().
|
||||
* Second, Klibc lacks getline()
|
||||
|
||||
Fixes:
|
||||
| LD ubi-utils/ubiformat
|
||||
| .../git/ubi-utils/ubiformat.o: In function `prompt':
|
||||
| .../git/./include/common.h:157: undefined reference to `getline'
|
||||
| .../git/./include/common.h:164: undefined reference to `rpmatch'
|
||||
| .../git/./include/common.h:157: undefined reference to `getline'
|
||||
| .../git/./include/common.h:164: undefined reference to `rpmatch'
|
||||
|
||||
Upstream-Status: Submitted
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
include/common.h | 8 +++++---
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/include/common.h b/include/common.h
|
||||
index 5a20964..2f51e1c 100644
|
||||
--- a/include/common.h
|
||||
+++ b/include/common.h
|
||||
@@ -161,15 +161,17 @@ static inline int __rpmatch(const char *resp)
|
||||
*/
|
||||
static inline bool prompt(const char *msg, bool def)
|
||||
{
|
||||
- char *line = NULL;
|
||||
- size_t len;
|
||||
+ char *line;
|
||||
bool ret = def;
|
||||
|
||||
+ const int sizeof_line = 2;
|
||||
+ line = malloc(sizeof_line);
|
||||
+
|
||||
do {
|
||||
normsg_cont("%s (%c/%c) ", msg, def ? 'Y' : 'y', def ? 'n' : 'N');
|
||||
fflush(stdout);
|
||||
|
||||
- while (getline(&line, &len, stdin) == -1) {
|
||||
+ while (fgets(line, sizeof_line, stdin) == NULL) {
|
||||
printf("failed to read prompt; assuming '%s'\n",
|
||||
def ? "yes" : "no");
|
||||
break;
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
From 2af30e9b2988111e45ed6ea6af55e49ec7cb1cb1 Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Sun, 29 Jun 2014 00:44:57 +0200
|
||||
Subject: [PATCH 6/9] libiniparser: remove unused function needing float
|
||||
|
||||
Fixes:
|
||||
| LD ubi-utils/ubiformat
|
||||
| .../git/ubi-utils/libiniparser.a(libiniparser.o): In function
|
||||
| ` LD ubi-utils/ubirename
|
||||
| iniparser_getdouble':
|
||||
| .../git/ubi-utils/libiniparser.c:336: undefined reference to `atof'
|
||||
|
||||
Grep doesn't reveal any occurrence of iniparser_getdouble(), using atof() so
|
||||
remove it: floating-point is not supported in klibc
|
||||
|
||||
Upstream-Status: Accepted
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
ubi-utils/include/libiniparser.h | 15 ---------------
|
||||
ubi-utils/libiniparser.c | 22 ----------------------
|
||||
2 files changed, 37 deletions(-)
|
||||
|
||||
diff --git a/ubi-utils/include/libiniparser.h b/ubi-utils/include/libiniparser.h
|
||||
index be3c667..abd77aa 100644
|
||||
--- a/ubi-utils/include/libiniparser.h
|
||||
+++ b/ubi-utils/include/libiniparser.h
|
||||
@@ -158,21 +158,6 @@ int iniparser_getint(dictionary * d, const char * key, int notfound);
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/**
|
||||
- @brief Get the string associated to a key, convert to a double
|
||||
- @param d Dictionary to search
|
||||
- @param key Key string to look for
|
||||
- @param notfound Value to return in case of error
|
||||
- @return double
|
||||
-
|
||||
- This function queries a dictionary for a key. A key as read from an
|
||||
- ini file is given as "section:key". If the key cannot be found,
|
||||
- the notfound value is returned.
|
||||
- */
|
||||
-/*--------------------------------------------------------------------------*/
|
||||
-double iniparser_getdouble(dictionary * d, char * key, double notfound);
|
||||
-
|
||||
-/*-------------------------------------------------------------------------*/
|
||||
-/**
|
||||
@brief Get the string associated to a key, convert to a boolean
|
||||
@param d Dictionary to search
|
||||
@param key Key string to look for
|
||||
diff --git a/ubi-utils/libiniparser.c b/ubi-utils/libiniparser.c
|
||||
index 898f57f..ba70c08 100644
|
||||
--- a/ubi-utils/libiniparser.c
|
||||
+++ b/ubi-utils/libiniparser.c
|
||||
@@ -316,28 +316,6 @@ int iniparser_getint(dictionary * d, const char * key, int notfound)
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
/**
|
||||
- @brief Get the string associated to a key, convert to a double
|
||||
- @param d Dictionary to search
|
||||
- @param key Key string to look for
|
||||
- @param notfound Value to return in case of error
|
||||
- @return double
|
||||
-
|
||||
- This function queries a dictionary for a key. A key as read from an
|
||||
- ini file is given as "section:key". If the key cannot be found,
|
||||
- the notfound value is returned.
|
||||
- */
|
||||
-/*--------------------------------------------------------------------------*/
|
||||
-double iniparser_getdouble(dictionary * d, char * key, double notfound)
|
||||
-{
|
||||
- char * str ;
|
||||
-
|
||||
- str = iniparser_getstring(d, key, INI_INVALID_KEY);
|
||||
- if (str==INI_INVALID_KEY) return notfound ;
|
||||
- return atof(str);
|
||||
-}
|
||||
-
|
||||
-/*-------------------------------------------------------------------------*/
|
||||
-/**
|
||||
@brief Get the string associated to a key, convert to a boolean
|
||||
@param d Dictionary to search
|
||||
@param key Key string to look for
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
From 41e7c76b0853bf5241b38b8167dfd57c27fef1eb Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Sun, 28 Jan 2018 21:47:59 +0100
|
||||
Subject: [PATCH 7/9] mtd-utils: common.c: convert to integer arithmetic
|
||||
|
||||
We use floating point just to print out KiB, MiB, GiB.
|
||||
Avoid that to be klibc friendly.
|
||||
|
||||
Fixes compilation for aarch64 against klibc:
|
||||
|
||||
error: '-mgeneral-regs-only' is incompatible with floating-point argument
|
||||
| printf("%s%.1f GiB", p, (double)bytes / (1024 * 1024 * 1024));
|
||||
etc.
|
||||
|
||||
Note:
|
||||
* In the KiB case, we could apparently multiply by 100 before dividing
|
||||
without risking overflow. This code simply avoids multiplications.
|
||||
|
||||
Upstream-Status: Submitted
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
ubi-utils/ubiutils-common.c | 18 ++++++++++++------
|
||||
1 file changed, 12 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/ubi-utils/ubiutils-common.c b/ubi-utils/ubiutils-common.c
|
||||
index 6609a6b..0ded2a4 100644
|
||||
--- a/ubi-utils/ubiutils-common.c
|
||||
+++ b/ubi-utils/ubiutils-common.c
|
||||
@@ -107,6 +107,9 @@ long long ubiutils_get_bytes(const char *str)
|
||||
void ubiutils_print_bytes(long long bytes, int bracket)
|
||||
{
|
||||
const char *p;
|
||||
+ int GiB = 1024 * 1024 * 1024;
|
||||
+ int MiB = 1024 * 1024;
|
||||
+ int KiB = 1024;
|
||||
|
||||
if (bracket)
|
||||
p = " (";
|
||||
@@ -115,12 +118,15 @@ void ubiutils_print_bytes(long long bytes, int bracket)
|
||||
|
||||
printf("%lld bytes", bytes);
|
||||
|
||||
- if (bytes > 1024 * 1024 * 1024)
|
||||
- printf("%s%.1f GiB", p, (double)bytes / (1024 * 1024 * 1024));
|
||||
- else if (bytes > 1024 * 1024)
|
||||
- printf("%s%.1f MiB", p, (double)bytes / (1024 * 1024));
|
||||
- else if (bytes > 1024 && bytes != 0)
|
||||
- printf("%s%.1f KiB", p, (double)bytes / 1024);
|
||||
+ if (bytes > GiB)
|
||||
+ printf("%s%lld.%lld GiB", p,
|
||||
+ bytes / GiB, bytes % GiB / (GiB / 10));
|
||||
+ else if (bytes > MiB)
|
||||
+ printf("%s%lld.%lld MiB", p,
|
||||
+ bytes / MiB, bytes % MiB / (MiB / 10));
|
||||
+ else if (bytes > KiB && bytes != 0)
|
||||
+ printf("%s%lld.%lld KiB", p,
|
||||
+ bytes / KiB, bytes % KiB / (KiB / 10));
|
||||
else
|
||||
return;
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
From e6f1a85c0a3df24fe3ca9a520dc697105e75a80c Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Sat, 27 Jan 2018 09:39:26 +0100
|
||||
Subject: [PATCH 8/9] ubi-utils: ubiformat.c: convert to integer arithmetic
|
||||
|
||||
Do not cast percent to double, it is just used as upper limit.
|
||||
Avoid floating point to fix compilation for aarch64 against klibc:
|
||||
|
||||
error: '-mgeneral-regs-only' is incompatible with floating-point code
|
||||
| int percent = ((double)si->ok_cnt)/si->good_cnt * 100;
|
||||
| ^~~~~~~
|
||||
|
||||
Notes:
|
||||
* The checks in the code above this line ensure that si->good_cnt is not 0.
|
||||
|
||||
* The code assumes si->good_cnt * 100 will not overflow, then we can use
|
||||
(si->ok_cnt * 100) safely because the former is bigger.
|
||||
|
||||
* The truncated result does not affect the logic:
|
||||
i.e. a value of 49.9 is truncated to 49 and is still <50.
|
||||
|
||||
Upstream-Status: Submitted
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
ubi-utils/ubiformat.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ubi-utils/ubiformat.c b/ubi-utils/ubiformat.c
|
||||
index 21409ca..d93164a 100644
|
||||
--- a/ubi-utils/ubiformat.c
|
||||
+++ b/ubi-utils/ubiformat.c
|
||||
@@ -843,7 +843,7 @@ int main(int argc, char * const argv[])
|
||||
}
|
||||
|
||||
if (!args.override_ec && si->empty_cnt < si->good_cnt) {
|
||||
- int percent = ((double)si->ok_cnt)/si->good_cnt * 100;
|
||||
+ int percent = (si->ok_cnt * 100) / si->good_cnt;
|
||||
|
||||
/*
|
||||
* Make sure the majority of eraseblocks have valid
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
From 2229f3b9fd4bad47794c28e558ad273173cea73d Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Sat, 27 Jan 2018 09:52:46 +0100
|
||||
Subject: [PATCH 9/9] Eliminate warnings about implicit non-const casting in
|
||||
libmtd
|
||||
|
||||
The mtd_get_dev_info1 function reads (among other things) name and type
|
||||
string into coresponding struct mtd_dev_info fields.
|
||||
|
||||
The struct mtd_dev_info has the string fields marked const, requiring
|
||||
them to be cast to non-const version during initialization.
|
||||
|
||||
This cast was previously omitted from the dev_read_data calls,
|
||||
triggering warnings during compilation.
|
||||
|
||||
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
|
||||
Signed-off-by: Richard Weinberger <richard@nod.at>
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
lib/libmtd.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/libmtd.c b/lib/libmtd.c
|
||||
index 60b4782..5f0bcbc 100644
|
||||
--- a/lib/libmtd.c
|
||||
+++ b/lib/libmtd.c
|
||||
@@ -746,13 +746,13 @@ int mtd_get_dev_info1(libmtd_t desc, int mtd_num, struct mtd_dev_info *mtd)
|
||||
if (dev_get_major(lib, mtd_num, &mtd->major, &mtd->minor))
|
||||
return -1;
|
||||
|
||||
- ret = dev_read_data(lib->mtd_name, mtd_num, &mtd->name,
|
||||
+ ret = dev_read_data(lib->mtd_name, mtd_num, (char *)&mtd->name,
|
||||
MTD_NAME_MAX + 1);
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
((char *)mtd->name)[ret - 1] = '\0';
|
||||
|
||||
- ret = dev_read_data(lib->mtd_type, mtd_num, &mtd->type_str,
|
||||
+ ret = dev_read_data(lib->mtd_type, mtd_num, (char *)&mtd->type_str,
|
||||
MTD_TYPE_MAX + 1);
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
From e596ae99059c28fa9bb3461e03e7ecaacbf41727 Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Wed, 23 May 2018 15:34:59 +0200
|
||||
Subject: [PATCH] libmissing.h: fix klibc build when using glibc toolchain
|
||||
|
||||
klibc lacks execinfo.h so adda guard around it.
|
||||
Note: build with musl toolchain is ok even without this patch.
|
||||
|
||||
Fix build error:
|
||||
|
||||
| In file included from ../git/lib/execinfo.c:1:0:
|
||||
| ../git/include/libmissing.h:7:10: fatal error: execinfo.h:
|
||||
No such file or directory
|
||||
|
||||
Status: Inappropriate [klibc specific]
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
include/libmissing.h | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/include/libmissing.h b/include/libmissing.h
|
||||
index 0196033..832c372 100644
|
||||
--- a/include/libmissing.h
|
||||
+++ b/include/libmissing.h
|
||||
@@ -3,9 +3,11 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
+#ifndef __KLIBC__
|
||||
#ifdef HAVE_EXECINFO_H
|
||||
#include <execinfo.h>
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#ifndef HAVE_EXECINFO_H
|
||||
int backtrace(void **buffer, int size);
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -0,0 +1,326 @@
|
|||
From 01c98d5d5d044d9a125abcdbb2f3d771966365b0 Mon Sep 17 00:00:00 2001
|
||||
From: mirabilos <m@mirbsd.org>
|
||||
Date: Thu, 1 Feb 2018 15:34:07 +0100
|
||||
Subject: [PATCH 2/4] Instead of doing preprocessor magic, just output off_t as
|
||||
long long
|
||||
|
||||
Fix warnings abot PRIdoff_t in libmtd.c, in mtd_read (and mtd_write):
|
||||
|
||||
In file included from ../git/lib/libmtd.c:40:0:
|
||||
../git/lib/libmtd.c: In function 'mtd_read':
|
||||
../git/include/common.h:110:18: warning: format '%ld' expects argument of
|
||||
type 'long int', but argument 5 has type 'off_t {aka long long int}'
|
||||
[-Wformat=]
|
||||
|
||||
../git/include/common.h:120:2: note: in expansion of macro 'errmsg'
|
||||
errmsg(fmt, ##__VA_ARGS__); \
|
||||
^~~~~~
|
||||
../git/lib/libmtd.c:1082:10: note: in expansion of macro 'sys_errmsg'
|
||||
return sys_errmsg("cannot seek mtd%d to offset %"PRIdoff_t,
|
||||
^~~~~~~~~~
|
||||
|
||||
/usr/lib/klibc/include/inttypes.h:28:17: note: format string is defined here
|
||||
#define PRId32 "d"
|
||||
|
||||
Upstream-Status: Submitted
|
||||
|
||||
Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
|
||||
---
|
||||
include/common.h | 18 ------------------
|
||||
jffsX-utils/mkfs.jffs2.c | 20 ++++++++++----------
|
||||
lib/libmtd.c | 8 ++++----
|
||||
misc-utils/flash_erase.c | 6 +++---
|
||||
misc-utils/flash_otp_write.c | 2 +-
|
||||
misc-utils/ftl_check.c | 2 +-
|
||||
misc-utils/mtd_debug.c | 4 ++--
|
||||
misc-utils/serve_image.c | 4 ++--
|
||||
tests/fs-tests/integrity/integck.c | 4 ++--
|
||||
tests/mtd-tests/nandpagetest.c | 4 ++--
|
||||
tests/ubi-tests/integ.c | 6 +++---
|
||||
ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | 6 +++---
|
||||
12 files changed, 33 insertions(+), 51 deletions(-)
|
||||
|
||||
diff --git a/include/common.h b/include/common.h
|
||||
index f8f72ea..642c212 100644
|
||||
--- a/include/common.h
|
||||
+++ b/include/common.h
|
||||
@@ -70,24 +70,6 @@ extern "C" {
|
||||
#define O_CLOEXEC 0
|
||||
#endif
|
||||
|
||||
-/* define a print format specifier for off_t */
|
||||
-#if (SIZEOF_OFF_T >= 8)
|
||||
-#define PRIxoff_t PRIx64
|
||||
-#define PRIdoff_t PRId64
|
||||
-#else
|
||||
-#define PRIxoff_t "l"PRIx32
|
||||
-#define PRIdoff_t "l"PRId32
|
||||
-#endif
|
||||
-
|
||||
-/* define a print format specifier for loff_t */
|
||||
-#if (SIZEOF_LOFF_T >= 8)
|
||||
-#define PRIxloff_t PRIx64
|
||||
-#define PRIdloff_t PRId64
|
||||
-#else
|
||||
-#define PRIxloff_t "l"PRIx32
|
||||
-#define PRIdloff_t "l"PRId32
|
||||
-#endif
|
||||
-
|
||||
/* Verbose messages */
|
||||
#define bareverbose(verbose, fmt, ...) do { \
|
||||
if (verbose) \
|
||||
diff --git a/jffsX-utils/mkfs.jffs2.c b/jffsX-utils/mkfs.jffs2.c
|
||||
index 9aa6c39..0661786 100644
|
||||
--- a/jffsX-utils/mkfs.jffs2.c
|
||||
+++ b/jffsX-utils/mkfs.jffs2.c
|
||||
@@ -1237,8 +1237,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
|
||||
} else switch (e->sb.st_mode & S_IFMT) {
|
||||
case S_IFDIR:
|
||||
if (verbose) {
|
||||
- printf("\td %04o %9" PRIdoff_t " %5d:%-3d %s\n",
|
||||
- e->sb.st_mode & ~S_IFMT, e->sb.st_size,
|
||||
+ printf("\td %04o %9lld %5d:%-3d %s\n",
|
||||
+ e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size,
|
||||
(int) (e->sb.st_uid), (int) (e->sb.st_gid),
|
||||
e->name);
|
||||
}
|
||||
@@ -1247,8 +1247,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
|
||||
break;
|
||||
case S_IFSOCK:
|
||||
if (verbose) {
|
||||
- printf("\ts %04o %9" PRIdoff_t " %5d:%-3d %s\n",
|
||||
- e->sb.st_mode & ~S_IFMT, e->sb.st_size,
|
||||
+ printf("\ts %04o %9lld %5d:%-3d %s\n",
|
||||
+ e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size,
|
||||
(int) e->sb.st_uid, (int) e->sb.st_gid, e->name);
|
||||
}
|
||||
write_pipe(e);
|
||||
@@ -1256,8 +1256,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
|
||||
break;
|
||||
case S_IFIFO:
|
||||
if (verbose) {
|
||||
- printf("\tp %04o %9" PRIdoff_t " %5d:%-3d %s\n",
|
||||
- e->sb.st_mode & ~S_IFMT, e->sb.st_size,
|
||||
+ printf("\tp %04o %9lld %5d:%-3d %s\n",
|
||||
+ e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size,
|
||||
(int) e->sb.st_uid, (int) e->sb.st_gid, e->name);
|
||||
}
|
||||
write_pipe(e);
|
||||
@@ -1285,8 +1285,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
|
||||
break;
|
||||
case S_IFLNK:
|
||||
if (verbose) {
|
||||
- printf("\tl %04o %9" PRIdoff_t " %5d:%-3d %s -> %s\n",
|
||||
- e->sb.st_mode & ~S_IFMT, e->sb.st_size,
|
||||
+ printf("\tl %04o %9lld %5d:%-3d %s -> %s\n",
|
||||
+ e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size,
|
||||
(int) e->sb.st_uid, (int) e->sb.st_gid, e->name,
|
||||
e->link);
|
||||
}
|
||||
@@ -1297,8 +1297,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
|
||||
wrote = write_regular_file(e);
|
||||
write_xattr_entry(e);
|
||||
if (verbose) {
|
||||
- printf("\tf %04o %9" PRIdoff_t " (%9u) %5d:%-3d %s\n",
|
||||
- e->sb.st_mode & ~S_IFMT, e->sb.st_size, wrote,
|
||||
+ printf("\tf %04o %9lld (%9u) %5d:%-3d %s\n",
|
||||
+ e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size, wrote,
|
||||
(int) e->sb.st_uid, (int) e->sb.st_gid, e->name);
|
||||
}
|
||||
break;
|
||||
diff --git a/lib/libmtd.c b/lib/libmtd.c
|
||||
index 86c89ae..f375381 100644
|
||||
--- a/lib/libmtd.c
|
||||
+++ b/lib/libmtd.c
|
||||
@@ -1079,8 +1079,8 @@ int mtd_read(const struct mtd_dev_info *mtd, int fd, int eb, int offs,
|
||||
/* Seek to the beginning of the eraseblock */
|
||||
seek = (off_t)eb * mtd->eb_size + offs;
|
||||
if (lseek(fd, seek, SEEK_SET) != seek)
|
||||
- return sys_errmsg("cannot seek mtd%d to offset %"PRIdoff_t,
|
||||
- mtd->mtd_num, seek);
|
||||
+ return sys_errmsg("cannot seek mtd%d to offset %lld",
|
||||
+ mtd->mtd_num, (long long)seek);
|
||||
|
||||
while (rd < len) {
|
||||
ret = read(fd, buf + rd, len - rd);
|
||||
@@ -1188,8 +1188,8 @@ int mtd_write(libmtd_t desc, const struct mtd_dev_info *mtd, int fd, int eb,
|
||||
if (data) {
|
||||
/* Seek to the beginning of the eraseblock */
|
||||
if (lseek(fd, seek, SEEK_SET) != seek)
|
||||
- return sys_errmsg("cannot seek mtd%d to offset %"PRIdoff_t,
|
||||
- mtd->mtd_num, seek);
|
||||
+ return sys_errmsg("cannot seek mtd%d to offset %lld",
|
||||
+ mtd->mtd_num, (long long)seek);
|
||||
ret = write(fd, data, len);
|
||||
if (ret != len)
|
||||
return sys_errmsg("cannot write %d bytes to mtd%d "
|
||||
diff --git a/misc-utils/flash_erase.c b/misc-utils/flash_erase.c
|
||||
index 0c9449f..ec4b2e1 100644
|
||||
--- a/misc-utils/flash_erase.c
|
||||
+++ b/misc-utils/flash_erase.c
|
||||
@@ -53,8 +53,8 @@ int target_endian = __BYTE_ORDER;
|
||||
static void show_progress(struct mtd_dev_info *mtd, off_t start, int eb,
|
||||
int eb_start, int eb_cnt)
|
||||
{
|
||||
- bareverbose(!quiet, "\rErasing %d Kibyte @ %"PRIxoff_t" -- %2i %% complete ",
|
||||
- mtd->eb_size / 1024, start, ((eb - eb_start) * 100) / eb_cnt);
|
||||
+ bareverbose(!quiet, "\rErasing %d Kibyte @ %llx -- %2i %% complete ",
|
||||
+ mtd->eb_size / 1024, (unsigned long long)start, ((eb - eb_start) * 100) / eb_cnt);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ int main(int argc, char *argv[])
|
||||
if (!noskipbad) {
|
||||
int ret = mtd_is_bad(&mtd, fd, eb);
|
||||
if (ret > 0) {
|
||||
- verbose(!quiet, "Skipping bad block at %08"PRIxoff_t, offset);
|
||||
+ verbose(!quiet, "Skipping bad block at %08llx", (unsigned long long)offset);
|
||||
continue;
|
||||
} else if (ret < 0) {
|
||||
if (errno == EOPNOTSUPP) {
|
||||
diff --git a/misc-utils/flash_otp_write.c b/misc-utils/flash_otp_write.c
|
||||
index b02d0b0..04c96c6 100644
|
||||
--- a/misc-utils/flash_otp_write.c
|
||||
+++ b/misc-utils/flash_otp_write.c
|
||||
@@ -76,7 +76,7 @@ int main(int argc,char *argv[])
|
||||
return errno;
|
||||
}
|
||||
|
||||
- printf("Writing OTP user data on %s at offset 0x%"PRIxoff_t"\n", argv[2], offset);
|
||||
+ printf("Writing OTP user data on %s at offset 0x%llx\n", argv[2], (unsigned long long)offset);
|
||||
|
||||
if (mtd_type_is_nand_user(&mtdInfo))
|
||||
len = mtdInfo.writesize;
|
||||
diff --git a/misc-utils/ftl_check.c b/misc-utils/ftl_check.c
|
||||
index a853cf4..e854922 100644
|
||||
--- a/misc-utils/ftl_check.c
|
||||
+++ b/misc-utils/ftl_check.c
|
||||
@@ -131,7 +131,7 @@ static void check_partition(int fd)
|
||||
perror("read failed");
|
||||
break;
|
||||
}
|
||||
- printf("\nErase unit %"PRIdoff_t":\n", i);
|
||||
+ printf("\nErase unit %lld:\n", (long long)i);
|
||||
if ((hdr2.FormattedSize != hdr.FormattedSize) ||
|
||||
(hdr2.NumEraseUnits != hdr.NumEraseUnits) ||
|
||||
(hdr2.SerialNumber != hdr.SerialNumber))
|
||||
diff --git a/misc-utils/mtd_debug.c b/misc-utils/mtd_debug.c
|
||||
index ac37e23..d65ad36 100644
|
||||
--- a/misc-utils/mtd_debug.c
|
||||
+++ b/misc-utils/mtd_debug.c
|
||||
@@ -160,7 +160,7 @@ retry:
|
||||
if (buf != NULL)
|
||||
free(buf);
|
||||
close(outfd);
|
||||
- printf("Copied %zu bytes from address 0x%.8"PRIxoff_t" in flash to %s\n", len, offset, filename);
|
||||
+ printf("Copied %zu bytes from address 0x%.8llx in flash to %s\n", len, (unsigned long long)offset, filename);
|
||||
return 0;
|
||||
|
||||
err2:
|
||||
@@ -225,7 +225,7 @@ retry:
|
||||
if (buf != NULL)
|
||||
free(buf);
|
||||
fclose(fp);
|
||||
- printf("Copied %d bytes from %s to address 0x%.8"PRIxoff_t" in flash\n", len, filename, offset);
|
||||
+ printf("Copied %d bytes from %s to address 0x%.8llx in flash\n", len, filename, (unsigned long long)offset);
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/misc-utils/serve_image.c b/misc-utils/serve_image.c
|
||||
index f2475d6..6c8c8fb 100644
|
||||
--- a/misc-utils/serve_image.c
|
||||
+++ b/misc-utils/serve_image.c
|
||||
@@ -129,8 +129,8 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (st.st_size % erasesize) {
|
||||
- fprintf(stderr, "Image size %" PRIdoff_t " bytes is not a multiple of erasesize %d bytes\n",
|
||||
- st.st_size, erasesize);
|
||||
+ fprintf(stderr, "Image size %lld bytes is not a multiple of erasesize %d bytes\n",
|
||||
+ (long long)st.st_size, erasesize);
|
||||
exit(1);
|
||||
}
|
||||
image = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, rfd, 0);
|
||||
diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c
|
||||
index 84753d6..0a7f142 100644
|
||||
--- a/tests/fs-tests/integrity/integck.c
|
||||
+++ b/tests/fs-tests/integrity/integck.c
|
||||
@@ -897,8 +897,8 @@ static ssize_t file_write_data(struct file_info *file, int fd, off_t offset,
|
||||
remains = size;
|
||||
actual = 0;
|
||||
written = IO_BUFFER_SIZE;
|
||||
- v("write %zd bytes, offset %"PRIdoff_t", file %s",
|
||||
- size, offset, get_file_name(file));
|
||||
+ v("write %zd bytes, offset %lld, file %s",
|
||||
+ size, (long long)offset, get_file_name(file));
|
||||
while (remains) {
|
||||
/* Fill up buffer with random data */
|
||||
if (written < IO_BUFFER_SIZE) {
|
||||
diff --git a/tests/mtd-tests/nandpagetest.c b/tests/mtd-tests/nandpagetest.c
|
||||
index c6812df..465e548 100644
|
||||
--- a/tests/mtd-tests/nandpagetest.c
|
||||
+++ b/tests/mtd-tests/nandpagetest.c
|
||||
@@ -232,8 +232,8 @@ static int verify_eraseblock(int ebnum)
|
||||
return err;
|
||||
|
||||
if (lseek(fd, addr, SEEK_SET) != addr) {
|
||||
- fprintf(stderr, "cannot seek mtd%d to offset %"PRIdloff_t,
|
||||
- mtd.mtd_num, addr);
|
||||
+ fprintf(stderr, "cannot seek mtd%d to offset %lld",
|
||||
+ mtd.mtd_num, (long long)addr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
diff --git a/tests/ubi-tests/integ.c b/tests/ubi-tests/integ.c
|
||||
index 26c2ce5..1cd0649 100644
|
||||
--- a/tests/ubi-tests/integ.c
|
||||
+++ b/tests/ubi-tests/integ.c
|
||||
@@ -243,7 +243,7 @@ static void check_erase_block(struct erase_block_info *erase_block, int fd)
|
||||
while (size)
|
||||
if (read_buffer[--size] != 0xff) {
|
||||
fprintf(stderr, "block no. = %d\n" , erase_block->block_number);
|
||||
- fprintf(stderr, "offset = %"PRIdoff_t"\n" , gap_start);
|
||||
+ fprintf(stderr, "offset = %lld\n" , (long long)gap_start);
|
||||
fprintf(stderr, "size = %ld\n" , (long) bytes_read);
|
||||
error_exit("verify 0xff failed");
|
||||
}
|
||||
@@ -254,7 +254,7 @@ static void check_erase_block(struct erase_block_info *erase_block, int fd)
|
||||
errno = 0;
|
||||
bytes_read = read(fd, read_buffer, w->size);
|
||||
if (bytes_read != w->size) {
|
||||
- fprintf(stderr, "offset = %"PRIdoff_t"\n" , w->offset);
|
||||
+ fprintf(stderr, "offset = %lld\n" , (long long)w->offset);
|
||||
fprintf(stderr, "size = %ld\n" , (long) w->size);
|
||||
fprintf(stderr, "bytes_read = %ld\n" , (long) bytes_read);
|
||||
error_exit("read failed");
|
||||
@@ -279,7 +279,7 @@ static void check_erase_block(struct erase_block_info *erase_block, int fd)
|
||||
while (size)
|
||||
if (read_buffer[--size] != 0xff) {
|
||||
fprintf(stderr, "block no. = %d\n" , erase_block->block_number);
|
||||
- fprintf(stderr, "offset = %"PRIdoff_t"\n" , gap_start);
|
||||
+ fprintf(stderr, "offset = %lld\n" , (long long)gap_start);
|
||||
fprintf(stderr, "size = %ld\n" , (long) bytes_read);
|
||||
error_exit("verify 0xff failed!");
|
||||
}
|
||||
diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
|
||||
index c916f48..f0237ab 100644
|
||||
--- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
|
||||
+++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
|
||||
@@ -772,11 +772,11 @@ int write_leb(int lnum, int len, void *buf)
|
||||
return sys_err_msg("ubi_leb_change_start failed");
|
||||
|
||||
if (lseek(out_fd, pos, SEEK_SET) != pos)
|
||||
- return sys_err_msg("lseek failed seeking %"PRIdoff_t, pos);
|
||||
+ return sys_err_msg("lseek failed seeking %lld", (long long)pos);
|
||||
|
||||
if (write(out_fd, buf, c->leb_size) != c->leb_size)
|
||||
- return sys_err_msg("write failed writing %d bytes at pos %"PRIdoff_t,
|
||||
- c->leb_size, pos);
|
||||
+ return sys_err_msg("write failed writing %d bytes at pos %lld",
|
||||
+ c->leb_size, (long long)pos);
|
||||
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
From 139d93bc405272a3261d57be26da842e737fe4d0 Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Sun, 28 Jan 2018 23:10:34 +0100
|
||||
Subject: [PATCH 3/4] Makefile.am: only build ubi-utils
|
||||
|
||||
We only target the ubi-utils, static, small.
|
||||
|
||||
Upstream-Status: Inappropriate [embedded specific]
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
Makefile.am | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 5a6e77c..98715dd 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -34,9 +34,9 @@ EXTRA_DIST += $(GLOBAL_HEADER) $(GLOBAL_EXTRA)
|
||||
|
||||
include lib/Makemodule.am
|
||||
include ubi-utils/Makemodule.am
|
||||
-include misc-utils/Makemodule.am
|
||||
-include nand-utils/Makemodule.am
|
||||
-include nor-utils/Makemodule.am
|
||||
+#include misc-utils/Makemodule.am
|
||||
+#include nand-utils/Makemodule.am
|
||||
+#include nor-utils/Makemodule.am
|
||||
|
||||
if BUILD_UBIFS
|
||||
include ubifs-utils/Makemodule.am
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
From ae1cf6d0eb1833e46549328a4473222c259723d7 Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Thu, 1 Feb 2018 00:25:00 +0100
|
||||
Subject: [PATCH 4/4] mtd-utils: common.h: no features.h for klibc builds
|
||||
|
||||
Add guard around features.h to fix missing include (here first error):
|
||||
|
||||
../git/include/common.h:29:10:
|
||||
fatal error: features.h: No such file or directory
|
||||
#include <features.h>
|
||||
^~~~~~~~~~~~
|
||||
compilation terminated
|
||||
|
||||
Upstream-Status: Submitted
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
include/common.h | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/include/common.h b/include/common.h
|
||||
index 642c212..f7c71fe 100644
|
||||
--- a/include/common.h
|
||||
+++ b/include/common.h
|
||||
@@ -26,7 +26,10 @@
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
+#if defined(__KLIBC__)
|
||||
+#else
|
||||
#include <features.h>
|
||||
+#endif
|
||||
#include <inttypes.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/sysmacros.h>
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
From 2137eb1a6cd0326510bd3b9faf8037d9bf34ca3d Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Adami <andrea.adami@gmail.com>
|
||||
Date: Wed, 23 May 2018 15:52:34 +0200
|
||||
Subject: [PATCH 5/5] common.h: replace getline() with fgets
|
||||
|
||||
There is an unofficial upstream patch adding a simple getline()
|
||||
to libmissing.h. Unfortunately the patch creates issues if the
|
||||
toolchain is using glibc (autotools cache?) so for the moment
|
||||
keep the old hack and wait for commits upstream.
|
||||
|
||||
Fix:
|
||||
|
||||
| ubi-utils/ubiformat.o: In function `prompt.constprop.4':
|
||||
| ubiformat.c:(.text+0x70): undefined reference to `getline'
|
||||
|
||||
Upstrea-Status: Inappropriate [klibc specific]
|
||||
|
||||
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
||||
---
|
||||
include/common.h | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/include/common.h b/include/common.h
|
||||
index a1d59d0..96b0bdb 100644
|
||||
--- a/include/common.h
|
||||
+++ b/include/common.h
|
||||
@@ -126,15 +126,26 @@ extern "C" {
|
||||
*/
|
||||
static inline bool prompt(const char *msg, bool def)
|
||||
{
|
||||
+
|
||||
+#ifndef __KLIBC__
|
||||
char *line = NULL;
|
||||
size_t len;
|
||||
+#else
|
||||
+ char *line;
|
||||
+ const int sizeof_line = 2;
|
||||
+ line = malloc(sizeof_line);
|
||||
+#endif
|
||||
bool ret = def;
|
||||
|
||||
do {
|
||||
normsg_cont("%s (%c/%c) ", msg, def ? 'Y' : 'y', def ? 'n' : 'N');
|
||||
fflush(stdout);
|
||||
|
||||
+#ifndef __KLIBC__
|
||||
while (getline(&line, &len, stdin) == -1) {
|
||||
+#else
|
||||
+ while (fgets(line, sizeof_line, stdin) == NULL) {
|
||||
+#endif
|
||||
printf("failed to read prompt; assuming '%s'\n",
|
||||
def ? "yes" : "no");
|
||||
break;
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
@ -7,30 +7,31 @@ LICENSE = "GPLv2+"
|
|||
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
|
||||
file://include/common.h;beginline=1;endline=17;md5=ba05b07912a44ea2bf81ce409380049c"
|
||||
|
||||
inherit klibc
|
||||
inherit autotools pkgconfig klibc
|
||||
|
||||
SRCREV = "aea36417067dade75192bafa03af70b6eb2677b1"
|
||||
SRCREV = "bc63d36e39f389c8c17f6a8e9db47f2acc884659"
|
||||
SRC_URI = "git://git.infradead.org/mtd-utils.git \
|
||||
file://0001-Makefile-build-ubi-utils-only.patch \
|
||||
file://0002-common.mk-for-klibc-CC-is-klcc.patch \
|
||||
file://0003-libubi.c-add-klibc-specific-fixes-for-ioctl.patch \
|
||||
file://0004-Restore-compatibility-to-dietlibc-klibc-musl-libc-af.patch \
|
||||
file://0005-common.h-more-workarounds-for-klibc-compatibility.patch \
|
||||
file://0006-libiniparser-remove-unused-function-needing-float.patch \
|
||||
file://0007-mtd-utils-common.c-convert-to-integer-arithmetic.patch \
|
||||
file://0008-ubi-utils-ubiformat.c-convert-to-integer-arithmetic.patch \
|
||||
file://0009-Eliminate-warnings-about-implicit-non-const-casting-.patch \
|
||||
file://0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch \
|
||||
file://0002-Instead-of-doing-preprocessor-magic-just-output-off_.patch \
|
||||
file://0003-Makefile.am-only-build-ubi-utils.patch \
|
||||
file://0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch \
|
||||
file://0005-common.h-replace-getline-with-fgets.patch \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}/git/"
|
||||
|
||||
EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} -I${S}include -DWITHOUT_XATTR' 'BUILDDIR=${S}'"
|
||||
EXTRA_OECONF += "--disable-tests --without-jffs --without-ubifs"
|
||||
|
||||
PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'xattr', d)}"
|
||||
PACKAGECONFIG[xattr] = ",,acl,"
|
||||
|
||||
EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} ${@bb.utils.contains('PACKAGECONFIG', 'xattr', '', '-DWITHOUT_XATTR', d)} -I${S}/include' 'BUILDDIR=${S}'"
|
||||
|
||||
do_install () {
|
||||
oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} INCLUDEDIR=${includedir}
|
||||
}
|
||||
|
||||
PACKAGES = "ubi-utils-klibc-dbg"
|
||||
PACKAGES = "ubi-utils-klibc-dbg ubi-utils-klibc-doc"
|
||||
|
||||
PACKAGES =+ "mtdinfo-klibc ubiattach-klibc ubiblock-klibc ubicrc32-klibc ubidetach-klibc \
|
||||
ubiformat-klibc ubimkvol-klibc ubinfo-klibc ubinize-klibc ubirename-klibc \
|
||||
Loading…
Reference in New Issue
Block a user