summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@google.com>2015-08-12 12:05:21 +0200
committerPatrick Georgi <pgeorgi@google.com>2015-08-13 16:10:27 +0200
commitaa44dbd364bfb36b3cb4eb2fb3f9ee292610ccf4 (patch)
tree702cca057a516a5f88f6103b22e452e7545c57b5
parent0dc7354760e889074472ef17652c7f270f3aa529 (diff)
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>
-rw-r--r--util/cbfstool/cbfs_image.c41
1 files changed, 20 insertions, 21 deletions
diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index 1a20fbae80..19281eeaaa 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);