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))