fmaptool: Introduce the fmd ("flashmap descriptor") language and compiler

This adds a compiler for a language whose textual representation of flashmap
regions will be used to describe the layout of flash chips that contain more
than just a single CBFS. Direct integration with cbfstool (via a new
command-line switch for the create action) is forthcoming but will be added
separately.

BUG=chromium:461875
TEST=Use Chromium OS's cros_bundle_firmware script on the fmap.dts file for
panther. Using the latter file as a reference, write a corresponding
fmap.fmd file and feed it through fmaptool. Run both binary output files
though the flashmap project's own flashmap_decode utility. Observe only
the expected differences.
BRANCH=None

Change-Id: I06b32d138dbef0a4e5ed43c81bd31c796fd5d669
Signed-off-by: Sol Boucher <solb@chromium.org>
Original-Commit-Id: 005ab67eb594e21489cf31036aedaea87e0c7142
Original-Change-Id: Ia08f28688efdbbfc70c255916b8eb7eb0eb07fb2
Original-Signed-off-by: Sol Boucher <solb@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/255031
Original-Reviewed-by: Julius Werner <jwerner@chromium.org>
Original-Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Reviewed-on: http://review.coreboot.org/9942
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Sol Boucher
2015-02-26 11:47:19 -08:00
committed by Patrick Georgi
parent 5f7e4f019e
commit 69b88bf127
25 changed files with 5259 additions and 164 deletions

View File

@ -47,7 +47,7 @@ void kv_pair_set_style(enum kv_pair_style style)
_style = style;
}
enum kv_pair_style kv_pair_get_style()
enum kv_pair_style kv_pair_get_style(void)
{
return _style;
}
@ -63,18 +63,6 @@ struct kv_pair *kv_pair_new(void)
return kv;
}
struct kv_pair **kv_pair_new_array(size_t size)
{
struct kv_pair **kv;
size_t i;
kv = (struct kv_pair **) calloc(0, sizeof(kv) * size);
for (i = 0; i < size; ++i) {
kv[i] = kv_pair_new();
}
return kv;
}
struct kv_pair *kv_pair_add(struct kv_pair *kv_list,
const char *key, const char *value)
{
@ -163,15 +151,6 @@ void kv_pair_free(struct kv_pair *kv_list)
}
}
void kv_pair_free_array(struct kv_pair **kv_array, size_t size)
{
size_t i;
for (i = 0; i < size; ++i) {
kv_pair_free(kv_array[i]);
}
free(kv_array);
}
void kv_pair_print_to_file(FILE* fp, struct kv_pair *kv_list,
enum kv_pair_style style)
{