summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Georgi <patrick.georgi@coresystems.de>2010-02-03 17:56:37 +0000
committerPatrick Georgi <patrick.georgi@coresystems.de>2010-02-03 17:56:37 +0000
commita6c337dec0837135949cc3927a77b07290e1d2cb (patch)
tree49f459fdcd74cb4557ff81fab4469af8998b03f5
parentf1b6f1f2bb723d7b7e8e59e95da9ea8ccd146053 (diff)
downloadcoreboot-staging-a6c337dec0837135949cc3927a77b07290e1d2cb.zip
coreboot-staging-a6c337dec0837135949cc3927a77b07290e1d2cb.tar.gz
Guards against errors that are hard to track down:
- if crt0s is empty (eg. because crt0-y is still used), break the build, and say where that behaviour changed - if a stage is unusable for cbfstool because it's placed outside the ROM space (linked to 0 is somewhat notorious), warn about it, give some hints and exit instead of crashing. Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de> Acked-by: Stefan Reinauer <stefan.reinauer@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5077 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r--src/arch/i386/Makefile.inc4
-rw-r--r--util/cbfstool/cbfs-mkstage.c5
2 files changed, 9 insertions, 0 deletions
diff --git a/src/arch/i386/Makefile.inc b/src/arch/i386/Makefile.inc
index 05f7894..5f7bab6 100644
--- a/src/arch/i386/Makefile.inc
+++ b/src/arch/i386/Makefile.inc
@@ -62,6 +62,10 @@ $(obj)/coreboot.a: $(objs)
#######################################################################
# done
+# crt0s should be set by now
+ifeq ($(crt0s),)
+$(error crt0s are empty. If your board still uses crt0-y and ldscript-y: It shouldn't, we moved away from that in r5065)
+endif
endif
ifeq ($(CONFIG_TINY_BOOTBLOCK),y)
diff --git a/util/cbfstool/cbfs-mkstage.c b/util/cbfstool/cbfs-mkstage.c
index 6e8daef..2f81da0 100644
--- a/util/cbfstool/cbfs-mkstage.c
+++ b/util/cbfstool/cbfs-mkstage.c
@@ -126,6 +126,11 @@ int parse_elf_to_stage(unsigned char *input, unsigned char **output,
data_start = *location;
}
+ if (data_end <= data_start) {
+ fprintf(stderr, "E: data ends before it starts. Make sure the ELF file is correct and resides in ROM space.\n");
+ exit(1);
+ }
+
/* allocate an intermediate buffer for the data */
buffer = calloc(data_end - data_start, 1);
OpenPOWER on IntegriCloud