summaryrefslogtreecommitdiffstats
path: root/tools/imagetool.h
diff options
context:
space:
mode:
authorGuilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>2013-12-01 12:43:11 -0700
committerTom Rini <trini@ti.com>2013-12-13 09:15:32 -0500
commita804b5ce2d84dca6f9e145003e588876adf2c71f (patch)
tree60342a722b9322a3672e7edd8d4ee260cbf44cf6 /tools/imagetool.h
parentf86ed6a8d52c99bb2d17d3cac1647edca0c4399c (diff)
downloadtalos-obmc-uboot-a804b5ce2d84dca6f9e145003e588876adf2c71f.tar.gz
talos-obmc-uboot-a804b5ce2d84dca6f9e145003e588876adf2c71f.zip
Add dumpimage, a tool to extract data from U-Boot images
Given a multi-file image created through the mkimage's -d option: $ mkimage -A x86 -O linux -T multi -n x86 -d vmlinuz:initrd.img:System.map \ multi.img Image Name: x86 Created: Thu Jul 25 10:29:13 2013 Image Type: Intel x86 Linux Multi-File Image (gzip compressed) Data Size: 13722956 Bytes = 13401.32 kB = 13.09 MB Load Address: 00000000 Entry Point: 00000000 Contents: Image 0: 4040128 Bytes = 3945.44 kB = 3.85 MB Image 1: 7991719 Bytes = 7804.41 kB = 7.62 MB Image 2: 1691092 Bytes = 1651.46 kB = 1.61 MB It is possible to perform the innverse operation -- extracting any file from the image -- by using the dumpimage's -i option: $ dumpimage -i multi.img -p 2 System.map Although it's feasible to retrieve "data files" from image through scripting, the requirement to embed tools such 'dd', 'awk' and 'sed' for this sole purpose is cumbersome and unreliable -- once you must keep track of file sizes inside the image. Furthermore, extracting data files using "dumpimage" tool is faster than through scripting. Signed-off-by: Guilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com> Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/imagetool.h')
-rw-r--r--tools/imagetool.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/imagetool.h b/tools/imagetool.h
index b8adb61ed9..c2c9aea60e 100644
--- a/tools/imagetool.h
+++ b/tools/imagetool.h
@@ -34,7 +34,9 @@ struct image_tool_params {
int dflag;
int eflag;
int fflag;
+ int iflag;
int lflag;
+ int pflag;
int vflag;
int xflag;
int skipcpy;
@@ -50,6 +52,7 @@ struct image_tool_params {
char *datafile;
char *imagefile;
char *cmdname;
+ const char *outfile; /* Output filename */
const char *keydir; /* Directory holding private keys */
const char *keydest; /* Destination .dtb for public key */
const char *comment; /* Comment to add to signature node */
@@ -97,6 +100,15 @@ struct image_type_params {
void (*set_header) (void *, struct stat *, int,
struct image_tool_params *);
/*
+ * This function is used by the command to retrieve a data file from
+ * the image (i.e. dumpimage -i <image> -p <position> <data_file>).
+ * Thus the code to extract a file from an image must be put here.
+ *
+ * Returns 0 if the file was successfully retrieved from the image,
+ * or a negative value on error.
+ */
+ int (*extract_datafile) (void *, struct image_tool_params *);
+ /*
* Some image generation support for ex (default image type) supports
* more than one type_ids, this callback function is used to check
* whether input (-T <image_type>) is supported by registered image
OpenPOWER on IntegriCloud