aboutsummaryrefslogtreecommitdiff
path: root/util/cbfstool/cbfs-mkstage.c
diff options
context:
space:
mode:
authorDavid Hendricks <dhendrix@chromium.org>2012-11-16 14:48:22 -0800
committerStefan Reinauer <stefan.reinauer@coreboot.org>2012-11-30 00:42:31 +0100
commit90ca3b6bd7d7849898fe2363a9e6d0e002c95943 (patch)
treebe21c4f63d3f01afa0ec98018d83131c4f150f52 /util/cbfstool/cbfs-mkstage.c
parent11a20b614e708582ebd7607d39487938f35f2550 (diff)
Add multi-architecture support to cbfstool
This is an initial re-factoring of CBFS code to enable multiple architectures. To achieve a clean solution, an additional field describing the architecture has to be added to the master header. Hence we also increase the version number in the master header. Change-Id: Icda681673221f8c27efbc46f16c2c5682b16a265 Signed-off-by: Stefan Reinauer <reinauer@google.com> Signed-off-by: Hung-Te Lin <hungte@chromium.org> Signed-off-by: David Hendricks <dhendrix@chromium.org> Reviewed-on: http://review.coreboot.org/1944 Tested-by: build bot (Jenkins)
Diffstat (limited to 'util/cbfstool/cbfs-mkstage.c')
-rw-r--r--util/cbfstool/cbfs-mkstage.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/util/cbfstool/cbfs-mkstage.c b/util/cbfstool/cbfs-mkstage.c
index 55c81c6ebe..0541d4b48e 100644
--- a/util/cbfstool/cbfs-mkstage.c
+++ b/util/cbfstool/cbfs-mkstage.c
@@ -4,6 +4,7 @@
* Copyright (C) 2008 Jordan Crouse <jordan@cosmicpenguin.net>
* 2009 coresystems GmbH
* written by Patrick Georgi <patrick.georgi@coresystems.de>
+ * Copyright (C) 2012 Google, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -67,7 +68,13 @@ int parse_elf_to_stage(unsigned char *input, unsigned char **output,
return -1;
if (!iself(input)) {
- fprintf(stderr, "E: The incoming file is not an ELF\n");
+ fprintf(stderr, "E: The stage file is not in ELF format!\n");
+ return -1;
+ }
+
+ if (!((ehdr->e_machine == EM_ARM) && (arch == CBFS_ARCHITECTURE_ARMV7)) &&
+ !((ehdr->e_machine == EM_386) && (arch == CBFS_ARCHITECTURE_X86))) {
+ fprintf(stderr, "E: The stage file has the wrong architecture\n");
return -1;
}