summaryrefslogtreecommitdiff
path: root/util/cbfstool
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2016-06-20 13:21:36 -0700
committerAaron Durbin <adurbin@chromium.org>2016-06-21 17:14:27 +0200
commit119dcee1dd320cc0d10c2c590f7f2563c14fb87f (patch)
treec8474536e680a791f759e1d07e482572c4c80b76 /util/cbfstool
parent82007619129abe7928e0bd2a88602d156406675e (diff)
fmaptool: Make base offsets absolute in fmap_config.h
fmaptool generates a header file used to hardcode certain values from the FMAP in coreboot's binaries, to avoid having to find and parse the FMAP manually for every access. For the offset of the FMAP itself this has already been using the absolute offset from the base of the whole ROM, but for individual CBFS sections it only used the offset from the immediate parent FMAP region. Since the code using it intentionally has no knowledge of the whole section tree, this causes problems as soon as the CBFS is a child section of something not at absolute offset 0 (as is the case for most x86 Chromebooks). Change-Id: If0c516083949fe5ac8cdae85e00a4461dcbdf853 Reported-by: Rolf Evers-Fischer <embedded24@evers-fischer.de> Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/15273 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'util/cbfstool')
-rw-r--r--util/cbfstool/fmaptool.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/util/cbfstool/fmaptool.c b/util/cbfstool/fmaptool.c
index 5aafffdd7b..faf65081fd 100644
--- a/util/cbfstool/fmaptool.c
+++ b/util/cbfstool/fmaptool.c
@@ -108,8 +108,9 @@ static bool write_header(const char *out_fname,
const struct flashmap_descriptor *item =
cbfs_sections_iterator_deref(cbfs_it);
assert(item->offset_known && item->size_known);
+ unsigned abs_base = fmd_calc_absolute_offset(root, item->name);
fprintf(header, "#define ___FMAP__%s_BASE 0x%x\n",
- item->name, item->offset);
+ item->name, abs_base);
fprintf(header, "#define ___FMAP__%s_SIZE 0x%x\n",
item->name, item->size);
cbfs_sections_iterator_advance(&cbfs_it);