[PATCH] mtd-utils: fix wrong format specifiers on mips32
Mathias Kresin
dev at kresin.me
Sun Jun 12 03:05:45 PDT 2016
This patch fixes the follwing compiler warnings:
flash_erase.c: In function 'show_progress':
flash_erase.c:56:22: warning: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'off_t {aka long long int}' [-Wformat=]
bareverbose(!quiet, "\rErasing %d Kibyte @ %"PRIxoff_t" -- %2i %% complete ",
^
./include/common.h:81:10: note: in definition of macro 'bareverbose'
printf(fmt, ##__VA_ARGS__);
which are linked to the following buggy numerical output:
Erasing 128 Kibyte @ 0 -- 917504 % complete flash_erase: Cleanmarker written at 0
Erasing 128 Kibyte @ 0 -- 1048576 % complete flash_erase: Cleanmarker written at 0
Signed-off-by: Mathias Kresin <dev at kresin.me>
---
In case it might be relevant, I'm cross compiling the mtd-utils on
ubuntu 14.04 x64 using a patched GCC 5.3.0 from the lede project. The
kernel version used on the mips32 target is 4.4.12.
include/common.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/include/common.h b/include/common.h
index 8cb3142..ca4c62e 100644
--- a/include/common.h
+++ b/include/common.h
@@ -72,8 +72,13 @@ extern "C" {
#define PRIxoff_t PRIx64
#define PRIdoff_t PRId64
#else
+#if (SIZEOF_LONG >= 8)
#define PRIxoff_t "l"PRIx32
#define PRIdoff_t "l"PRId32
+#else
+#define PRIxoff_t "ll"PRIx32
+#define PRIdoff_t "ll"PRId32
+#endif
#endif
/* Verbose messages */
--
1.9.1
More information about the linux-mtd
mailing list