[coreboot-gerrit] New patch to review for coreboot: ifdfake: allow "base+size" description of regions

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Fri Sep 11 11:52:21 CET 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11623

-gerrit

commit 6dd36c65f77e428c9641cdf76b080f644fc8325f
Author: Patrick Georgi <pgeorgi at chromium.org>
Date:   Fri Sep 11 13:48:24 2015 +0200

    ifdfake: allow "base+size" description of regions
    
    This is more in line with how fmd/fmap specify ranges.
    
    Change-Id: Iecf8250e84d6eb267711ded446909b21147f1a9c
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
---
 util/ifdfake/ifdfake.c | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/util/ifdfake/ifdfake.c b/util/ifdfake/ifdfake.c
index b70b6ae..7b268df 100644
--- a/util/ifdfake/ifdfake.c
+++ b/util/ifdfake/ifdfake.c
@@ -91,24 +91,39 @@ static void write_image(const region_t regions[], const char *const image)
 static int parse_region(const char *_arg, region_t *const region)
 {
 	char *const start = strdup(_arg);
+	int size_spec = 0;
+	unsigned long first, second;
 	if (!start) {
 		fprintf(stderr, "Out of memory.\n");
 		exit(EXIT_FAILURE);
 	}
 
-	char *const colon = strchr(start, ':');
+	char *colon = strchr(start, ':');
 	if (!colon) {
-		free(start);
-		return -1;
+		colon = strchr(start, '+');
+		if (!colon) {
+			free(start);
+			return -1;
+		}
+		size_spec = 1;
 	}
 	*colon = '\0';
 
 	char *const end = colon + 1;
 
 	errno = 0;
-	region->base = strtoul(start, NULL, 0);
-	region->limit = strtoul(end, NULL, 0);
-	region->size = region->limit - region->base + 1;
+	first = strtoul(start, NULL, 0);
+	second = strtoul(end, NULL, 0);
+
+	if (size_spec) {
+		region->base = first;
+		region->size = second;
+		region->limit = region->base + region->size - 1;
+	} else {
+		region->base = first;
+		region->limit = second;
+		region->size = region->limit - region->base + 1;
+	}
 
 	free(start);
 	if (errno) {



More information about the coreboot-gerrit mailing list