Guards against errors that are hard to track down:
authorPatrick Georgi <patrick.georgi@coresystems.de>
Wed, 3 Feb 2010 17:56:37 +0000 (17:56 +0000)
committerPatrick Georgi <patrick.georgi@coresystems.de>
Wed, 3 Feb 2010 17:56:37 +0000 (17:56 +0000)
- 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

src/arch/i386/Makefile.inc
util/cbfstool/cbfs-mkstage.c

index 05f7894cc6775c8772689bb0a202e08bc2c007ce..5f7bab600e58b851170f806a75389977f30f532a 100644 (file)
@@ -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)
index 6e8daef508729c950dca28c50d99c04e7606072b..2f81da07d5e8137a0bacc65a44f95296ba29d420 100644 (file)
@@ -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);