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>
This commit is contained in:
Patrick Georgi 2016-01-20 18:45:07 +01:00 committed by Patrick Georgi
parent a5a628e86b
commit 9a17d04e40
1 changed files with 3 additions and 2 deletions

View File

@ -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);
}