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:
parent
a5a628e86b
commit
9a17d04e40
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue