diff options
author | Patrick Georgi <pgeorgi@chromium.org> | 2016-01-20 18:45:07 +0100 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2016-01-21 18:47:58 +0100 |
commit | 9a17d04e40b3f45f348963b8e3154fd3b869697b (patch) | |
tree | eb0a509d7725b72d1b2b461b667881a69008156c | |
parent | a5a628e86b5484200977d2d4f4a62a0d972aaf4a (diff) | |
download | coreboot-9a17d04e40b3f45f348963b8e3154fd3b869697b.tar.xz |
cbfstool: don't rewrite param.baseaddress in cbfs_add
cbfs_add calculated a base address out of the alignment specification
and stored it in param.baseaddress.
This worked when every cbfstool invocation only added a single file, but
with -r REGION1,REGION2,... multiple additions can happen.
In that case, the second (and later) additions would have both alignment
and baseaddress set, which isn't allowed, aborting the process.
Change-Id: I8c5a512dbe3c97e08c5bcd92b5541b58f65c63b3
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Reviewed-on: https://review.coreboot.org/13063
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
-rw-r--r-- | util/cbfstool/cbfstool.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c index 8ad66c457c..6d887d8eca 100644 --- a/util/cbfstool/cbfstool.c +++ b/util/cbfstool/cbfstool.c @@ -520,6 +520,7 @@ static int cbfs_add(void) { int32_t address; convert_buffer_t convert; + uint32_t local_baseaddress = param.baseaddress; if (param.alignment && param.baseaddress) { ERROR("Cannot specify both alignment and base address\n"); @@ -541,13 +542,13 @@ static int cbfs_add(void) size_t metadata_sz = sizeof(struct cbfs_file_attr_compression); if (do_cbfs_locate(&address, metadata_sz)) return 1; - param.baseaddress = address; + local_baseaddress = address; } return cbfs_add_component(param.filename, param.name, param.type, - param.baseaddress, + local_baseaddress, param.headeroffset, convert); } |