[coreboot-gerrit] Change in coreboot[master]: cbfstool: Add '-p' option to specify the order
Daisuke Nojiri (Code Review)
gerrit at coreboot.org
Tue Oct 31 01:45:44 CET 2017
Daisuke Nojiri has uploaded this change for review. ( https://review.coreboot.org/22239
Change subject: cbfstool: Add '-p' option to specify the order
......................................................................
cbfstool: Add '-p' option to specify the order
This patch adds '-p' to the 'add' command. It allows the add
command to specify the file after which the new file will be
added. This is useful to create a padding for a file which might
be replaced with a larger file.
BUG=b:68660966
BRANCH=none
TEST=emerge-fizz coreboot && cbfstool image.bin print -r FW_MAIN_A
prints ecrw.pad after ecrw.
Change-Id: I64bc54fd10a453b4da467bc69d9590e61b0f7ead
Signed-off-by: Daisuke Nojiri <dnojiri at chromium.org>
---
M util/cbfstool/cbfs_image.c
M util/cbfstool/cbfs_image.h
M util/cbfstool/cbfstool.c
3 files changed, 23 insertions(+), 7 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/39/22239/1
diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index 306fc29..f3398cc 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -734,7 +734,7 @@
int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
uint32_t content_offset,
- struct cbfs_file *header)
+ struct cbfs_file *header, const char *after)
{
assert(image);
assert(buffer);
@@ -760,7 +760,13 @@
for (entry = cbfs_find_first_entry(image);
entry && cbfs_is_valid_entry(image, entry);
entry = cbfs_find_next_entry(image, entry)) {
-
+ if (after) {
+ if (strcasecmp(entry->filename, after))
+ continue;
+ entry = cbfs_find_next_entry(image, entry);
+ if (!entry || !cbfs_is_valid_entry(image, entry))
+ break;
+ }
entry_type = ntohl(entry->type);
if (entry_type != CBFS_COMPONENT_NULL)
continue;
diff --git a/util/cbfstool/cbfs_image.h b/util/cbfstool/cbfs_image.h
index 5772b1b..e6c3814 100644
--- a/util/cbfstool/cbfs_image.h
+++ b/util/cbfstool/cbfs_image.h
@@ -105,7 +105,8 @@
* Never pass this function a top-aligned address: convert it to an offset.
* Returns 0 on success, otherwise non-zero. */
int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer,
- uint32_t content_offset, struct cbfs_file *header);
+ uint32_t content_offset, struct cbfs_file *header,
+ const char *after);
/* Removes an entry from CBFS image. Returns 0 on success, otherwise non-zero. */
int cbfs_remove_entry(struct cbfs_image *image, const char *name);
diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c
index 3263a91..c25d1f4 100644
--- a/util/cbfstool/cbfstool.c
+++ b/util/cbfstool/cbfstool.c
@@ -52,6 +52,7 @@
struct buffer *image_region;
const char *name;
const char *filename;
+ const char *after;
const char *fmap;
const char *region_name;
const char *source_region;
@@ -239,7 +240,7 @@
header = cbfs_create_file_header(CBFS_COMPONENT_RAW,
buffer.size, name);
- if (cbfs_add_entry(&image, &buffer, offset, header) != 0) {
+ if (cbfs_add_entry(&image, &buffer, offset, header, NULL) != 0) {
ERROR("Failed to add %llu into ROM image as '%s'.\n",
(long long unsigned)u64val, name);
goto done;
@@ -303,7 +304,7 @@
header = cbfs_create_file_header(CBFS_COMPONENT_CBFSHEADER,
buffer_size(&buffer), name);
- if (cbfs_add_entry(&image, &buffer, 0, header) != 0) {
+ if (cbfs_add_entry(&image, &buffer, 0, header, NULL) != 0) {
ERROR("Failed to add cbfs master header into ROM image.\n");
goto done;
}
@@ -333,6 +334,7 @@
static int cbfs_add_component(const char *filename,
const char *name,
+ const char *after,
uint32_t type,
uint32_t offset,
uint32_t headeroffset,
@@ -425,7 +427,7 @@
offset = convert_to_from_top_aligned(param.image_region,
-offset);
- if (cbfs_add_entry(&image, &buffer, offset, header) != 0) {
+ if (cbfs_add_entry(&image, &buffer, offset, header, after) != 0) {
ERROR("Failed to add '%s' into ROM image.\n", filename);
free(header);
buffer_delete(&buffer);
@@ -678,6 +680,7 @@
return cbfs_add_component(param.filename,
param.name,
+ param.after,
param.type,
local_baseaddress,
param.headeroffset,
@@ -700,6 +703,7 @@
return cbfs_add_component(param.filename,
param.name,
+ param.after,
CBFS_COMPONENT_STAGE,
param.baseaddress,
param.headeroffset,
@@ -710,6 +714,7 @@
{
return cbfs_add_component(param.filename,
param.name,
+ param.after,
CBFS_COMPONENT_PAYLOAD,
param.baseaddress,
param.headeroffset,
@@ -730,6 +735,7 @@
}
return cbfs_add_component(param.filename,
param.name,
+ param.after,
CBFS_COMPONENT_PAYLOAD,
param.baseaddress,
param.headeroffset,
@@ -1139,7 +1145,7 @@
}
static const struct command commands[] = {
- {"add", "H:r:f:n:t:c:b:a:yvA:gh?", cbfs_add, true, true},
+ {"add", "H:r:f:n:t:c:b:a:p:yvA:gh?", cbfs_add, true, true},
{"add-flat-binary", "H:r:f:n:l:e:c:b:vA:gh?", cbfs_add_flat_binary,
true, true},
{"add-payload", "H:r:f:n:t:c:b:C:I:vA:gh?", cbfs_add_payload,
@@ -1505,6 +1511,9 @@
return 1;
}
break;
+ case 'p':
+ param.after = optarg;
+ break;
case 'P':
param.pagesize = strtoul(optarg, &suffix, 0);
if (!*optarg || (suffix && *suffix)) {
--
To view, visit https://review.coreboot.org/22239
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I64bc54fd10a453b4da467bc69d9590e61b0f7ead
Gerrit-Change-Number: 22239
Gerrit-PatchSet: 1
Gerrit-Owner: Daisuke Nojiri <dnojiri at chromium.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20171031/7c99d488/attachment.html>
More information about the coreboot-gerrit
mailing list