blob: 6854977ba4befe08a5d849ccacf3490bd4deb7f3 [file] [log] [blame]
--- fis.orig/fis.c 2010-05-12 11:09:22.000000000 -0700
+++ fis/fis.c 2010-05-12 11:05:45.000000000 -0700
@@ -401,9 +401,24 @@
dir_t dir;
load_dir(fd,offset,&size,swap_endianness,&dir);
fprintf(stdout,"Name FLASH addr Mem addr Length Entry point Checksum\n");
- FOR_EACH_DIR_ENTRY(dir,i) {
- dump_desc(stdout,get(i));
- }
+ uint32_t last_addr = 0;
+ bool image_found;
+ do {
+ uint32_t lowest_addr = 0xffffffff;
+ iter_t index;
+ image_found = false;
+ FOR_EACH_DIR_ENTRY(dir,i) {
+ const struct fis_image_desc *d = get(i);
+ if ((d->flash_base >= last_addr) && (d->flash_base < lowest_addr)) {
+ lowest_addr = d->flash_base;
+ image_found = true;
+ index = i;
+ }
+ }
+ if (image_found)
+ dump_desc(stdout,get(index));
+ last_addr = lowest_addr + 1;
+ } while (image_found == true);
}