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>
This commit is contained in:
parent
0dc7354760
commit
aa44dbd364
|
@ -580,6 +580,26 @@ int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
|
||||||
if (addr + need_size > addr_next)
|
if (addr + need_size > addr_next)
|
||||||
continue;
|
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?
|
// Can we simply put object here?
|
||||||
if (!content_offset || content_offset == addr + header_size) {
|
if (!content_offset || content_offset == addr + header_size) {
|
||||||
DEBUG("Filling new entry data (%zd bytes).\n",
|
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;
|
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",
|
DEBUG("section 0x%x+0x%x for content_offset 0x%x.\n",
|
||||||
addr, addr_next - addr, content_offset);
|
addr, addr_next - addr, content_offset);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue