summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util/cbfstool/cbfs_image.c5
-rw-r--r--util/cbfstool/cbfstool.c13
-rw-r--r--util/cbfstool/common.c15
-rw-r--r--util/cbfstool/common.h1
4 files changed, 26 insertions, 8 deletions
diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index afe1298130..1a522bd655 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -570,13 +570,14 @@ int cbfs_print_header_info(struct cbfs_image *image)
char *name = strdup(image->buffer.name);
assert(image && image->header);
printf("%s: %zd kB, bootblocksize %d, romsize %d, offset 0x%x\n"
- "alignment: %d bytes\n\n",
+ "alignment: %d bytes, architecture: %s\n\n",
basename(name),
image->buffer.size / 1024,
image->header->bootblocksize,
image->header->romsize,
image->header->offset,
- image->header->align);
+ image->header->align,
+ arch_to_string(image->header->architecture));
free(name);
return 0;
}
diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c
index 937b6105b5..33aac88ed9 100644
--- a/util/cbfstool/cbfstool.c
+++ b/util/cbfstool/cbfstool.c
@@ -136,20 +136,21 @@ static int cbfs_add_component(const char *cbfs_name,
return 1;
}
+ if (cbfs_image_from_file(&image, cbfs_name) != 0) {
+ ERROR("Could not load ROM image '%s'.\n", cbfs_name);
+ return 1;
+ }
+
if (buffer_from_file(&buffer, filename) != 0) {
ERROR("Could not load file '%s'.\n", filename);
+ cbfs_image_delete(&image);
return 1;
}
if (convert && convert(&buffer, &offset) != 0) {
ERROR("Failed to parse file '%s'.\n", filename);
buffer_delete(&buffer);
- return 1;
- }
-
- if (cbfs_image_from_file(&image, cbfs_name) != 0) {
- ERROR("Could not load ROM image '%s'.\n", cbfs_name);
- buffer_delete(&buffer);
+ cbfs_image_delete(&image);
return 1;
}
diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c
index a28e74179d..60819495f7 100644
--- a/util/cbfstool/common.c
+++ b/util/cbfstool/common.c
@@ -150,6 +150,21 @@ uint32_t string_to_arch(const char *arch_string)
return ret;
}
+const char *arch_to_string(uint32_t a)
+{
+ int i;
+ const char *ret = NULL;
+
+ for (i = 0; i < ARRAY_SIZE(arch_names); i++) {
+ if (a == arch_names[i].arch) {
+ ret = arch_names[i].name;
+ break;
+ }
+ }
+
+ return ret;
+}
+
static struct filetypes_t {
uint32_t type;
const char *name;
diff --git a/util/cbfstool/common.h b/util/cbfstool/common.h
index b1f25d0d20..455fb8b283 100644
--- a/util/cbfstool/common.h
+++ b/util/cbfstool/common.h
@@ -112,6 +112,7 @@ int buffer_write_file(struct buffer *buffer, const char *filename);
/* Destroys a memory buffer. */
void buffer_delete(struct buffer *buffer);
+const char *arch_to_string(uint32_t a);
uint32_t string_to_arch(const char *arch_string);
#define ALIGN(val, by) (((val) + (by)-1)&~((by)-1))