diff options
author | Patrick Georgi <pgeorgi@google.com> | 2015-08-12 12:05:21 +0200 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2015-08-13 16:10:27 +0200 |
commit | aa44dbd364bfb36b3cb4eb2fb3f9ee292610ccf4 (patch) | |
tree | 702cca057a516a5f88f6103b22e452e7545c57b5 /util | |
parent | 0dc7354760e889074472ef17652c7f270f3aa529 (diff) | |
download | coreboot-aa44dbd364bfb36b3cb4eb2fb3f9ee292610ccf4.tar.gz coreboot-aa44dbd364bfb36b3cb4eb2fb3f9ee292610ccf4.tar.bz2 coreboot-aa44dbd364bfb36b3cb4eb2fb3f9ee292610ccf4.zip |
cbfstool: move tests for fixed-location files earlier
... and the assert is gone.
The actual action of adding a just-right file can be moved after the tests
since it's exactly the condition those tests don't continue or break on.
Change-Id: I6d0e829e0158198301136ada9a0de2f168ceee3f
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: http://review.coreboot.org/11221
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'util')
-rw-r--r-- | util/cbfstool/cbfs_image.c | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c index 1a20fbae80bb..19281eeaaa81 100644 --- a/util/cbfstool/cbfs_image.c +++ b/util/cbfstool/cbfs_image.c @@ -580,6 +580,26 @@ int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer, if (addr + need_size > addr_next) continue; + // Test for complicated cases + if (content_offset > 0) { + if (addr_next < content_offset) { + DEBUG("Not for specified offset yet"); + continue; + } else if (addr > content_offset) { + DEBUG("Exceed specified content_offset."); + break; + } else if (addr + header_size > content_offset) { + ERROR("Not enough space for header.\n"); + break; + } else if (content_offset + buffer->size > addr_next) { + ERROR("Not enough space for content.\n"); + break; + } + } + + // TODO there are more few tricky cases that we may + // want to fit by altering offset. + // Can we simply put object here? if (!content_offset || content_offset == addr + header_size) { DEBUG("Filling new entry data (%zd bytes).\n", @@ -613,27 +633,6 @@ int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer, return 0; } - // We need to put content here, and the case is really - // complicated... - assert(content_offset); - if (content_offset > 0) { - if (addr_next < content_offset) { - DEBUG("Not for specified offset yet"); - continue; - } else if (addr > content_offset) { - DEBUG("Exceed specified content_offset."); - break; - } else if (addr + header_size > content_offset) { - ERROR("Not enough space for header.\n"); - break; - } else if (content_offset + buffer->size > addr_next) { - ERROR("Not enough space for content.\n"); - break; - } - } - - // TODO there are more few tricky cases that we may - // want to fit by altering offset. DEBUG("section 0x%x+0x%x for content_offset 0x%x.\n", addr, addr_next - addr, content_offset); |