cbfstool: allow passing a precalculated header size into cbfs_add_entry()
This is in preparation of creating the cbfs_file header much earlier in the process. For now, size is enough because lots of things need to move before it makes sense to deal with cbfs_file at a higher level. Change-Id: I47589247c3011cb828170eaa10ef4a1e0f85ab84 Signed-off-by: Patrick Georgi <pgeorgi@google.com> Reviewed-on: http://review.coreboot.org/11213 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
4e54bf9334
commit
e60b55a570
|
@ -533,7 +533,8 @@ static int cbfs_add_entry_at(struct cbfs_image *image,
|
||||||
}
|
}
|
||||||
|
|
||||||
int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
|
int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
|
||||||
const char *name, uint32_t type, uint32_t content_offset)
|
const char *name, uint32_t type, uint32_t content_offset,
|
||||||
|
uint32_t header_size)
|
||||||
{
|
{
|
||||||
assert(image);
|
assert(image);
|
||||||
assert(buffer);
|
assert(buffer);
|
||||||
|
@ -544,9 +545,10 @@ int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
|
||||||
uint32_t entry_type;
|
uint32_t entry_type;
|
||||||
uint32_t addr, addr_next;
|
uint32_t addr, addr_next;
|
||||||
struct cbfs_file *entry, *next;
|
struct cbfs_file *entry, *next;
|
||||||
uint32_t header_size, need_size, new_size;
|
uint32_t need_size, new_size;
|
||||||
|
|
||||||
header_size = cbfs_calculate_file_header_size(name);
|
if (header_size == 0)
|
||||||
|
header_size = cbfs_calculate_file_header_size(name);
|
||||||
|
|
||||||
need_size = header_size + buffer->size;
|
need_size = header_size + buffer->size;
|
||||||
DEBUG("cbfs_add_entry('%s'@0x%x) => need_size = %u+%zu=%u\n",
|
DEBUG("cbfs_add_entry('%s'@0x%x) => need_size = %u+%zu=%u\n",
|
||||||
|
|
|
@ -93,7 +93,8 @@ int cbfs_export_entry(struct cbfs_image *image, const char *entry_name,
|
||||||
* Never pass this function a top-aligned address: convert it to an offset.
|
* Never pass this function a top-aligned address: convert it to an offset.
|
||||||
* Returns 0 on success, otherwise non-zero. */
|
* Returns 0 on success, otherwise non-zero. */
|
||||||
int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
|
int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
|
||||||
const char *name, uint32_t type, uint32_t content_offset);
|
const char *name, uint32_t type, uint32_t content_offset,
|
||||||
|
uint32_t header_size);
|
||||||
|
|
||||||
/* Removes an entry from CBFS image. Returns 0 on success, otherwise non-zero. */
|
/* Removes an entry from CBFS image. Returns 0 on success, otherwise non-zero. */
|
||||||
int cbfs_remove_entry(struct cbfs_image *image, const char *name);
|
int cbfs_remove_entry(struct cbfs_image *image, const char *name);
|
||||||
|
|
|
@ -150,8 +150,8 @@ static int cbfs_add_integer_component(const char *name,
|
||||||
offset = convert_to_from_top_aligned(param.image_region,
|
offset = convert_to_from_top_aligned(param.image_region,
|
||||||
-offset);
|
-offset);
|
||||||
|
|
||||||
if (cbfs_add_entry(&image, &buffer, name, CBFS_COMPONENT_RAW, offset) !=
|
if (cbfs_add_entry(&image, &buffer, name, CBFS_COMPONENT_RAW,
|
||||||
0) {
|
offset, 0) != 0) {
|
||||||
ERROR("Failed to add %llu into ROM image as '%s'.\n",
|
ERROR("Failed to add %llu into ROM image as '%s'.\n",
|
||||||
(long long unsigned)u64val, name);
|
(long long unsigned)u64val, name);
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -211,7 +211,7 @@ static int cbfs_add_component(const char *filename,
|
||||||
offset = convert_to_from_top_aligned(param.image_region,
|
offset = convert_to_from_top_aligned(param.image_region,
|
||||||
-offset);
|
-offset);
|
||||||
|
|
||||||
if (cbfs_add_entry(&image, &buffer, name, type, offset) != 0) {
|
if (cbfs_add_entry(&image, &buffer, name, type, offset, 0) != 0) {
|
||||||
ERROR("Failed to add '%s' into ROM image.\n", filename);
|
ERROR("Failed to add '%s' into ROM image.\n", filename);
|
||||||
buffer_delete(&buffer);
|
buffer_delete(&buffer);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
Loading…
Reference in New Issue