aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/fit_image.c4
-rw-r--r--tools/image-host.c4
-rw-r--r--tools/mkimage.c30
3 files changed, 32 insertions, 6 deletions
diff --git a/tools/fit_image.c b/tools/fit_image.c
index ae30f80783..f4f372ba62 100644
--- a/tools/fit_image.c
+++ b/tools/fit_image.c
@@ -524,7 +524,7 @@ static int fit_extract_data(struct image_tool_params *params, const char *fname)
/* Check if an offset for the external data was set. */
if (params->external_offset > 0) {
if (params->external_offset < new_size) {
- debug("External offset %x overlaps FIT length %x",
+ debug("External offset %x overlaps FIT length %x\n",
params->external_offset, new_size);
ret = -EINVAL;
goto err;
@@ -737,7 +737,7 @@ static int fit_handle_file(struct image_tool_params *params)
if (strlen (params->imagefile) +
strlen (MKIMAGE_TMPFILE_SUFFIX) + 1 > sizeof (tmpfile)) {
fprintf (stderr, "%s: Image file name (%s) too long, "
- "can't create tmpfile",
+ "can't create tmpfile.\n",
params->imagefile, params->cmdname);
return (EXIT_FAILURE);
}
diff --git a/tools/image-host.c b/tools/image-host.c
index 270d36fe45..73095461a7 100644
--- a/tools/image-host.c
+++ b/tools/image-host.c
@@ -132,8 +132,10 @@ static int fit_image_write_sig(void *fit, int noffset, uint8_t *value,
if (!ret) {
time_t timestamp = imagetool_get_source_date(cmdname,
time(NULL));
+ uint32_t t = cpu_to_uimage(timestamp);
- ret = fit_set_timestamp(fit, noffset, timestamp);
+ ret = fdt_setprop(fit, noffset, FIT_TIMESTAMP_PROP, &t,
+ sizeof(uint32_t));
}
if (region_prop && !ret) {
uint32_t strdata[2];
diff --git a/tools/mkimage.c b/tools/mkimage.c
index cc7b242faf..302bfcf971 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -12,6 +12,9 @@
#include "imximage.h"
#include <image.h>
#include <version.h>
+#ifdef __linux__
+#include <sys/ioctl.h>
+#endif
static void copy_file(int, const char *, int);
@@ -402,6 +405,7 @@ int main(int argc, char **argv)
}
if (params.lflag || params.fflag) {
+ uint64_t size;
/*
* list header information of existing image
*/
@@ -412,14 +416,34 @@ int main(int argc, char **argv)
exit (EXIT_FAILURE);
}
- if ((unsigned)sbuf.st_size < tparams->header_size) {
+ if ((sbuf.st_mode & S_IFMT) == S_IFBLK) {
+#ifdef __linux__
+#if defined(__linux__) && defined(_IOR) && !defined(BLKGETSIZE64)
+#define BLKGETSIZE64 _IOR(0x12,114,size_t) /* return device size in bytes (u64 *arg) */
+#endif
+ if (ioctl(ifd, BLKGETSIZE64, &size) < 0) {
+ fprintf (stderr,
+ "%s: failed to get size of block device \"%s\"\n",
+ params.cmdname, params.imagefile);
+ exit (EXIT_FAILURE);
+ }
+#else
fprintf (stderr,
- "%s: Bad size: \"%s\" is not valid image\n",
+ "%s: \"%s\" is block device, don't know how to get its size\n",
params.cmdname, params.imagefile);
exit (EXIT_FAILURE);
+#endif
+ } else if ((unsigned)sbuf.st_size < tparams->header_size) {
+ fprintf (stderr,
+ "%s: Bad size: \"%s\" is not valid image: size %ld < %u\n",
+ params.cmdname, params.imagefile,
+ sbuf.st_size, tparams->header_size);
+ exit (EXIT_FAILURE);
+ } else {
+ size = sbuf.st_size;
}
- ptr = mmap(0, sbuf.st_size, PROT_READ, MAP_SHARED, ifd, 0);
+ ptr = mmap(0, size, PROT_READ, MAP_SHARED, ifd, 0);
if (ptr == MAP_FAILED) {
fprintf (stderr, "%s: Can't read %s: %s\n",
params.cmdname, params.imagefile,