<p>Angel Pons has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/28234">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">util/ifdfake: Remove deprecated utility<br><br>Since ifdfake has been deprecated in favor of better alternatives, there<br>is no need to support it any further. Remove it from "util/", as well as<br>any leftover references in other files.<br><br>Change-Id: I45fe3d9fd606a61d5c3b9d0e6489a1df6d6510f0<br>Signed-off-by: Angel Pons <th3fanbus@gmail.com><br>---<br>M .gitignore<br>M Documentation/util.md<br>M MAINTAINERS<br>M util/README.md<br>D util/ifdfake/Makefile<br>D util/ifdfake/description.md<br>D util/ifdfake/ifdfake.c<br>7 files changed, 0 insertions(+), 267 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/34/28234/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/.gitignore b/.gitignore</span><br><span>index 378741f..7523a5f 100644</span><br><span>--- a/.gitignore</span><br><span>+++ b/.gitignore</span><br><span>@@ -99,7 +99,6 @@</span><br><span> util/genprof/genprof</span><br><span> util/getpir/getpir</span><br><span> util/ifdtool/ifdtool</span><br><span style="color: hsl(0, 100%, 40%);">-util/ifdfake/ifdfake</span><br><span> util/intelmetool/intelmetool</span><br><span> util/inteltool/.dependencies</span><br><span> util/inteltool/inteltool</span><br><span>diff --git a/Documentation/util.md b/Documentation/util.md</span><br><span>index be7cc99..72355e3 100644</span><br><span>--- a/Documentation/util.md</span><br><span>+++ b/Documentation/util.md</span><br><span>@@ -46,8 +46,6 @@</span><br><span> * __genprof__ - Format function tracing logs `Bash` `C`</span><br><span> * __gitconfig__ - Initialize git repository submodules install git</span><br><span> hooks `Bash`</span><br><span style="color: hsl(0, 100%, 40%);">-* __ifdfake__ - Create an Intel Firmware Descriptor with just a section</span><br><span style="color: hsl(0, 100%, 40%);">-layout `C`</span><br><span> * __ifdtool__ - Extract and dump Intel Firmware Descriptor information</span><br><span> `C`</span><br><span> * __intelmetool__ - Dump interesting things about Management Engine</span><br><span>diff --git a/MAINTAINERS b/MAINTAINERS</span><br><span>index 0875fdd..ca8a6f2 100644</span><br><span>--- a/MAINTAINERS</span><br><span>+++ b/MAINTAINERS</span><br><span>@@ -414,7 +414,6 @@</span><br><span> IFDTOOL</span><br><span> M:     Stefan Reinauer <stefan.reinauer@coreboot.org></span><br><span> F:      util/ifdtool/</span><br><span style="color: hsl(0, 100%, 40%);">-F: util/ifdfake/</span><br><span> </span><br><span> BUILD SYSTEM</span><br><span> M: Patrick Georgi <patrick@georgi-clan.de></span><br><span>diff --git a/util/README.md b/util/README.md</span><br><span>index 96d5918..69ed11e 100644</span><br><span>--- a/util/README.md</span><br><span>+++ b/util/README.md</span><br><span>@@ -44,8 +44,6 @@</span><br><span> * __genprof__ - Format function tracing logs `Bash` `C`</span><br><span> * __gitconfig__ - Initialize git repository submodules install git</span><br><span> hooks `Bash`</span><br><span style="color: hsl(0, 100%, 40%);">-* __ifdfake__ - Create an Intel Firmware Descriptor with just a section</span><br><span style="color: hsl(0, 100%, 40%);">-layout `C`</span><br><span> * __ifdtool__ - Extract and dump Intel Firmware Descriptor information</span><br><span> `C`</span><br><span> * __intelmetool__ - Dump interesting things about Management Engine</span><br><span>diff --git a/util/ifdfake/Makefile b/util/ifdfake/Makefile</span><br><span>deleted file mode 100644</span><br><span>index 4080ef9..0000000</span><br><span>--- a/util/ifdfake/Makefile</span><br><span>+++ /dev/null</span><br><span>@@ -1,39 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#</span><br><span style="color: hsl(0, 100%, 40%);">-# ifdfake - Create an Intel Firmware Descriptor with just a section layout</span><br><span style="color: hsl(0, 100%, 40%);">-#</span><br><span style="color: hsl(0, 100%, 40%);">-# Copyright (C) 2013 secunet Security Networks AG</span><br><span style="color: hsl(0, 100%, 40%);">-#</span><br><span style="color: hsl(0, 100%, 40%);">-# This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">-# it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">-# the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(0, 100%, 40%);">-#</span><br><span style="color: hsl(0, 100%, 40%);">-# This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">-# but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(0, 100%, 40%);">-# GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">-#</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-PROGRAM = ifdfake</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-CC      ?= gcc</span><br><span style="color: hsl(0, 100%, 40%);">-INSTALL ?= /usr/bin/install</span><br><span style="color: hsl(0, 100%, 40%);">-PREFIX  ?= /usr/local</span><br><span style="color: hsl(0, 100%, 40%);">-CFLAGS  ?= -O2 -g -Wall -W</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-OBJS = ifdfake.o</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-all: $(PROGRAM)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-$(PROGRAM): $(OBJS)</span><br><span style="color: hsl(0, 100%, 40%);">-        $(CC) -o $(PROGRAM) $(OBJS) $(LDFLAGS)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-clean:</span><br><span style="color: hsl(0, 100%, 40%);">-    rm -f $(PROGRAM) *.o *~</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-distclean: clean</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-install: $(PROGRAM)</span><br><span style="color: hsl(0, 100%, 40%);">-      mkdir -p $(DESTDIR)$(PREFIX)/bin</span><br><span style="color: hsl(0, 100%, 40%);">-        $(INSTALL) $(PROGRAM) $(DESTDIR)$(PREFIX)/bin</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-.PHONY: all clean distclean</span><br><span>diff --git a/util/ifdfake/description.md b/util/ifdfake/description.md</span><br><span>deleted file mode 100644</span><br><span>index 5835bec..0000000</span><br><span>--- a/util/ifdfake/description.md</span><br><span>+++ /dev/null</span><br><span>@@ -1 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-Create an Intel Firmware Descriptor with just a section layout `C`</span><br><span>diff --git a/util/ifdfake/ifdfake.c b/util/ifdfake/ifdfake.c</span><br><span>deleted file mode 100644</span><br><span>index b549f3a..0000000</span><br><span>--- a/util/ifdfake/ifdfake.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,221 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * ifdfake - Create an Intel Firmware Descriptor with just a section layout</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (C) 2013 secunet Security Networks AG</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <errno.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <stdio.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <stdint.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <stdlib.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <string.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <getopt.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define REGION_COUNT 5</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define FDBAR_OFFSET 0x10</span><br><span style="color: hsl(0, 100%, 40%);">-#define FRBA_OFFSET 0x40</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-typedef struct {</span><br><span style="color: hsl(0, 100%, 40%);">-  uint32_t base, limit, size;</span><br><span style="color: hsl(0, 100%, 40%);">-} region_t;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static void write_image(const region_t regions[], const char *const image)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       FILE *const f = fopen(image, "w");</span><br><span style="color: hsl(0, 100%, 40%);">-    if (!f) {</span><br><span style="color: hsl(0, 100%, 40%);">-               perror("Could not open file");</span><br><span style="color: hsl(0, 100%, 40%);">-                exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       if (fseek(f, 0x1000 - 1, SEEK_SET)) {</span><br><span style="color: hsl(0, 100%, 40%);">-           perror("Failed to seek to end of descriptor");</span><br><span style="color: hsl(0, 100%, 40%);">-                exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-       char zero = '\0';</span><br><span style="color: hsl(0, 100%, 40%);">-       if (fwrite(&zero, 1, 1, f) != 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-          fprintf(stderr, "Failed to write at end of descriptor.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-           exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       if (fseek(f, FDBAR_OFFSET, SEEK_SET)) {</span><br><span style="color: hsl(0, 100%, 40%);">-         perror("Failed to seek to fdbar");</span><br><span style="color: hsl(0, 100%, 40%);">-            exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       struct {</span><br><span style="color: hsl(0, 100%, 40%);">-                uint32_t flvalsig;</span><br><span style="color: hsl(0, 100%, 40%);">-              uint32_t flmap0;</span><br><span style="color: hsl(0, 100%, 40%);">-        } fdbar;</span><br><span style="color: hsl(0, 100%, 40%);">-        memset(&fdbar, 0x00, sizeof(fdbar));</span><br><span style="color: hsl(0, 100%, 40%);">-        fdbar.flvalsig = 0x0ff0a55a;</span><br><span style="color: hsl(0, 100%, 40%);">-    fdbar.flmap0 = (REGION_COUNT - 1) << 24 | (FRBA_OFFSET >> 4) << 16;</span><br><span style="color: hsl(0, 100%, 40%);">-   if (fwrite(&fdbar, sizeof(fdbar), 1, f) != 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-             fprintf(stderr, "Failed to write fdbar.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-          exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       int i;</span><br><span style="color: hsl(0, 100%, 40%);">-  uint32_t frba[REGION_COUNT];</span><br><span style="color: hsl(0, 100%, 40%);">-    for (i = 0; i < REGION_COUNT; ++i) {</span><br><span style="color: hsl(0, 100%, 40%);">-         if (regions[i].size)</span><br><span style="color: hsl(0, 100%, 40%);">-                    frba[i] = ((regions[i].limit & 0xfff000) << (16 - 12)) |</span><br><span style="color: hsl(0, 100%, 40%);">-                                ((regions[i].base & 0xfff000) >> 12);</span><br><span style="color: hsl(0, 100%, 40%);">-               else</span><br><span style="color: hsl(0, 100%, 40%);">-                    frba[i] = 0x00000fff;</span><br><span style="color: hsl(0, 100%, 40%);">-   }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       if (fseek(f, FRBA_OFFSET, SEEK_SET)) {</span><br><span style="color: hsl(0, 100%, 40%);">-          perror("Failed to seek to frba");</span><br><span style="color: hsl(0, 100%, 40%);">-             exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (fwrite(frba, sizeof(frba), 1, f) != 1) {</span><br><span style="color: hsl(0, 100%, 40%);">-            fprintf(stderr, "Failed to write frba.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-           exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       fclose(f);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static int parse_region(const char *_arg, region_t *const region)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   char *const start = strdup(_arg);</span><br><span style="color: hsl(0, 100%, 40%);">-       int size_spec = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-      unsigned long first, second;</span><br><span style="color: hsl(0, 100%, 40%);">-    if (!start) {</span><br><span style="color: hsl(0, 100%, 40%);">-           fprintf(stderr, "Out of memory.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-          exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       char *colon = strchr(start, ':');</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!colon) {</span><br><span style="color: hsl(0, 100%, 40%);">-           colon = strchr(start, '+');</span><br><span style="color: hsl(0, 100%, 40%);">-             if (!colon) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   free(start);</span><br><span style="color: hsl(0, 100%, 40%);">-                    return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-              }</span><br><span style="color: hsl(0, 100%, 40%);">-               size_spec = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-  }</span><br><span style="color: hsl(0, 100%, 40%);">-       *colon = '\0';</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  char *const end = colon + 1;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    errno = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-      first = strtoul(start, NULL, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-        second = strtoul(end, NULL, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (size_spec) {</span><br><span style="color: hsl(0, 100%, 40%);">-                region->base = first;</span><br><span style="color: hsl(0, 100%, 40%);">-                region->size = second;</span><br><span style="color: hsl(0, 100%, 40%);">-               region->limit = region->base + region->size - 1;</span><br><span style="color: hsl(0, 100%, 40%);">-       } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                region->base = first;</span><br><span style="color: hsl(0, 100%, 40%);">-                region->limit = second;</span><br><span style="color: hsl(0, 100%, 40%);">-              region->size = region->limit - region->base + 1;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       free(start);</span><br><span style="color: hsl(0, 100%, 40%);">-    if (errno) {</span><br><span style="color: hsl(0, 100%, 40%);">-            perror("Failed to parse region");</span><br><span style="color: hsl(0, 100%, 40%);">-             return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static void print_usage(const char *name)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-    printf("usage: %s [(-b|-m|-g|-p) <start>:<end>]... <output file>\n", name);</span><br><span style="color: hsl(0, 100%, 40%);">- printf("\n"</span><br><span style="color: hsl(0, 100%, 40%);">-          "   -b | --bios       <start>:<end>   BIOS region\n"</span><br><span style="color: hsl(0, 100%, 40%);">-              "   -m | --me         <start>:<end>   Intel ME region\n"</span><br><span style="color: hsl(0, 100%, 40%);">-          "   -g | --gbe        <start>:<end>   Gigabit Ethernet region\n"</span><br><span style="color: hsl(0, 100%, 40%);">-          "   -p | --platform   <start>:<end>   Platform Data region\n"</span><br><span style="color: hsl(0, 100%, 40%);">-             "   -h | --help                       print this help\n\n"</span><br><span style="color: hsl(0, 100%, 40%);">-            "<start> and <end> bounds are given in bytes, the <end> bound is inclusive.\n"</span><br><span style="color: hsl(0, 100%, 40%);">-              "All regions must be multiples of 4K in size and 4K aligned.\n"</span><br><span style="color: hsl(0, 100%, 40%);">-               "The descriptor region always resides in the first 4K.\n\n"</span><br><span style="color: hsl(0, 100%, 40%);">-           "An IFD created with ifdfake won't work as a replacement for a real IFD.\n"</span><br><span style="color: hsl(0, 100%, 40%);">-               "Never try to flash such an IFD to your board!\n\n");</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int main(int argc, char *argv[])</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-        int opt, option_index = 0, idx;</span><br><span style="color: hsl(0, 100%, 40%);">- region_t regions[REGION_COUNT];</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- memset(regions, 0x00, sizeof(regions));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- static struct option long_options[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-         {"bios", 1, NULL, 'b'},</span><br><span style="color: hsl(0, 100%, 40%);">-               {"me", 1, NULL, 'm'},</span><br><span style="color: hsl(0, 100%, 40%);">-         {"gbe", 1, NULL, 'g'},</span><br><span style="color: hsl(0, 100%, 40%);">-                {"platform", 1, NULL, 'p'},</span><br><span style="color: hsl(0, 100%, 40%);">-           {"help", 0, NULL, 'h'},</span><br><span style="color: hsl(0, 100%, 40%);">-               {0, 0, 0, 0}</span><br><span style="color: hsl(0, 100%, 40%);">-    };</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      while ((opt = getopt_long(argc, argv, "b:m:g:p:h?",</span><br><span style="color: hsl(0, 100%, 40%);">-                             long_options, &option_index)) != EOF) {</span><br><span style="color: hsl(0, 100%, 40%);">-           switch (opt) {</span><br><span style="color: hsl(0, 100%, 40%);">-          case 'b': case 'm': case 'g': case 'p':</span><br><span style="color: hsl(0, 100%, 40%);">-                 switch (opt) {</span><br><span style="color: hsl(0, 100%, 40%);">-                          case 'b': idx = 1; break;</span><br><span style="color: hsl(0, 100%, 40%);">-                               case 'm': idx = 2; break;</span><br><span style="color: hsl(0, 100%, 40%);">-                               case 'g': idx = 3; break;</span><br><span style="color: hsl(0, 100%, 40%);">-                               case 'p': idx = 4; break;</span><br><span style="color: hsl(0, 100%, 40%);">-                               default:  idx = 0; break; /* can't happen */</span><br><span style="color: hsl(0, 100%, 40%);">-                        }</span><br><span style="color: hsl(0, 100%, 40%);">-                       if (parse_region(optarg, &regions[idx])) {</span><br><span style="color: hsl(0, 100%, 40%);">-                          print_usage(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-                           exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-                     }</span><br><span style="color: hsl(0, 100%, 40%);">-                       break;</span><br><span style="color: hsl(0, 100%, 40%);">-          case 'h':</span><br><span style="color: hsl(0, 100%, 40%);">-               case '?':</span><br><span style="color: hsl(0, 100%, 40%);">-               default:</span><br><span style="color: hsl(0, 100%, 40%);">-                        print_usage(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-                   exit(EXIT_SUCCESS);</span><br><span style="color: hsl(0, 100%, 40%);">-                     break;</span><br><span style="color: hsl(0, 100%, 40%);">-          }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       if (optind + 1 != argc) {</span><br><span style="color: hsl(0, 100%, 40%);">-               fprintf(stderr, "No output file given.\n\n");</span><br><span style="color: hsl(0, 100%, 40%);">-         print_usage(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-           exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       regions[0].base   = 0x00000000;</span><br><span style="color: hsl(0, 100%, 40%);">- regions[0].limit  = 0x00000fff;</span><br><span style="color: hsl(0, 100%, 40%);">- regions[0].size   = 0x00001000;</span><br><span style="color: hsl(0, 100%, 40%);">- for (idx = 1; idx < REGION_COUNT; ++idx) {</span><br><span style="color: hsl(0, 100%, 40%);">-           if (regions[idx].size) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        if (regions[idx].base & 0xfff)</span><br><span style="color: hsl(0, 100%, 40%);">-                              fprintf(stderr, "Region %d is "</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "not 4K aligned.\n", idx);</span><br><span style="color: hsl(0, 100%, 40%);">-                    else if (regions[idx].size & 0xfff)</span><br><span style="color: hsl(0, 100%, 40%);">-                         fprintf(stderr, "Region %d size is "</span><br><span style="color: hsl(0, 100%, 40%);">-                                  "no multiple of 4K.\n", idx);</span><br><span style="color: hsl(0, 100%, 40%);">-                 else if (regions[idx].limit <= regions[idx].base)</span><br><span style="color: hsl(0, 100%, 40%);">-                            fprintf(stderr, "Region %d is empty.\n", idx);</span><br><span style="color: hsl(0, 100%, 40%);">-                        else</span><br><span style="color: hsl(0, 100%, 40%);">-                            continue;</span><br><span style="color: hsl(0, 100%, 40%);">-                       print_usage(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-                   exit(EXIT_FAILURE);</span><br><span style="color: hsl(0, 100%, 40%);">-             }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       write_image(regions, argv[optind]);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/28234">change 28234</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/28234"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I45fe3d9fd606a61d5c3b9d0e6489a1df6d6510f0 </div>
<div style="display:none"> Gerrit-Change-Number: 28234 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Angel Pons <th3fanbus@gmail.com> </div>