util/ifdtool/ifdtool.c: Add NULL check for fmapname

Some boards (e.g. prodrive/hermes) that do not provide their own FMAP
and therefore have been generated by the build system (+ ifdtool)
experience a failure when trying to build with an IFD that contains
regions which do not have equivalent fmap names (set to NULL).

Therefore add a NULL check for the fmapname and ignore the region if we
do not have an fmapname.

Test: compile prodrive/hermes

Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com>
Change-Id: Ib4589b7fdbd11d644214ca5601536e9aeb26882f
Reviewed-on: https://review.coreboot.org/c/coreboot/+/79010
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
This commit is contained in:
Maximilian Brune 2023-11-13 02:07:01 +01:00 committed by Matt DeVillier
parent d3870a2761
commit 794d1d7f6c

View File

@ -1068,6 +1068,14 @@ static void create_fmap_template(char *image, int size, const char *layout_fname
if (region.limit == 0 || region.base == 0x07FFF000) if (region.limit == 0 || region.base == 0x07FFF000)
continue; continue;
/* Is there an FMAP equivalent? IFD reserved regions are usually thrown out
* of the FMAP here
*/
if (!region_names[region.type].fmapname) {
printf("Skip IFD region: %s\n", region_names[region.type].pretty);
continue;
}
/* Here we decide to use the coreboot generated FMAP BIOS region, instead of /* Here we decide to use the coreboot generated FMAP BIOS region, instead of
* the one specified in the IFD. The case when IFD and FMAP BIOS region do not * the one specified in the IFD. The case when IFD and FMAP BIOS region do not
* match cannot be caught here, therefore one should still validate IFD and * match cannot be caught here, therefore one should still validate IFD and